private void cbxPkProd_SelectedIndexChanged(object sender, EventArgs e)
        {
            Producto nProducto = ManejoProducto.Buscar(cbxPkProd.Text);

            if (dgrDatosAlmacenSalida.CurrentRow != null)
            {
                if (dgrDatosAlmacenSalida.CurrentRow.IsNewRow)
                {
                    if (nProducto != null)
                    {
                        DataGridViewRow row = (DataGridViewRow)dgrDatosAlmacenSalida.Rows[0].Clone();
                        row.Cells[0].Value = nProducto.idProducto;
                        row.Cells[1].Value = nProducto.sDescripcion;
                        row.Cells[2].Value = nProducto.dCosto;
                        row.Cells[3].Value = nProducto.catalogo_id;
                        row.Cells[5].Value = 1;

                        decimal PreUnitario        = Convert.ToDecimal(row.Cells[2].Value);
                        decimal TasaImpuestoIVA16  = 0;
                        decimal TasaImpuestoIVA11  = 0;
                        decimal TasaImpuestoIVA4   = 0;
                        decimal TasaImpuestoIEPS53 = 0;
                        decimal TasaImpuestoIEPS26 = 0;
                        decimal TasaImpuestoIEPS30 = 0;

                        decimal Cantidad = Convert.ToDecimal(row.Cells[5].Value);
                        #region Impuestos
                        List <ImpuestoProducto> mImpuesto = ManejoImpuestoProducto.getById(Convert.ToInt32(nProducto.idProducto));
                        foreach (ImpuestoProducto rImpuesto in mImpuesto)
                        {
                            var impuesto = ManejoImpuesto.getById(rImpuesto.impuesto_id);
                            if (impuesto.sTipoImpuesto == "TRASLADO")
                            {
                                // IVA
                                if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(16.00))
                                {
                                    TasaImpuestoIVA16 += impuesto.dTasaImpuesto;
                                }
                                else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(11.00))
                                {
                                    TasaImpuestoIVA11 += impuesto.dTasaImpuesto;
                                }
                                else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(4.00))
                                {
                                    TasaImpuestoIVA4 += impuesto.dTasaImpuesto;
                                }
                                //IEPS
                                else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(53.00))
                                {
                                    TasaImpuestoIEPS53 += impuesto.dTasaImpuesto;
                                }
                                else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(30.00))
                                {
                                    TasaImpuestoIEPS30 += impuesto.dTasaImpuesto;
                                }
                                else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(26.50))
                                {
                                    TasaImpuestoIEPS26 += impuesto.dTasaImpuesto;
                                }
                            }
                        }
                        #endregion


                        decimal Importe = 0;
                        decimal ImporteWithImpuestoIVA16   = 0;
                        decimal ImporteWithImpuestoIVA11   = 0;
                        decimal ImporteWithImpuestoIVA4    = 0;
                        decimal ImporteWithImpuestosIEPS53 = 0;
                        decimal ImporteWithImpuestosIEPS30 = 0;
                        decimal ImporteWithImpuestosIEPS26 = 0;
                        decimal PreUnitarioWithDescuento   = 0;
                        decimal PriceForLot = 0;
                        decimal Descuento   = 0;

                        Descuento            = PreUnitario * (Descuentos / 100);
                        sumatoriadescuentos += Descuento;

                        PreUnitarioWithDescuento = PreUnitario - Descuento;
                        PriceForLot = Cantidad * PreUnitarioWithDescuento;

                        ImporteWithImpuestoIVA16 = PriceForLot * (TasaImpuestoIVA16 / 100);
                        IVA16 += ImporteWithImpuestoIVA16;
                        row.Cells[9].Value       = ImporteWithImpuestoIVA16;
                        ImporteWithImpuestoIVA11 = PriceForLot * (TasaImpuestoIVA11 / 100);
                        IVA11 += ImporteWithImpuestoIVA11;
                        row.Cells[10].Value     = ImporteWithImpuestoIVA11;
                        ImporteWithImpuestoIVA4 = PriceForLot * (TasaImpuestoIVA4 / 100);
                        IVA4 += ImporteWithImpuestoIVA4;
                        row.Cells[11].Value        = ImporteWithImpuestoIVA4;
                        ImporteWithImpuestosIEPS53 = PriceForLot * (TasaImpuestoIEPS53 / 100);
                        IEPS53 += ImporteWithImpuestosIEPS53;
                        row.Cells[12].Value        = ImporteWithImpuestosIEPS53;
                        ImporteWithImpuestosIEPS30 = PriceForLot * (TasaImpuestoIEPS30 / 100);
                        IEPS30 += ImporteWithImpuestosIEPS30;
                        row.Cells[13].Value        = ImporteWithImpuestosIEPS30;
                        ImporteWithImpuestosIEPS26 = PriceForLot * (TasaImpuestoIEPS26 / 100);
                        IEPS26 += ImporteWithImpuestosIEPS26;
                        row.Cells[14].Value = ImporteWithImpuestosIEPS26;


                        Importe = PriceForLot + ImporteWithImpuestoIVA16 + ImporteWithImpuestoIVA11 +
                                  ImporteWithImpuestoIVA4 + ImporteWithImpuestosIEPS53 + ImporteWithImpuestosIEPS30 +
                                  ImporteWithImpuestosIEPS26;


                        row.Cells[6].Value = Importe.ToString("N");
                        row.Cells[7].Value = Descuentos;

                        dgrDatosAlmacenSalida.Rows.Add(row);

                        Decimal sumatoria = 0;
                        foreach (DataGridViewRow rows in dgrDatosAlmacenSalida.Rows)
                        {
                            sumatoria += Convert.ToDecimal(rows.Cells[6].Value);
                        }
                        lblImporte.Text = sumatoria.ToString("N");



                        lblIVA16.Text  = IVA16.ToString("N");
                        lblIVA11.Text  = IVA11.ToString("N");
                        lblIVA4.Text   = IVA4.ToString("N");
                        lblIEPS53.Text = IEPS53.ToString("N");
                        lblIEPS30.Text = IEPS30.ToString("N");
                        lblIEPS26.Text = IEPS26.ToString("N");
                    }
                }
                else
                {
                    dgrDatosAlmacenSalida.CurrentRow.Cells[0].Value = nProducto.idProducto;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[1].Value = nProducto.sDescripcion;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[2].Value = nProducto.dCosto;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[3].Value = nProducto.catalogo_id;


                    decimal DgvIva16    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[9].Value);
                    decimal DgvIva11    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[10].Value);
                    decimal DgvIva4     = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[11].Value);
                    decimal DgvIep53    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[12].Value);
                    decimal DgvIep30    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[13].Value);
                    decimal DgvIep26    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[14].Value);
                    decimal nepe        = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[7].Value);
                    decimal PreUnitario = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[2].Value);
                    decimal desacuento  = 0;
                    decimal trampa      = 0;

                    IVA16  -= DgvIva16;
                    IVA11  -= DgvIva11;
                    IVA4   -= DgvIva4;
                    IEPS53 -= DgvIep53;
                    IEPS30 -= DgvIep30;
                    IEPS26 -= DgvIep26;

                    desacuento           = PreUnitario * (nepe / 100);
                    trampa               = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[5].Value) * desacuento;
                    sumatoriadescuentos -= trampa;

                    dgrDatosAlmacenSalida.CurrentRow.Cells[5].Value = 1;
                    //  decimal PreUnitario = nProducto.dCosto;
                    decimal TasaImpuestoIVA16  = 0;
                    decimal TasaImpuestoIVA11  = 0;
                    decimal TasaImpuestoIVA4   = 0;
                    decimal TasaImpuestoIEPS53 = 0;
                    decimal TasaImpuestoIEPS26 = 0;
                    decimal TasaImpuestoIEPS30 = 0;

                    decimal Cantidad = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[5].Value);
                    #region Impuestos
                    List <ImpuestoProducto> mImpuesto = ManejoImpuestoProducto.getById(Convert.ToInt32(nProducto.idProducto));
                    foreach (ImpuestoProducto rImpuesto in mImpuesto)
                    {
                        var impuesto = ManejoImpuesto.getById(rImpuesto.impuesto_id);
                        if (impuesto.sTipoImpuesto == "TRASLADO")
                        {
                            // IVA
                            if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(16.00))
                            {
                                TasaImpuestoIVA16 += impuesto.dTasaImpuesto;
                            }
                            else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(11.00))
                            {
                                TasaImpuestoIVA11 += impuesto.dTasaImpuesto;
                            }
                            else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(4.00))
                            {
                                TasaImpuestoIVA4 += impuesto.dTasaImpuesto;
                            }
                            //IEPS
                            else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(53.00))
                            {
                                TasaImpuestoIEPS53 += impuesto.dTasaImpuesto;
                            }
                            else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(30.00))
                            {
                                TasaImpuestoIEPS30 += impuesto.dTasaImpuesto;
                            }
                            else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(26.50))
                            {
                                TasaImpuestoIEPS26 += impuesto.dTasaImpuesto;
                            }
                        }
                    }
                    #endregion


                    decimal Importe = 0;
                    decimal ImporteWithImpuestoIVA16   = 0;
                    decimal ImporteWithImpuestoIVA11   = 0;
                    decimal ImporteWithImpuestoIVA4    = 0;
                    decimal ImporteWithImpuestosIEPS53 = 0;
                    decimal ImporteWithImpuestosIEPS30 = 0;
                    decimal ImporteWithImpuestosIEPS26 = 0;
                    decimal PreUnitarioWithDescuento   = 0;
                    decimal PriceForLot = 0;
                    decimal Descuento   = 0;


                    Descuento            = PreUnitario * (Descuentos / 100);
                    sumatoriadescuentos += Descuento;

                    PreUnitarioWithDescuento = PreUnitario - Descuento;
                    PriceForLot = Cantidad * PreUnitarioWithDescuento;

                    ImporteWithImpuestoIVA16 = PriceForLot * (TasaImpuestoIVA16 / 100);
                    IVA16 += ImporteWithImpuestoIVA16;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[9].Value = ImporteWithImpuestoIVA16;
                    ImporteWithImpuestoIVA11 = PriceForLot * (TasaImpuestoIVA11 / 100);
                    IVA11 += ImporteWithImpuestoIVA11;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[10].Value = ImporteWithImpuestoIVA11;
                    ImporteWithImpuestoIVA4 = PriceForLot * (TasaImpuestoIVA4 / 100);
                    IVA4 += ImporteWithImpuestoIVA4;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[11].Value = ImporteWithImpuestoIVA4;
                    ImporteWithImpuestosIEPS53 = PriceForLot * (TasaImpuestoIEPS53 / 100);
                    IEPS53 += ImporteWithImpuestosIEPS53;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[12].Value = ImporteWithImpuestosIEPS53;
                    ImporteWithImpuestosIEPS30 = PriceForLot * (TasaImpuestoIEPS30 / 100);
                    IEPS30 += ImporteWithImpuestosIEPS30;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[13].Value = ImporteWithImpuestosIEPS30;
                    ImporteWithImpuestosIEPS26 = PriceForLot * (TasaImpuestoIEPS26 / 100);
                    IEPS26 += ImporteWithImpuestosIEPS26;
                    dgrDatosAlmacenSalida.CurrentRow.Cells[14].Value = ImporteWithImpuestosIEPS26;


                    Importe = PriceForLot + ImporteWithImpuestoIVA16 + ImporteWithImpuestoIVA11 +
                              ImporteWithImpuestoIVA4 + ImporteWithImpuestosIEPS53 + ImporteWithImpuestosIEPS30 +
                              ImporteWithImpuestosIEPS26;


                    dgrDatosAlmacenSalida.CurrentRow.Cells[6].Value = Importe.ToString("N");

                    Decimal sumatoria = 0;
                    foreach (DataGridViewRow row in dgrDatosAlmacenSalida.Rows)
                    {
                        sumatoria += Convert.ToDecimal(row.Cells[6].Value);
                    }
                    lblImporte.Text = sumatoria.ToString("N");

                    dgrDatosAlmacenSalida.CurrentRow.Cells[7].Value = Descuentos;


                    lblIVA16.Text  = IVA16.ToString("N");
                    lblIVA11.Text  = IVA11.ToString("N");
                    lblIVA4.Text   = IVA4.ToString("N");
                    lblIEPS53.Text = IEPS53.ToString("N");
                    lblIEPS30.Text = IEPS30.ToString("N");
                    lblIEPS26.Text = IEPS26.ToString("N");
                }
            }
        }
        private void dgrDatosAlmacenSalida_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            string b = dgrDatosAlmacenSalida.Columns[e.ColumnIndex].Name;
            string a = dgrDatosAlmacenSalida.Columns[e.ColumnIndex].Name;

            if (a == "costo" || b == "Cantidad")
            {
                if (dgrDatosAlmacenSalida.CurrentRow != null)
                {
                    if (!dgrDatosAlmacenSalida.CurrentRow.IsNewRow)
                    {
                        decimal Cantidad = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[5].Value);
                        if (Cantidad != 0)
                        {
                            Producto nProducto = ManejoProducto.getById(Convert.ToInt32(dgrDatosAlmacenSalida.CurrentRow.Cells[0].Value));

                            decimal DgvIva16    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[9].Value);
                            decimal DgvIva11    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[10].Value);
                            decimal DgvIva4     = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[11].Value);
                            decimal DgvIep53    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[12].Value);
                            decimal DgvIep30    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[13].Value);
                            decimal DgvIep26    = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[14].Value);
                            decimal nepe        = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[7].Value);
                            decimal PreUnitario = Convert.ToDecimal(dgrDatosAlmacenSalida.CurrentRow.Cells[2].Value);
                            decimal desacuento  = 0;

                            IVA16  -= DgvIva16;
                            IVA11  -= DgvIva11;
                            IVA4   -= DgvIva4;
                            IEPS53 -= DgvIep53;
                            IEPS30 -= DgvIep30;
                            IEPS26 -= DgvIep26;

                            desacuento = PreUnitario * (nepe / 100);


                            sumatoriadescuentos -= desacuento;

                            if (nProducto != null)
                            {
                                decimal TasaImpuestoIVA16  = 0;
                                decimal TasaImpuestoIVA11  = 0;
                                decimal TasaImpuestoIVA4   = 0;
                                decimal TasaImpuestoIEPS53 = 0;
                                decimal TasaImpuestoIEPS26 = 0;
                                decimal TasaImpuestoIEPS30 = 0;

                                #region Impuestos
                                List <ImpuestoProducto> mImpuesto = ManejoImpuestoProducto.getById(Convert.ToInt32(nProducto.idProducto));
                                foreach (ImpuestoProducto rImpuesto in mImpuesto)
                                {
                                    var impuesto = ManejoImpuesto.getById(rImpuesto.impuesto_id);
                                    // IVA
                                    if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(16.00))
                                    {
                                        TasaImpuestoIVA16 += impuesto.dTasaImpuesto;
                                    }
                                    else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(11.00))
                                    {
                                        TasaImpuestoIVA11 += impuesto.dTasaImpuesto;
                                    }
                                    else if (impuesto.sImpuesto == "IVA" && impuesto.dTasaImpuesto == Convert.ToDecimal(4.00))
                                    {
                                        TasaImpuestoIVA4 += impuesto.dTasaImpuesto;
                                    }
                                    //IEPS
                                    else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(53.00))
                                    {
                                        TasaImpuestoIEPS53 += impuesto.dTasaImpuesto;
                                    }
                                    else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(30.00))
                                    {
                                        TasaImpuestoIEPS30 += impuesto.dTasaImpuesto;
                                    }
                                    else if (impuesto.sImpuesto == "IEPS" && impuesto.dTasaImpuesto == Convert.ToDecimal(26.50))
                                    {
                                        TasaImpuestoIEPS26 += impuesto.dTasaImpuesto;
                                    }
                                }
                                #endregion

                                decimal Importe = 0;
                                decimal ImporteWithImpuestoIVA16   = 0;
                                decimal ImporteWithImpuestoIVA11   = 0;
                                decimal ImporteWithImpuestoIVA4    = 0;
                                decimal ImporteWithImpuestosIEPS53 = 0;
                                decimal ImporteWithImpuestosIEPS30 = 0;
                                decimal ImporteWithImpuestosIEPS26 = 0;
                                decimal PreUnitarioWithDescuento   = 0;
                                decimal PriceForLot = 0;
                                decimal trampa      = 0;

                                desacuento           = PreUnitario * (nepe / 100);
                                trampa               = Cantidad * desacuento;
                                sumatoriadescuentos += trampa;

                                PreUnitarioWithDescuento = PreUnitario - desacuento;
                                PriceForLot = Cantidad * PreUnitarioWithDescuento;



                                ImporteWithImpuestoIVA16 = PriceForLot * (TasaImpuestoIVA16 / 100);
                                IVA16 += ImporteWithImpuestoIVA16;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[9].Value = ImporteWithImpuestoIVA16;
                                ImporteWithImpuestoIVA11 = PriceForLot * (TasaImpuestoIVA11 / 100);
                                IVA11 += ImporteWithImpuestoIVA11;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[10].Value = ImporteWithImpuestoIVA11;
                                ImporteWithImpuestoIVA4 = PriceForLot * (TasaImpuestoIVA4 / 100);
                                IVA4 += ImporteWithImpuestoIVA4;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[11].Value = ImporteWithImpuestoIVA4;
                                ImporteWithImpuestosIEPS53 = PriceForLot * (TasaImpuestoIEPS53 / 100);
                                IEPS53 += ImporteWithImpuestosIEPS53;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[12].Value = ImporteWithImpuestosIEPS53;
                                ImporteWithImpuestosIEPS30 = PriceForLot * (TasaImpuestoIEPS30 / 100);
                                IEPS30 += ImporteWithImpuestosIEPS30;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[13].Value = ImporteWithImpuestosIEPS30;
                                ImporteWithImpuestosIEPS26 = PriceForLot * (TasaImpuestoIEPS26 / 100);
                                IEPS26 += ImporteWithImpuestosIEPS26;
                                dgrDatosAlmacenSalida.CurrentRow.Cells[14].Value = ImporteWithImpuestosIEPS26;


                                Importe = PriceForLot + ImporteWithImpuestoIVA16 + ImporteWithImpuestoIVA11 +
                                          ImporteWithImpuestoIVA4 + ImporteWithImpuestosIEPS53 + ImporteWithImpuestosIEPS30 +
                                          ImporteWithImpuestosIEPS26;

                                dgrDatosAlmacenSalida.CurrentRow.Cells[6].Value = Importe.ToString("N");

                                Decimal sumatoria = 0;
                                foreach (DataGridViewRow row in dgrDatosAlmacenSalida.Rows)
                                {
                                    sumatoria += Convert.ToDecimal(row.Cells[6].Value);
                                }
                                lblImporte.Text = sumatoria.ToString("N");

                                lblIVA16.Text  = IVA16.ToString("N");
                                lblIVA11.Text  = IVA11.ToString("N");
                                lblIVA4.Text   = IVA4.ToString("N");
                                lblIEPS53.Text = IEPS53.ToString("N");
                                lblIEPS30.Text = IEPS30.ToString("N");
                                lblIEPS26.Text = IEPS26.ToString("N");
                            }
                        }
                        else
                        {
                            dgrDatosAlmacenSalida.CurrentRow.Cells[5].Value = 1;
                        }
                    }
                }
            }
        }