示例#1
0
        public void guardar(string aplicacion, string movimiento, string usuario)
        {
            try
            {
                //revisa si existe la tabla de cambios
                _SQL.CrearConexion();
                _SQL.AbrirConexion();

                string existe = "select COUNT(*) from sys.objects where type_desc = 'USER_TABLE' and name='VMX_SR_CAMBIOS'";
                if (_SQL.executeScalar(existe) == "0")
                {
                    //si no la crea
                    string createtable = "CREATE TABLE VMX_SR_CAMBIOS(Fecha DateTime, Usuario varchar(50), Aplicacion varchar(50), Movimiento varchar(100)) ";
                    _SQL.EjecutarDML(createtable);
                }

                //inserta el registro
                string insertar = string.Format("INSERT INTO VMX_SR_CAMBIOS(Fecha,Usuario,Aplicacion,Movimiento)VALUES(getdate(),'{0}','{1}','{2}')", usuario, aplicacion, movimiento);
                _SQL.EjecutarDML(insertar);

                _SQL.CerrarConexion();
                _SQL.DestruirConexion();
            }
            catch (Exception ex)
            {
                _ArchivoErrores.escribir("historicoCambios", "guardar", ex.InnerException + "--" + ex.Message);
                _SQL.DestruirConexion();
            }
        }
