public void InsertRetenciones()
        {
            decimal vmtcambio = VariablesPublicas.StringtoDecimal(txtTipocambio.Text);

            // Variables de Cabecera
            tb_co_retencionesBL BL = new tb_co_retencionesBL();
            tb_co_retenciones BE = new tb_co_retenciones();

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

            #region **ingreso movimiento cabecera***
            //caso Retenciones
            string activo = "0"; //Activo
            string anulad = "9"; //Anulado
            string xMoneda = Equivalencias.Left(cboMoneda.SelectedValue.ToString(), 1);

            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 = cboSubdiario.SelectedValue.ToString();
            BE.asiento = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");
            //if (rbnPagos.Checked == true)
            //{
            //    BE.tiporegistro = "1";
            //}
            //else if (rbnEmision.Checked == true)
            //{
            //    BE.tiporegistro = "2";
            //}
            //else if (rbnLetras.Checked == true)
            //{
            //    BE.tiporegistro = "3";
            //}
            BE.ctacte = xctacte;
            BE.nmruc = txtRuc.Text.Trim();
            BE.ctactename = txtCtactename.Text.Trim();
            //BE.direc = txtDireccion.Text.Trim();
            BE.ubige = xubige;
            //BE.tipdoc = cboTipdoc.SelectedValue.ToString();
            //BE.serdoc = txtSerie.Text.Trim();
            //BE.numdoc = txtNumero.Text.Trim();
            BE.fechdoc = Convert.ToDateTime(fRegistro.Text.Trim());
            BE.fechvcto = Convert.ToDateTime(fecVenc.Text.Trim());
            BE.moneda = cboMoneda.SelectedValue.ToString();
            BE.tipcamb = Convert.ToDecimal(txtTipocambio.Text.Trim());
            BE.tipcambuso = "V";
            BE.glosa = txtGlosa.Text.Trim();
            //if (cboSubdiarioP.Text.Length > 0)
            //{ BE.diarioidpago = cboSubdiarioP.SelectedValue.ToString(); }
            //else
            //{ BE.diarioidpago = ""; }

            //BE.monedap = cboMonedaP.SelectedValue.ToString();
            //BE.numdocpago = txtNumOpe.Text;
            //Puede ser null
            //if (cboFlujoefectivo.Text.Length > 0)
            //{ BE.flujoefectivo = cboFlujoefectivo.SelectedValue.ToString(); }
            //else
            //{ BE.flujoefectivo = ""; }
            //Puede ser null
            if (cboMedioPago.Text.Length > 0)
            { BE.mediopago = cboMedioPago.SelectedValue.ToString(); }
            else
            { BE.mediopago = ""; }
            BE.importeoriginal = Convert.ToDecimal(txtImpOrigen.Text);
            BE.importepago = Convert.ToDecimal(txtImpPago.Text);
            BE.importeretencion = Convert.ToDecimal(txtImpRetencion.Text);
            if (chkActivo.Checked == true)
            {
                BE.status = activo;
            }
            if (chkActivo.Checked == false)
            {
                BE.status = anulad;
            }

            BE.usuar = VariablesPublicas.Usuar;
            #endregion

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

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

                item++;

                Detalle.perianio = VariablesPublicas.perianio;
                Detalle.perimes = BE.perimes;
                Detalle.moduloid = BE.moduloid;
                Detalle.local = BE.local;
                Detalle.diarioid = BE.diarioid;
                Detalle.asiento = txtAsiento.Text.PadLeft(6, '0'); // BE.asiento;
                Detalle.asientoitems = item.ToString().PadLeft(5, '0');
                Detalle.cuentaid = fila["cuentaid"].ToString();
                Detalle.ctacte = xctacte;
                Detalle.nmruc = fila["nmruc"].ToString();
                Detalle.tipdoc = fila["tipdoc"].ToString();
                Detalle.serdoc = fila["serdoc"].ToString();
                Detalle.numdoc = fila["numdoc"].ToString();
                if (object.ReferenceEquals(fila["fechdoc"], DBNull.Value))
                {
                    Detalle.fechdoc = Convert.ToDateTime(fRegistro.Text.Trim());
                }
                else
                {
                    Detalle.fechdoc = Convert.ToDateTime(fila["fechdoc"].ToString());
                }

                if (object.ReferenceEquals(fila["fechvcto"], DBNull.Value))
                {
                    Detalle.fechvcto = Convert.ToDateTime(fRegistro.Text.Trim());
                }
                else
                {
                    Detalle.fechvcto = Convert.ToDateTime(fila["fechvcto"].ToString());
                }
                if (object.ReferenceEquals(fila["fechpago"], DBNull.Value))
                {
                    Detalle.fechpago = Convert.ToDateTime(fRegistro.Text.Trim());
                }
                else
                {
                    Detalle.fechpago = Convert.ToDateTime(fila["fechpago"].ToString());
                }
                Detalle.moneda = fila["moneda"].ToString();
                if (Convert.ToDecimal(fila["tipcamb"]) > 0)
                {
                    Detalle.tipcamb = Convert.ToDecimal(fila["tipcamb"].ToString());
                }
                else
                {
                    Detalle.tipcamb = Convert.ToDecimal(txtTipocambio.Text.Trim());
                }

                Detalle.tipcambuso = BE.tipcambuso;
                Detalle.motivo = fila["motivo"].ToString();
                Detalle.importeorigendolares = Convert.ToDecimal(fila["importeorigendolares"].ToString());
                Detalle.importepagodolares1 = Convert.ToDecimal(fila["importepagodolares1"].ToString());
                Detalle.importepagodolares2 = Convert.ToDecimal(fila["importepagodolares2"].ToString());
                Detalle.importeretenciondolares = Convert.ToDecimal(fila["importeretenciondolares"].ToString());
                Detalle.importenetodolares = Convert.ToDecimal(fila["importenetodolares"].ToString());

                Detalle.importedifcambio = Convert.ToDecimal(fila["importedifcambio"].ToString());

                Detalle.importeorigensoles = Convert.ToDecimal(fila["importeorigensoles"].ToString());
                Detalle.importepagosoles = Convert.ToDecimal(fila["importepagosoles"].ToString());
                Detalle.importeorigen = Convert.ToDecimal(fila["importeorigen"].ToString());
                Detalle.importepago = Convert.ToDecimal(fila["importepago"].ToString());
                Detalle.importeretencionsoles = Convert.ToDecimal(fila["importeretencionsoles"].ToString());
                Detalle.importenetosoles = Convert.ToDecimal(fila["importenetosoles"].ToString());
                Detalle.retencion = true;
                if (chkActivo.Checked == true)
                {
                    Detalle.status = activo;
                }
                if (chkActivo.Checked == false)
                {
                    Detalle.status = anulad;
                }
                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))
                    {
                        // Impresion
                        //ReportesContabilidad.Frm_ReporteVouchers frm = new ReportesContabilidad.Frm_ReporteVouchers();
                        //frm._tipComprobante = cboSubdiarioR.SelectedValue.ToString();
                        //frm._xModulo = BE.moduloid;
                        //frm._xLocal = BE.local;
                        //frm._nroComprobante = BE.perimes + txtAsiento.Text; //nAsiento;//xcodmes + nlastreg;
                        //frm._tipoOperacion = BE.tipooperacion; //cac3g00.Rows[0]["tasien_3"].ToString();
                        //frm.Owner = this;
                        //frm.ShowInTaskbar = false;
                        //frm.ShowDialog();
                    }
                }
                else if (u_n_opsel == 2)  //Si NO es nuevo
                {
                    if (BL.Update(VariablesPublicas.EmpresaID.ToString(), BE))
                    {
                        //seguridadlog();
                        //if (!nopideimpresion)
                        //{
                        //    string message = "Desea Imprimir Documento Nro: " + txtMes.Text + "-" + txtAsiento.Text + " ...?";
                        //    string caption = "Impresión";
                        //    MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                        //    DialogResult result;

                        //    // Muestra el cuadro de mensaje.
                        //    result = MessageBox.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 Accion(int Naccion, string xmes, string xnumero)
        {
            switch (Naccion)
            {
                case 1:
                    UltimoNumeroRegistro();
                    procesanumero();
                    break;
                case 2:
                    CargaDatos();
                    u_n_opsel = 2;
                    refrescacontroles();
                    break;
                case 3:
                    // eliminar
                    DataTable tmptabla = new DataTable();
                    tb_co_retencionescabBL BL = new tb_co_retencionescabBL();
                    tb_co_retencionescab BE = new tb_co_retencionescab();

                    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 = cboSubdiario.SelectedValue.ToString();
                    BE.asiento = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");
                    tmptabla = BL.GetAll(VariablesPublicas.EmpresaID.ToString(), BE).Tables[0];
                    //DataTable tmptabla;
                    //txtAsiento.Text = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 8, "0");
                    //xnum = txtAsiento.Text;
                    //tmptabla = ocapa.KAG0300_consulta(GlobalVars.GetInstance.Company, GlobalVars.GetInstance.Periodo, txtmes.Text, xnum, "", "", "", "", "", "");
                    if (tmptabla.Rows.Count > 0)
                    {
                        string message = "Desea eliminar Registro de Percepciones " + tmptabla.Rows[0]["perianio"] + "/" + tmptabla.Rows[0]["diarioid"] + "/" + tmptabla.Rows[0]["perimes"] + "-" + tmptabla.Rows[0]["asiento"] + " ...?";
                        string caption = "Mensaje del Sistema";
                        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)
                        {
                            tb_co_retencionesBL BL1 = new tb_co_retencionesBL();
                            tb_co_retenciones BE1 = new tb_co_retenciones();

                            BE1.perianio = VariablesPublicas.perianio;
                            BE1.perimes = VariablesPublicas.PADL(txtMes.Text.Trim(), 2, "0");
                            BE1.moduloid = VariablesDominio.VarTesoreria.Moduloid;
                            BE1.local = VariablesDominio.VarTesoreria.Local;
                            BE1.diarioid = cboSubdiario.SelectedValue.ToString();
                            BE1.asiento = VariablesPublicas.PADL(txtAsiento.Text.Trim(), 6, "0");
                            if (BL1.Delete(VariablesPublicas.EmpresaID.ToString(), BE1))
                            {
                                txtAsiento.Focus();
                            }
                            else
                            {
                                Frm_Class.ShowError(BL1.Sql_Error, this);
                            }
                        }
                    }
                    CargaDatos();
                    break;
                case 5:
                    CargaDatos();
                    refrescacontroles();
                    break;
                //case 6:
                    //// Impresion de Comprobante de Percepcion
                    //ReportesContabilidad.Frm_ReporteVouchers frm = new ReportesContabilidad.Frm_ReporteVouchers();
                    //frm._tipComprobante = cboSubdiario.SelectedValue.ToString();
                    //frm._nroComprobante = (xmes.Trim().Length == 0 ? txtMes.Text : xmes) + (xnumero.Trim().Length == 0 ? txtAsiento.Text : xnumero);
                    //frm._xModulo = VariablesDominio.VarTesoreria.Moduloid;
                    //frm._xLocal = VariablesDominio.VarTesoreria.Local;
                    ////frm._tipoOperacion = txtcodoperacion.Text;
                    //frm._tipoOperacion = "1";
                    //frm.Owner = this;
                    //frm.ShowInTaskbar = false;
                    //frm.ShowDialog();
                    //break;
            }
        }