private void actulizarCursor()
        {
            DataRow orow = null;
            //DataTable cursortipvoucher = new DataTable();
            //cursortipvoucher = ocapa.cag3i00_consulta(GlobalVars.GetInstance.Company, txtcodsubdiario.Text, "", 1, GlobalVars.GetInstance.TipoDocumentoContableTodos, "", "", "");
            //if (ocapa.sql_error.Length > 0)
            //{
            //    frmclass.ShowError(ocapa.sql_error, this);
            //    return;
            //}
            //if (cursortipvoucher.Rows.Count == 0)
            //{
            //    Interaction.MsgBox("Problemas al hallar tipo de voucher", 64, "");
            //    return;
            //}

            //DataTable cursorformaspagos = new DataTable();
            //cursorformaspagos = ocapa.CaeSoft_GetallFormaPagoContabilidad(txtcodpago.Text, 1, 0, "", "", "", GlobalVars.GetInstance.Company);
            //if (ocapa.sql_error.Length > 0)
            //{
            //    frmclass.ShowError(ocapa.sql_error, this);
            //    return;
            //}
            //if (cursorformaspagos.Rows.Count == 0)
            //{
            //    return;
            //}

            int nfila = 0;
            for (nfila = 0; nfila <= DocumentosPendientes.Rows.Count - 1; nfila++)
            {
                if (Convert.ToDecimal(DocumentosPendientes.Rows[nfila]["pagosoles"]) < 0)
                {
                    DocumentosPendientes.Rows[nfila]["debehaber"] = (DocumentosPendientes.Rows[nfila]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo ? VariablesPublicas.ContabilidadIdAbono : VariablesPublicas.ContabilidadIdCargo);
                }
            }

            int lc_contador = 0;
            int ncont = 0;
            int lccontcampos = 0;
            //string xnomcolumna = "";
            decimal vmtcambio = VariablesPublicas.StringtoDecimal(txtCambio.Text);

            try
            {
                tb_co_MovimientosdetBL BL = new tb_co_MovimientosdetBL();
                tb_co_Movimientosdet BE = new tb_co_Movimientosdet();

                BE.perianio = VariablesPublicas.perianio;
                BE.perimes = VariablesPublicas.PADL(fEmision.Value.Month.ToString().Trim(), 2, "0"); // VariablesPublicas.PADL(txtMes.Text.Trim(), 2, "0");
                BE.moduloid = VariablesDominio.VarTesoreria.Moduloid;
                BE.local = VariablesDominio.VarTesoreria.Local;
                BE.diarioid = "XXXX";
                BE.asiento = "XXXXXX"; //VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");

                DetFacturacion = BL.GetAll(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            //cac3p00 = ocapa.cac3p00_consulta("", "xxx", "", "", "", "", "");
            //cac3g00 = ocapa.cac3g00_consulta("xx", "xx", "", "", "", "", "");
            //cac3g00.Rows.Add(VariablesPublicas.INSERTINTOTABLE(cac3g00));
            //if (ocapa.sql_error.Length > 0)
            //{
            //    frmclass.ShowError(ocapa.sql_error, this);
            //    return;
            //}
            // Detalles a Amortizar / Pagar
            decimal vmdebesoles = 0;
            decimal vmdebedolares = 0;
            decimal vmhabersoles = 0;
            decimal vmhaberdolares = 0;
            decimal vmdebesoles10 = 0;
            decimal vmdebedolares10 = 0;
            decimal vmhabersoles10 = 0;
            decimal vmhaberdolares10 = 0;
            decimal ndifsoles = 0;
            for (ncont = 0; ncont <= DocumentosPendientes.Rows.Count - 1; ncont++)
            {
                if (Convert.ToBoolean(DocumentosPendientes.Rows[ncont]["selecciona"]) == true)
                {
                    orow = VariablesPublicas.InsertIntoTable(DetFacturacion);
                    for (lc_contador = 0; lc_contador <= DocumentosPendientes.Rows.Count - 1; lc_contador++)
                    {
                        #region Caso 1: Si no es Nota de Credito
                        orow["debehaber"] = DocumentosPendientes.Rows[ncont]["debehaber"];
                        #endregion
                        #region Caso 1: Si es Nota de Credito
                        if (DocumentosPendientes.Rows[ncont]["tipdoc"].ToString() == "07")
                        {
                            if (Equivalencias.Left(DocumentosPendientes.Rows[ncont]["cuentaid"].ToString(), 1) == "1")
                            {
                                orow["debehaber"] = "D";
                            }
                            else if (Equivalencias.Left(DocumentosPendientes.Rows[ncont]["cuentaid"].ToString(), 1) == "4")
                            {
                                orow["debehaber"] = "H";
                            }
                        }
                        #endregion

                        orow["cuentaid"] = DocumentosPendientes.Rows[ncont]["cuentaid"];
                        orow["cuentaname"] = DocumentosPendientes.Rows[ncont]["cuentaname"];
                        orow["ctacte"] = DocumentosPendientes.Rows[ncont]["ctacte"];
                        orow["nmruc"] = DocumentosPendientes.Rows[ncont]["nmruc"];
                        orow["ctactename"] = DocumentosPendientes.Rows[ncont]["ctactename"];
                        orow["tipdoc"] = DocumentosPendientes.Rows[ncont]["tipdoc"];
                        orow["serdoc"] = DocumentosPendientes.Rows[ncont]["serdoc"];
                        orow["numdoc"] = DocumentosPendientes.Rows[ncont]["numdoc"];
                        orow["fechdoc"] = DocumentosPendientes.Rows[ncont]["fechdoc"];
                        orow["fechvenc"] = DocumentosPendientes.Rows[ncont]["fechvenc"];
                        orow["importe"] = (DocumentosPendientes.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagosoles"])) : Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagodolares"])));
                        orow["importecambio"] = (DocumentosPendientes.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagodolares"])) : Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagosoles"])));
                        orow["soles"] = Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagosoles"]));
                        orow["dolares"] = Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagodolares"]));
                        orow["moneda"] = DocumentosPendientes.Rows[ncont]["moneda"];
                        orow["tipcamb"] = DocumentosPendientes.Rows[ncont]["tipcamb"];
                        orow["tipcambuso"] = "V"; // DocumentosPendientes.Rows[ncont]["tipcambuso"];
                        orow["tipcambfech"] = DocumentosPendientes.Rows[ncont]["fechdoc"];
                        orow["pedidoid"] = DocumentosPendientes.Rows[ncont]["pedidoid"];
                        orow["tip_op"] = DocumentosPendientes.Rows[ncont]["tip_op"];
                        orow["ser_op"] = DocumentosPendientes.Rows[ncont]["ser_op"];
                        orow["num_op"] = DocumentosPendientes.Rows[ncont]["num_op"];
                    }

                    //for (lccontcampos = 0; lccontcampos <= DetFacturacion.Columns.Count - 1; lccontcampos++)
                    //{
                    //    orow[DetFacturacion.Columns[lccontcampos].ColumnName] = DocumentosPendientes.Rows[ncont][DetFacturacion.Columns[lccontcampos].ColumnName];
                    //}

                    //for (lccontcampos = 0; lccontcampos <= DocumentosPendientes.Columns.Count - 1; lccontcampos++)
                    //{
                    //    if (DocumentosPendientes.Columns[lccontcampos].ColumnName.ToUpper() == "pagosoles" | DocumentosPendientes.Columns[lccontcampos].ColumnName.ToUpper() == "pagodolares" | DocumentosPendientes.Columns[lccontcampos].ColumnName.ToUpper() == "fechdoc")
                    //    {
                    //        xnomcolumna = DocumentosPendientes.Columns[lccontcampos].ColumnName.ToUpper();
                    //        if (xnomcolumna == "pagosoles" | xnomcolumna == "pagodolares")
                    //        {
                    //            if (xnomcolumna == "pagosoles")
                    //            {
                    //                if (Convert.ToDecimal(DocumentosPendientes.Rows[ncont][DocumentosPendientes.Columns[lccontcampos].ColumnName]) > Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["saldosoles"]))
                    //                {
                    //                    orow["imp1_3a"] = DocumentosPendientes.Rows[ncont]["saldosoles"];
                    //                }
                    //                else
                    //                {
                    //                    orow["imp1_3a"] = DocumentosPendientes.Rows[ncont][DocumentosPendientes.Columns[lccontcampos].ColumnName];
                    //                }
                    //            }
                    //            else
                    //            {
                    //                if (Convert.ToDecimal(DocumentosPendientes.Rows[ncont][DocumentosPendientes.Columns[lccontcampos].ColumnName]) > Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["saldodolares"]))
                    //                {
                    //                    orow["imp2_3a"] = DocumentosPendientes.Rows[ncont]["saldodolares"];
                    //                }
                    //                else
                    //                {
                    //                    orow["imp2_3a"] = DocumentosPendientes.Rows[ncont][DocumentosPendientes.Columns[lccontcampos].ColumnName];
                    //                }
                    //            }
                    //        }
                            //if (xnomcolumna == "fechdoc")
                            //{
                            //    orow["fref_3a"] = DocumentosPendientes.Rows[ncont][DocumentosPendientes.Columns[lccontcampos].ColumnName];
                            //}
                        //}
                    //}
                    if (DocumentosPendientes.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagosoles"]));
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagodolares"]));
                    }
                    else
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagosoles"]));
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DocumentosPendientes.Rows[ncont]["pagodolares"]));
                    }
                    DetFacturacion.Rows.Add(orow);
                }
            }
            // Gastos Adicionales
            for (ncont = 0; ncont <= TabCac3p00GastosAdic.Rows.Count - 1; ncont++)
            {
                if ((!object.ReferenceEquals(TabCac3p00GastosAdic.Rows[ncont]["cuentaid"], DBNull.Value)))
                {
                    if (TabCac3p00GastosAdic.Rows[ncont]["cuentaid"].ToString().Trim().Length > 0)
                    {
                        orow = VariablesPublicas.InsertIntoTable(DetFacturacion);
                        for (lccontcampos = 0; lccontcampos <= DetFacturacion.Columns.Count - 1; lccontcampos++)
                        {
                            orow[DetFacturacion.Columns[lccontcampos].ColumnName] = TabCac3p00GastosAdic.Rows[ncont][DetFacturacion.Columns[lccontcampos].ColumnName];
                        }
                        orow["ctacte"] = xctacte;
                        orow["nmruc"] = txtRuc.Text;
                        orow["ctactename"] = txtCtactename.Text;

                        if (TabCac3p00GastosAdic.Rows[ncont]["moneda"].ToString() == "1")
                        {
                            orow["importe"] = TabCac3p00GastosAdic.Rows[ncont]["Importe"];
                            orow["importecambio"] = TabCac3p00GastosAdic.Rows[ncont]["ImporteCambio"];
                            orow["soles"] = TabCac3p00GastosAdic.Rows[ncont]["Importe"];
                            orow["dolares"] = TabCac3p00GastosAdic.Rows[ncont]["ImporteCambio"];
                        }
                        else
                        {
                            orow["importe"] = TabCac3p00GastosAdic.Rows[ncont]["Importe"];
                            orow["importecambio"] = TabCac3p00GastosAdic.Rows[ncont]["ImporteCambio"];
                            orow["dolares"] = TabCac3p00GastosAdic.Rows[ncont]["Importe"];
                            orow["soles"] = TabCac3p00GastosAdic.Rows[ncont]["ImporteCambio"];
                        }
                        DetFacturacion.Rows.Add(orow);
                        if (TabCac3p00GastosAdic.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                        {
                            vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(orow["soles"]));
                            vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(orow["dolares"]));
                        }
                        else
                        {
                            vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(orow["soles"]));
                            vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(orow["dolares"]));
                        }
                    }
                }
            }
            // Detalle Cuenta bancos
            // Un Registro de Letra
            if (rbUnaletra.Checked)
            {
                tablavariasletras = DetFacturacion.Clone();
                tablavariasletras.Rows.Add(VariablesPublicas.InsertIntoTable(tablavariasletras));
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["cuentaid"] = txtCuentaletra.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["tipdoc"] = "62";
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["cuentaid"] = txtCuentaletra.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["cuentaname"] = txtDcuentaletra.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["serdoc"] = txtSerie.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["ctacte"] = xctacte;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["numdoc"] = txtNumpago.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["fechdoc"] = fEmision.Value.Date;
                if (fechaVenc.Checked)
                {
                    tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["fechvenc"] = fechaVenc.Value.Date;
                }
                if (vmdebesoles > vmhabersoles)
                {
                    tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["debehaber"] = VariablesPublicas.ContabilidadIdAbono;
                }
                else
                {
                    tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["debehaber"] = VariablesPublicas.ContabilidadIdCargo;
                }
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"] = Math.Abs(vmdebesoles - vmhabersoles);
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"] = Math.Abs(vmdebedolares - vmhaberdolares);
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["moneda"] = (rbDolares.Checked ? 2 : 1);
                if (rbDolares.Checked)
                {
                    if (vmtcambio == 0)
                    {
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"] = 0;
                    }
                    else
                    {
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["importe"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"]), 2);
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["importecambio"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"]) * vmtcambio, 2);
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"]) * vmtcambio, 2);
                        //tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["imp2_3a"]) * vmtcambio, 2);
                    }
                }
                else
                {
                    if (vmtcambio == 0)
                    {
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"] = 0;
                    }
                    else
                    {
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["importe"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"]), 2);
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["importecambio"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"]) / vmtcambio, 2);
                        tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["soles"]) / vmtcambio, 2);
                        //tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["dolares"] = Math.Round(Convert.ToDecimal(tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["imp1_3a"]) / vmtcambio, 2);
                    }
                }
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["tipcamb"] = txtCambio.Text;
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["tipcambuso"] = "V";
                tablavariasletras.Rows[tablavariasletras.Rows.Count - 1]["tipcambfech"] = fEmision.Text;
            }
            else
            {
                //completa demas datos a letras generadas
                for (ncont = 0; ncont <= tablavariasletras.Rows.Count - 1; ncont++)
                {
                    tablavariasletras.Rows[ncont]["cuentaid"] = txtCuentaletra.Text;
                    tablavariasletras.Rows[ncont]["cuentaname"] = txtDcuentaletra.Text;
                    tablavariasletras.Rows[ncont]["fechdoc"] = fEmision.Value.Date;
                    tablavariasletras.Rows[ncont]["moneda"] = (rbDolares.Checked ? 2 : 1);
                    tablavariasletras.Rows[ncont]["tipcamb"] = txtCambio.Text;
                    tablavariasletras.Rows[ncont]["tipcambuso"] = "V";
                    tablavariasletras.Rows[ncont]["tipcambfech"] = fEmision.Text;
                    if (vmdebesoles > vmhabersoles)
                    {
                        tablavariasletras.Rows[ncont]["debehaber"] = VariablesPublicas.ContabilidadIdAbono;
                    }
                    else
                    {
                        tablavariasletras.Rows[ncont]["debehaber"] = VariablesPublicas.ContabilidadIdCargo;
                    }
                    //tablavariasletras.Rows[ncont]["codbanco_3a"] = txtcodbanco.Text;
                }
            }
            tablavariasletras.AcceptChanges();

            if (vmdebesoles > vmhabersoles)
            {
                vmdebesoles10 = Math.Abs(vmdebesoles - vmhabersoles);
                vmdebedolares10 = Math.Abs(vmdebedolares - vmhaberdolares);
            }
            else
            {
                vmhabersoles10 = Math.Abs(vmdebesoles - vmhabersoles);
                vmhaberdolares10 = Math.Abs(vmdebedolares - vmhaberdolares);
            }

            for (ncont = 0; ncont <= tablavariasletras.Rows.Count - 1; ncont++)
            {
                DetFacturacion.Rows.Add(VariablesPublicas.InsertIntoTable(DetFacturacion));
                for (lccontcampos = 0; lccontcampos <= tablavariasletras.Columns.Count - 1; lccontcampos++)
                {
                    if (VariablesPublicas.SeekNameColumn(DetFacturacion, tablavariasletras.Columns[lccontcampos].ColumnName.ToUpper()))
                    {
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1][tablavariasletras.Columns[lccontcampos].ColumnName] = tablavariasletras.Rows[ncont][tablavariasletras.Columns[lccontcampos].ColumnName];
                    }
                }
            }

            //SUMATORIA SOLES/DOLARES ( EN DEBE HABER )
            vmdebesoles = 0;
            vmhabersoles = 0;
            vmdebedolares = 0;
            vmhaberdolares = 0;
            for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
            {
                DetFacturacion.Rows[ncont]["soles"] = Math.Round(Convert.ToDecimal(DetFacturacion.Rows[ncont]["soles"]), 2);
                DetFacturacion.Rows[ncont]["dolares"] = Math.Round(Convert.ToDecimal(DetFacturacion.Rows[ncont]["dolares"]), 2);
                if (DetFacturacion.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                {
                    vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["soles"]));
                    vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["dolares"]));
                }
                else
                {
                    vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["soles"]));
                    vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["dolares"]));
                }
            }
            //AJUSTES
            tb_co_ConfigcuentasrhredBL BiL = new tb_co_ConfigcuentasrhredBL();
            tb_co_Configcuentasrhred BiE = new tb_co_Configcuentasrhred();

            DataTable tmptablaconfig = BiL.GetAll(VariablesPublicas.EmpresaID.ToString(), BiE).Tables[0]; //ocapa.FagRHP_ConfigCuentas_consulta(GlobalVars.GetInstance.Company);

            //DataTable tmptablaconfig = ocapa.FagRHP_ConfigCuentas_consulta(GlobalVars.GetInstance.Company);
            string xcuentaganancia = "";
            string xcuentaperdida = "";
            decimal ndifdolares = 0;
            string xccostoganancia = "";
            string xccostoperdida = "70101";
            if (tmptablaconfig.Rows.Count > 0)
            {
                xcuentaganancia = tmptablaconfig.Rows[0]["cuentaiddifganancia"].ToString();
                xcuentaperdida = tmptablaconfig.Rows[0]["cuentaiddifperdida"].ToString();
                //xccostoganancia = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMGAN"].ToString();
                //xccostoperdida = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMPER"].ToString();
            }

            //Ajustes DIF.CAMBIO DOLARES
            if ((!(vmhaberdolares == vmdebedolares)))
            {
                if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                {
                    //DetFacturacion.Rows.Add(VariablesPublicas.InsertIntoTable(DetFacturacion));
                    DetFacturacion.ImportRow(DetFacturacion.Rows[0]);  // Duplicar la primera fila

                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = "";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["debehaber"] = "";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importe"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importecambio"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["soles"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = 0;

                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["ctacte"] = xctacte;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["fechdoc"] = fEmision.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["fechvenc"] = fEmision.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcamb"] = txtCambio.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcambuso"] = "V";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcambfech"] = fEmision.Text;
                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = 0;

                    ndifdolares = vmdebedolares - vmhaberdolares;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["moneda"] = (rbDolares.Checked ? 2 : 1);
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["debehaber"] = (ndifdolares < 0 ? "D" : "H");
                    // perdida
                    if ((vmdebedolares - vmhaberdolares) < 0)
                    {
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = CuentaNombre(VariablesPublicas.perianio, xcuentaperdida);
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cencosid"] = xccostoperdida;
                    }
                    else
                    {
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = CuentaNombre(VariablesPublicas.perianio, xcuentaganancia);
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cencosid"] = xccostoganancia;
                    }
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importe"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importecambio"] = Math.Abs(ndifdolares);
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["soles"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = Math.Abs(ndifdolares);

                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cdoc_3a"] = cursorformaspagos.Rows[0]["CDOCPAGO"];
                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["ndoc_3a"] = txtnumpago.Text;
                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["codbanco_3a"] = txtcodbanco.Text;
                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["fref_3a"] = femision.Value;
                }
                else
                {
                    XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                }
            }
            //Ajustes DIF.CAMBIO SOLES
            if ((!(vmdebesoles == vmhabersoles)) & Math.Abs(vmdebesoles - vmhabersoles) > 0)
            {
                if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                {
                    //DetFacturacion.Rows.Add(VariablesPublicas.InsertIntoTable(DetFacturacion));
                    DetFacturacion.ImportRow(DetFacturacion.Rows[0]);  // Duplicar la primera fila

                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = "";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["debehaber"] = "";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importe"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importecambio"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["soles"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = 0;

                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["ctacte"] = xctacte;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["fechdoc"] = fEmision.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["fechvenc"] = fEmision.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcamb"] = txtCambio.Text;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcambuso"] = "V";
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["tipcambfech"] = fEmision.Text;

                    ndifsoles = vmdebesoles - vmhabersoles;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["moneda"] = (rbDolares.Checked ? 2 : 1);
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["debehaber"] = (ndifsoles < 0 ? "D" : "H");
                    // perdida
                    if ((vmdebesoles - vmhabersoles) < 0)
                    {
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = CuentaNombre(VariablesPublicas.perianio, xcuentaperdida);
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cencosid"] = xccostoperdida;
                    }
                    else
                    {
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cuentaname"] = CuentaNombre(VariablesPublicas.perianio, xcuentaganancia);
                        DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["cencosid"] = xccostoganancia;
                    }
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importe"] = Math.Abs(ndifsoles);
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["importecambio"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = 0;
                    DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["soles"] = Math.Abs(ndifsoles);

                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["dolares"] = 0;
                    //DetFacturacion.Rows[DetFacturacion.Rows.Count - 1]["soles"] = Math.Abs(ndifsoles);
                }
                else
                {
                    XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                }
            }
            // Sumatoria para los totales Cabecera
            vmdebesoles = 0;
            vmdebedolares = 0;
            vmhabersoles = 0;
            vmhaberdolares = 0;

            for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
            {
                if (DetFacturacion.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                {
                    vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["soles"]));
                    sumadebesoles = vmdebesoles;
                    vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["dolares"]));
                    sumadebedolares = vmdebedolares;
                }
                else
                {
                    vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["soles"]));
                    sumahabersoles = vmhabersoles;
                    vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["dolares"]));
                    sumahaberdolares = vmhaberdolares;
                }
            }
            #region
            //// Cabecera
            //cac3g00.Rows[0]["ccia_3"] = GlobalVars.GetInstance.Company;
            //cac3g00.Rows[0]["cperiodo_3"] = GlobalVars.GetInstance.Periodo;
            //cac3g00.Rows[0]["ccom_3"] = txtcodsubdiario.Text;
            //cac3g00.Rows[0]["tcom_3"] = 2;
            //cac3g00.Rows[0]["tmov_3"] = "";
            //cac3g00.Rows[0]["tasien_3"] = 3;
            //cac3g00.Rows[0]["mone_3"] = (rbDolares.Checked ? 2 : 1);
            //cac3g00.Rows[0]["fcom_3"] = femision.Value;
            //cac3g00.Rows[0]["fcome_3"] = femision.Value;
            //cac3g00.Rows[0]["tcam_3"] = VariablesPublicas.StringtoDecimal(txtcambio.Text);
            //cac3g00.Rows[0]["totd1_3"] = vmdebesoles + vmdebesoles10;
            //cac3g00.Rows[0]["totd2_3"] = vmdebedolares + vmdebedolares10;
            //cac3g00.Rows[0]["toth1_3"] = vmhabersoles + vmhabersoles10;
            //cac3g00.Rows[0]["toth2_3"] = vmhaberdolares + vmhaberdolares10;
            //cac3g00.Rows[0]["cuenb_3"] = "";
            //cac3g00.Rows[0]["glosa_3"] = Strings.Mid(txtglosa.Text, 1, cac3g00.Columns["glosa_3"].MaxLength);
            //cac3g00.Rows[0]["girado_3"] = Strings.Mid(txtgirado.Text, 1, cac3g00.Columns["girado_3"].MaxLength);
            //cac3g00.Rows[0]["flag_3"] = 1;
            //cac3g00.Rows[0]["usuario_3"] = Strings.Mid(GlobalVars.GetInstance.UserSigla, 1, cac3g00.Columns["usuario_3"].MaxLength);
            //cac3g00.Rows[0]["fpago_3"] = txtcodpago.Text;

            //string nlastreg = "";
            //string xcodmes = femision.Value.Month.ToString.Trim;
            //xcodmes = VariablesPublicas.PADL(xcodmes, 2, "0");
            //nlastreg = ocapa.CaeSoft_GetAllMaximoMovimientoContable(cac3g00.Rows[0]["ccia_3"], cac3g00.Rows[0]["cperiodo_3"], txtcodsubdiario.Text, xcodmes);
            //tmptabla = ocapa.cac3p00_consulta(GlobalVars.GetInstance.Company, GlobalVars.GetInstance.Periodo, txtcodsubdiario.Text, xcodmes, nlastreg, "", "");
            //if (ocapa.sql_error.Length > 0)
            //{
            //    ERP_CAESOFT_FORMS.frmclass.ShowError(ocapa.sql_error, this);
            //    return;
            //}
            //dynamic nvmindice = 0;
            //while (tmptabla.Rows.Count > 0)
            //{
            //    nlastreg = ocapa.CaeSoft_GetAllMaximoMovimientoContable(cac3g00.Rows[0]["ccia_3"], cac3g00.Rows[0]["cperiodo_3"], txtcodsubdiario.Text, xcodmes);
            //    tmptabla = ocapa.cac3p00_consulta(GlobalVars.GetInstance.Company, GlobalVars.GetInstance.Periodo, txtcodsubdiario.Text, xcodmes, nlastreg, "", "");
            //    nvmindice = nvmindice + 1;
            //    if (nvmindice > 999999)
            //    {
            //        Interaction.MsgBox("ERROR LETAL SE ALCANZO EL ToPE DE REGiSTRO PARA ESTE TIPO DE VOUCHER.. CONSULTA A SISTEMAS", 16, "");
            //        return;
            //    }
            //}
            //UltimoNumVoucher = nlastreg;
            //UltimoMesVoucher = xcodmes;
            //UltimoTipoVoucher = txtcodsubdiario.Text;
            //cac3g00.AcceptChanges();
            //cac3p00.AcceptChanges();
            ////Claves Principales
            //for (ncont = 0; ncont <= cac3g00.Rows.Count - 1; ncont++)
            //{
            //    cac3g00.Rows[ncont]["ncom_3"] = xcodmes + nlastreg;
            //    cac3g00.Rows[ncont]["ccia_3"] = GlobalVars.GetInstance.Company;
            //    cac3g00.Rows[ncont]["cperiodo_3"] = GlobalVars.GetInstance.Periodo;
            //    cac3g00.Rows[ncont]["ccom_3"] = txtcodsubdiario.Text;
            //    cac3g00.Rows[ncont]["flag_3"] = 1;

            //}

            //for (ncont = 0; ncont <= cac3p00.Rows.Count - 1; ncont++)
            //{
            //    cac3p00.Rows[ncont]["ncom_3a"] = xcodmes + nlastreg;
            //    cac3p00.Rows[ncont]["ccia_3a"] = GlobalVars.GetInstance.Company;
            //    cac3p00.Rows[ncont]["cperiodo_3a"] = GlobalVars.GetInstance.Periodo;
            //    cac3p00.Rows[ncont]["ccom_3a"] = txtcodsubdiario.Text;
            //    cac3p00.Rows[ncont]["flag_3a"] = 1;
            //}

            //if (!ocapa.cac3g00_update(cac3g00, cac3p00))
            //{
            //    ERP_CAESOFT_FORMS.frmclass.ShowError(ocapa.sql_error, this);
            //    UltimoTipoVoucher = "";
            //}
            //else
            //{
            //    tablavariasletras = VariablesPublicas.Zap(tablavariasletras);
            //    if (!ocapa.CaeSoft_GetAllAsientoAutomaticoDestino(cac3g00.Rows[0]["ccia_3"], cac3g00.Rows[0]["cperiodo_3"], "", cac3g00.Rows[0]["ccom_3"], cac3g00.Rows[0]["ncom_3"], 2, "", ""))
            //    {
            //        ERP_CAESOFT_FORMS.frmclass.ShowError(ocapa.sql_error, this);
            //    }
            //    // Impresion
            //    FRMImpresionMovimientos frm = new FRMImpresionMovimientos();
            //    frm._tipComprobante = txtcodsubdiario.Text;
            //    frm._nroComprobante = xcodmes + nlastreg;
            //    frm._tipoOperacion = cac3g00.Rows[0]["tasien_3"].ToString();
            //    frm.Owner = this;
            //    frm.ShowInTaskbar = false;
            //    frm.ShowDialog();
            //    U_GeneraPendientes();
            //}
            #endregion
        }
        private void ValidarCursor()
        {
            DataRow orow = null;
            int ncont = 0;
            int lc_contador = 0;

            decimal vmtcambio = VariablesPublicas.StringtoDecimal(txtTipocambio.Text);
            try
            {
                tb_co_MovimientosdetBL BL = new tb_co_MovimientosdetBL();
                tb_co_Movimientosdet BE = new tb_co_Movimientosdet();

                BE.perianio = VariablesPublicas.perianio;
                BE.perimes = VariablesPublicas.PADL(txtMes.Text.Trim(), 2, "0");
                BE.moduloid = VariablesDominio.VarTesoreria.Moduloid;
                BE.local = VariablesDominio.VarTesoreria.Local;
                BE.diarioid = "XXXX";
                BE.asiento = "XXXXXX"; //VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");

                DetMovimiento = BL.GetAll(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
            }
            catch (Exception ex)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //if (rbnPagos.Checked == true | rbnLetras.Checked == true)
            //{
                #region // Detalles a Amortizar / Pagar
                decimal vmdebesoles = 0;
                decimal vmdebedolares = 0;
                decimal vmhabersoles = 0;
                decimal vmhaberdolares = 0;
                decimal vmdebesoles10 = 0;
                decimal vmdebedolares10 = 0;
                decimal vmhabersoles10 = 0;
                decimal vmhaberdolares10 = 0;
                decimal ndifsoles = 0;
                for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
                {
                    orow = VariablesPublicas.InsertIntoTable(DetMovimiento);
                    for (lc_contador = 0; lc_contador <= DetFacturacion.Rows.Count - 1; lc_contador++)
                    {
                        orow["cuentaid"] = DetFacturacion.Rows[ncont]["cuentaid"];
                        orow["cuentaname"] = CuentaName(VariablesPublicas.perianio, DetFacturacion.Rows[ncont]["cuentaid"].ToString());
                        orow["ctacte"] = DetFacturacion.Rows[ncont]["ctacte"];
                        orow["nmruc"] = DetFacturacion.Rows[ncont]["nmruc"];
                        orow["ctactename"] = txtCtactename.Text;
                        orow["tipdoc"] = DetFacturacion.Rows[ncont]["tipdoc"];
                        orow["serdoc"] = DetFacturacion.Rows[ncont]["serdoc"];
                        orow["numdoc"] = DetFacturacion.Rows[ncont]["numdoc"];
                        orow["fechdoc"] = DetFacturacion.Rows[ncont]["fechdoc"];
                        orow["fechvenc"] = DetFacturacion.Rows[ncont]["fechvcto"];
                        orow["importe"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagosoles"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagodolares1"])));
                        orow["importecambio"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagodolares1"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagosoles"])));
                        orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagosoles"]));
                        orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importepagodolares1"]));
                        orow["moneda"] = DetFacturacion.Rows[ncont]["moneda"];
                        orow["tipcamb"] = DetFacturacion.Rows[ncont]["tipcamb"];
                        orow["tipcambuso"] = "V";
                        orow["tipcambfech"] = DetFacturacion.Rows[ncont]["fechdoc"];
                        orow["debehaber"] = (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07" ? "H" : "D");
                        //orow["pedidoid"] = DetFacturacion.Rows[ncont]["pedidoid"];
                        //orow["tip_op"] = DetFacturacion.Rows[ncont]["tip_op"];
                        //orow["ser_op"] = DetFacturacion.Rows[ncont]["ser_op"];
                        //orow["num_op"] = DetFacturacion.Rows[ncont]["num_op"];
                    }
                    if (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07") //VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]));
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]));
                    }
                    else
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]));
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]));
                    }
                    DetMovimiento.Rows.Add(orow);
                //}
                #endregion
                #region// Detalle Cuenta bancos o Letras
                //if (rbnLetras.Checked == true)
                //{
                    //completa demas datos a letras generadas
                    for (ncont = 0; ncont <= DetLetras.Rows.Count - 1; ncont++)
                    {
                        orow = VariablesPublicas.InsertIntoTable(DetMovimiento);
                        for (lc_contador = 0; lc_contador <= DetLetras.Rows.Count - 1; lc_contador++)
                        {
                            orow["cuentaid"] = DetLetras.Rows[ncont]["cuentaid"];
                            orow["cuentaname"] = txtCuentaname.Text;
                            orow["ctacte"] = DetLetras.Rows[ncont]["ctacte"];
                            orow["nmruc"] = DetLetras.Rows[ncont]["nmruc"];
                            orow["ctactename"] = txtCtactename.Text;
                            orow["tipdoc"] = DetLetras.Rows[ncont]["tipdoc"];
                            orow["serdoc"] = DetLetras.Rows[ncont]["serdoc"];
                            orow["numdoc"] = DetLetras.Rows[ncont]["numdoc"];
                            orow["fechdoc"] = DetLetras.Rows[ncont]["fechdoc"];
                            orow["fechvenc"] = DetLetras.Rows[ncont]["fechvcto"];
                            orow["importe"] = (DetLetras.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe1"])) : Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe1"])));
                            orow["importecambio"] = (DetLetras.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe2"])) : Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe2"])));
                            orow["soles"] = (DetLetras.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe1"])) : Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe2"])));
                            orow["dolares"] = (DetLetras.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe2"])) : Math.Abs(Convert.ToDecimal(DetLetras.Rows[ncont]["importe1"])));
                            orow["moneda"] = DetLetras.Rows[ncont]["moneda"];
                            orow["tipcamb"] = txtTipocambio.Text;
                            orow["tipcambuso"] = "V";
                            orow["tipcambfech"] = fRegistro.Text;
                            orow["debehaber"] = "H";
                        }
                        DetMovimiento.Rows.Add(orow);
                    }
                //}
                //else
                //{
                //    //DetMovimiento.Rows.Add(VariablesPublicas.InsertIntoTable(DetMovimiento));
                //    DetMovimiento.ImportRow(DetMovimiento.Rows[0]);  // Duplicar la primera fila

                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = "";
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = "";
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;

                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = txtCuentaidP.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = txtCuentanameP.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["moneda"] = cboMonedaP.SelectedValue;

                //    if (vmdebesoles > vmhabersoles)
                //    {
                //        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = VariablesPublicas.ContabilidadIdAbono;
                //        vmdebesoles10 = Math.Abs(vmdebesoles - vmhabersoles);
                //        vmdebedolares10 = Math.Abs(vmdebedolares - vmhaberdolares);
                //    }
                //    else
                //    {
                //        vmhabersoles10 = Math.Abs(vmdebesoles - vmhabersoles);
                //        vmhaberdolares10 = Math.Abs(vmdebedolares - vmhaberdolares);

                //        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = VariablesPublicas.ContabilidadIdCargo;
                //    }
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = Math.Round(Math.Abs(vmdebesoles - vmhabersoles), 2);
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = Math.Round(Math.Abs(vmdebedolares - vmhaberdolares), 2);
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctacte"] = xctacte;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechdoc"] = fRegistro.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechvenc"] = fRegistro.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcamb"] = txtTipocambio.Text;
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambuso"] = "V";
                //    DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambfech"] = fRegistro.Text;

                //    if (cboMonedaP.SelectedValue.ToString() == "2")
                //    {
                //        if (vmtcambio == 0)
                //        {
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                //        }
                //        else
                //        {
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"]), 2);
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"]) * vmtcambio, 2);
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"]) * vmtcambio, 2);
                //        }
                //    }
                //    else
                //    {
                //        if (vmtcambio == 0)
                //        {
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["doalres"] = 0;
                //        }
                //        else
                //        {
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"]), 2);
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"]) / vmtcambio, 2);
                //            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"]) / vmtcambio, 2);
                //        }
                //    }
                //}
                #endregion
                #region// Cuenta Retencion IGV
                for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
                {
                    orow = VariablesPublicas.InsertIntoTable(DetMovimiento);
                    for (lc_contador = 0; lc_contador <= DetFacturacion.Rows.Count - 1; lc_contador++)
                    {
                        orow["cuentaid"] = txtCuentaid.Text;
                        orow["cuentaname"] = txtCuentaname.Text;
                        orow["ctacte"] = DetFacturacion.Rows[ncont]["ctacte"];
                        orow["nmruc"] = DetFacturacion.Rows[ncont]["nmruc"];
                        orow["ctactename"] = txtCtactename.Text;
                        orow["tipdoc"] = DetFacturacion.Rows[ncont]["tipdoc"];
                        orow["serdoc"] = DetFacturacion.Rows[ncont]["serdoc"];
                        orow["numdoc"] = DetFacturacion.Rows[ncont]["numdoc"];
                        orow["fechdoc"] = DetFacturacion.Rows[ncont]["fechdoc"];
                        orow["fechvenc"] = DetFacturacion.Rows[ncont]["fechvcto"];
                        orow["importe"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])));
                        orow["importecambio"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])));
                        orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
                        orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
                        orow["moneda"] = DetFacturacion.Rows[ncont]["moneda"];
                        orow["tipcamb"] = DetFacturacion.Rows[ncont]["tipcamb"];
                        orow["tipcambuso"] = "V";
                        orow["tipcambfech"] = DetFacturacion.Rows[ncont]["fechdoc"];
                        orow["debehaber"] = (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07" ? "D" : "H");
                    }
                    DetMovimiento.Rows.Add(orow);
                }
                #endregion
                #region // SUMATORIA SOLES/DOLARES ( EN DEBE HABER )
                vmdebesoles = 0;
                vmhabersoles = 0;
                vmdebedolares = 0;
                vmhaberdolares = 0;
                for (ncont = 0; ncont <= DetMovimiento.Rows.Count - 1; ncont++)
                {
                    DetMovimiento.Rows[ncont]["soles"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]), 2);
                    DetMovimiento.Rows[ncont]["dolares"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]), 2);
                    if (DetMovimiento.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                    }
                    else
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                    }
                }
                #endregion
                #region // AJUSTES X DIFERENCIA DE CAMBIO
                tb_co_ConfigcuentasrhredBL BiL = new tb_co_ConfigcuentasrhredBL();
                tb_co_Configcuentasrhred BiE = new tb_co_Configcuentasrhred();

                DataTable tmptablaconfig = BiL.GetAll(VariablesPublicas.EmpresaID.ToString(), BiE).Tables[0];
                string xcuentaganancia = "";
                string xcuentaperdida = "";
                decimal ndifdolares = 0;
                string xccostoganancia = "";
                string xccostoperdida = "70101";

                if (tmptablaconfig.Rows.Count > 0)
                {
                    xcuentaganancia = tmptablaconfig.Rows[0]["cuentaiddifganancia"].ToString();
                    xcuentaperdida = tmptablaconfig.Rows[0]["cuentaiddifperdida"].ToString();
                    //xccostoganancia = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMGAN"].ToString();
                    //xccostoperdida = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMPER"].ToString();
                }
                //Ajustes DIF.CAMBIO EN DOLARES
                if ((!(vmhaberdolares == vmdebedolares)) & Math.Abs(vmdebedolares - vmhaberdolares) > 0)
                {
                    if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                    {
                        //DetFacturacion.Rows.Add(VariablesPublicas.InsertIntoTable(DetFacturacion));
                        DetMovimiento.ImportRow(DetMovimiento.Rows[0]);  // Duplicar la primera fila

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctacte"] = xctacte;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechdoc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechvenc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcamb"] = txtTipocambio.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambuso"] = "V";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambfech"] = fRegistro.Text;

                        ndifdolares = Math.Round(Math.Abs(vmdebedolares - vmhaberdolares), 2);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["moneda"] = cboMoneda.SelectedValue;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = (vmdebedolares > vmhaberdolares ? "H" : "D");
                        // perdida
                        if ((vmdebedolares - vmhaberdolares) < 0)
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaperdida);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoperdida;
                        }
                        else
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaganancia);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoganancia;
                        }
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = Math.Abs(ndifdolares);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = Math.Abs(ndifdolares);
                    }
                    else
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                    }
                }
                //Ajustes DIF.CAMBIO EN SOLES
                if ((!(vmdebesoles == vmhabersoles)) & Math.Abs(vmdebesoles - vmhabersoles) > 0)
                {
                    if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                    {
                        //DetMovimiento.Rows.Add(VariablesPublicas.InsertIntoTable(DetMovimiento));
                        DetMovimiento.ImportRow(DetMovimiento.Rows[0]);  // Duplicar la primera fila

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctacte"] = xctacte;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechdoc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechvenc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcamb"] = txtTipocambio.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambuso"] = "V";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambfech"] = fRegistro.Text;
                        ndifsoles = Math.Abs(vmdebesoles - vmhabersoles);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["moneda"] = cboMoneda.SelectedValue;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = (vmdebesoles > vmhabersoles ? "H" : "D");
                        // perdida
                        if ((vmdebesoles - vmhabersoles) < 0)
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaperdida);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoperdida;
                        }
                        else
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaganancia);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoganancia;
                        }
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = Math.Abs(ndifsoles);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = Math.Abs(ndifsoles);
                    }
                    else
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                    }
                }
                #endregion
                #region // Sumatoria para los totales Cabecera
                vmdebesoles = 0;
                vmdebedolares = 0;
                vmhabersoles = 0;
                vmhaberdolares = 0;

                for (ncont = 0; ncont <= DetMovimiento.Rows.Count - 1; ncont++)
                {
                    if (DetMovimiento.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        sumadebesoles = vmdebesoles;
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                        sumadebedolares = vmdebedolares;
                    }
                    else
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        sumahabersoles = vmhabersoles;
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                        sumahaberdolares = vmhaberdolares;
                    }
                }
                #endregion
            //}
            //else if (rbnEmision.Checked == true)
            //{
            //    #region // Detalles a Amortizar / Pagar
            //    decimal vmdebesoles = 0;
            //    decimal vmdebedolares = 0;
            //    decimal vmhabersoles = 0;
            //    decimal vmhaberdolares = 0;
            //    decimal ndifsoles = 0;
            //    for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
            //    {
            //        orow = VariablesPublicas.InsertIntoTable(DetMovimiento);
            //        for (lc_contador = 0; lc_contador <= DetFacturacion.Rows.Count - 1; lc_contador++)
            //        {
            //            orow["cuentaid"] = DetFacturacion.Rows[ncont]["cuentaid"];
            //            orow["cuentaname"] = CuentaName(VariablesPublicas.perianio, DetFacturacion.Rows[ncont]["cuentaid"].ToString());
            //            orow["ctacte"] = DetFacturacion.Rows[ncont]["ctacte"];
            //            orow["nmruc"] = DetFacturacion.Rows[ncont]["nmruc"];
            //            orow["ctactename"] = txtCtactename.Text;
            //            orow["tipdoc"] = DetFacturacion.Rows[ncont]["tipdoc"];
            //            orow["serdoc"] = DetFacturacion.Rows[ncont]["serdoc"];
            //            orow["numdoc"] = DetFacturacion.Rows[ncont]["numdoc"];
            //            orow["fechdoc"] = DetFacturacion.Rows[ncont]["fechdoc"];
            //            orow["fechvenc"] = DetFacturacion.Rows[ncont]["fechvcto"];
            //            //orow["importe"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])));
            //            //orow["importecambio"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])));
            //            //orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //            //orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));

            //            if (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1")
            //            {
            //                orow["importe"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                orow["importecambio"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //                orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //            }
            //            else if (DetFacturacion.Rows[ncont]["moneda"].ToString() == "2")
            //            {
            //                orow["importe"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //                orow["importecambio"] = Math.Round(Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]) * Convert.ToDecimal(DetFacturacion.Rows[ncont]["tipcamb"])), 2);
            //                orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //                orow["soles"] = Math.Round(Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]) * Convert.ToDecimal(DetFacturacion.Rows[ncont]["tipcamb"])), 2);
            //            }

            //            orow["moneda"] = DetFacturacion.Rows[ncont]["moneda"];
            //            orow["tipcamb"] = DetFacturacion.Rows[ncont]["tipcamb"];
            //            orow["tipcambuso"] = "V";
            //            orow["tipcambfech"] = DetFacturacion.Rows[ncont]["fechdoc"];
            //            orow["debehaber"] = (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07" ? "H" : "D");
            //            //orow["pedidoid"] = DetFacturacion.Rows[ncont]["pedidoid"];
            //            //orow["tip_op"] = DetFacturacion.Rows[ncont]["tip_op"];
            //            //orow["ser_op"] = DetFacturacion.Rows[ncont]["ser_op"];
            //            //orow["num_op"] = DetFacturacion.Rows[ncont]["num_op"];
            //        }
            //        if (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07") //VariablesPublicas.ContabilidadIdCargo)
            //        {
            //            //vmhabersoles = vmhabersoles + Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]);
            //            //vmhaberdolares = vmhaberdolares + Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]);
            //            vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]));
            //            vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]));
            //        }
            //        else
            //        {
            //            //vmdebesoles = vmdebesoles + Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]);
            //            //vmdebedolares = vmdebedolares + Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]);
            //            vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetosoles"]));
            //            vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importenetodolares"]));
            //        }
            //        DetMovimiento.Rows.Add(orow);
            //    }
            //    #endregion
            //    #region// Cuenta Retencion IGV
            //    for (ncont = 0; ncont <= DetFacturacion.Rows.Count - 1; ncont++)
            //    {
            //        orow = VariablesPublicas.InsertIntoTable(DetMovimiento);
            //        for (lc_contador = 0; lc_contador <= DetFacturacion.Rows.Count - 1; lc_contador++)
            //        {
            //            orow["cuentaid"] = txtCuentaidR.Text;
            //            orow["cuentaname"] = txtCuentanameR.Text;
            //            orow["ctacte"] = DetFacturacion.Rows[ncont]["ctacte"];
            //            orow["nmruc"] = DetFacturacion.Rows[ncont]["nmruc"];
            //            orow["ctactename"] = txtCtactename.Text;
            //            orow["tipdoc"] = DetFacturacion.Rows[ncont]["tipdoc"];
            //            orow["serdoc"] = DetFacturacion.Rows[ncont]["serdoc"];
            //            orow["numdoc"] = DetFacturacion.Rows[ncont]["numdoc"];
            //            //orow["fechdoc"] = DetFacturacion.Rows[ncont]["fechdoc"];
            //            //orow["fechvenc"] = DetFacturacion.Rows[ncont]["fechvcto"];
            //            orow["fechdoc"] = fRegistro.Text;
            //            orow["fechvenc"] = fRegistro.Text;
            //            //orow["importe"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])));
            //            //orow["importecambio"] = (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1" ? Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])) : Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])));
            //            //orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //            //orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //            if (DetFacturacion.Rows[ncont]["moneda"].ToString() == "1")
            //            {
            //                orow["importe"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                orow["importecambio"] = Math.Round(Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) / Convert.ToDecimal(txtTipocambio.Text), 2);
            //                orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                orow["dolares"] = Math.Round(Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) / Convert.ToDecimal(txtTipocambio.Text), 2);
            //                //if (Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]) > 0)
            //                //{

            //                //    orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])) - Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]);
            //                //}
            //                //else if (Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]) < 0)
            //                //{
            //                //    orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"])) + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]));
            //                //}
            //                //else
            //                //{
            //                //    orow["dolares"] = 0;
            //                //}
            //            }
            //            else if (DetFacturacion.Rows[ncont]["moneda"].ToString() == "2")
            //            {
            //                orow["importe"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //                orow["importecambio"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                orow["dolares"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretenciondolares"]));
            //                orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"]));
            //                //if (Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]) > 0)
            //                //{

            //                //    orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) - Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]);
            //                //}
            //                //else if (Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]) < 0)
            //                //{
            //                //    orow["soles"] = Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importeretencionsoles"])) + Math.Abs(Convert.ToDecimal(DetFacturacion.Rows[ncont]["importedifcambio"]));
            //                //}
            //                //else
            //                //{
            //                //    orow["soles"] = 0;
            //                //}
            //            }
            //            orow["moneda"] = DetFacturacion.Rows[ncont]["moneda"];
            //            orow["tipcamb"] = txtTipocambio.Text;
            //            orow["tipcambuso"] = "V";
            //            orow["tipcambfech"] = fRegistro.Text;
            //            orow["debehaber"] = (DetFacturacion.Rows[ncont]["tipdoc"].ToString() == "07" ? "D" : "H");
            //        }
            //        DetMovimiento.Rows.Add(orow);
                //}
                //#endregion
                #region // SUMATORIA SOLES/DOLARES ( EN DEBE HABER )
                vmdebesoles = 0;
                vmhabersoles = 0;
                vmdebedolares = 0;
                vmhaberdolares = 0;
                for (ncont = 0; ncont <= DetMovimiento.Rows.Count - 1; ncont++)
                {
                    DetMovimiento.Rows[ncont]["soles"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]), 2);
                    DetMovimiento.Rows[ncont]["dolares"] = Math.Round(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]), 2);
                    if (DetMovimiento.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                    }
                    else
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                    }
                }
                #endregion
                #region // AJUSTES X DIFERENCIA DE CAMBIO
                //tb_co_ConfigcuentasrhredBL BiL = new tb_co_ConfigcuentasrhredBL();
                //tb_co_Configcuentasrhred BiE = new tb_co_Configcuentasrhred();

                tmptablaconfig = BiL.GetAll(VariablesPublicas.EmpresaID.ToString(), BiE).Tables[0];
                //string xcuentaganancia = "";
                //string xcuentaperdida = "";
                //decimal ndifdolares = 0;
                //string xccostoganancia = "";
                //string xccostoperdida = "70101";

                if (tmptablaconfig.Rows.Count > 0)
                {
                    xcuentaganancia = tmptablaconfig.Rows[0]["cuentaiddifganancia"].ToString();
                    xcuentaperdida = tmptablaconfig.Rows[0]["cuentaiddifperdida"].ToString();
                    //xccostoganancia = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMGAN"].ToString();
                    //xccostoperdida = tmptablaconfig.Rows[0]["CCOSTO_DIFCAMPER"].ToString();
                }
                //Ajustes DIF.CAMBIO EN DOLARES
                if ((!(vmhaberdolares == vmdebedolares)) & Math.Abs(vmdebedolares - vmhaberdolares) > 0)
                {
                    if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                    {
                        //DetFacturacion.Rows.Add(VariablesPublicas.InsertIntoTable(DetFacturacion));
                        DetMovimiento.ImportRow(DetMovimiento.Rows[0]);  // Duplicar la primera fila

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctacte"] = xctacte;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechdoc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechvenc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcamb"] = txtTipocambio.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambuso"] = "V";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambfech"] = fRegistro.Text;
                        ndifdolares = Math.Round(Math.Abs(vmdebedolares - vmhaberdolares), 2);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["moneda"] = cboMoneda.SelectedValue;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = (vmdebedolares > vmhaberdolares ? "H" : "D");
                        // perdida
                        if ((vmdebedolares - vmhaberdolares) < 0)
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaperdida);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoperdida;
                        }
                        else
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaganancia);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoganancia;
                        }
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = Math.Abs(ndifdolares);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = Math.Abs(ndifdolares);
                    }
                    else
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                    }
                }
                //Ajustes DIF.CAMBIO EN SOLES
                else if ((!(vmdebesoles == vmhabersoles)) & Math.Abs(vmdebesoles - vmhabersoles) > 0)
                {
                    if (xcuentaganancia.Trim().Length > 0 & xcuentaperdida.Trim().Length > 0)
                    {
                        //DetMovimiento.Rows.Add(VariablesPublicas.InsertIntoTable(DetMovimiento));
                        DetMovimiento.ImportRow(DetMovimiento.Rows[0]);  // Duplicar la primera fila

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = "";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;

                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctacte"] = xctacte;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["nmruc"] = txtRuc.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["ctactename"] = txtCtactename.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechdoc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["fechvenc"] = fRegistro.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcamb"] = txtTipocambio.Text;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambuso"] = "V";
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["tipcambfech"] = fRegistro.Text;
                        ndifsoles = Math.Abs(vmdebesoles - vmhabersoles);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["moneda"] = cboMoneda.SelectedValue;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["debehaber"] = (vmdebesoles > vmhabersoles ? "H" : "D");
                        // perdida
                        if ((vmdebesoles - vmhabersoles) < 0)
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaperdida;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaperdida);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoperdida;
                        }
                        else
                        {
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaid"] = xcuentaganancia;
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cuentaname"] = CuentaName(VariablesPublicas.perianio, xcuentaganancia);
                            DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["cencosid"] = xccostoganancia;
                        }
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importe"] = Math.Abs(ndifsoles);
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["importecambio"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["dolares"] = 0;
                        DetMovimiento.Rows[DetMovimiento.Rows.Count - 1]["soles"] = Math.Abs(ndifsoles);
                    }
                    else
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show("El asiento se va a generar con diferencia... Falta Configurar cuentas de ajuste x dif.cambio", "");
                    }
                }
                #endregion
                #region // Sumatoria para los totales Cabecera
                vmdebesoles = 0;
                vmdebedolares = 0;
                vmhabersoles = 0;
                vmhaberdolares = 0;

                for (ncont = 0; ncont <= DetMovimiento.Rows.Count - 1; ncont++)
                {
                    if (DetMovimiento.Rows[ncont]["debehaber"].ToString() == VariablesPublicas.ContabilidadIdCargo)
                    {
                        vmdebesoles = vmdebesoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        sumadebesoles = vmdebesoles;
                        vmdebedolares = vmdebedolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                        sumadebedolares = vmdebedolares;
                    }
                    else
                    {
                        vmhabersoles = vmhabersoles + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["soles"]));
                        sumahabersoles = vmhabersoles;
                        vmhaberdolares = vmhaberdolares + Math.Abs(Convert.ToDecimal(DetMovimiento.Rows[ncont]["dolares"]));
                        sumahaberdolares = vmhaberdolares;
                    }
                }
                #endregion
            }
        }