示例#2
0
        private DataTable consultaSQL_DT(string sql, string id)
        {
            DataTable dt = new DataTable();

            using (Microsoft_SQL_Server oSQL = new Microsoft_SQL_Server(dc.Server, dc.Database, dc.Usuario_cliente, dc.Password))
            {
                try
                {
                    oSQL.CrearConexion();
                    oSQL.AbrirConexion();
                    dt = oSQL.EjecutarConsulta(sql, "TB");
                    oSQL.CerrarConexion();
                }
                catch (Exception ex)
                {
                    archivoErrores = new LogErrores();
                    archivoErrores.escribir("Retenciones", id, ex.Message);
                }
                finally
                {
                    oSQL.CerrarConexion();
                }
            }
            return(dt);
        }
        public DataTable obtenerDatos()
        {
            DataTable            odtApp;
            Microsoft_SQL_Server oSQL = null;
            string sTipoCambio        = string.Empty;

            try
            {
                oSQL = new Microsoft_SQL_Server(Global.Servidor, Global.BaseDatos, Global.Usuario, Global.Password);
                oSQL.CrearConexion();
                oSQL.AbrirConexion();

                string query = MapeoQuerySql.ObtenerPorId("APPLICATION_GLOBAL.obtenerDatos");
                odtApp = oSQL.EjecutarConsulta(query, "APPLICATION_GLOBAL");

                return(odtApp);
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error al obtener información de APPLICATION_GLOBAL. Detalle: " + ex.Message);
            }
            finally
            {
                oSQL.CerrarConexion();
                oSQL.DestruirConexion();
            }
        }
        private void cargarCuentas()
        {
            string sql = MapeoQuerySql.ObtenerPorId("Retenciones.listarCuentas");

            DataTable dt = new DataTable();

            using (Microsoft_SQL_Server oSQL = new Microsoft_SQL_Server(dc.Server, dc.Database, dc.Usuario_cliente, dc.Password))
            {
                try
                {
                    oSQL.CrearConexion();
                    oSQL.AbrirConexion();
                    dt = oSQL.EjecutarConsulta(sql, "TB");
                    oSQL.CerrarConexion();
                }
                catch (Exception ex)
                {
                    archivoErrores = new LogErrores();
                    archivoErrores.escribir("Retenciones", "frmCatCuentasRet private void cargarCuentas()", ex.Message);
                }
                finally
                {
                    oSQL.CerrarConexion();
                }
            }

            if (dt != null && dt.Rows.Count > 0)
            {
                c1gCuentas.SetDataBinding(dt, "", true);
            }
            else
            {
                MessageBox.Show("No se pudo obtener el listado de cuentas a agregar", "Catálogo de cuentas de retención", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }
示例#5
0
        public DataTable obtenerMovimientosDetalle(int pAnio, int pMes, string pFecha, int pConsiliado, string id_site, string currency, int pSoloPosteado)
        {
            DataSet DS = new DataSet();

            using (Microsoft_SQL_Server oSql = new Microsoft_SQL_Server(_SqlCnn.Server, _SqlCnn.Database, _SqlCnn.Usuario_cliente, _SqlCnn.Password))
            {
                oSql.CrearConexion();
                oSql.AbrirConexion();

                string query = MapeoQuerySql.ObtenerPorId("CuentasPorCobrar.obtenerMovimientosDetalle");

                oSql.sNombreProcedimiento = query;

                oSql.NumParametros(7);
                oSql.AgregarParametro("@ANIO", pAnio.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@MES", pMes.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@FECHA", pFecha.ToString(), 15, eTipoDato.Caracter, eDireccion.Entrada);
                oSql.AgregarParametro("@CONSILIADO", pConsiliado.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@SITE_ID", id_site, 18, eTipoDato.Caracter, eDireccion.Entrada);
                oSql.AgregarParametro("@CURRENCY_ID", currency, 18, eTipoDato.Caracter, eDireccion.Entrada);

                oSql.AgregarParametro("@SoloPosteados", pSoloPosteado.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);

                oSql.EjecutarSP(ref DS, "Polizas");
            }

            if (DS.Tables.Contains("Polizas") && DS.Tables["Polizas"] != null)
            {
                return(DS.Tables["Polizas"]);
            }
            else
            {
                return(null);
            }
        }
示例#6
0
        public static double obtenerTipoCambio(string pBanco, string pNoControl, string pMoneda)
        {
            DataTable            odtTipoCambio;
            Microsoft_SQL_Server oSQL = null;
            double dTC = 0.0;

            try
            {
                oSQL = new Microsoft_SQL_Server(Global.Servidor, Global.BaseDatos, Global.Usuario, Global.Password);
                oSQL.CrearConexion();
                oSQL.AbrirConexion();

                string query = MapeoQuerySql.ObtenerPorId("TipoCambio.obtenerTipoCambio2");
                query         = string.Format(query, pBanco, pNoControl, pMoneda);
                odtTipoCambio = oSQL.EjecutarConsulta(query, "TIPOCAMBIO");

                dTC = Convert.ToDouble(odtTipoCambio.Rows[0]["SELL_RATE"].ToString());

                return(dTC);
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error al obtener el Tipo de Cambio. Detalle: " + ex.Message);
            }
            finally
            {
                oSQL.CerrarConexion();
                oSQL.DestruirConexion();
            }
        }
示例#7
0
 /// <summary>
 /// Crear y abrir las conexiones a las dos base de datos.
 /// Ademas de agregar la transacción correspondiente a cada
 /// base de datos.
 /// </summary>
 public void crearConexiones()
 {
     // Conexion CTI
     _oSQL.CrearConexion();
     _oSQL.AbrirConexion();
     _oSQL.CrearTransaccion();
 }
示例#8
0
        /// <summary>
        /// Obtiene las polizas por traspazar por tipo de consulta
        /// </summary>
        /// <param name="pAnio"></param>
        /// <param name="pMes"></param>
        /// <param name="pFecha"></param>
        /// <param name="pConsiliado"></param>
        /// <param name="id_site"></param>
        /// <param name="TipoMovimiento">P:Polizas,PD:PolizasDetalle,R:Retenciones,RD:RetencionesDetalle </param>
        /// <returns>DataTable movimientos pendientes por traspazar</returns>
        public DataTable obtenerMovimientosTipo(int pAnio, int pMes, string pFecha, int pConsiliado, string id_site, string TipoMovimiento, string currency, int PG_Intercambiada, int pSoloPosteado)
        {
            string sp = "";

            switch (TipoMovimiento)
            {
            case "P": sp = "CuentasPorPagar.obtenerMovimientos";
                break;

            case "PD": sp = "CuentasPorPagar.obtenerMovimientosDetalle";
                break;

            case "R": sp = "CuentasPorPagar.obtenerMovimientosRetencion";
                break;

            case "RD": sp = "CuentasPorPagar.obtenerMovimientosRetencionDetalle";
                break;

            default: sp = "";
                break;
            }

            DataSet DS = new DataSet();

            using (Microsoft_SQL_Server oSql = new Microsoft_SQL_Server(_SqlCnn.Server, _SqlCnn.Database, _SqlCnn.Usuario_cliente, _SqlCnn.Password))
            {
                oSql.CrearConexion();
                oSql.AbrirConexion();

                string query = MapeoQuerySql.ObtenerPorId(sp);

                oSql.sNombreProcedimiento = query;
                oSql.NumParametros(8);
                oSql.AgregarParametro("@ANIO", pAnio.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@MES", pMes.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@FECHA", pFecha.ToString(), 15, eTipoDato.Caracter, eDireccion.Entrada);
                oSql.AgregarParametro("@CONSILIADO", pConsiliado.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);
                oSql.AgregarParametro("@SITE_ID", id_site, 18, eTipoDato.Caracter, eDireccion.Entrada);
                oSql.AgregarParametro("@CURRENCY_ID", currency, 18, eTipoDato.Caracter, eDireccion.Entrada);
                oSql.AgregarParametro("@PG_Intercarmbiada", PG_Intercambiada.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);

                oSql.AgregarParametro("@SoloPosteados", pSoloPosteado.ToString(), 18, eTipoDato.Entero, eDireccion.Entrada);

                _ArchivoErrores = new LogErrores();
                string sParametros = string.Format("AÑO: {0} MES: {1} FECHA: {2} CONSILIADO: {3}", pAnio, pMes, pFecha, pConsiliado);
                _ArchivoErrores.escribir("CuentasPorPagar", "obtenerMovimientos", sParametros);
                oSql.EjecutarSP(ref DS, "Polizas");
            }

            if (DS.Tables.Contains("Polizas") && DS.Tables["Polizas"] != null)
            {
                return(DS.Tables["Polizas"]);
            }
            else
            {
                return(null);
            }
        }
示例#9
0
        /// <summary>
        /// Permite obtener los datos de la consulta sql.
        /// </summary>
        /// <returns>Un data table con </returns>
        private DataTable obtenerDatos()
        {
            using (Microsoft_SQL_Server oSQL = new Microsoft_SQL_Server(ConexionSQL._Servidor, ConexionSQL._BaseDatos, ConexionSQL._Usuario, ConexionSQL._Password))
            {
                oSQL.CrearConexion();
                oSQL.AbrirConexion();

                _dtConsulta = oSQL.EjecutarConsulta(_consultaSQL, "DATOS");
            }

            return(_dtConsulta);
        }
示例#10
0
        public string getNext_GJ_ID(string id_site, int add_Id = 0)
        {
            Microsoft_SQL_Server objSQL         = new Microsoft_SQL_Server(Global.Servidor, Global.BaseDatos, Global.Usuario, Global.Password);
            DataTable            dtTblID_Poliza = new DataTable("NEXT_NUMBER_GEN");
            string sNextNumber    = string.Empty;
            string ALPHA_PREFIX   = string.Empty;
            string ALPHA_SUFFIX   = string.Empty;
            string journalID      = string.Empty;
            int    sDecimalPlaces = 0;
            int    iNextNumber    = 0;

            objSQL.CrearConexion();
            objSQL.AbrirConexion();

            // Este numero consecutivo NEXT_NUMBER  es generado por Visual ERP
            string query = string.Format(MapeoQuerySql.ObtenerPorId("AdminGJ.getNext_GJ_ID"), id_site);

            dtTblID_Poliza = objSQL.EjecutarConsulta(string.Format(query), "NEXT_NUMBER_GEN");

            objSQL.CerrarConexion();
            objSQL.DestruirConexion();

            if (dtTblID_Poliza.Rows.Count > 0)
            {
                //sNextNumber = dtTblID_Poliza.Rows[0]["NEXT_NUMBER"].ToString();
                iNextNumber    = Convert.ToInt32(dtTblID_Poliza.Rows[0]["NEXT_NUMBER"]) + add_Id;
                sNextNumber    = iNextNumber.ToString();
                sDecimalPlaces = int.Parse(dtTblID_Poliza.Rows[0]["DECIMAL_PLACES"].ToString());

                // Concatenar ceros a la izquierda
                if (sNextNumber.Length < sDecimalPlaces)
                {
                    while (sNextNumber.Length < sDecimalPlaces)
                    {
                        sNextNumber = "0" + sNextNumber;
                    }
                }
            }

            ALPHA_PREFIX = dtTblID_Poliza.Rows[0]["ALPHA_PREFIX"].ToString();
            ALPHA_SUFFIX = dtTblID_Poliza.Rows[0]["ALPHA_SUFFIX"].ToString();

            journalID = ALPHA_PREFIX + sNextNumber + ALPHA_SUFFIX;

            // Siguiente ID_Poliza
            return(journalID);
        }
示例#11
0
        /// <summary>
        /// Obtiene los periodos contables para el año seleccionado
        /// </summary>
        /// <param name="pAnio">Año contable del que se desean obtener los periodos</param>
        public DataTable obtenerPeriodosContables(int pAnio, string id_site)
        {
            DataTable oDtTbl    = new DataTable();
            string    sConsulta = MapeoQuerySql.ObtenerPorId("PeriodoContable.obtenerPeriodosContables");

            sConsulta = string.Format(sConsulta, pAnio, id_site);

            using (Microsoft_SQL_Server oSQL = new Microsoft_SQL_Server(_servidor, _baseDatos, _usuario, _password))
            {
                oSQL.CrearConexion();
                oSQL.AbrirConexion();

                oDtTbl = oSQL.EjecutarConsulta(sConsulta, "ACCOUNT_PERIOD");
            }

            return(oDtTbl);
        }
示例#12
0
        public void setNext_GJ_ID(string site_id)
        {
            int                  nextNumber     = 0;
            DataTable            dtTblID_Poliza = new DataTable("NEXT_NUMBER_GEN");
            Microsoft_SQL_Server objSQL         = new Microsoft_SQL_Server(Global.Servidor, Global.BaseDatos, Global.Usuario, Global.Password);

            objSQL.CrearConexion();
            objSQL.AbrirConexion();

            // Este numero consecutivo NEXT_NUMBER  es generado por Visual ERP
            string query = string.Format(MapeoQuerySql.ObtenerPorId("AdminGJ.getNext_GJ_ID"), site_id);

            dtTblID_Poliza = objSQL.EjecutarConsulta(query, "NEXT_NUMBER_GEN");

            nextNumber = int.Parse(dtTblID_Poliza.Rows[0]["NEXT_NUMBER"].ToString());

            query = MapeoQuerySql.ObtenerPorId("AdminGJ.setNext_GJ_ID");

            // Actualizar el nuevo numero de poliza
            objSQL.EjecutarDML(string.Format(query, nextNumber + 1, site_id));

            objSQL.CerrarConexion();
            objSQL.DestruirConexion();
        }
示例#13
0
        public void agregarPoliza(DataTable pdtTbl_Traspasos, string psTipoTraspaso, DataTable pdtTbl_VMX_IVATRASTEMP)
        {
            Microsoft_SQL_Server objSql                  = new Microsoft_SQL_Server(Global.Servidor, Global.BaseDatos, Global.Usuario, Global.Password);
            string                sInsertGJ              = string.Empty;
            string                sInsertGJ_CURR         = string.Empty;
            StringBuilder         sGJ_DIST               = new StringBuilder();
            StringBuilder         sGJ_LINE               = new StringBuilder();
            StringBuilder         sVMX_CONTOLPOLIZA_LINE = new StringBuilder();
            AdminCurrencyTracking oCurrencyTracking      = new AdminCurrencyTracking();

            _dtVMX_IVATRASTEMP = pdtTbl_Traspasos;
            _dtDetalla_IVA     = pdtTbl_VMX_IVATRASTEMP;
            string query = string.Empty;

            try
            {
                _lstCurrencyTracking = oCurrencyTracking.getCurrencyTracking(_GJ_Date);

                objSql.CrearConexion();
                objSql.AbrirConexion();
                objSql.CrearTransaccion();

                // General Journal
                sInsertGJ = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.GeneralJournal");
                sInsertGJ = string.Format(sInsertGJ,
                                          _ID, _GJ_Date, _Description, _PostingDate, _Total_DR_Amount, _Total_CR_Amount, _Sell_Rate, _Buy_Rate, _EntityID,
                                          _Create_Date, _UserID, _CurrencyID, _Post_All_Tracking, _Post_As_Native, _User_Exch_Rate, _Posting_Candidate);

                // Insertar encabezado de Poliza
                objSql.EjecutarDML(sInsertGJ);

                // Almacenar el tipo de moneda y el monto de la poliza.
                sInsertGJ_CURR = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.Currency");
                sInsertGJ_CURR = string.Format(sInsertGJ_CURR, _ID, _CurrencyID, _Total_CR_Amount, _Sell_Rate, _Buy_Rate);

                if (_lstCurrencyTracking.Count > 0)
                {
                    string currencyTracking = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.Currency");
                    foreach (MonedaRastreo item in _lstCurrencyTracking)
                    {
                        sInsertGJ_CURR += string.Format(currencyTracking, _ID, item.ID, Math.Round((_Total_CR_Amount / item.SELL_RATE), 2), item.SELL_RATE, item.BUY_RATE);
                    }
                }

                objSql.EjecutarDML(sInsertGJ_CURR);

                int    iDistNo      = 0;
                int    iLineNo      = 1;
                double dperdida     = 0;
                double dganancia    = 0;
                string sCtaGanancia = string.Empty;
                string sCtaPerdida  = string.Empty;

                foreach (DataRow drRow_Traspasos in pdtTbl_Traspasos.Rows)
                {
                    string DIST_NO          = "1";
                    string NATIVE_AMOUNT    = "0";
                    string POSTING_STATUS   = "U";
                    string NATIVE           = "Y";
                    string sCta_Origen      = drRow_Traspasos["CUENTA_ORIGEN"].ToString();
                    string sCta_Destino     = drRow_Traspasos["CUENTA_DESTINO"].ToString();
                    string sMontoTraspaso   = drRow_Traspasos["MONTO"].ToString();
                    double dIVA_Factura     = double.Parse(drRow_Traspasos["MONTO"].ToString());
                    double dIVA_Deposito    = double.Parse(drRow_Traspasos["MONTO_IVA_DEPOSITO"].ToString());
                    double dGananciaPerdida = 0;
                    string str_sql          = string.Empty;


                    // ganancia perdida
                    DataRow[] result = pdtTbl_VMX_IVATRASTEMP.Select("VAT_GL_ACCT_ID = '" + sCta_Origen + "' AND TRASLADO = '" + sCta_Destino + "'");
                    foreach (DataRow item in pdtTbl_VMX_IVATRASTEMP.Rows)
                    {
                        dGananciaPerdida = double.Parse(item["PERDIDA_GANANCIA"].ToString());

                        if (item["VAT_GL_ACCT_ID"].ToString().Equals(sCta_Origen) && item["TRASLADO"].ToString().Equals(sCta_Destino) && dGananciaPerdida < 0)
                        {
                            dperdida   += Math.Abs(dGananciaPerdida);
                            sCtaPerdida = item["CUENTA_PER_GANANCIA"].ToString();
                        }
                        else
                        {
                            dganancia   += dGananciaPerdida;
                            sCtaGanancia = item["CUENTA_PER_GANANCIA"].ToString();
                        }
                    }


                    // Encacbezado de poliza para control de CTECH
                    query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.ControlCTech");
                    query = string.Format(query, _ID, sCta_Destino, sMontoTraspaso, _PostingDate, _Create_Date, _Create_Date, _UserID, psTipoTraspaso);
                    objSql.EjecutarDML(query);

                    // En caso de que el monto sea cero no se genera
                    // ningun movimiento contable.
                    if (dIVA_Factura > 0)
                    {
                        // Detalle de los movimientos de la poliza.
                        //      Nota:En caso de tener moneda de rastreo generar un registro automaticamente para esta moneda
                        // CXC.- Cuentas por Cobrar
                        // Verificar el caso en que la cuenta origen sea diferente a la cuenta destino
                        if (psTipoTraspaso == "CXC")
                        {
                            // DR.- Debito
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                            query = string.Format(query, _ID, DIST_NO, iDistNo, dIVA_Factura, "DR", sCta_Origen, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, _CurrencyID, NATIVE);
                            sGJ_DIST.AppendLine(query);

                            iDistNo++;

                            // CR.- Credito
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                            query = string.Format(query, _ID, DIST_NO, iDistNo.ToString(), dIVA_Deposito, "CR", sCta_Destino, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, _CurrencyID, NATIVE);
                            sGJ_DIST.AppendLine(query);

                            // Moneda rastreable
                            foreach (MonedaRastreo moneda in _lstCurrencyTracking)
                            {
                                iDistNo++;

                                // DR.- Debito
                                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                                query = string.Format(query, _ID, DIST_NO, iDistNo, Math.Round((double.Parse(sMontoTraspaso) / moneda.SELL_RATE), 2), "DR", sCta_Destino, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, moneda.ID, "N");
                                sGJ_DIST.AppendLine(query);

                                iDistNo++;

                                // CR.- Credito
                                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                                query = string.Format(query, _ID, DIST_NO, iDistNo, Math.Round((double.Parse(sMontoTraspaso) / moneda.SELL_RATE), 2), "CR", sCta_Destino, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, moneda.ID, "N");
                                sGJ_DIST.AppendLine(query);
                            }
                        }
                        else
                        {
                            // CR.- Credito
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                            query = string.Format(query, _ID, DIST_NO, iDistNo, sMontoTraspaso, "CR", sCta_Origen, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, _CurrencyID, NATIVE);
                            sGJ_DIST.AppendLine(query);

                            iDistNo++;

                            // DR.- Debito
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                            query = string.Format(query, _ID, DIST_NO, iDistNo, sMontoTraspaso, "DR", sCta_Destino, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, _CurrencyID, NATIVE);
                            sGJ_DIST.AppendLine(query);

                            // Moneda rastreable
                            foreach (MonedaRastreo moneda in _lstCurrencyTracking)
                            {
                                iDistNo++;

                                // CR.- Credito
                                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                                query = string.Format(query, _ID, DIST_NO, iDistNo, Math.Round((double.Parse(sMontoTraspaso) / moneda.SELL_RATE), 2), "CR", sCta_Origen, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, moneda.ID, "N");
                                sGJ_DIST.AppendLine(query);

                                iDistNo++;

                                // DR.- Debito
                                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxC");
                                query = string.Format(query, _ID, DIST_NO, iDistNo, Math.Round((double.Parse(sMontoTraspaso) / moneda.SELL_RATE), 2), "DR", sCta_Destino, NATIVE_AMOUNT, _PostingDate, POSTING_STATUS, _Create_Date, _EntityID, moneda.ID, "N");
                                sGJ_DIST.AppendLine(query);
                            }
                        }

                        iDistNo++;

                        // Detalle de movimientos de la poliza
                        // CXP.- Cuentas por Pagar
                        if (psTipoTraspaso == "CXP")
                        {
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxP");
                            query = string.Format(query, _ID, iLineNo, sCta_Destino, sMontoTraspaso, 0);
                            sGJ_LINE.AppendLine(query);

                            iLineNo++;

                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxP");
                            query = string.Format(query, _ID, iLineNo, sCta_Origen, 0, sMontoTraspaso);
                            sGJ_LINE.AppendLine(query);
                        }
                        else
                        {
                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxP");
                            query = string.Format(query, _ID, iLineNo, sCta_Origen, sMontoTraspaso, 0);
                            sGJ_LINE.AppendLine(query);

                            iLineNo++;

                            query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CxP");
                            query = string.Format(query, _ID, iLineNo, sCta_Destino, 0, sMontoTraspaso);
                            sGJ_LINE.AppendLine(query);
                        }

                        iLineNo++;
                    }

                    foreach (DataRow dr_i in pdtTbl_VMX_IVATRASTEMP.Rows)
                    {
                        string BANK_ACCOUNT_ID = dr_i["BANK_ACCOUNT_ID"].ToString();
                        string CONTROL_NO      = dr_i["CONTROL_NO"].ToString();
                        string VAT_AMOUNT      = "0";
                        string SELL_RATE       = dr_i["TC_FACTURA"].ToString();
                        string MONTO           = dr_i["IVA_MXN_TRASLADAR_FACT"].ToString();
                        string CUENTA_ORIGEN   = dr_i["VAT_GL_ACCT_ID"].ToString();
                        string DESCRIPCION     = dr_i["DESCRIPCION"].ToString();
                        string CUENTA_DESTINO  = dr_i["TRASLADO"].ToString();
                        string COD_CLIENTE     = string.Empty;

                        if (sCta_Destino == CUENTA_DESTINO && sCta_Origen == CUENTA_ORIGEN)
                        {
                            // CXC - CASH_RECEIPT
                            if (psTipoTraspaso == "CXC")
                            {
                                COD_CLIENTE = dr_i["Cliente"].ToString();
                                query       = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CashReceiptCxC");
                                query       = string.Format(query, _ID, BANK_ACCOUNT_ID, CONTROL_NO, VAT_AMOUNT, SELL_RATE, MONTO, CUENTA_ORIGEN, DESCRIPCION, CUENTA_DESTINO, CUENTA_DESTINO, psTipoTraspaso, COD_CLIENTE);
                                sVMX_CONTOLPOLIZA_LINE.AppendLine(query);
                            }
                            else
                            {
                                // CXP - CASH_DISBURSEMENT
                                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.CashDisbursementCxP");
                                query = string.Format(query, _ID, BANK_ACCOUNT_ID, CONTROL_NO, VAT_AMOUNT, SELL_RATE, MONTO, CUENTA_ORIGEN, DESCRIPCION, CUENTA_DESTINO, CUENTA_DESTINO, psTipoTraspaso);
                                sVMX_CONTOLPOLIZA_LINE.AppendLine(query);
                            }
                        }
                    }
                }

                // Guardar todos los traspasos en GJ_DIST
                objSql.EjecutarDML(sGJ_DIST.ToString());

                // Guarddar todo los traspasos en GJ_LINE
                objSql.EjecutarDML(sGJ_LINE.ToString());

                // Guardar los traspasos en tabla de CTECH
                objSql.EjecutarDML(sVMX_CONTOLPOLIZA_LINE.ToString());

                // Actualizar el nuevo numero de poliza
                query = MapeoQuerySql.ObtenerPorId("PolizaContable.agregarPoliza.ActualizaNumeroPoliza");
                query = string.Format(query, ((int.Parse(_ID) + 1)).ToString());
                objSql.EjecutarDML(query);

                objSql.TransCommit();
            }
            catch (Exception ex)
            {
                objSql.TransRollback();

                throw new Exception(string.Format("Ocurrió un error al generar la póliza.\nDetalle: {0}.", ex.Message));
            }
            finally
            {
                objSql.DestruirTransaccion();

                objSql.CerrarConexion();
                objSql.DestruirConexion();
            }
        }
        private void bGuardar_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Está seguro de aplicar los cambios?", "Configurar Perdida Ganancia Cambiaria", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                Cursor.Current = Cursors.WaitCursor;
                try
                {
                    this.PG_intercambiada = cbPerdidaGanancia.Checked; //variable de retorno a frmPrincipal
                    string pg = this.PG_intercambiada ? "True" : "False";

                    //revisa configuración anterior para realizar los cambios
                    //if (ConfigurationManager.AppSettings["PG_Intercarmbiada"].ToString() != pg)
                    //{
                    //cambiar archivo config
                    Configuration      config = ConfigurationManager.OpenExeConfiguration(Application.StartupPath + @"\VKIVA.exe");
                    AppSettingsSection aps    = config.AppSettings;
                    aps.Settings["PG_Intercarmbiada"].Value = pg;
                    config.Save(ConfigurationSaveMode.Full);
                    ConfigurationManager.RefreshSection("appSettings");

                    //cambiar las vistas
                    if (PG_intercambiada)
                    {
                        //si se activa, las vistas se modifican al intercambio
                        vistasIVA_PGactivado act = new vistasIVA_PGactivado();

                        _SQL.CrearConexion();
                        _SQL.AbrirConexion();
                        _SQL.EjecutarDML(act.vmx_iva_cxc_02.ToString());
                        _SQL.EjecutarDML(act.vmx_iva_trasl_cxp_01.ToString());
                        _SQL.EjecutarDML(act.vmx_iva_trasl_cxp_02.ToString());
                        _SQL.EjecutarDML(act.vmx_iva_trasl_cxp_03.ToString());
                        _SQL.CerrarConexion();
                        _SQL.DestruirConexion();
                    }
                    else
                    {
                        //si no se activa, las vistas se modifican al no intercambio
                        vistasIVA_PGdesactivado desact = new vistasIVA_PGdesactivado();

                        _SQL.CrearConexion();
                        _SQL.AbrirConexion();
                        _SQL.EjecutarDML(desact.vmx_iva_cxc_02.ToString());
                        _SQL.EjecutarDML(desact.vmx_iva_trasl_cxp_01.ToString());
                        _SQL.EjecutarDML(desact.vmx_iva_trasl_cxp_02.ToString());
                        _SQL.EjecutarDML(desact.vmx_iva_trasl_cxp_03.ToString());
                        _SQL.CerrarConexion();
                        _SQL.DestruirConexion();
                    }

                    //almacenar registro de la actualización
                    historicoCambios hc = new historicoCambios(_SQL);
                    hc.guardar("TraspasoDeIva", "Intercambio Perdida Ganancia = " + pg, Usuario.userName);

                    MessageBox.Show("Se ha actualizado la configuración de perdida/Ganancia cambiaria.\nDebe cerrar la ventana de traspaso de Iva para que los cambios surtan efecto.", "Configurar Perdida Ganancia Cambiaria", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //}

                    this.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocurrió un error al actualizar la configuración de perdida/Ganancia cambiaria.\n" + ex.InnerException, "Configurar Perdida Ganancia Cambiaria", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    _ArchivoErrores.escribir("frmPerdidaGanancia", "bGuardar_Click(object sender, EventArgs e)", ex.InnerException + "--" + ex.Message);
                    this.Close();
                }
            }//if
        }