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;

namespace LLNet.Tienda.MainForms.Forms.FacturaElect
{
    public partial class FrmIVADiferenciado : Form
    {
        public FrmIVADiferenciado()
        {
            InitializeComponent();
        }

        #region Variables
        DataSet ivavariable;
        #endregion

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

        #region FrmIVADiferenciado_Load
        private void FrmIVADiferenciado_Load(object sender, EventArgs e)
        {
            txtIVA1.Enabled = false;
            txtIVA2.Enabled = false;
            txtIVA4.Enabled = false;
            txtIVA13.Enabled = false;

            QueryParams vParametros = new QueryParams();
            vParametros.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());

            if (Convert.ToInt16(GUI.CApp.bll.GetSingleValue("Exonera_documento", vParametros, "PDV")) >= 1)
            {
                CargarDatos();

                for (int i = 0; i < dgvIVAExonerado.Rows.Count; i++)
                {
                    switch (Convert.ToInt16(dgvIVAExonerado.Rows[i].Cells[0].Value))
                    {
                        case 1:
                            txtIVA1.Enabled = true;
                            txtIVA1.Text = dgvIVAExonerado.Rows[i].Cells[1].Value.ToString();
                            cbx_IVA1.Checked = true;
                            break;

                        case 2:
                            txtIVA2.Enabled = true;
                            txtIVA2.Text = dgvIVAExonerado.Rows[i].Cells[1].Value.ToString();
                            cbx_IVA2.Checked = true;
                            break;

                        case 4:
                            txtIVA4.Enabled = true;
                            txtIVA4.Text = dgvIVAExonerado.Rows[i].Cells[1].Value.ToString();
                            cbx_IVA4.Checked = true;
                            break;

                        case 13:
                            txtIVA13.Enabled = true;
                            txtIVA13.Text = dgvIVAExonerado.Rows[i].Cells[1].Value.ToString();
                            cbx_IVA13.Checked = true;
                            break;
                    }
                }
            }
        }
        #endregion

        #region btn_Guardar_Click
        private void btn_Guardar_Click(object sender, EventArgs e)
        {
            try
            {
                #region IVA_1%
                if (cbx_IVA1.Checked)
                {
                    if (Validacion_Texto("1", txtIVA1.Text.Trim()))
                    {
                        GuardarDatos("1", txtIVA1.Text.Trim(), "I");
                    }

                    else
                    {
                        CApp.ShowMessage("El valor para el campo IVA 1% no puede ser superior a 1", "Exoneración", true);
                        return;
                    }

                }
                else
                {
                    if (Validacion_IVA("1"))
                    {
                        GuardarDatos("1", "0", "U");
                    }

                }
                #endregion

                #region IVA_2%
                if (cbx_IVA2.Checked)
                {
                    if (Validacion_Texto("2", txtIVA2.Text.Trim()))
                    {
                        GuardarDatos("2", txtIVA2.Text.Trim(), "I");
                    }

                    else
                    {
                        CApp.ShowMessage("El valor para el campo IVA 2% no puede ser superior a 2", "Exoneración", true);
                        return;
                    }
                }
                else
                {
                    if (Validacion_IVA("2"))
                    {
                        GuardarDatos("2", "0", "U");
                    }

                }
                #endregion

                #region IVA_4%
                if (cbx_IVA4.Checked)
                {
                    if (Validacion_Texto("4", txtIVA4.Text.Trim()))
                    {
                        GuardarDatos("4", txtIVA4.Text.Trim(), "I");
                    }

                    else
                    {
                        CApp.ShowMessage("El valor para el campo IVA 4% no puede ser superior a 4", "Exoneración", true);
                        return;
                    }
                }
                else
                {
                    if (Validacion_IVA("4"))
                    {
                        GuardarDatos("4", "0", "U");
                    }

                }
                #endregion

                #region IVA_13%
                if (cbx_IVA13.Checked)
                {
                    if (Validacion_Texto("13", txtIVA13.Text.Trim()))
                    {
                        GuardarDatos("13", txtIVA13.Text.Trim(), "I");
                    }

                    else
                    {
                        CApp.ShowMessage("El valor para el campo IVA 13% no puede ser superior a 13", "Exoneración", true);
                        return;
                    }
                }
                else
                {
                    if (Validacion_IVA("13"))
                    {
                        GuardarDatos("13", "0", "U");
                    }

                }
                #endregion

                CargarDatos();
            }
            catch (Exception ex)
            {

                CApp.ShowMessage(ex.Message, "Exoneración", true);
            }
        }
        #endregion

