示例#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
        public void createGJ(GJ oGJ)
        {
            string sCons = string.Empty;

            try
            {
                string query = MapeoQuerySql.ObtenerPorId("AdminGeneralJournal.createGJ");

                sCons = string.Format(query
                                      , oGJ.ID, oGJ.GJ_DATE, oGJ.DESCRIPTION, oGJ.POSTING_DATE, oGJ.TOTAL_DR_AMOUNT
                                      , oGJ.TOTAL_CR_AMOUNT, oGJ.SELL_RATE, oGJ.BUY_RATE, oGJ.SITE_ID, oGJ.CREATE_DATE
                                      , oGJ.USER_ID, oGJ.CURRENCY_ID, oGJ.POST_ALL_TRACKING, oGJ.POST_AS_NATIVE, oGJ.USER_EXCH_RATE, oGJ.POSTING_CANDIDATE);

                _trace.AppendLine(sCons);
                _oSQL.EjecutarDML(sCons);
            }

            catch (Exception ex)
            {
                if (ex.Message.Contains("Violation of PRIMARY KEY constraint 'PK_GJ'"))
                {
                    createGJ_cont_exSQL += 1;
                    oGJ.getNext_ID(oGJ.SITE_ID, createGJ_cont_exSQL);
                    if (createGJ_cont_exSQL < 10)
                    {
                        createGJ(oGJ);
                    }
                }
                else
                {
                    throw new Exception("Error al insertar en GJ. Detalle: " + ex.Message);
                }
            }

            if (createGJ_cont_exSQL != 0)
            {
                createGJ_cont_exSQL = 0;
            }
        }
示例#3
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();
        }
示例#4
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
        }