private void Grabar(bool nopideimpresion)
        {
            // Forzar a grabar si pulsa el boton sin finalizar edicion del grid
            if (GridExaminar.IsCurrentCellInEditMode)
            {
                GridExaminar.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

            #region ** numeracion
            while (u_n_opsel == 1)
            {
                tb_co_VentascabBL BL = new tb_co_VentascabBL();
                tb_co_Ventascab BE = new tb_co_Ventascab();

                BE.perianio = VariablesPublicas.perianio;
                BE.perimes = txtMes.Text;
                BE.moduloid = modulo.ToString();//modulo.ToString();
                BE.local = local.ToString();   //local.ToString();
                BE.diarioid = cboSubdiario.Text.Substring(0, 4);
                BE.asiento = txtAsiento.Text;
                try
                {
                    tmptablacab = BL.GetAll(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                }
                catch (Exception ex)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                if (tmptablacab.Rows.Count == 0)
                {
                    break;
                }
                UltimoNumeroRegistro();
            }
            #endregion

            #region ** Recapturar Tipo de Cambio
            tributoIgv();
            actualizatipocambio();
            totalizarItem();
            //totalizar();
            #endregion

            if (Validacion())
            {
                // Variables de Cabecera
                tb_co_VentasBL BL = new tb_co_VentasBL();
                tb_co_Ventas BE = new tb_co_Ventas();

                // Variables para Detalle
                tb_co_Ventas.Item Detalle = new tb_co_Ventas.Item();
                List<tb_co_Ventas.Item> ListaItems = new List<tb_co_Ventas.Item>();

                string activo = "0"; //Activo
                string anulad = "9"; //Anulado
                string xMoneda = Equivalencias.Left(cboMoneda.SelectedValue.ToString(), 1);
                xnum = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");

                #region **ingreso venta cabecera***
                //caso venta
                BE.perianio = VariablesPublicas.perianio;
                BE.perimes = VariablesPublicas.PADL(txtMes.Text.Trim(), 2, "0");
                BE.moduloid = modulo.ToString();
                BE.local = local.ToString();
                BE.diarioid = VariablesPublicas.PADL(cboSubdiario.SelectedValue.ToString(), 4, "0");
                BE.asiento = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");
                BE.origen = cboOrigen.Text.Substring(0, 2);
                if (chkActivo.Checked == true)
                {
                    BE.status = activo;
                }
                if (chkActivo.Checked == false)
                {
                    BE.status = anulad;
                }
                BE.tipdoc = cboTipdoc.Text.Substring(0, 2);
                BE.serdoc = txtSerie.Text;
                BE.numdoc = txtNumero.Text;
                BE.tiperson = xtipopersona;
                BE.tipdid = xtipodocidentidad;
                BE.ctacte = xctacte;
                BE.nmruc = txtRuc.Text.Trim();
                BE.ctactename = txtCtactename.Text.Trim().ToUpper();
                BE.direc = xdirec;
                BE.ubige = xubige;
                BE.fechdoc = Convert.ToDateTime(fRegistro.Text.Trim());
                if (fecVenc.ShowCheckBox)
                {
                    BE.fechvcto = fecVenc.Value;
                }

                BE.condicionvta = "";
                BE.tipcamb = Convert.ToDecimal(txtTipocambio.Text.Trim());
                BE.moneda = cboMoneda.Text.Substring(0, 1);
                BE.ordencompra = txtNumeroorden.Text;
                //Detracciones
                if ((cboServicio.SelectedValue != null))
                {
                    BE.detraccionid = cboServicio.SelectedValue.ToString();
                }
                else
                {
                    BE.detraccionid = DBNull.Value.ToString();
                }
                BE.porcdetraccion = VariablesPublicas.StringtoDecimal(txtPorcdet.Text);
                BE.nctadetraccion = txtCtadetrac.Text;
                BE.glosa = txtGlosa.Text;
                BE.tipoventa = txtTipoventa.Text;
                BE.afectoigvid = cboDestinoigv.Text.Substring(0, 1);

                //datos documento de referencia
                if (cboTipdocref.Enabled)
                {
                    if (cboTipdocref.Text.Length > 0)
                    {
                        BE.tipref = cboTipdocref.Text.Substring(0, 2);
                    }
                    //BE.tipref =  cboTipdocref.Text.Substring(0, 2);
                    BE.serref = txtSerieref.Text.Trim().ToString();
                    BE.numref = txtNumeroref.Text.Trim().ToString();
                    if (fechaRefer.ShowCheckBox)
                    {
                        BE.fechref = fechaRefer.Value;
                    }
                }

                //Aduanas
                if (cboAduana.Enabled)
                {
                    if (!(cboAduana.SelectedValue == null))
                    {
                        BE.aduanaid = cboAduana.SelectedValue.ToString();
                    }
                    BE.aniodua = aduPeriodo.Text;
                    BE.numdua = aduCorrelativo.Text;
                    BE.valorfobdua = VariablesPublicas.StringtoDecimal(aduValorfob.Text);
                    if ((adufEmbarque.ShowCheckBox == true))
                    {
                        BE.fechembdua = adufEmbarque.Value;
                    }
                    if ((adufRegularizacion.ShowCheckBox == true))
                    {
                        BE.fechreguldua = adufRegularizacion.Value;
                    }
                    if (!(cboTipoexportacion.SelectedValue == null))
                    {
                        BE.tipoexportid = cboTipoexportacion.SelectedValue.ToString();
                    }
                }
                BE.afectoigv = chkAfecto.Checked;
                BE.incprec = chkIncluye.Checked;
                BE.afectretencion = chkRetencion.Checked;
                BE.terminovta = _terminoventa;
                BE.dpais = _pais;
                BE.embarcador = _embarque;
                BE.condicionpago = _condpago;
                BE.cartacredito = _cartacredito;
                BE.viaembarque = _codigovia;
                BE.referencia = _referencia;

                BE.bultos = "";
                BE.pesoneto = 0;
                BE.pesobruto = 0;

                switch (xMoneda)
                {
                    case "1":
                        BE.bruto1 = VariablesPublicas.StringtoDecimal(txtValor.Text);
                        BE.dscto1 = VariablesPublicas.StringtoDecimal(txtDctos.Text);
                        BE.valorventa1 = VariablesPublicas.StringtoDecimal(txtVenta.Text);
                        BE.igv1 = VariablesPublicas.StringtoDecimal(txtIgv.Text);
                        BE.total1 = VariablesPublicas.StringtoDecimal(txtTotal.Text);
                        if (BE.tipcamb > 0)
                        {
                            BE.bruto2 = Math.Round(VariablesPublicas.StringtoDecimal(txtValor.Text) / BE.tipcamb, 2);
                            BE.dscto2 = Math.Round(VariablesPublicas.StringtoDecimal(txtDctos.Text) / BE.tipcamb, 2);
                            BE.valorventa2 = Math.Round(VariablesPublicas.StringtoDecimal(txtVenta.Text) / BE.tipcamb, 2);
                            BE.igv2 = Math.Round(VariablesPublicas.StringtoDecimal(txtIgv.Text) / BE.tipcamb, 2);
                            BE.total2 = Math.Round(VariablesPublicas.StringtoDecimal(txtTotal.Text) / BE.tipcamb, 2);

                            BE.valorventa2 = Math.Round(BE.valorventa2, 2);
                            BE.igv2 = Math.Round(BE.igv2, 2);
                            BE.total2 = Math.Round(BE.total2, 2);
                        }

                        break;
                    case "2":
                        BE.bruto2 = VariablesPublicas.StringtoDecimal(txtValor.Text);
                        BE.dscto2 = VariablesPublicas.StringtoDecimal(txtDctos.Text);
                        BE.valorventa2 = VariablesPublicas.StringtoDecimal(txtVenta.Text);
                        BE.igv2 = VariablesPublicas.StringtoDecimal(txtIgv.Text);
                        BE.total2 = VariablesPublicas.StringtoDecimal(txtTotal.Text);
                        if (BE.tipcamb > 0)
                        {
                            BE.bruto1 = Math.Round(VariablesPublicas.StringtoDecimal(txtValor.Text) * BE.tipcamb, 2);
                            BE.dscto1 = Math.Round(VariablesPublicas.StringtoDecimal(txtDctos.Text) * BE.tipcamb, 2);
                            BE.valorventa1 = Math.Round(VariablesPublicas.StringtoDecimal(txtVenta.Text) * BE.tipcamb, 2);
                            BE.igv1 = Math.Round(VariablesPublicas.StringtoDecimal(txtIgv.Text) * BE.tipcamb, 2);
                            BE.total1 = Math.Round(VariablesPublicas.StringtoDecimal(txtTotal.Text) * BE.tipcamb, 2);

                            BE.valorventa1 = Math.Round(BE.valorventa1, 2);
                            BE.igv1 = Math.Round(BE.igv1, 2);
                            BE.total1 = Math.Round(BE.total1, 2);
                        }

                        break;
                }
                BE.valorventa1 = BE.valorventa1 + (BE.total1 - (BE.valorventa1 + BE.igv1)); // S/.
                BE.valorventa2 = BE.valorventa2 + (BE.total2 - (BE.valorventa2 + BE.igv2)); // US$

                BE.pdscto = 0;
                BE.pigv = VariablesPublicas.StringtoDecimal(txtPigv.Text);
                BE.tienda = "";
                BE.ndias = 0;
                BE.vendedorid = "";
                BE.porcvta = 0;
                BE.porcefect = 0;
                BE.vinculante = "";
                BE.usuar = VariablesPublicas.Usuar.ToUpper().Trim();
                BE.maqreg = xmaqreg;
                //BE.numdocfinal = xnumdocfinal;
                BE.numdocfinal = txtNumFin.Text;
                BE.estabsunat = xestabsunat;
                #endregion

                #region ****ingreso movimiento detalle***

                int item = 0;
                foreach (DataRow fila in DetFacturacion.Rows)
                {
                    Detalle = new tb_co_Ventas.Item();

                    item++;

                    Detalle.perianio = VariablesPublicas.perianio;
                    Detalle.perimes = VariablesPublicas.PADL(txtMes.Text.Trim(), 2, "0");
                    Detalle.moduloid = modulo.ToString();
                    Detalle.local = local.ToString();
                    Detalle.diarioid = BE.diarioid;
                    Detalle.asiento = VariablesPublicas.PADL(txtNumero.Text.Trim(), 6, "0");

                    //datos documento cabecera importante [todos]
                    Detalle.tipdoc = cboTipdoc.Text.Substring(0, 2);
                    Detalle.serdoc = txtSerie.Text.Trim().ToString().PadLeft(4, '0');
                    Detalle.numdoc = txtNumero.Text.Trim().ToString().PadLeft(10, '0');
                    Detalle.fechdoc = Convert.ToDateTime(fRegistro.Text.Trim());
                    if (fecVenc.ShowCheckBox)
                    {
                        Detalle.fechvcto = fecVenc.Value;
                    }
                    //datos de cliente o proveedor
                    Detalle.nmruc = txtRuc.Text.Trim().ToUpper();
                    Detalle.ctactename = txtCtactename.Text.Trim().ToUpper();
                    //accion del alamacen dependiendo del tipo de documento
                    Detalle.almacaccionid = fila["almacaccionid"].ToString();
                    if (chkActivo.Checked == true)
                    {
                        Detalle.status = activo;
                    }
                    if (chkActivo.Checked == false)
                    {
                        Detalle.status = anulad;
                    }
                    //datos documento de referencia
                    if (cboTipdocref.Enabled)
                    {
                        if (cboTipdocref.Text.Length > 0)
                        {
                            Detalle.tipref = cboTipdocref.Text.Substring(0, 2);
                        }
                        //Detalle.tipref = cboTipdocref.Text.Substring(0, 2);
                        Detalle.serref = txtSerieref.Text.Trim().ToString();
                        Detalle.numref = txtNumeroref.Text.Trim().ToString();
                        if (fechaRefer.ShowCheckBox)
                        {
                            Detalle.fechref = fechaRefer.Value;
                        }
                    }
                    //datos calculados de detalle de movimiento obtenidos de memoria
                    Detalle.items = fila["items"].ToString();
                    Detalle.asientoitems = item.ToString().PadLeft(5, '0');
                    Detalle.rubroid = fila["rubroid"].ToString();
                    Detalle.tippedido = fila["tippedido"].ToString();
                    Detalle.serpedido = fila["serpedido"].ToString();
                    Detalle.numpedido = fila["numpedido"].ToString();
                    Detalle.tipOp = fila["tip_op"].ToString();
                    Detalle.serOp = fila["ser_op"].ToString();
                    Detalle.numOp = fila["num_op"].ToString();
                    Detalle.productid = fila["productid"].ToString();
                    Detalle.productname = fila["productname"].ToString();
                    Detalle.tallacolor = fila["tallacolor"].ToString();
                    Detalle.unidmedidaid = fila["unidmedidaid"].ToString();
                    Detalle.cantidad = Convert.ToDecimal(fila["cantidad"].ToString());

                    switch (xMoneda)
                    {
                        case "1":
                            Detalle.precunit1 = Convert.ToDecimal(fila["precunit"].ToString());
                            Detalle.bruto1 = Convert.ToDecimal(fila["bruto"].ToString());
                            Detalle.dscto1 = Convert.ToDecimal(fila["dscto"].ToString());
                            Detalle.valorventa1 = Convert.ToDecimal(fila["valorventa"].ToString());
                            Detalle.igv1 = Convert.ToDecimal(fila["igvo"].ToString());
                            Detalle.total1 = Convert.ToDecimal(fila["total"].ToString());
                            if ((BE.tipcamb > 0))
                            {
                                Detalle.precunit2 = Math.Round(Convert.ToDecimal(fila["precunit"]) / BE.tipcamb, 2);
                                Detalle.bruto2 = Math.Round(Convert.ToDecimal(fila["bruto"]) / BE.tipcamb, 2);
                                Detalle.dscto2 = Math.Round(Convert.ToDecimal(fila["dscto"]) / BE.tipcamb, 2);
                                Detalle.valorventa2 = Math.Round(Convert.ToDecimal(fila["valorventa"]) / BE.tipcamb, 2);
                                Detalle.igv2 = Math.Round(Convert.ToDecimal(fila["igvo"]) / BE.tipcamb, 2);
                                Detalle.total2 = Math.Round(Convert.ToDecimal(fila["total"]) / BE.tipcamb, 2);
                                BE.valorventa2 = Math.Round(BE.valorventa2, 2);
                                BE.igv2 = Math.Round(BE.igv2, 2);
                                BE.total2 = Math.Round(BE.total2, 2);
                            }
                            break;
                        case "2":
                            Detalle.precunit2 = Convert.ToDecimal(fila["precunit"].ToString());
                            Detalle.bruto2 = Convert.ToDecimal(fila["bruto"].ToString());
                            Detalle.dscto2 = Convert.ToDecimal(fila["dscto"].ToString());
                            Detalle.valorventa2 = Convert.ToDecimal(fila["valorventa"].ToString());
                            Detalle.igv2 = Convert.ToDecimal(fila["igvo"].ToString());
                            Detalle.total2 = Convert.ToDecimal(fila["total"].ToString());
                            if ((BE.tipcamb > 0))
                            {
                                Detalle.precunit1 = Math.Round(Convert.ToDecimal(fila["precunit"]) * BE.tipcamb, 2);
                                Detalle.bruto1 = Math.Round(Convert.ToDecimal(fila["bruto"]) * BE.tipcamb, 2);
                                Detalle.dscto1 = Math.Round(Convert.ToDecimal(fila["dscto"]) * BE.tipcamb, 2);
                                Detalle.valorventa1 = Math.Round(Convert.ToDecimal(fila["valorventa"]) * BE.tipcamb, 2);
                                Detalle.igv1 = Math.Round(Convert.ToDecimal(fila["igvo"]) * BE.tipcamb, 2);
                                Detalle.total1 = Math.Round(Convert.ToDecimal(fila["total"]) * BE.tipcamb, 2);
                                Detalle.valorventa1 = Math.Round(BE.valorventa1, 2);
                                Detalle.igv1 = Math.Round(BE.igv1, 2);
                                Detalle.total1 = Math.Round(BE.total1, 2);
                            }
                            break;
                    }
                    //Detalle.precunit1 = Convert.ToDecimal(fila["precunit1"].ToString());
                    //Detalle.bruto1 = Convert.ToDecimal(fila["bruto1"].ToString());
                    //Detalle.dscto1 = Convert.ToDecimal(fila["dscto1"].ToString());
                    //Detalle.valorventa1 = Convert.ToDecimal(fila["valorventa1"].ToString());
                    //Detalle.igv1 = Convert.ToDecimal(fila["igv1"].ToString());
                    //Detalle.total1 = Convert.ToDecimal(fila["total1"].ToString());

                    Detalle.pdscto = Convert.ToDecimal(fila["pdscto"].ToString());
                    Detalle.pigv = Convert.ToDecimal(txtPigv.Text.Trim());
                    Detalle.tipguia = fila["tipguia"].ToString();
                    Detalle.serguia = fila["serguia"].ToString();
                    Detalle.numguia = fila["numguia"].ToString();

                    Detalle.afectoigvid = fila["afectoigvid"].ToString();
                    Detalle.incprec = chkIncluye.Checked;
                    Detalle.vendedorid = fila["vendedorid"].ToString();
                    Detalle.cencosid = fila["cencosid"].ToString();
                    Detalle.glosa = txtGlosa.Text.Trim().ToUpper().ToString();
                    Detalle.moneda = Equivalencias.Left(cboMoneda.SelectedValue.ToString(), 1);
                    Detalle.tcamb = Convert.ToDecimal(txtTipocambio.Text.Trim());
                    Detalle.ordencs = fila["ordencs"].ToString();
                    Detalle.comisionvta = Convert.ToDecimal(fila["comisionvta"].ToString());
                    Detalle.porcvta = Convert.ToDecimal(fila["porcvta"].ToString());
                    Detalle.porcefect = Convert.ToDecimal(fila["porcefect"].ToString());
                    Detalle.observ1 = fila["observ1"].ToString();
                    Detalle.observ2 = fila["observ2"].ToString();
                    Detalle.observ3 = fila["observ3"].ToString();
                    Detalle.observ4 = fila["observ4"].ToString();
                    Detalle.observ5 = fila["observ5"].ToString();
                    Detalle.precunit = Convert.ToDecimal(fila["precunit"].ToString());
                    Detalle.bruto = Convert.ToDecimal(fila["bruto"].ToString());
                    Detalle.dscto = Convert.ToDecimal(fila["dscto"].ToString());
                    Detalle.valorventa = Convert.ToDecimal(fila["valorventa"].ToString());
                    Detalle.igvo = Convert.ToDecimal(fila["igvo"].ToString());
                    Detalle.total = Convert.ToDecimal(fila["total"].ToString());

                    Detalle.valorventa = Detalle.valorventa + (Detalle.total - (Detalle.valorventa + Detalle.igvo)); // Origen
                    Detalle.valorventa1 = Detalle.valorventa1 + (Detalle.total1 - (Detalle.valorventa1 + Detalle.igv1)); // S/.
                    Detalle.valorventa2 = Detalle.valorventa2 + (Detalle.total2 - (Detalle.valorventa2 + Detalle.igv2)); // US$

                    Detalle.usuar = VariablesPublicas.Usuar;

                    ListaItems.Add(Detalle);
                }

                BE.ListaItems = ListaItems;
                #endregion

                #region **Save BD
                try
                {
                    if (u_n_opsel == 1)  //Si es nuevo
                    {
                        if (BL.Insert(VariablesPublicas.EmpresaID.ToString(), BE))
                        {
                            seguridadlog("N");
                            if (!nopideimpresion)
                            {
                                string message = "Desea Imprimir Documento Nro: " + local.ToString() + " " + VariablesPublicas.PADL(cboSubdiario.SelectedValue.ToString(), 4, "0") + "/" + txtMes.Text + "-" + txtAsiento.Text + " ...?";
                                string caption = "Impresión";
                                MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                                DialogResult result;

                                // Muestra el cuadro de mensaje.
                                result = DevExpress.XtraEditors.XtraMessageBox.Show(this, message, caption, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                                if (result == DialogResult.Yes)
                                {
                                    Accion(6, "", xnum);
                                }
                            }
                            tmptablacab = null;
                            tmptabladet = null;
                            U_CancelarEdicion(0);
                        }
                    }
                    else if (u_n_opsel == 2)  //Si NO es nuevo
                    {
                        if (BL.Update(VariablesPublicas.EmpresaID.ToString(), BE))
                        {
                            seguridadlog("M");
                            if (!nopideimpresion)
                            {
                                string message = "Desea Imprimir Documento Nro: " + local.ToString() + " " + VariablesPublicas.PADL(cboSubdiario.SelectedValue.ToString(), 4, "0") + "/" + txtMes.Text + "-" + txtAsiento.Text + " ...?";
                                string caption = "Impresión";
                                MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                                DialogResult result;

                                // Muestra el cuadro de mensaje.
                                result = DevExpress.XtraEditors.XtraMessageBox.Show(this, message, caption, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                                if (result == DialogResult.Yes)
                                {
                                    Accion(6, "", xnum);
                                }
                            }
                            tmptablacab = null;
                            tmptabladet = null;
                            U_CancelarEdicion(0);
                        }
                    }
                }
                catch (Exception ex)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                #endregion
            }
        }
        private void ImportarVentas()
        {
            seguridadlog();
            DeleteVentasImportadas();

            string message;
            string caption = "Mensaje del Sistema";
            string cuentax = "7010102";

            // Forzar a grabar si pulsa el boton sin finalizar edicion del grid
            if (Examinar.IsCurrentCellInEditMode)
            {
                Examinar.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }

            int n = 0; //int xItem = 0;
            int xMax = 0;
            Progreso.Maximum = Examinar.Rows.Count;
            Progreso.Value = 0;
            for (n = 0; n <= Examinar.Rows.Count - 1; n++)
            {
                //xItem = 1;
                xMax = 1;
                #region ** Númeracion **Ingreso Ventas Cabecera***
                // Variables de Cabecera
                tb_co_VentasBL BL = new tb_co_VentasBL();
                tb_co_Ventas BE = new tb_co_Ventas();

                // Variables para Detalle
                tb_co_Ventas.Item Detalle = new tb_co_Ventas.Item();
                List<tb_co_Ventas.Item> ListaItems = new List<tb_co_Ventas.Item>();

                //string activo = "0"; //Activo
                //string anulad = "9"; //Anulado
                string xMoneda = Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim();

                //caso venta
                BE.perianio = VariablesPublicas.perianio.Trim();
                BE.perimes = VariablesPublicas.PADL(xmes, 2, "0");
                BE.moduloid = VariablesDominio.VarVentas.Moduloid;
                BE.local = VariablesDominio.VarVentas.Local;
                BE.diarioid = xdiario; //Registro de Ventas Tiendas
                BE.asiento = VariablesPublicas.PADL(Convert.ToString(n + 1), 6, "0");

                BE.origen = "01"; //Ventas Nacionales
                BE.status = Examinar.Rows[n].Cells["status"].Value.ToString().Trim();
                BE.tipdoc = VariablesPublicas.PADL(Examinar.Rows[n].Cells["tipdoc"].Value.ToString().Trim(), 2, "0");
                BE.serdoc = VariablesPublicas.PADL(Examinar.Rows[n].Cells["serdoc"].Value.ToString().Trim(), 4, "0");
                BE.numdoc = VariablesPublicas.PADL(Examinar.Rows[n].Cells["numdoc"].Value.ToString().Trim(), 10, "0");
                if (Examinar.Rows[n].Cells["nmruc"].Value.ToString().Trim().Length == VariablesPublicas.NmrucDigitos)
                {
                    if (Equivalencias.Left(Examinar.Rows[n].Cells["nmruc"].Value.ToString().Trim(), 1) == "1")
                    { xPersona = "01"; }
                    else
                    { xPersona = "02"; }
                }
                else
                { xPersona = "01"; }
                BE.tiperson = xPersona;
                BE.tipdid = Examinar.Rows[n].Cells["tipdid"].Value.ToString().Trim();
                BE.nmruc = Examinar.Rows[n].Cells["nmruc"].Value.ToString().Trim();
                BE.ctactename = Examinar.Rows[n].Cells["ctactename"].Value.ToString().Trim().ToUpper();
                BE.ctacte = UbicarCtaCte(BE.nmruc, BE.ctactename, BE.tipdid, BE.tiperson);
                BE.direc = "";
                BE.ubige = "";

                BE.fechdoc = Convert.ToDateTime(Examinar.Rows[n].Cells["fechdoc"].Value);
                BE.fechvcto = Convert.ToDateTime(Examinar.Rows[n].Cells["fechdoc"].Value);

                BE.condicionvta = "";

                if (TipoCambio(Convert.ToDateTime(Examinar.Rows[n].Cells["fechdoc"].Value)) > 0)
                {
                    BE.tipcamb = TipoCambio(Convert.ToDateTime(Examinar.Rows[n].Cells["fechdoc"].Value));
                }
                else
                {
                    int SwConfirmacion = 1;
                    bool sw_prosigue = true;
                    if (SwConfirmacion == 1)
                    {
                        sw_prosigue = (XtraMessageBox.Show(this, "Resgistre el Tipo de Cambio para la fecha " + BE.fechdoc + "\r"
                                        + "Asiento: " + BE.perimes + BE.asiento + "  Comprobante: " + BE.tipdoc + " - " + BE.serdoc + "-" + BE.numdoc + "\r"
                                        + "Cliente: " + BE.nmruc + " - " + BE.ctactename + "\r"
                                        + "\r"
                                        + "Desea Cancelar la Importación del Registro de Ventas ?", "Mensaje del Sistema",
                                        MessageBoxButtons.YesNo, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1) == DialogResult.Yes);
                    }
                    else
                    {
                        sw_prosigue = true;
                    }
                    if (sw_prosigue)
                    {
                        return;
                    }
                }
                //BE.tipcamb = TipoCambio(Convert.ToDateTime(Examinar.Rows[n].Cells["fechdoc"].Value));

                BE.moneda = Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim();
                BE.ordencompra = "";

                //Detracciones
                BE.detraccionid = "";
                BE.porcdetraccion = 0;
                BE.nctadetraccion = "";
                BE.condicionpago = (Examinar.Rows[n].Cells["condicionpago"].Value == null ? "" : Examinar.Rows[n].Cells["condicionpago"].Value.ToString().Trim());

                //BE.glosa = (BE.status == "0" ? Examinar.Rows[n].Cells["glosa"].Value.ToString().Trim() : "ANULADO");
                //BE.glosa = (Examinar.Rows[n].Cells["glosa"].Value.ToString().Trim() == "ANULADO" & BE.status == "0" ? Examinar.Rows[n].Cells["glosa"].Value.ToString().Trim() : "ANULADO");
                BE.glosa = (BE.status == "0" ? "VENTAS" : "ANULADO");

                //if (Examinar.Rows[n].Cells["condicionpago"].Value == null)
                //{
                //    BE.tipoventa = (Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim() == "1" ? "02" : "05");
                //    //02= Crédito en Soles  05=Crédito en Dólares
                //}
                //else
                if (BE.condicionpago.ToString().Trim() == "001")
                {
                    BE.tipoventa = "49";
                    //49= Ventas al Contado Cta. 1010101
                }
                else //if (Examinar.Rows[n].Cells["condicionpago"].Value.ToString().Trim() == "002")
                {
                    BE.tipoventa = (Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim() == "1" ? "02" : "05");
                    //02= Crédito en Soles  05=Crédito en Dólares
                }
                //BE.tipoventa = (Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim() == "1" ? "02" : "05");

                //1. cuando hay bimp>0 y inafec>0
                if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                {
                    BE.afectoigvid = "3";
                }
                else if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                {
                    BE.afectoigvid = "2";
                }
                else if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                {
                    BE.afectoigvid = "1";
                }
                else if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                {
                    BE.afectoigvid = "1";
                }
                //BE.afectoigvid = Examinar.Rows[n].Cells["afectoigvid"].Value.ToString();

                //datos documento de referencia
                BE.tipref = (BE.tipdoc == "07" ? VariablesPublicas.PADL(Examinar.Rows[n].Cells["tipref"].Value.ToString().Trim(), 2, "0") : "");
                BE.serref = (BE.tipdoc == "07" ? VariablesPublicas.PADL(Examinar.Rows[n].Cells["serref"].Value.ToString().Trim(), 4, "0") : "");
                BE.numref = (BE.tipdoc == "07" ? VariablesPublicas.PADL(Examinar.Rows[n].Cells["numref"].Value.ToString().Trim(), 10, "0") : "");
                try { BE.fechref = Convert.ToDateTime(Examinar.Rows[n].Cells["fechref"].Value); }
                catch { BE.fechref = Convert.ToDateTime("01/01/1900"); }
                //Aduanas
                BE.aduanaid = "";
                BE.aniodua = "";
                BE.numdua = "";
                BE.valorfobdua = 0;
                BE.fechembdua = Convert.ToDateTime("01/01/1900");
                BE.fechreguldua = Convert.ToDateTime("01/01/1900");
                BE.tipoexportid = "";

                //BE.afectoigv = (Examinar.Rows[n].Cells["afectoigvid"].Value.ToString().Trim() == "1" ? true : false);
                BE.afectoigv = (BE.afectoigvid == "1" ? true : false);
                BE.incprec = false;
                BE.afectretencion = false;
                BE.terminovta = "";
                BE.dpais = "";
                BE.embarcador = "";
                BE.cartacredito = "";
                BE.viaembarque = "";
                BE.referencia = "";

                BE.bultos = "";
                BE.pesoneto = 0;
                BE.pesobruto = 0;

                switch (xMoneda)
                {
                    case "1":
                        BE.bruto1 = Math.Round(Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value)),2);
                        BE.dscto1 = 0;
                        BE.valorventa1 = Math.Round(Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value)),2);
                        BE.igv1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value));
                        BE.total1 = Math.Round(Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value)),2);
                        if (BE.tipcamb > 0)
                        {
                            BE.bruto2 = Math.Abs(Math.Round(BE.bruto1 / BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) + Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) / BE.tipcamb, 2));
                            BE.dscto2 = 0;
                            BE.valorventa2 = Math.Abs(Math.Round(BE.valorventa1 / BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) + Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) / BE.tipcamb, 2));
                            BE.igv2 = Math.Abs(Math.Round(BE.igv1 / BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value) / BE.tipcamb, 2));
                            BE.total2 = Math.Abs(Math.Round(BE.valorventa2 + BE.igv2, 2));

                            BE.valorventa2 = Math.Abs(Math.Round(BE.valorventa2, 2));
                            BE.igv2 = Math.Abs(Math.Round(BE.igv2, 2));
                            BE.total2 = Math.Abs(Math.Round(BE.total2, 2));
                        }
                        break;
                    case "2":
                        BE.bruto2 = Math.Round(Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value)),2);
                        BE.dscto2 = 0;
                        BE.valorventa2 = Math.Round(Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value)) + Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value)),2);
                        BE.igv2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value));
                        BE.total2 = Math.Abs(Math.Round(BE.valorventa2 + BE.igv2, 2));
                        if (BE.tipcamb > 0)
                        {
                            BE.bruto1 = Math.Abs(Math.Round(BE.bruto2 * BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) + Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) * BE.tipcamb, 2));
                            BE.dscto1 = 0;
                            BE.valorventa1 = Math.Abs(Math.Round(BE.bruto2 * BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) + Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) * BE.tipcamb, 2));
                            BE.igv1 = Math.Abs(Math.Round(BE.bruto2 * BE.tipcamb, 2)); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value) * BE.tipcamb, 2));
                            BE.total1 = Math.Abs(Math.Round(BE.valorventa1 + BE.igv1, 2));

                            BE.valorventa1 = Math.Abs(Math.Round(BE.valorventa1, 2));
                            BE.igv1 = Math.Abs(Math.Round(BE.igv1, 2));
                            BE.total1 = Math.Abs(Math.Round(BE.total1, 2));
                        }
                        break;
                }
                BE.valorventa1 = BE.valorventa1 + (BE.total1 - (BE.valorventa1 + BE.igv1)); // S/.
                BE.valorventa2 = BE.valorventa2 + (BE.total2 - (BE.valorventa2 + BE.igv2)); // US$

                BE.pdscto = 0;
                BE.pigv = Convert.ToDecimal(Examinar.Rows[n].Cells["pigv"].Value);
                BE.tienda = "";
                BE.ndias = 0;
                BE.vendedorid = (Examinar.Rows[n].Cells["vendedorid"].Value == null ? "" : Examinar.Rows[n].Cells["vendedorid"].Value.ToString().Trim());
                BE.porcvta = 0;
                BE.porcefect = 0;
                BE.vinculante = "I";
                BE.usuar = VariablesPublicas.Usuar.Trim();
                BE.maqreg = Examinar.Rows[n].Cells["maqreg"].Value.ToString().Trim();
                BE.numdocfinal = (Examinar.Rows[n].Cells["numdocfinal"].Value.ToString().Trim().Length > 0 ? VariablesPublicas.PADL(Examinar.Rows[n].Cells["numdocfinal"].Value.ToString().Trim(), 10, "0") : "");
                BE.estabsunat = Examinar.Rows[n].Cells["estabsunat"].Value.ToString().Trim();

                #endregion

                #region **** Ingreso Ventas Detalle***
                if ((Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value == null ? 0 : Examinar.Rows[n].Cells["inafecto"].Value) > 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value == null ? 0 : Examinar.Rows[n].Cells["baseimpo"].Value) > 0))
                {
                    xMax = 2;
                }

                for (int i = 0; i < xMax; i++)
                {
                    Detalle = new tb_co_Ventas.Item();

                    Detalle.perianio = VariablesPublicas.perianio;
                    Detalle.perimes = BE.perimes;
                    Detalle.moduloid = VariablesDominio.VarVentas.Moduloid;
                    Detalle.local = VariablesDominio.VarVentas.Local;
                    Detalle.diarioid = BE.diarioid;
                    Detalle.asiento = BE.asiento;

                    //datos documento cabecera importante [todos]
                    Detalle.tipdoc = BE.tipdoc;
                    Detalle.serdoc = BE.serdoc;
                    Detalle.numdoc = BE.numdoc;
                    Detalle.fechdoc = Convert.ToDateTime(BE.fechdoc);
                    Detalle.fechvcto = Convert.ToDateTime(BE.fechdoc);

                    //datos de cliente o proveedor
                    Detalle.nmruc = BE.nmruc;
                    Detalle.ctactename = BE.ctactename;
                    //accion del alamacen dependiendo del tipo de documento
                    Detalle.almacaccionid = "";

                    Detalle.status = BE.status;
                    //datos documento de referencia
                    Detalle.tipref = BE.tipref;
                    Detalle.serref = BE.serref;
                    Detalle.numref = BE.numref;
                    Detalle.fechref = Convert.ToDateTime(BE.fechref);

                    //datos calculados de detalle de movimiento obtenidos de memoria
                    Detalle.items = "";
                    //Detalle.asientoitems = item.ToString().PadLeft(5, '0');
                    Detalle.asientoitems = VariablesPublicas.PADL(Convert.ToString(i + 1), 5, "0");
                    //Detalle.asientoitems = VariablesPublicas.PADL(Convert.ToString(n + 1), 5, "0");

                    //1. cuando hay bimp>0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                        {
                            Detalle.rubroid = UbicarRubroId(Examinar.Rows[n].Cells["cuentaid"].Value.ToString().Trim());
                        }
                        else
                        {
                            Detalle.rubroid = UbicarRubroId(cuentax);
                        }
                    }

                    //2. cuando bimp=0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                            Detalle.rubroid = UbicarRubroId(cuentax);
                    }
                    //3. cuando bimp>0 y inafec=0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        if (i == 0)
                            Detalle.rubroid = UbicarRubroId(Examinar.Rows[n].Cells["cuentaid"].Value.ToString().Trim());
                    }
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        Detalle.rubroid = UbicarRubroId(Examinar.Rows[n].Cells["cuentaid"].Value.ToString().Trim());
                    }
                    //Detalle.rubroid = UbicarRubroId(Examinar.Rows[n].Cells["cuentaid"].Value.ToString().Trim());
                    //"1001"; //Ventas de Mercaderías Terceros - Mercado Nacional

                    Detalle.tippedido = "";
                    Detalle.serpedido = "";
                    Detalle.numpedido = "";
                    Detalle.tipOp = "";
                    Detalle.serOp = "";
                    Detalle.numOp = "";
                    Detalle.productid = "";
                    Detalle.productname = "";
                    Detalle.tallacolor = "";
                    Detalle.unidmedidaid = "";
                    Detalle.cantidad = 1;

                    switch (xMoneda)
                    {
                        case "1":
                            //1. cuando hay bimp>0 y inafec>0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                            {
                                if (i == 0)
                                {
                                    Detalle.precunit1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                    Detalle.bruto1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                    Detalle.valorventa1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                }
                                else
                                {
                                    Detalle.precunit1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                    Detalle.bruto1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                    Detalle.valorventa1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                }
                            }

                            //2. cuando bimp=0 y inafec>0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                            {
                                if (i == 0)
                                    Detalle.precunit1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                Detalle.bruto1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                Detalle.valorventa1 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                            }
                            //3. cuando bimp>0 y inafec=0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                            {
                                if (i == 0)
                                    Detalle.precunit1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.bruto1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.valorventa1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            }
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                            && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                            {
                                Detalle.precunit1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.bruto1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.valorventa1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            }
                            //Detalle.precunit1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            //Detalle.bruto1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.dscto1 = 0;
                            //Detalle.valorventa1 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.igv1 = (i == 0 ? Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value)) : 0);
                            Detalle.total1 = Math.Abs(Math.Round(Detalle.valorventa1 + Detalle.igv1, 2));
                            if ((BE.tipcamb > 0))
                            {
                                Detalle.precunit2 = Math.Abs(Math.Round(Detalle.precunit1 / BE.tipcamb, 2));
                                Detalle.bruto2 = Math.Abs(Math.Round(Detalle.bruto1 / BE.tipcamb, 2));
                                Detalle.dscto2 = 0;
                                Detalle.valorventa2 = Math.Abs(Math.Round(Detalle.valorventa1 / BE.tipcamb, 2));
                                Detalle.igv2 = (i == 0 ? Math.Abs(Math.Round(Detalle.igv1 / BE.tipcamb, 2)) : 0); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value) / BE.tipcamb, 2));
                                Detalle.total2 = Math.Abs(Math.Round(Detalle.valorventa2 + Detalle.igv2, 2));
                                Detalle.valorventa2 = Math.Abs(Math.Round(Detalle.valorventa2, 2));
                                Detalle.igv2 = (i == 0 ? Math.Abs(Math.Round(Detalle.igv2, 2)) : 0);
                                Detalle.total2 = Math.Abs(Math.Round(Detalle.total2, 2));
                            }
                            break;
                        case "2":
                            //1. cuando hay bimp>0 y inafec>0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                            {
                                if (i == 0)
                                {
                                    Detalle.precunit2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                    Detalle.bruto2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                    Detalle.valorventa2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                }
                                else
                                {
                                    Detalle.precunit2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                    Detalle.bruto2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                    Detalle.valorventa2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                }
                            }
                            //2. cuando bimp=0 y inafec>0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                            {
                                if (i == 0)
                                    Detalle.precunit2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                Detalle.bruto2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                                Detalle.valorventa2 = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                            }
                            //3. cuando bimp>0 y inafec=0
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                                && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                            {
                                if (i == 0)
                                    Detalle.precunit2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.bruto2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.valorventa2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            }
                            if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                            && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                            {
                                Detalle.precunit2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.bruto2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                                Detalle.valorventa2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            }
                            //Detalle.precunit2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            //Detalle.bruto2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.dscto2 = 0;
                            //Detalle.valorventa2 = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.igv2 = (i == 0 ? Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value.ToString())) : 0);
                            Detalle.total2 = Math.Abs(Math.Round(Detalle.valorventa2 + Detalle.igv2, 2));
                            if ((BE.tipcamb > 0))
                            {
                                Detalle.precunit1 = Math.Abs(Math.Round(Detalle.precunit2 * BE.tipcamb, 2));
                                Detalle.bruto1 = Math.Abs(Math.Round(Detalle.bruto2 * BE.tipcamb, 2));
                                Detalle.dscto1 = 0;
                                Detalle.valorventa1 = Math.Abs(Math.Round(Detalle.valorventa2 * BE.tipcamb, 2));
                                Detalle.igv1 = (i == 0 ? Math.Abs(Math.Round(Detalle.igv2 * BE.tipcamb, 2)) : 0); //Math.Abs(Math.Round(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value) * BE.tipcamb, 2));
                                Detalle.total1 = Math.Abs(Math.Round(Detalle.valorventa1 + Detalle.igv1, 2));
                                Detalle.valorventa1 = Math.Abs(Math.Round(Detalle.valorventa1, 2));
                                Detalle.igv1 = (i == 0 ? Math.Abs(Math.Round(Detalle.igv1, 2)) : 0);
                                Detalle.total1 = Math.Abs(Math.Round(Detalle.total1, 2));
                            }
                            break;
                    }

                    Detalle.pdscto = 0;
                    Detalle.pigv = Convert.ToDecimal(Examinar.Rows[n].Cells["pigv"].Value);
                    Detalle.tipguia = "";
                    Detalle.serguia = "";
                    Detalle.numguia = "";

                    //1. cuando hay bimp>0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                            Detalle.afectoigvid = "1";
                        else
                            Detalle.afectoigvid = "2";
                    }

                    //2. cuando bimp=0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                            Detalle.afectoigvid = "2";
                        //else
                        //    Detalle.tipimptoid = "4";
                    }
                    //3. cuando bimp>0 y inafec=0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        if (i == 0)
                            Detalle.afectoigvid = "1";
                        //else
                        //    Detalle.tipimptoid = "4";
                    }
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        Detalle.afectoigvid = "1";
                    }
                    //Detalle.afectoigvid = Examinar.Rows[n].Cells["afectoigvid"].Value.ToString();
                    Detalle.incprec = false;
                    Detalle.vendedorid = (Examinar.Rows[n].Cells["vendedorid"].Value == null ? "" : Examinar.Rows[n].Cells["vendedorid"].Value.ToString().Trim());
                    Detalle.cencosid = (Examinar.Rows[n].Cells["cencosid"].Value == null ? "" : Examinar.Rows[n].Cells["cencosid"].Value.ToString().Trim());

                    //Detalle.glosa = (BE.status == "0" ? Examinar.Rows[n].Cells["glosa"].Value.ToString() : "ANULADO");
                    Detalle.glosa = (BE.status == "0" ? "VENTAS" : "ANULADO");
                    Detalle.moneda = Examinar.Rows[n].Cells["moneda"].Value.ToString().Trim();
                    Detalle.tcamb = BE.tipcamb;
                    Detalle.ordencs = "";
                    Detalle.comisionvta = 0;
                    Detalle.porcvta = 0;
                    Detalle.porcefect = 0;
                    Detalle.observ1 = "";
                    Detalle.observ2 = "";
                    Detalle.observ3 = "";
                    Detalle.observ4 = "";
                    Detalle.observ5 = (Examinar.Rows[n].Cells["condicionpago"].Value == null ? "" : Examinar.Rows[n].Cells["condicionpago"].Value.ToString().Trim());

                    //datos de origen
                    //1. cuando hay bimp>0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                        {
                            Detalle.precunit = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.bruto = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                            Detalle.valorventa = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                        }
                        else
                        {
                            Detalle.precunit = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                            Detalle.bruto = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                            Detalle.valorventa = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                        }
                    }

                    //2. cuando bimp=0 y inafec>0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) != 0))
                    {
                        if (i == 0)
                            Detalle.precunit = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                        Detalle.bruto = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                        Detalle.valorventa = Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value.ToString());
                    }
                    //3. cuando bimp>0 y inafec=0
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) != 0)
                        && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        if (i == 0)
                            Detalle.precunit = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                        Detalle.bruto = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                        Detalle.valorventa = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                    }
                    if ((Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value) == 0)
                    && (Convert.ToDecimal(Examinar.Rows[n].Cells["inafecto"].Value) == 0))
                    {
                        Detalle.precunit = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                        Detalle.bruto = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                        Detalle.valorventa = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                    }
                    //Detalle.precunit = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                    //Detalle.bruto = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                    Detalle.dscto = 0;
                    //Detalle.valorventa = Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["baseimpo"].Value.ToString()));
                    Detalle.igvo = (i == 0 ? Math.Abs(Convert.ToDecimal(Examinar.Rows[n].Cells["migv"].Value.ToString())) : 0);
                    Detalle.total = Math.Abs(Math.Round(Detalle.valorventa + Detalle.igvo, 2));

                    Detalle.valorventa = Detalle.valorventa + (Detalle.total - (Detalle.valorventa + Detalle.igvo)); // Origen
                    Detalle.valorventa1 = Detalle.valorventa1 + (Detalle.total1 - (Detalle.valorventa1 + Detalle.igv1)); // S/.
                    Detalle.valorventa2 = Detalle.valorventa2 + (Detalle.total2 - (Detalle.valorventa2 + Detalle.igv2)); // US$

                    Detalle.usuar = VariablesPublicas.Usuar.Trim();

                    ListaItems.Add(Detalle);
                #endregion
                }

                BE.ListaItems = ListaItems;

                #region **Save BD
                try
                {
                    BL.Insert_ImportaExcel(VariablesPublicas.EmpresaID.ToString(), BE);
                }
                catch (Exception ex)
                {
                    XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                #endregion

                Progreso.Value += 1;
                int percent = (int)(((double)Progreso.Value / (double)Progreso.Maximum) * 100);
                Progreso.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(Progreso.Width / 2 - 10, Progreso.Height / 2 - 7));
            }
            message = "Se Terminó de Generar la Importación de Ventas ...";
            MessageBoxButtons buttons = MessageBoxButtons.OK;
            DialogResult result;

            // Muestra el cuadro de mensaje.
            result = XtraMessageBox.Show(this, message, caption, buttons, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
        }