        #region Validacion_Texto
        private bool Validacion_Texto(string vimp, string vdesc)
        {
            int resultado, impuesto, descuento;
            bool validacion;

            impuesto = Convert.ToInt16(vimp);
            descuento = Convert.ToInt16(vdesc);

            resultado = impuesto - descuento;

            if (resultado < 0)
            {
                validacion = false;
            }
            else
            {
                validacion = true;
            }


            return validacion;
        }
        #endregion

        #region GuardarDatos
        public void GuardarDatos(string vIVA, string vDESC, string vSENTENCIA)
        {
            QueryParams vParametros = new QueryParams();
            vParametros.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            vParametros.AddReplaceParam("pIVA", vIVA);
            vParametros.AddReplaceParam("pDESC", vDESC);
            vParametros.AddReplaceParam("pUSUARIO", GUI.CApp.usuario);
            vParametros.AddReplaceParam("pSENTENCIA", vSENTENCIA);

            GUI.CApp.bll.ExecuteSql("EX_SP_ACTUALIZCION_IVA", vParametros, "PDV");
        }
        #endregion

        #region Validacion_IVA
        private bool Validacion_IVA(string vIVA)
        {
            int resultado;
            bool validacion;

            QueryParams vParametros = new QueryParams();
            vParametros.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());
            vParametros.AddReplaceParam("pIVA", vIVA);

            resultado = Convert.ToInt16(GUI.CApp.bll.GetSingleValue("Exo_Datos", vParametros, "PDV"));
            if (resultado == 1)
            {
                validacion = true;
            }
            else
            {
                validacion = false;
            }
            return validacion;
        }
        #endregion

        #region CargarDatos
        private void CargarDatos()
        {
            QueryParams vParametros = new QueryParams();
            vParametros.AddReplaceParam("pDOCUMENTO", Program.FrmMainPos.DsPedido.WMS_DOCUMENTOS[0].DOCUMENTO.ToString());

            ivavariable = CApp.bll.getDataSet("PDV", "DATOS_IVA", vParametros);
            dgvIVAExonerado.DataSource = ivavariable.Tables[0];
            dgvIVAExonerado.Refresh();

        }
        #endregion

        #region CheckedChanged
        private void cbx_IVA1_CheckedChanged(object sender, EventArgs e)
        {
            if (cbx_IVA1.Checked)
            {
                txtIVA1.Enabled = true;
            }
            else
            {
                txtIVA1.Enabled = false;
                txtIVA1.Text = "";
            }
        }

        private void cbx_IVA2_CheckedChanged(object sender, EventArgs e)
        {
            if (cbx_IVA2.Checked)
            {
                txtIVA2.Enabled = true;
            }
            else
            {
                txtIVA2.Enabled = false;
                txtIVA2.Text = "";
            }
        }

        private void cbx_IVA4_CheckedChanged(object sender, EventArgs e)
        {
            if (cbx_IVA4.Checked)
            {
                txtIVA4.Enabled = true;
            }
            else
            {
                txtIVA4.Enabled = false;
                txtIVA4.Text = "";
            }
        }

        private void cbx_IVA13_CheckedChanged(object sender, EventArgs e)
        {
            if (cbx_IVA13.Checked)
            {
                txtIVA13.Enabled = true;
            }
            else
            {
                txtIVA13.Enabled = false;
                txtIVA13.Text = "";
            }
        }
        #endregion

        #region KeyPress
        private void txtIVA1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                CApp.ShowMessage("Solo se permiten numeros", "Advertencia", true);
                e.Handled = true;
                return;
            }
        }

        private void txtIVA2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                CApp.ShowMessage("Solo se permiten numeros", "Advertencia", true);
                e.Handled = true;
                return;
            }
        }

        private void txtIVA4_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                CApp.ShowMessage("Solo se permiten numeros", "Advertencia", true);
                e.Handled = true;
                return;
            }
        }

        private void txtIVA13_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
            {
                CApp.ShowMessage("Solo se permiten numeros", "Advertencia", true);
                e.Handled = true;
                return;
            }
        }
        #endregion
    }
}
