protected void ejecutarReconversion_button_Click(object sender, EventArgs e) { bool ejecutarContablidad = this.proceso_contabilidad_RadioButton.Checked; bool ejecutarContablidad_asientosAjuste = this.proceso_contabilidad_asientos_RadioButton.Checked; bool ejecutarContablidad_saldosIniciales = this.proceso_contabilidad_saldosIniciales_RadioButton.Checked; bool ejecutarContablidad_saldosIniciales_cuadrar = this.proceso_contabilidad_saldosIniciales_cuadrar_RadioButton.Checked; bool ejecutarBancos = this.proceso_bancos_RadioButton.Checked; //bool ejecutarNomina = this.proceso_nomina_RadioButton.Checked; //bool ejecutarCajaChica = this.proceso_cajaChica_RadioButton.Checked; bool ejecutarActivosFijos = this.proceso_activosFijos_RadioButton.Checked; if (!ejecutarContablidad && !ejecutarContablidad_asientosAjuste && !ejecutarContablidad_saldosIniciales && !ejecutarBancos && !ejecutarContablidad_saldosIniciales_cuadrar && !ejecutarActivosFijos) { string errorMessage = "Ud. debe seleccionar un proceso a ejecutar.<br />"; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; return; } // recuperamos los parámetros de ejecución del proceso: año, cantidad de dígitos, moneda y cia ... parametrosProc parametrosProc = (parametrosProc)Session["parametrosProc"]; dbContab_Contab_Entities context = new dbContab_Contab_Entities(); if (ejecutarContablidad) { string sDivisor = parametrosProc.divisor.ToString(); bool error = false; string message = ""; contabilidad(context, sDivisor, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } if (ejecutarContablidad_saldosIniciales) { string sDivisor = parametrosProc.divisor.ToString(); bool error = false; string message = ""; contabilidad_saldosInicialesAjuste(context, sDivisor, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } if (ejecutarContablidad_saldosIniciales_cuadrar) { bool error = false; string message = ""; contabilidad_saldosInicialesCuadrar(context, parametrosProc.cuentaContableID, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } if (ejecutarContablidad_asientosAjuste) { bool error = false; string message = ""; contabilidad_asientosAjuste(context, parametrosProc.cuentaContableID, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } if (ejecutarBancos) { bool error = false; string message = ""; string sDivisor = parametrosProc.divisor.ToString(); bancos(context, sDivisor, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } //if (ejecutarCajaChica) //{ // return; //} //if (ejecutarNomina) //{ // return; //} if (ejecutarActivosFijos) { bool error = false; string message = ""; string sDivisor = parametrosProc.divisor.ToString(); activosFijos(context, sDivisor, parametrosProc.moneda, parametrosProc.ano, parametrosProc.ciaContabSeleccionada, out error, out message); if (error) { this.ErrMessage_Span.InnerHtml = message; this.ErrMessage_Span.Visible = true; } else { this.InfoMessage_Span.InnerHtml = message; this.InfoMessage_Span.Visible = true; } return; } }
private void RefreshAndBindInfo() { if (!User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); return; } if (Session["reconversionMonetaria.cantidadDigitos"] == null || Session["reconversionMonetaria.ano"] == null || Session["reconversionMonetaria.cuentaContableID"] == null) { string errorMessage = "Aparentemente, Ud. no ha indicado un filtro (parámetros de ejecución) aún; o lo ha indicado de manera <em>incompleta</em>.<br />" + "Ud. debe abrir la página que muestra el filtro e indicar valores para todos los parámetros de ejecución de este proceso."; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; return; } dbContab_Contab_Entities context = new dbContab_Contab_Entities(); // leemos la cuenta contable indicada por el usuaio int cuentaContableID = Convert.ToInt32(Session["reconversionMonetaria.cuentaContableID"]); CuentasContable cuentaContable = context.CuentasContables.Where(c => c.ID == cuentaContableID).FirstOrDefault(); if (cuentaContable == null) { string errorMessage = "Error: no hemos podido leer la cuenta contable indicada en el filtro.</em>.<br />" + "Por favor revise. La cuenta contable indicada debe existir en la tabla de cuentas contables."; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; return; } // debe existir una moneda 'nacional'; solo para ésta haremos la reconversión ... var monedaNacional_array = context.Monedas.Where(m => m.NacionalFlag); if (monedaNacional_array == null) { string errorMessage = "Error: aparentemente, no se ha definido una de las monedas como <em>nacional</em>.<br />" + "Ud. debe revisar la tabla de monedas y asegurarse que una de ellas sea definida como <em>nacional</em>."; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; return; } if (monedaNacional_array.Count() > 1) { string errorMessage = "Error: aparentemente, más de una moneda ha sido definida del tipo <em>nacional</em>.<br />" + "Ud. debe revisar la tabla de monedas y asegurarse que <b>solo una de ellas</b> sea definida como <em>nacional</em>."; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; return; } Moneda monedaNacional = monedaNacional_array.First(); var cia = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == User.Identity.Name). Select(c => new { ciaContabSeleccionada = c.Compania.Numero }). FirstOrDefault(); short ano = Convert.ToInt16(Session["reconversionMonetaria.ano"]); // leemos los asientos del año, para asegurarnos que no hay asientos descuadrados ... string sSqlQueryString = "SELECT Count(*) As partidas " + "FROM dAsientos d Inner Join Asientos a On d.NumeroAutomatico = a.NumeroAutomatico " + "Where a.AnoFiscal = {0} And a.Moneda = {1} And a.Cia = {2} " + "Group By d.NumeroAutomatico " + "Having Sum(d.Debe) <> Sum(d.Haber)"; List <int> asientosDescuadrados = context.ExecuteStoreQuery <int>(sSqlQueryString, ano, monedaNacional.Moneda1, cia.ciaContabSeleccionada).ToList(); if (asientosDescuadrados.Count() > 0) { // nota: esta situación no aborta el proceso, pues debe ser el resultado del 1er. paso de la reconversión ... string errorMessage = "Advertencia: existen asientos descuadrados para el año a reconvertir.<br />" + "Ud. debe continuar con el próximo paso y ajustarlos, <b>solo</b> si estos asientos son producto del 1er. paso de la reconversión."; this.ErrMessage_Span.InnerHtml = errorMessage; this.ErrMessage_Span.Visible = true; } Int16 cantidadDigitos = Convert.ToInt16(Session["reconversionMonetaria.cantidadDigitos"]); // finalmente, determinamos el divisor para la reconversión: si, por ejemplo, la cantidad de dígitos es 3, el dividor debe ser 1.000 int divisor = 1; for (short i = 1; i <= cantidadDigitos; i++) { divisor = divisor * 10; } this.monedaNacional_span.InnerText = monedaNacional.Descripcion + " (" + monedaNacional.Simbolo + ")"; this.cuentaContable_span.InnerText = $"{cuentaContable.CuentaEditada} - {cuentaContable.Descripcion} - {cuentaContable.ID.ToString()}"; this.ano_span.InnerText = ano.ToString(); this.cantidadDigitos_span.InnerText = cantidadDigitos.ToString(); this.divisor_span.InnerText = divisor.ToString("N0"); this.texto1.Visible = false; this.texto1.Visible = true; this.ejecutarReconversion_button.Visible = true; parametrosProc parametrosProc = new parametrosProc { ano = ano, moneda = monedaNacional.Moneda1, cantidadDigitos = cantidadDigitos, divisor = divisor, cuentaContableID = cuentaContable.ID, ciaContabSeleccionada = cia.ciaContabSeleccionada, }; // la idea es mantener el state de estos parámetros para tenerlos siempre a la mano ... Session["parametrosProc"] = parametrosProc; }