using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LLNet.Utils;
using LLNet.GUI;
using System.Globalization;

namespace LLNet.Tienda.MainForms.Forms
{
    public partial class FrmRegDiferencia : Form
    {
        private decimal vDiferencia = 0;
        private string vIdRubro = String.Empty;
        private string vRubro = String.Empty;
        private decimal vTotalSistema = 0;
        private decimal vTotalUsuario = 0;
        private string vUsuario = String.Empty;

        public FrmRegDiferencia()
        {
            InitializeComponent();
        }

        #region Propiedades

        public decimal Diferencia
        {
            set
            {
                this.vDiferencia = value;
            }
        }

        public string IdRubro
        {
            set
            {
                this.vIdRubro = value;
            }
        }

        public string Rubro
        {
            set
            {
                this.vRubro = value;
            }
        }

        public decimal TotalSistema
        {
            set
            {
                this.vTotalSistema = value;
            }
        }

        public decimal TotalUsuario
        {
            set
            {
                this.vTotalUsuario = value;
            }
        }

        public string Usuario
        {
            set
            {
                this.vUsuario = value;
            }
        }

        #endregion

        #region mMostrarDatos
        /// <summary>
        /// Muestra en el formulario, el total de usuario y sistema, la diferencia, entre otros
        /// </summary>
        private void mMostrarDatos()
        {
            this.lblTitulo.Text += " " + CultureInfo.InvariantCulture.TextInfo.ToTitleCase(vRubro);
            txtTotalSistema.Text = vTotalSistema.ToString("0,0.00", CultureInfo.InvariantCulture);
            txtTotalUsuario.Text = vTotalUsuario.ToString("0,0.00", CultureInfo.InvariantCulture);
            txtDiferencia.Text = vDiferencia.ToString("0,0.00", CultureInfo.InvariantCulture);
        }
        #endregion

        #region mRegistrarDiferencia
        /// <summary>
        /// Registra la diferencia del rubro
        /// </summary>
        private void mRegistrarDiferencia()
        {
            Utils.QueryParams vParametros = new QueryParams();
            vParametros.AddReplaceParam("JORNADA", Program.Jornada.ToString());
            vParametros.AddReplaceParam("RUBRO", vIdRubro);
            vParametros.AddReplaceParam("TOTAL_USUARIO", vTotalUsuario.ToString());
            vParametros.AddReplaceParam("TOTAL_SISTEMA", vTotalSistema.ToString());
            vParametros.AddReplaceParam("DIFERENCIA", vDiferencia.ToString());
            vParametros.AddReplaceParam("USUARIO", vUsuario);
            vParametros.AddReplaceParam("RAZON", txtRazon.Text);

            GUI.CApp.bll.ExecuteSql("WMS_P_REG_DIFERENCIA", vParametros, "PDV");
            CApp.ShowMessage("Diferencia registrada con éxito", "Registro Diferencia", true);
            this.Dispose();
        }
        #endregion

        #region btnSalir_Click
        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
        #endregion

        #region FrmRegDiferencia_Load
        private void FrmRegDiferencia_Load(object sender, EventArgs e)
        {
            try
            {
                mMostrarDatos();
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Registro Diferencia", true);
            }
        }
        #endregion

        #region btnAceptar_Click
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtRazon.Text != String.Empty)
                {
                    mRegistrarDiferencia();
                }
                else
                {
                    CApp.ShowMessage("Ingrese la razón de la diferencia", "Registro Diferencia", true);
                    txtRazon.Focus();
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Registro Diferencia", true);
            }
        }
        #endregion

        #region FrmRegDiferencia_KeyDown
        private void FrmRegDiferencia_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                switch (e.KeyCode)
                {
                    case Keys.F12:
                        btnAceptar_Click(null, null);
                        break;
                    case Keys.Escape:
                        btnSalir_Click(null, null);
                        break;
                }
            }
            catch (Exception ex)
            {
                CApp.ShowMessage(ex.Message, "Registro Diferencia", true);
            }
        }
        #endregion
    }
}