private void contabilidad(dbContab_Contab_Entities context, string divisor, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";
            int cantAsientosActualizados = 0;

            try
            {
                // asientos
                string queryString =
                    $"Update d Set d.Debe = Round(d.Debe / {divisor}, 2), d.Haber = Round(d.Haber / {divisor}, 2) " +
                    "FROM dAsientos d Inner Join Asientos a On d.NumeroAutomatico = a.NumeroAutomatico " +
                    "Where a.moneda = {0} And a.AnoFiscal = {1} And a.Cia = {2}";

                cantAsientosActualizados = context.ExecuteStoreCommand(queryString, moneda, ano, ciaSeleccionada);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            message = $"<h3>Contabilidad</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han actualizado: {cantAsientosActualizados.ToString()} registros desde asientos contables.";

            return;
        }
        private void contabilidad_saldosInicialesAjuste(dbContab_Contab_Entities context, string divisor, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";
            int cantSaldosInicialesActualizados = 0;

            try
            {
                // asientos
                string queryString =
                    $"Update s Set s.Inicial = Round(s.Inicial / {divisor}, 2) " +
                    "FROM SaldosContables s " +
                    "Where s.moneda = {0} And s.Ano = {1} And s.Cia = {2}";

                cantSaldosInicialesActualizados = context.ExecuteStoreCommand(queryString, moneda, ano, ciaSeleccionada);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            message = $"<h3>Saldos iniciales - reconversión</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han actualizado: {cantSaldosInicialesActualizados.ToString()} registros desde asientos contables.";

            return;
        }
Ejemplo n.º 3
0
        protected void AsientosContables_Copiar_Button_Click(object sender, EventArgs e)
        {
            Page.Validate();
            if (!Page.IsValid)
            {
                return;
            }

            string ajaxPopUpMessage = "";

            if (Session["filtroForma_consultaAsientosContables"] == null || string.IsNullOrEmpty(Session["filtroForma_consultaAsientosContables"].ToString()))
            {
                ajaxPopUpMessage = "<br />Aparentemente, Ud. no ha indicado un filtro a esta página.<br />" +
                                   "Debe hacerlo, para que el programa lea y seleccione registros <em><b>antes que Ud. ejecute esta función</b></em>.";

                this.ModalPopupTitle_span.InnerHtml = "No se ha indicado un filtro a esta página";
                this.ModalPopupBody_span.InnerHtml  = ajaxPopUpMessage;

                this.btnOk.Visible  = false;
                this.btnCancel.Text = "Ok";

                this.ModalPopupExtender1.Show();

                return;
            }

            dbContab_Contab_Entities contabContext   = new dbContab_Contab_Entities();
            FuncionesContab2         funcionesContab = new FuncionesContab2(contabContext);
            int    cantidadAsientosCopiados          = 0;
            string resultMessage = "";

            if (!funcionesContab.CopiarAsientosContables(Session["filtroForma_consultaAsientosContables"].ToString(),
                                                         Session["filtroForma_consultaAsientosContables_subQuery"].ToString(),
                                                         Membership.GetUser().UserName,
                                                         Convert.ToInt32(CiaContab_DropDownList.SelectedValue),
                                                         this.multiplicarPor_textBox.Text,
                                                         this.dividirPor_textBox.Text,
                                                         out cantidadAsientosCopiados,
                                                         out resultMessage))
            {
                this.ModalPopupTitle_span.InnerHtml = "Error al intentar ejecutar la función";
                ajaxPopUpMessage = resultMessage;
            }
            else
            {
                this.ModalPopupTitle_span.InnerHtml = "Copia de asientos contables - Ejecución exitosa";

                ajaxPopUpMessage = "Ok, los asientos contables han sido copiados en forma exitosa, a la compañía <em>Contab</em> que se ha indicado.<br /><br />" +
                                   "En total, se han copiado <b>" + cantidadAsientosCopiados.ToString() + "</b> asientos contables a la compañía seleccionada.";
            }

            this.ModalPopupBody_span.InnerHtml = ajaxPopUpMessage;
            this.btnOk.Visible  = false;
            this.btnCancel.Text = "Ok";

            this.ModalPopupExtender1.Show();

            return;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return;
            }

            ErrMessage_Span.InnerHtml        = "";
            ErrMessage_Span.Style["display"] = "none";

            if (!Page.IsPostBack)
            {
                // determinamos los años que se han registrado en el programa y los mostramos en una lista
                dbContab_Contab_Entities context = new dbContab_Contab_Entities();

                var ciaContabSeleccionada = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == User.Identity.Name).
                                            Select(c => new { numero = c.Compania.Numero }).
                                            FirstOrDefault();

                if (ciaContabSeleccionada == null)
                {
                    string errorMessage = "Error: aparentemente, no se ha seleccionado una <em>Cia Contab</em>.<br />" +
                                          "Por favor seleccione una <em>Cia Contab</em> y luego regrese y continúe con la ejecución de esta función.";

                    this.ErrMessage_Span.InnerHtml = errorMessage;
                    this.ErrMessage_Span.Visible   = true;

                    return;
                }

                var anos = context.SaldosContables.Where(s => s.Cia == ciaContabSeleccionada.numero).
                           Select(s => new { ano = s.Ano }).
                           Distinct();

                var items = anos.OrderByDescending(a => a.ano);

                anosRegistrados_listBox.Items.Clear();

                foreach (var ano in items)
                {
                    anosRegistrados_listBox.Items.Add(ano.ano.ToString());
                }

                this.CuentasContables_SqlDataSource.SelectParameters[0].DefaultValue = ciaContabSeleccionada.numero.ToString();
                this.cuentasContables_listBox.DataBind();

                // intentamos recuperar el state de esta página; en general, lo intentamos con popups filtros
                if (!(Membership.GetUser().UserName == null))
                {
                    KeepPageState MyKeepPageState = new KeepPageState(Membership.GetUser().UserName, Page.GetType().Name);
                    MyKeepPageState.ReadStateFromFile(this, this.Controls);
                    MyKeepPageState = null;
                }
            }

            this.CustomValidator1.IsValid = true;
            this.CustomValidator1.Visible = false;
        }
        private void contabilidad_asientosAjuste(dbContab_Contab_Entities context, int cuentaContableID, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";

            // asientos
            string queryString =
                $"Select d.NumeroAutomatico as numeroAutomatico, Sum(d.Debe) as sumOfDebe, Sum(d.Haber) as sumOfHaber, " +
                "Sum(d.Debe) - Sum(d.Haber) as diferencia, Max(d.Partida) as ultimaPartida " +
                "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 <asiento_sumarizacion> query = context.ExecuteStoreQuery <asiento_sumarizacion>(queryString, ano, moneda, ciaSeleccionada).ToList();
            dAsiento partida;

            int asientosContablesAjustados = 0;

            foreach (asiento_sumarizacion p in query)
            {
                partida = new dAsiento();

                partida.NumeroAutomatico = p.numeroAutomatico;
                partida.Partida          = Convert.ToInt16(p.ultimaPartida + 10);
                partida.CuentaContableID = cuentaContableID;
                partida.Descripcion      = "Reconversión (2018) - ajuste al asiento contable";
                partida.Referencia       = null;
                partida.Debe             = p.diferencia <= 0 ? Math.Abs(p.diferencia) : 0;
                partida.Haber            = p.diferencia > 0 ? Math.Abs(p.diferencia) : 0;

                context.dAsientos.AddObject(partida);
                asientosContablesAjustados++;
            }

            try
            {
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                context.Dispose();

                return;
            }

            context.Dispose();

            message = $"<h3>Asientos contables - ajuste contra cuenta de reconversión</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han actualizado: {asientosContablesAjustados.ToString()} asientos contables, para ajustarlos y <em>cuadrarlos</em> a cero. ";

            return;
        }
Ejemplo n.º 6
0
        public void AccessRemoteData(string search, int page, int cia)
        {
            try
            {
                dbContab_Contab_Entities dbContab = new dbContab_Contab_Entities();

                // 1) leemos la página de items seleccionados
                var query =
                    "Select Cuenta as id, Descripcion as text From CuentasContables " +
                    "Where (Cuenta Like '%' + @search + '%' Or Descripcion Like '%' + @search + '%') And TotDet = 'D' And Cia = @cia " +
                    "Order by Cuenta, Descripcion Offset @offset Rows Fetch Next 20 Rows Only";

                var args = new DbParameter[] { new SqlParameter {
                                                   ParameterName = "cia", Value = cia
                                               },
                                               new SqlParameter {
                                                   ParameterName = "search", Value = search
                                               },
                                               new SqlParameter {
                                                   ParameterName = "offset", Value = ((page - 1) * 20)
                                               }, };

                var cuentasContables = dbContab.ExecuteStoreQuery <Select2DTO>(query, args).ToList();

                // 2) leemos la cantidad de registros que corresonden a la selección
                query =
                    "Select Count(*) as count_filtered From CuentasContables " +
                    "Where (Cuenta Like '%' + @search + '%' Or Descripcion Like '%' + @search + '%') And TotDet = 'D' And Cia = @cia ";

                args = new DbParameter[] { new SqlParameter {
                                               ParameterName = "cia", Value = cia
                                           },
                                           new SqlParameter {
                                               ParameterName = "search", Value = search
                                           } };

                Int32 count_filtered = dbContab.ExecuteStoreQuery <int>(query, args).First();

                var r = new Select2DTO_paginate {
                    items        = cuentasContables,
                    resultParams = new Select2DTO_paginate_results {
                        page = page, count_filtered = count_filtered
                    }
                };



                JavaScriptSerializer js = new JavaScriptSerializer();
                var sResult             = js.Serialize(r);

                Context.Response.Write(sResult);
            }
            catch (Exception ex)
            {
                Context.Response.Write(ex.Message.ToString());
            }
        }
        public HttpResponseMessage ActualizarCatalogos(int ciaContabSeleccionada)
        {
            if (!User.Identity.IsAuthenticated)
            {
                var errorResult = new
                {
                    ErrorFlag    = true,
                    ErrorMessage = "Error: por favor haga un login a esta aplicación, y luego regrese a ejecutar esta función."
                };

                return(Request.CreateResponse(HttpStatusCode.OK, errorResult));
            }

            try
            {
                dbContab_Contab_Entities context = new dbContab_Contab_Entities();

                var query = context.CuentasContables.Where(c => c.Cia == ciaContabSeleccionada).
                            Where(c => c.TotDet == "D").
                            Where(c => c.ActSusp == "A").
                            OrderBy(c => c.Cuenta).
                            Select(c => new
                {
                    ID             = c.ID,
                    CuentaContable = c.CuentaEditada,
                    Descripcion    = c.Descripcion,
                    CiaAbreviatura = c.Compania.Abreviatura
                });

                var result = new
                {
                    ErrorFlag        = false,
                    ErrorMessage     = "",
                    CuentasContables = query.ToList()
                };

                return(Request.CreateResponse(HttpStatusCode.OK, result));
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null)
                {
                    message += "<br />" + ex.InnerException.Message;
                }

                var errorResult = new
                {
                    ErrorFlag    = true,
                    ErrorMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" +
                                   "El mensaje específico de error es: <br />" + message
                };

                return(Request.CreateResponse(HttpStatusCode.OK, errorResult));
            }
        }
Ejemplo n.º 8
0
        protected void AsientosContables_Exportar_Button_Click(object sender, EventArgs e)
        {
            string ajaxPopUpMessage = "";

            if (Session["FiltroForma"] == null || string.IsNullOrEmpty(Session["FiltroForma"].ToString()))
            {
                ajaxPopUpMessage = "<br />Aparentemente, Ud. no ha indicado un filtro a esta página.<br />" +
                                   "Debe hacerlo, para que el programa lea y seleccione registros <em><b>antes que Ud. ejecute esta función</b></em>.";

                this.ModalPopupTitle_span.InnerHtml = "No se ha indicado un filtro a esta página";
                this.ModalPopupBody_span.InnerHtml  = ajaxPopUpMessage;

                this.btnOk.Visible  = false;
                this.btnCancel.Text = "Ok";

                this.ModalPopupExtender1.Show();

                return;
            }

            dbContab_Contab_Entities contabContext   = new dbContab_Contab_Entities();
            FuncionesContab2         funcionesContab = new FuncionesContab2(contabContext);
            int    cantidadPartidasLeidas            = 0;
            string resultMessage = "";
            string filePath      = "";

            if (!funcionesContab.Exportar_AsientosContables(Session["FiltroForma"].ToString(),
                                                            this.Formato_RadioButtonList.SelectedValue,
                                                            Membership.GetUser().UserName,
                                                            out cantidadPartidasLeidas,
                                                            out filePath,
                                                            out resultMessage))
            {
                this.ModalPopupTitle_span.InnerHtml = "Error al intentar ejecutar la función";
                ajaxPopUpMessage = resultMessage;
            }
            else
            {
                this.ModalPopupTitle_span.InnerHtml = "Copia de asientos contables - Ejecución exitosa";

                ajaxPopUpMessage = "Ok, los asientos contables han sido exportados a un archivo, según el formato indicado por Ud.<br /><br />" +
                                   "En total, se han leído y exportado " + cantidadPartidasLeidas.ToString() + " partidas, para los asientos contables seleccionados.<br /><br />" +
                                   "Ahora Ud. debe copiar el archivo recién construído a su PC, usando el link que para ello se muestra al cerrar este díalogo.";
            }

            this.ModalPopupBody_span.InnerHtml = ajaxPopUpMessage;
            this.btnOk.Visible  = false;
            this.btnCancel.Text = "Ok";

            this.DownloadFile_LinkButton.Visible = true;
            this.FileName_HiddenField.Value      = filePath;

            this.ModalPopupExtender1.Show();

            return;
        }
        public IQueryable <Moneda> Monedas_DropDownList_GetData()
        {
            string userName = Membership.GetUser().UserName;

            dbContab_Contab_Entities context = new dbContab_Contab_Entities();

            var query = context.Monedas.Where(m => m.Asientos.Where(a => a.tTempWebReport_ConsultaComprobantesContables.Any(t => t.NombreUsuario == userName)).Any()).Select(c => c);

            query = query.OrderBy(c => c.Descripcion);
            return(query);
        }
        public IQueryable <Moneda> Monedas_DropBox_GetData()
        {
            string userName = Membership.GetUser().UserName;

            dbContab_Contab_Entities dbContext = new dbContab_Contab_Entities();

            var query = dbContext.Monedas.Where(m => m.Contab_BalanceComprobacion.Where(c => c.NombreUsuario == userName).Any()).Select(c => c);

            query = query.OrderBy(c => c.Descripcion);
            return(query);
        }
Ejemplo n.º 11
0
        private void Report_SubreportProcessingEventHandler(Object sender, Microsoft.Reporting.WebForms.SubreportProcessingEventArgs e)
        {
            switch (Request.QueryString["rpt"].ToString())
            {
            case "ptomtosest":                  // sub report para el reporte de presupuesto - montos estimados

                switch (e.ReportPath)           // algún día puede haber más de un subreport !!
                {
                case "MontosEstimados_CuentasContables":

                    string sCodigoPresupuesto = e.Parameters["CodigoPresupuesto"].Values[0];
                    int    nCiaContab         = Convert.ToInt32(e.Parameters["CiaContab"].Values[0].ToString());

                    List <MontosEstimados_Consulta_CuentaContable> list = new List <MontosEstimados_Consulta_CuentaContable>();

                    using (dbContab_Contab_Entities contabContext = new dbContab_Contab_Entities())
                    {
                        var query = contabContext.CuentasContables.Where(c => c.Presupuesto_Codigos.Any(p => p.Codigo == sCodigoPresupuesto)).Select(c => c);
                        query = query.Where(c => c.Cia == nCiaContab);

                        MontosEstimados_Consulta_CuentaContable cuentaContable;

                        foreach (var cuenta in query)
                        {
                            cuentaContable = new MontosEstimados_Consulta_CuentaContable()
                            {
                                Cuenta        = cuenta.Cuenta,
                                CuentaEditada = cuenta.CuentaEditada,
                                Descripcion   = cuenta.Descripcion
                            };

                            list.Add(cuentaContable);
                        }
                    }

                    e.DataSources.Clear();

                    ReportDataSource myReportDataSource = new ReportDataSource();

                    myReportDataSource.Name  = "Presupuesto_MontosEstimados_CuentasContables";
                    myReportDataSource.Value = list;

                    e.DataSources.Add(myReportDataSource);

                    break;
                }
                break;
            }
        }
    private bool CiaContabSeleccionada(out int ciaContabSeleccionada, out string nombreCiaContabSeleccionada, out string errorMessage)
    {
        ciaContabSeleccionada       = 0;
        nombreCiaContabSeleccionada = "";
        errorMessage = "";

        if (!User.Identity.IsAuthenticated)
        {
            errorMessage = "Error: la session se ha desconectado; por favor vuelva a hacer un login a esta aplicación.";
            return(false);
        }

        using (dbContab_Contab_Entities context = new dbContab_Contab_Entities())
        {
            try
            {
                var cia = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == User.Identity.Name).
                          Select(c => new { ciaContabSeleccionada = c.Compania.Numero, ciaContabSeleccionadaNombre = c.Compania.Nombre }).
                          FirstOrDefault();

                if (cia == null)
                {
                    errorMessage = "Error: aparentemente, no se ha seleccionado una <em>Cia Contab</em>.<br />" +
                                   "Por favor seleccione una <em>Cia Contab</em> y luego regrese y continúe con la ejecución de esta función.";

                    return(false);
                }

                ciaContabSeleccionada       = cia.ciaContabSeleccionada;
                nombreCiaContabSeleccionada = cia.ciaContabSeleccionadaNombre;

                return(true);
            }
            catch (Exception ex)
            {
                string message = ex.Message;
                if (ex.InnerException != null)
                {
                    message += "<br />" + ex.InnerException.Message;
                }

                errorMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" +
                               "El mensaje específico de error es: <br />" + message;

                return(false);
            }
        }
    }
Ejemplo n.º 13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                HtmlGenericControl MyHtmlH2;

                MyHtmlH2 = (HtmlGenericControl)Master.FindControl("PageTitle_TableCell");
                if (!(MyHtmlH2 == null))
                {
                    MyHtmlH2.InnerHtml = "Movimiento bancario - Consulta";
                }

                this.MovimientoBancario_EntityDataSource.WhereParameters["MovimientoBancarioID"].DefaultValue = Page.Request.QueryString["ID"].ToString();

                // ---------------------------------------------------------------------------------------------------
                // para permitir mostrar el asiento contable asociado, con un click al hyperlink  ...

                int movimientoBancarioID = Convert.ToInt32(Page.Request.QueryString["ID"].ToString());

                // para buscar el asiento contable asociado, debemos obtener su ID (NumeroAutomatico); para hacerlo, leemos el asiento
                // antes; nótese que lo obtenemos usando el pk del movimiento bancario

                dbContab_Contab_Entities contabContext = new dbContab_Contab_Entities();

                ContabSysNet_Web.ModelosDatos_EF.Contab.Asiento asientoContable =
                    contabContext.Asientos.Where(a => a.ProvieneDe == "Bancos" && a.ProvieneDe_ID == movimientoBancarioID).FirstOrDefault();

                string url = "";

                if (asientoContable != null)
                {
                    url = "../../../Contab/Consultas contables/Cuentas y movimientos/CuentasYMovimientos_Comprobantes.aspx" +
                          "?NumeroAutomatico=" + asientoContable.NumeroAutomatico.ToString();
                }
                else
                {
                    url = "../../../Contab/Consultas contables/Cuentas y movimientos/CuentasYMovimientos_Comprobantes.aspx" +
                          "?NumeroAutomatico=-999";
                }

                MostrarAsientoContable_HyperLink.HRef = "javascript:PopupWin('" + url + "', 1000, 680)";
            }
        }
        private void activosFijos(dbContab_Contab_Entities context, string divisor, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";

            string desde     = new DateTime(ano, 1, 1).ToString("yyyy-MM-dd");
            string hasta     = new DateTime(ano, 12, 31).ToString("yyyy-MM-dd");
            string desde_mes = new DateTime(ano, 1, 1).ToString("MM");
            string desde_ano = new DateTime(ano, 1, 1).ToString("yyyy");

            int cant_activosFijos_actualizados = 0;

            // -------------------------------------------------------
            // InventarioActivosFijos
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update i Set i.CostoTotal = Round(i.CostoTotal / { divisor}, 2), i.ValorResidual = Round(i.ValorResidual / { divisor}, 2), " +
                    $"i.MontoADepreciar = Round(i.MontoADepreciar / { divisor}, 2), i.MontoDepreciacionMensual = Round(i.MontoDepreciacionMensual / { divisor}, 2) " +
                    $"From InventarioActivosFijos i " +
                    $"Where ((i.FechaDesincorporacion Is Null) Or (i.FechaDesincorporacion >= '{desde}')) And " +
                    $"( (i.DepreciarHastaAno > {desde_ano}) Or (i.DepreciarHastaAno = {desde_ano} And i.DepreciarHastaMes >= {desde_mes} ) ) And " +
                    $"i.Cia = {ciaSeleccionada}";

                cant_activosFijos_actualizados = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            message = $"<h3>Activos fijos</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han actualizado: {cant_activosFijos_actualizados.ToString()} registros de activos fijos. ";

            return;
        }
Ejemplo n.º 15
0
        public IQueryable <Moneda> MonedasFilter_DropDownList_SelectMethod()
        {
            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return(null);
            }

            string usuario = User.Identity.Name;

            dbContab_Contab_Entities context = new dbContab_Contab_Entities();

            // aquí no necesitamos un subquery

            var query = context.Monedas.Where(m => m.Temp_Contab_Report_BalanceGeneral.Where(bg => bg.Usuario == usuario).Any()).Select(m => m);

            query = query.OrderBy(m => m.Descripcion);

            return(query);
        }
Ejemplo n.º 16
0
        public IQueryable <Compania> CompaniasFilter_DropDownList_SelectMethod()
        {
            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return(null);
            }

            string usuario = User.Identity.Name;

            dbContab_Contab_Entities context = new dbContab_Contab_Entities();

            // nótese como usamos un subquery ...

            var query1 = context.Temp_Contab_Report_BalanceGeneral.Where(c => c.Usuario == usuario).Select(c => c.CuentasContable.Cia);
            var query2 = from c in context.Companias where query1.Contains(c.Numero) select c;

            query2 = query2.OrderBy(c => c.Nombre);

            return(query2);
        }
Ejemplo n.º 17
0
        private bool ObtenerFechaInicioAnoFiscal(DateTime fechaConsulta,
                                                 int ciaContab,
                                                 out DateTime fechaInicioAnoFiscal,
                                                 out string errorMessage)
        {
            // regresamos el 1er. día del mes inicial del año fiscal. Esta fecha debe siempre ser *anterior* a la fecha indicada a la consulta
            fechaInicioAnoFiscal = new DateTime();
            errorMessage         = "";

            ContabSysNet_Web.ModelosDatos_EF.Contab.MesesDelAnoFiscal mesFiscal;

            using (dbContab_Contab_Entities context = new dbContab_Contab_Entities())
            {
                mesFiscal = context.MesesDelAnoFiscals.Where(m => m.Cia == ciaContab && m.MesFiscal == 1).FirstOrDefault();

                if (mesFiscal == null)
                {
                    errorMessage = "Error: aparentemente, no se ha definido el año fiscal de la cia contab en la tabla de meses del año fiscal. ";
                    return(false);
                }

                fechaInicioAnoFiscal = new DateTime(fechaConsulta.Year, mesFiscal.Mes, 1);
            }

            // el inicio del año fiscal que regrese esta función, debe ser siempre anterior a la fecha de la consulta
            if (fechaInicioAnoFiscal > fechaConsulta)
            {
                fechaInicioAnoFiscal = fechaInicioAnoFiscal.AddYears(-1);
            }

            // por alguna razón determinada en su momento, el inicio del año para estos cálculos se toma como el fin del mes
            // y no el inicio; por ejemplo: si el inicio del año fiscal es el 1-mar-13, esta función regresa: 31-mar-13 ...
            fechaInicioAnoFiscal = fechaInicioAnoFiscal.AddMonths(1).AddDays(-1);

            return(true);
        }
        private void contabilidad_saldosInicialesCuadrar(dbContab_Contab_Entities context, int cuentaContableID, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";

            // asientos
            string queryString =
                $"Select s.Moneda as moneda, s.MonedaOriginal as monedaOriginal, s.Ano as ano, s.Cia as cia, Sum(s.Inicial) as sumOfInicial " +
                "From SaldosContables s Inner Join CuentasContables c On s.CuentaContableID = c.ID " +
                "Where s.Ano = {0} And s.Moneda = {1} And s.Cia = {2} " +
                "And c.TotDet = 'D' " +
                "Group By s.Moneda, s.MonedaOriginal, s.Ano, s.Cia";

            List <saldos_sumarizacion> query = context.ExecuteStoreQuery <saldos_sumarizacion>(queryString, ano, moneda, ciaSeleccionada).ToList();
            SaldosContable             saldoContable;

            int saldosContables_ajustados = 0;
            int saldosContables_agregados = 0;

            foreach (saldos_sumarizacion inicial in query)
            {
                if (inicial.sumOfInicial == 0)
                {
                    // si no hay diferencia en el saldo inicial, simplemente continuamos ...
                    continue;
                }


                // leemos un registro de saldos para la cuenta contable, a ver si existe
                saldoContable = context.SaldosContables.Where(s => s.CuentaContableID == cuentaContableID &&
                                                              s.Moneda == inicial.moneda && s.MonedaOriginal == inicial.monedaOriginal &&
                                                              s.Ano == inicial.ano && s.Cia == inicial.cia).FirstOrDefault();

                if (saldoContable != null)
                {
                    // el registro de saldos para la: cuenta, moneda y moneda  original *existe*; lo actualizamos

                    // calculamos el nuevo saldo inicial (ajustado)
                    decimal nuevoInicial = saldoContable.Inicial.HasValue ? saldoContable.Inicial.Value : 0;

                    if (inicial.sumOfInicial >= 0)
                    {
                        nuevoInicial = nuevoInicial - inicial.sumOfInicial;                     // la diferencia es mayor que cero; para ajustar, restamos
                    }
                    else
                    {
                        nuevoInicial = nuevoInicial + Math.Abs(inicial.sumOfInicial);           // la diferencia es menor que cero; para ajustar, sumamos
                    }
                    saldoContable.Inicial = nuevoInicial;
                    saldosContables_ajustados++;
                }
                else
                {
                    // el registro de saldos para la cuenta *no existe*; lo agregamos

                    SaldosContable saldo = new SaldosContable
                    {
                        CuentaContableID = cuentaContableID,
                        Moneda           = inicial.moneda,
                        MonedaOriginal   = inicial.monedaOriginal,
                        Ano = inicial.ano,
                        // agregamos la diferencia, justo con el signo contrario ...
                        Inicial = (inicial.sumOfInicial * -1),
                        Mes01   = 0,
                        Mes02   = 0,
                        Mes03   = 0,
                        Mes04   = 0,
                        Mes05   = 0,
                        Mes06   = 0,
                        Mes07   = 0,
                        Mes08   = 0,
                        Mes09   = 0,
                        Mes10   = 0,
                        Mes11   = 0,
                        Mes12   = 0,
                        Anual   = 0,
                        Cia     = inicial.cia,
                    };

                    saldosContables_agregados++;
                    context.SaldosContables.AddObject(saldo);
                }
            }


            try
            {
                context.SaveChanges();
            }
            catch (Exception ex)
            {
                error   = true;
                message = $"<h3>Saldos iniciales - Cuadre contra cuenta de reconversión</h3><br />" +
                          "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                context.Dispose();

                return;
            }

            context.Dispose();

            message = $"<h3>Saldos iniciales - ajuste contra cuenta de reconversión</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han <b>actualizado</b>: {saldosContables_ajustados.ToString()} registros de saldo, para ajustar el saldo inicial del año y <em>cuadrarlo</em> a cero.<br />" +
                      $"Además, se han <b>agregado</b>: {saldosContables_agregados.ToString()} registros de saldo, para ajustar el saldo inicial del año y <em>cuadrarlo</em> a cero.";

            return;
        }
Ejemplo n.º 19
0
        public IQueryable <ContabSysNet_Web.ModelosDatos_EF.Contab.Temp_Contab_Report_BalanceGeneral> BalanceGeneral_GridView_GetData()
        {
            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return(null);
            }

            string usuario = User.Identity.Name;

            dbContab_Contab_Entities dbContab = new dbContab_Contab_Entities();

            var query = dbContab.Temp_Contab_Report_BalanceGeneral.Include("CuentasContable").Where(c => c.Usuario == usuario);

            if (this.CompaniasFilter_DropDownList.SelectedIndex != -1)
            {
                int selectedValue = Convert.ToInt32(this.CompaniasFilter_DropDownList.SelectedValue);
                query = query.Where(d => d.CuentasContable.Cia == selectedValue);
            }

            if (this.MonedasFilter_DropDownList.SelectedIndex != -1)
            {
                int selectedValue = Convert.ToInt32(this.MonedasFilter_DropDownList.SelectedValue);
                query = query.Where(d => d.Moneda == selectedValue);
            }

            if (!string.IsNullOrEmpty(this.CuentaContableFilter_TextBox.Text))
            {
                string miniFilter = this.CuentaContableFilter_TextBox.Text.ToString().Replace("*", "");

                // nótese como el usuario puede o no usar '*' para el mini filtro; de usarlo, la busqueda es más precisa ...
                if (this.CuentaContableFilter_TextBox.Text.ToString().Trim().StartsWith("*") && this.CuentaContableFilter_TextBox.Text.Trim().EndsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Cuenta.Contains(miniFilter));
                }
                else if (this.CuentaContableFilter_TextBox.Text.ToString().Trim().StartsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Cuenta.EndsWith(miniFilter));
                }
                else if (this.CuentaContableFilter_TextBox.Text.Trim().EndsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Cuenta.StartsWith(miniFilter));
                }
                else
                {
                    query = query.Where(c => c.CuentasContable.Cuenta.Contains(miniFilter));
                }
            }

            if (!string.IsNullOrEmpty(this.CuentaContableDescripcionFilter_TextBox.Text))
            {
                string miniFilter = this.CuentaContableDescripcionFilter_TextBox.Text.ToString().Replace("*", "");

                // nótese como el usuario puede o no usar '*' para el mini filtro; de usarlo, la busqueda es más precisa ...
                if (this.CuentaContableDescripcionFilter_TextBox.Text.ToString().Trim().StartsWith("*") && this.CuentaContableDescripcionFilter_TextBox.Text.Trim().EndsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Descripcion.Contains(miniFilter));
                }
                else if (this.CuentaContableDescripcionFilter_TextBox.Text.ToString().Trim().StartsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Descripcion.EndsWith(miniFilter));
                }
                else if (this.CuentaContableDescripcionFilter_TextBox.Text.Trim().EndsWith("*"))
                {
                    query = query.Where(c => c.CuentasContable.Descripcion.StartsWith(miniFilter));
                }
                else
                {
                    query = query.Where(c => c.CuentasContable.Descripcion.Contains(miniFilter));
                }
            }

            if (query.Count() == 0)
            {
                string errorMessage = "No se han seleccionado registros que mostrar; probablemente, el filtro indicado a esta consulta " +
                                      "no está correctamente establecido o, de estarlo, no selecciona registros para ser mostrados en la lista.";

                CustomValidator1.IsValid      = false;
                CustomValidator1.ErrorMessage = errorMessage;

                return(null);
            }

            query = query.OrderBy(c => c.CuentasContable.CuentaEditada);

            return(query);
        }
Ejemplo n.º 20
0
        private void ConstruirFiltroBalGenGyP(BalanceGeneral_Parametros parametros,
                                              ParametrosContab parametrosContab,
                                              dbContab_Contab_Entities dbContab,
                                              out string filtroConsulta)
        {
            // en esta función leemos usamos el contenido de la tabla ParametrosContab para determinar y seleccionar solo las cuentas
            // contables del grupo que corresponde, de acuerdo al tipo de consulta indicada. Por ejemplo:
            // si el usuario quiere GyP, debemos excluir activos, pasivos y capital; justo a la inversa para Balance General
            filtroConsulta = "";

            if (parametros.BalGen_GyP == "BG")
            {
                if (parametrosContab.Ingresos1 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos1).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Ingresos2 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos2).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Ingresos3 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos3).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Ingresos4 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos4).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Ingresos5 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos5).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Ingresos6 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Ingresos6).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos1 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos1).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos2 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos2).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos3 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos3).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos4 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos4).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos5 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos5).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Egresos6 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Egresos6).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }
            }
            else
            {
                // para GyP siempre excluimos cuentas reales (activo, pasivo, capital)
                if (parametrosContab.Activo1 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo1).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Activo2 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo2).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Activo3 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo3).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Activo4 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo4).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Activo5 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo5).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Activo6 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Activo6).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo1 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo1).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo2 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo2).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo3 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo3).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo4 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo4).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo5 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo5).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Pasivo6 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Pasivo6).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital1 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital1).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital2 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital2).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital3 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital3).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital4 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital4).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital5 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital5).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }

                if (parametrosContab.Capital6 != null)
                {
                    string cuenta = dbContab.CuentasContables.Where(c => c.ID == parametrosContab.Capital6).Select(c => c.Cuenta).FirstOrDefault();
                    if (cuenta != "")
                    {
                        filtroConsulta += " And (it.Cuenta Not Like '" + cuenta + "%')";
                    }
                }
            }

            if (filtroConsulta == "")
            {
                filtroConsulta = " And (1 == 1)";
            }
        }
Ejemplo n.º 21
0
        private void ConstruirConsulta(out string errorMessage)
        {
            errorMessage = "";

            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return;
            }

            string usuario = User.Identity.Name;

            if (Session["BalanceGeneral_Parametros"] == null)
            {
                errorMessage = "Aparentemente, Ud. no ha definido un filtro para esta consulta. Por favor defina un filtro para esta consulta antes de continuar.";
                return;
            }

            BalanceGeneral_Parametros parametros = Session["BalanceGeneral_Parametros"] as BalanceGeneral_Parametros;

            dbContab_Contab_Entities dbContab = new dbContab_Contab_Entities();

            // leemos la tabla de parámetros para omitir del query las cuentas que no correspondan, dependiendo del tipo de reporte (BG / GyP)
            // nótese que la clase ParametrosContab existe en varios name spaces
            ContabSysNet_Web.ModelosDatos_EF.Contab.ParametrosContab parametrosContab = dbContab.ParametrosContabs.Where(p => p.Cia == parametros.CiaContab).FirstOrDefault();

            if (parametrosContab == null)
            {
                errorMessage = "Aparentemente, la tabla de parámetros (Contab) no ha sido inicializada. " +
                               "Por favor inicialize esta tabla con los valores que sean adecuados, para la Cia Contab seleccionada para esta consulta.";

                return;
            }

            // ahora modificamos el filtro para incluir/excluir las cuentas del tipo GyP ...
            string filtroBalGen_GyP = "";

            ConstruirFiltroBalGenGyP(parametros, parametrosContab, dbContab, out filtroBalGen_GyP);

            string filtroConsulta = parametros.Filtro + filtroBalGen_GyP;

            // obtenemos el mes y año fiscal que corresponde al mes de la consulta; la función que determina el saldo anterior para cada cuenta contable,
            // en realidad lee el saldo para el mes fiscal *anterior* al de la consulta; una consulta para Marzo, necesita como saldos anteriores los del mes Febrero ...
            var fecha_sqlParam        = new SqlParameter("@fecha", parametros.Desde);
            var ciaContab_sqlParam    = new SqlParameter("@ciaContab", parametros.CiaContab);
            var mesFiscal_sqlParam    = new SqlParameter("@mesFiscal", System.Data.SqlDbType.SmallInt);
            var anoFiscal_sqlParam    = new SqlParameter("@anoFiscal", System.Data.SqlDbType.SmallInt);
            var nombreMes_sqlParam    = new SqlParameter("@nombreMes", System.Data.SqlDbType.NVarChar, 50);
            var errorMessage_sqlParam = new SqlParameter("@errorMessage", System.Data.SqlDbType.NVarChar, 500);

            mesFiscal_sqlParam.Direction    = ParameterDirection.Output;
            anoFiscal_sqlParam.Direction    = ParameterDirection.Output;
            nombreMes_sqlParam.Direction    = ParameterDirection.Output;
            errorMessage_sqlParam.Direction = ParameterDirection.Output;

            var contabDbContext = new ContabSysNet_Web.ModelosDatos_EF.code_first.contab.ContabContext();
            var result          = contabDbContext.Database.SqlQuery <int?>("dbo.spDeterminarMesFiscal @fecha, @ciaContab, @mesFiscal OUT, @anoFiscal OUT, @nombreMes OUT, @errorMessage OUT",
                                                                           fecha_sqlParam, ciaContab_sqlParam, mesFiscal_sqlParam, anoFiscal_sqlParam, nombreMes_sqlParam, errorMessage_sqlParam)
                                  .FirstOrDefault();

            if (!string.IsNullOrEmpty(errorMessage_sqlParam.Value.ToString()))
            {
                string functionErrorMessage = errorMessage_sqlParam.Value.ToString();
                errorMessage = "Hemos obtenido un error, al intentar obtener obtener el mes y año fiscal para la fecha indicada como criterio de ejecución.<br /> " +
                               "A continuación, mostramos el mensaje específico de error:<br /> " + functionErrorMessage;
                return;
            }

            short  mesFiscal = Convert.ToInt16(mesFiscal_sqlParam.Value);
            short  anoFiscal = Convert.ToInt16(anoFiscal_sqlParam.Value);
            string nombreMes = (nombreMes_sqlParam.Value).ToString();

            // refinar el filtro para, por ejemplo, GyP: leer solo gastos/ingresos; BG: no leer gastos/ingresos (depende de opción, etc.)
            // antes eliminamos los registros que puedan existir
            int cantRegistrosEliminados = dbContab.ExecuteStoreCommand("Delete From Temp_Contab_Report_BalanceGeneral Where Usuario = {0}", usuario);

            // nótese como leemos *solo* cuentas contables que tengan registros de saldo contable agregado ...
            var query = dbContab.CuentasContables.Where(filtroConsulta).Where(c => c.TotDet == "D").Where(c => c.SaldosContables.Any()).Select(c => c.ID);

            // ----------------------------------------------------------------------------------------------------------------------
            // leemos la tabla de monedas para 'saber' cual es la moneda Bs. Nota: la idea es aplicar las opciones de reconversión
            // *solo* a esta moneda
            var monedaNacional_return = Reconversion.Get_MonedaNacional();

            if (monedaNacional_return.error)
            {
                errorMessage = monedaNacional_return.message;;
                return;
            }

            ContabSysNet_Web.ModelosDatos_EF.code_first.contab.Monedas monedaNacional = monedaNacional_return.moneda;

            // ponemos la moneda nacional en un session pues la usa el popup que muestra los movimientos; así no la tiene que leer cada vez
            Session["monedaNacional"] = monedaNacional.Moneda;
            // ----------------------------------------------------------------------------------------------------------------------

            int cuentasContablesAgregadas = 0;

            foreach (int cuentaContableID in query)
            {
                // nótese como obtenemos el mes fiscal para el mes *anterior* al mes de inicio del período; la idea es obtener (luego) los saldos del mes
                // *anterior* al inicio del período; por ejemplo: si el usuario intenta obtener la consulta para Abril, debemos obtener los saldos para
                // Marzo, que serán los iniciales para Abril ....

                var cuentaContableID_sqlParam = new SqlParameter("@cuentaContableID", cuentaContableID);
                var mesFiscal2_sqlParam       = new SqlParameter("@mesFiscal", mesFiscal);
                var anoFiscal2_sqlParam       = new SqlParameter("@anoFiscal", anoFiscal);
                var desde_sqlParam            = new SqlParameter("@desde", parametros.Desde);
                var hasta_sqlParam            = new SqlParameter("@hasta", parametros.Hasta);
                var moneda_sqlParam           = new SqlParameter("@moneda", parametros.Moneda);
                var monedaNacional_sqlParam   = new SqlParameter("@monedaNacional", monedaNacional.Moneda);

                var monedaOriginal_sqlParam = new SqlParameter("@monedaOriginal", System.Data.SqlDbType.Int);

                // el valor de este parámetro puede ser null
                if (parametros.MonedaOriginal == null)
                {
                    monedaOriginal_sqlParam.Value = DBNull.Value;
                }
                else
                {
                    monedaOriginal_sqlParam.Value = parametros.MonedaOriginal;
                }

                var nombreUsuario_sqlParam = new SqlParameter("@nombreUsuario", usuario);

                var excluirCuentasSaldoYMovtosCero_sqlParam          = new SqlParameter("@excluirSaldoInicialDebeHaberCero", parametros.ExcluirCuentasSaldoYMovtosCero);
                var excluirCuentasSaldosFinalCero_sqlParam           = new SqlParameter("@excluirSaldoFinalCero", parametros.ExcluirCuentasSaldosFinalCero);
                var excluirCuentasSinMovimientos_sqlParam            = new SqlParameter("@excluirSinMovimientosPeriodo", parametros.ExcluirCuentasSinMovimientos);
                var excluirAsientosContablesTipoCierreAnual_sqlParam = new SqlParameter("@excluirAsientoTipoCierreAnual", parametros.ExcluirAsientosContablesTipoCierreAnual);
                var reconvertirCifrasAntes_01Oct2021_sqlParam        = new SqlParameter("@reconvertirCifrasAntes_01Oct2021", parametros.reconvertirCifrasAntes_01Oct2021);
                var errorMessage2_sqlParam = new SqlParameter("@errorMessage", "");

                errorMessage2_sqlParam.Direction = ParameterDirection.Output;

                var resultadoFuncion = contabDbContext.Database.SqlQuery <int?>("dbo.spBalanceGeneral " +
                                                                                "@cuentaContableID, @mesFiscal, @anoFiscal, @desde, @hasta, " +
                                                                                "@moneda, @MonedaNacional, @monedaOriginal, @nombreUsuario, @excluirSaldoInicialDebeHaberCero, " +
                                                                                "@excluirSaldoFinalCero, @excluirSinMovimientosPeriodo, @excluirAsientoTipoCierreAnual, " +
                                                                                "@reconvertirCifrasAntes_01Oct2021, @errorMessage OUT",
                                                                                cuentaContableID_sqlParam, mesFiscal2_sqlParam, anoFiscal2_sqlParam, desde_sqlParam, hasta_sqlParam,
                                                                                moneda_sqlParam, monedaNacional_sqlParam, monedaOriginal_sqlParam, nombreUsuario_sqlParam,
                                                                                excluirCuentasSaldoYMovtosCero_sqlParam, excluirCuentasSaldosFinalCero_sqlParam,
                                                                                excluirCuentasSinMovimientos_sqlParam, excluirAsientosContablesTipoCierreAnual_sqlParam,
                                                                                reconvertirCifrasAntes_01Oct2021_sqlParam, errorMessage2_sqlParam)
                                       .FirstOrDefault();

                if (!string.IsNullOrEmpty(errorMessage_sqlParam.Value.ToString()))
                {
                    errorMessage = errorMessage_sqlParam.Value.ToString();
                    return;
                }

                // la función regresa la cantidad de registros agregadados (1 o 0) ...
                if (resultadoFuncion != null && resultadoFuncion.Value == 1)
                {
                    cuentasContablesAgregadas++;
                }
            }

            string ajaxPopUpMessage = "";

            ajaxPopUpMessage = "<br /><b>Ok, el proceso de lectura de cuentas, movimientos y saldos contables ha finalizado.</b><br /><br />" +
                               "En total, fueron leídos (y registrados en la base de datos): <br /><br />" +
                               "*) " + cuentasContablesAgregadas.ToString() + " cuentas contables, sus saldos del mes anterior y movimiento en el período. <br />";

            this.ModalPopupTitle_span.InnerHtml = "... Ok, el proceso ha finalizado.";
            this.ModalPopupBody_span.InnerHtml  = ajaxPopUpMessage;

            this.btnOk.Visible  = false;
            this.btnCancel.Text = "Ok";

            this.ModalPopupExtender1.Show();

            this.MonedasFilter_DropDownList.DataBind();
            this.CompaniasFilter_DropDownList.DataBind();

            this.BalanceGeneral_GridView.DataBind();

            // para mostrar la cantidad de registros seleccionados
            this.selectedRecs_p.InnerHtml          = $"{cuentasContablesAgregadas.ToString()} registros seleccionados ...";
            this.selectedRecs_div.Style["display"] = "block";
        }
Ejemplo n.º 22
0
        private void CrearInfoReport(out string errorMessage)
        {
            errorMessage = "";

            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return;
            }

            string usuario = User.Identity.Name;

            if (Session["BalanceGeneral_Parametros"] == null)
            {
                errorMessage = "Aparentemente, Ud. no ha definido un filtro para esta consulta. Por favor defina un filtro para esta consulta antes de continuar.";
                return;
            }

            BalanceGeneral_Parametros parametros = Session["BalanceGeneral_Parametros"] as BalanceGeneral_Parametros;

            // --------------------------------------------------------------------------------------------------------------------------------
            // determinamos si el mes que corresponde al inicio del período está cerrado; debe estarlo para que la información regresada por esta
            // consulta sea confiable; de no ser así, indicamos pero permitimos continuar ...

            // nótese como usamos un modelo de datos LinqToSql (no EF), pues el código en la clase AsientosContables lo usa así y fue
            // escrito hace bastante tiempo ...
            //ContabSysNet_Web.ModelosDatos.dbContabDataContext contabLinqToSqlContex = new ContabSysNet_Web.ModelosDatos.dbContabDataContext();

            dbContab_Contab_Entities dbContab = new dbContab_Contab_Entities();

            //FuncionesContab funcionesContab = new FuncionesContab(parametros.CiaContab, parametros.Moneda, contabLinqToSqlContex);
            FuncionesContab2 funcionesContab2 = new FuncionesContab2(dbContab);

            bool   mesAnteriorCerradoEnContab = true;
            string popupMessage = "";

            short mesFiscal;
            short anoFiscal;

            // el mes *anterior* al período de la consulta debe estar cerrado. La función regresa False cuando el mes está cerrado
            // por eso fallamos si el mes *anterior* no está cerrado; es decir, cuando la función regresa True ...
            if (funcionesContab2.ValidarMesCerradoEnContab(parametros.Desde.AddMonths(-1), parametros.CiaContab, out mesFiscal, out anoFiscal, out errorMessage))
            {
                // NOTA: el mes *anterior* a la fecha de inicio DEBE estar cerrado (o uno posterior)
                // la función regresa False si el mes está cerrado
                // si la función regresa True es que NO está cerrado y eso no debe ocurrir en este contexto
                popupMessage = "El mes anterior al mes indicado para esta consulta, <b>no</b> está cerrado. <br /> " +
                               "Aunque Ud. puede continuar e intentar obtener esta consulta, las cifras determinadas y " +
                               "mostradas no serán del todo confiables.<br /><br />" +
                               "Aún así, desea continuar con la ejecución de esta consulta?";

                mesAnteriorCerradoEnContab = false;
            }

            ParametrosContab parametrosContab = dbContab.ParametrosContabs.Where(p => p.Cia == parametros.CiaContab).FirstOrDefault();

            if (parametrosContab == null)
            {
                errorMessage = "Aparentemente, la tabla de parámetros (Contab) no ha sido inicializada. " +
                               "Por favor inicialize esta tabla con los valores que sean adecuados, para la Cia Contab seleccionada para esta consulta.";

                return;
            }

            // ----------------------------------------------------------------------------------------------------------------------------
            // construimos el filtro de las cuentas contables, en base al contenido de la tabla ParametrosContab; en esta tabla el usuario indica
            // cuales cuentas contables corresponden a: activo, pasivo, capital, etc. Para BG, solo cuentas reales son leídas; para GyP solo cuentas
            // nominales son leídas ...
            string filtroBalGen_GyP = "";

            ConstruirFiltroBalGenGyP(parametros, parametrosContab, dbContab, out filtroBalGen_GyP);

            string filtroConsulta = parametros.Filtro + filtroBalGen_GyP;

            // ----------------------------------------------------------------------------------------------------------------------------
            // hacemos una validación: intentamos encontrar cuentas contables de tipo detalle, que tengan movimientos en el período indicado, pero que no tengan
            // un registro de saldos; estos casos pueden ocurrir para cuentas contables recién agregadas, a la cuales se le han agregado asientos pero que aún
            // no se ha ejecutado un cierre mensual que agregue un registro de saldos para éstas. Notificamos esta situación al usuario para que ejecute un
            // cierre mensual que agregue un registro de saldos para estas cuentas ...

            DateTime fecha1erDiaMes = new DateTime(parametros.Desde.Year, parametros.Desde.Month, 1);

            // nótese como no aplicamos el filtro específico a esta consulta, pues resulta complicado. Sin embargo, al no hacerlo, validamos
            // esta situación para todas las cuentas de la compañía, en vez de solo para las que cumplen el filtro ...
            string commandString = "Select c.Cuenta As CuentaContable, c.Descripcion " +
                                   "From CuentasContables c Inner Join dAsientos d On c.ID = d.CuentaContableID " +
                                   "Inner Join Asientos a On d.NumeroAutomatico = a.NumeroAutomatico " +
                                   "Where c.Cia = {2} And c.TotDet = 'D' And " +
                                   "a.Fecha Between {0} And {1} " +
                                   "And c.ID Not In (Select s.CuentaContableID From SaldosContables s Where " +
                                   "s.Cia = {2})";

            CuentaContableItem cuentasTipoDetalleSinRegistroDeSaldos = dbContab.ExecuteStoreQuery <CuentaContableItem>(commandString,
                                                                                                                       fecha1erDiaMes.ToString("yyyy-MM-dd"),
                                                                                                                       parametros.Hasta.ToString("yyyy-MM-dd"),
                                                                                                                       parametros.CiaContab).
                                                                       FirstOrDefault();

            if (cuentasTipoDetalleSinRegistroDeSaldos != null)
            {
                errorMessage = "Hemos encontrado que existen cuentas contables, por ejemplo <b><en>" +
                               (cuentasTipoDetalleSinRegistroDeSaldos.CuentaContable != null ? cuentasTipoDetalleSinRegistroDeSaldos.CuentaContable.Trim() :
                                "'cuenta contable sin número asignado - número en blanco'") +
                               " - " +
                               (cuentasTipoDetalleSinRegistroDeSaldos.Descripcion != null ? cuentasTipoDetalleSinRegistroDeSaldos.Descripcion.Trim() :
                                "'cuenta contable sin descripción asignada - descripción en blanco'") +
                               "</en></b>, con asientos registrados en el período indicado, pero sin un registro de saldos contables." +
                               "Lo más probable es que estas cuentas sean nuevas y hayan recibido asientos; sin embargo, como el cierre contable (mensual) " +
                               "no se ha corrido, su registro de saldos contables no ha sido creado aún. " +
                               "Por favor ejecute un cierre contable para el mes de la consulta para que se corrija esta situación.";

                return;
            }

            // ----------------------------------------------------------------------------------------------------------------------------
            // por último, determinamos si existen cuentas contables de tipo total y que tengan movimientos contables asociados para el período indicado.
            // esta situación puede ocurrir si el usuario cambia el tipo de una cuenta de detalle a total, para una cuenta que tenga asientos (el registro de
            // cuentas no debe permitir este cambio!). Notificamos esta situación al usuario y detenemos la ejecución del proceso ...

            // nótese como buscamos aquí sin usar el filtro que aplica a esta consulta; esto nos permite reportar esta situación tan grave,
            // independientemente del filtro que haya indicado el usuario ...
            commandString = "Select c.Cuenta As CuentaContable, c.Descripcion " +
                            "From CuentasContables c Inner Join dAsientos d On c.ID = d.CuentaContableID " +
                            "Inner Join Asientos a On d.NumeroAutomatico = a.NumeroAutomatico " +
                            "Where c.Cia = {0} And c.TotDet = 'T' And a.Fecha Between {1} And {2}";

            CuentaContableItem cuentasTipoTotalConMovimientos = dbContab.ExecuteStoreQuery <CuentaContableItem>(commandString,
                                                                                                                parametros.CiaContab,
                                                                                                                fecha1erDiaMes.ToString("yyyy-MM-dd"),
                                                                                                                parametros.Hasta.ToString("yyyy-MM-dd")).
                                                                FirstOrDefault();

            if (cuentasTipoTotalConMovimientos != null)
            {
                errorMessage = "Hemos encontrado que existen cuentas contables de tipo total, por ejemplo '<b><en>" +
                               (cuentasTipoTotalConMovimientos.CuentaContable != null ? cuentasTipoTotalConMovimientos.CuentaContable.Trim() :
                                "'cuenta contable sin número asignado - número en blanco'") +
                               " - " +
                               (cuentasTipoTotalConMovimientos.Descripcion != null ? cuentasTipoTotalConMovimientos.Descripcion.Trim() :
                                "'cuenta contable sin descripción asignada - descripción en blanco'") +
                               "</en></b>', con asientos registrados en el período indicado. " +
                               "Una cuenta contable de tipo total no puede recibir asientos contables. " +
                               "Por favor revise y corrija esta situación. Luego regrese a continuar con este proceso.";

                return;
            }

            if (!mesAnteriorCerradoEnContab)
            {
                // arriba, se determinó que el mes anterior al mes indicado no esta cerrado en Contab; de ser así, esta consulta no podrá determinar
                // lo saldos iniciales del período (saldos finales del mes anterior) de una manera confiable; sin embargo, notificamos al usaurio y
                // permitimos continuar (o no!) ...

                // nótese que si el usuario decide continuar, el metodo btnOk_Click es ejecutado; si el usuario cancela, simplemente la ejecución del
                // proceso es detenida en el cliente (browser) ...

                this.ModalPopupTitle_span.InnerHtml = "El mes contable que corresponde a los saldos iniciales del período indicado no está cerrado";
                this.ModalPopupBody_span.InnerHtml  = popupMessage;

                this.btnOk.Visible  = true;
                this.btnCancel.Text = "Cancelar";

                this.ModalPopupExtender1.Show();

                return;
            }

            // las validaciones pasaron; ejecutamos la función que prepara y la consulta ...
            ConstruirConsulta(out errorMessage);
        }
Ejemplo n.º 23
0
        private bool reposicionCajaChica(IMongoDatabase mongoDatabase, dbContab_Contab_Entities dbContab, int ciaContab, string user, out string errorMessage)
        {
            // TODO: vamos a modificar contabm para que, al grabar cada vez la reposición, la registremos en una tabla "temp", lista para ser
            // impresa. De esa forma, estará disponible para leerla aquí y obtener el reporte.
            // lo que nos faltará por hacer aquí, es agregar el type para poder leer estos registros.
            errorMessage = "";

            var mongoCollection = mongoDatabase.GetCollection <bancos_cajaChica_reposiciones_webReport>("temp_bancos_cajaChica_webReport");

            //var mongoQuery = Query<bancos_cajaChica_reposiciones_webReport>.EQ(x => x.user, user);
            //MongoCursor<bancos_cajaChica_reposiciones_webReport> mongoCursor = mongoCollection.Find(mongoQuery);

            var mongoCursor = mongoCollection.AsQueryable <bancos_cajaChica_reposiciones_webReport>().Where(x => x.user == user);

            List <bancos_cajaChica_reposiciones_webReport> items = mongoCursor.ToList <bancos_cajaChica_reposiciones_webReport>();
            var items2 = new List <bancos_cajaChica_reposiciones_gastos_webReport>();

            foreach (var gasto in items[0].gastos)
            {
                items2.Add(gasto);
            }

            if (items.Count == 0)
            {
                errorMessage = "No existe información para mostrar el reporte " +
                               "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " +
                               "filtro y seleccionado información aún.";
                return(false);
            }

            ReportViewer1.LocalReport.ReportPath = "contabm/reports/bancos_cajaChica_reposiciones_webReport.rdlc";

            ReportDataSource myReportDataSource  = new ReportDataSource();
            ReportDataSource myReportDataSource2 = new ReportDataSource();

            myReportDataSource.Name  = "DataSet1";
            myReportDataSource.Value = items;

            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource);

            myReportDataSource2.Name  = "DataSet2";
            myReportDataSource2.Value = items2;

            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource2);

            // nótese que el valor 'fecha' puede venir en nulls ...

            string nombreCiaContab = dbContab.Companias.Where(x => x.Numero == ciaContab).Select(x => x.Nombre).FirstOrDefault();

            ReportParameter[] MyReportParameters =
            {
                new ReportParameter("fecha",     new DateTime().ToString("dd-MMM-yyyy")),
                new ReportParameter("ciaNombre", nombreCiaContab)
            };

            ReportViewer1.LocalReport.SetParameters(MyReportParameters);

            ReportViewer1.LocalReport.Refresh();

            return(true);
        }
Ejemplo n.º 24
0
        private bool listadoAsientos_webReport(IMongoDatabase mongoDatabase, dbContab_Contab_Entities dbContab, string user, out string errorMessage)
        {
            errorMessage = "";

            var mongoCollection        = mongoDatabase.GetCollection <contab_asientosContables_webReport>("temp_contab_asientos_webReport");
            var mongoCollection_config = mongoDatabase.GetCollection <contab_asientosContables_webReport_config>("temp_contab_asientos_webReport_config");

            //var mongoQuery = Query<contab_asientosContables_webReport>.EQ(x => x.user, user);
            //MongoCursor<contab_asientosContables_webReport> mongoCursor = mongoCollection.Find(mongoQuery);

            var mongoCursor = mongoCollection.AsQueryable <contab_asientosContables_webReport>().Where(x => x.user == user);

            var items = mongoCursor.ToList();

            if (items.Count() == 0)
            {
                errorMessage = "No existe información para mostrar el reporte " +
                               "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " +
                               "filtro y seleccionado información aún.";
                return(false);
            }

            // leemos también los datos de configuración del reporte (metadata)
            //var mongoQuery_config = Query<contab_asientosContables_webReport_config>.EQ(x => x.user, user);
            //MongoCursor<contab_asientosContables_webReport_config> mongoCursor_config = mongoCollection_config.Find(mongoQuery_config);

            // var reportConfig = mongoCollection_config.FindOne(mongoQuery_config);
            var reportConfig = mongoCollection_config.AsQueryable <contab_asientosContables_webReport_config>().Where(d => d.user == user).FirstOrDefault();

            if (reportConfig == null)
            {
                errorMessage = "Error inesperado: no hemos podido leer un registro de configuración (parámetros) para esta ejecución del reporte.<br />" +
                               "Debe existir un registro de configuración que contenga los parámetros de ejecución del reporte.<br />" +
                               "Probablemente el reporte pueda ser obtenido si intenta su ejecución nuevamente.";
                return(false);
            }

            if (reportConfig.reportConfig.unaColumnaParaDebeYHaber)
            {
                ReportViewer1.LocalReport.ReportPath = "contabm/reports/contab_asientosContables_DebeHaberUnaColumna_webReport.rdlc";
            }
            else
            {
                ReportViewer1.LocalReport.ReportPath = "contabm/reports/contab_asientosContables_webReport.rdlc";
            }



            ReportDataSource myReportDataSource = new ReportDataSource();

            myReportDataSource.Name  = "DataSet1";
            myReportDataSource.Value = items;

            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource);

            // nótese que el valor 'fecha' puede venir en nulls ...
            ReportParameter[] MyReportParameters =
            {
                new ReportParameter("desde",               reportConfig.reportConfig.desde.ToString("dd-MMM-yyyy")),
                new ReportParameter("hasta",               reportConfig.reportConfig.hasta.ToString("dd-MMM-yyyy")),
                new ReportParameter("fecha",               reportConfig.reportConfig.fecha.HasValue ? reportConfig.reportConfig.fecha.Value.ToString("dd-MMM-yyyy") : ""),
                new ReportParameter("saltoPaginaPorFecha", reportConfig.reportConfig.saltoPaginaPorFecha.ToString()),
                new ReportParameter("titulo",              reportConfig.reportConfig.titulo),
                new ReportParameter("ciaNombre",           reportConfig.reportConfig.ciaNombre)
            };

            ReportViewer1.LocalReport.SetParameters(MyReportParameters);

            ReportViewer1.LocalReport.Refresh();

            return(true);
        }
Ejemplo n.º 25
0
        // para establecer una conexión a la base de datos en mongo ...
        // la idea de esta página es leer tablas (collections) que se han preparado en mongo
        // y generar reportes para estos datos
        // private MongoDB.Driver.MongoDatabase contabM_mongodb_conexion = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string errorMessage = "";

                if (Request.QueryString["user"] == null ||
                    Request.QueryString["cia"] == null ||
                    Request.QueryString["report"] == null)
                {
                    ErrMessage_Cell.InnerHtml = "Aparentemente, los parámetros pasados a esta página no son correctos.<br /><br />" +
                                                "Los parámetros que reciba esta página deben ser correctos para su ejecución pueda ser posible.";
                    return;
                }

                string userID    = Request.QueryString["user"].ToString();
                int    ciaContab = Convert.ToInt32(Request.QueryString["cia"].ToString());
                string report    = Request.QueryString["report"].ToString();


                // --------------------------------------------------------------------------------------------------------------------------
                // establecemos una conexión a mongodb; específicamente, a la base de datos del programa contabM; allí se registrará
                // todo en un futuro; además, ahora ya están registradas las vacaciones ...

                // ----------------------------------------------------------------------------------------------
                // establecemos una conexión a mongodb; específicamente, a la base de datos del programa contabM;
                string contabm_mongodb_connection = System.Web.Configuration.WebConfigurationManager.AppSettings["contabm_mongodb_connectionString"];
                string contabM_mongodb_name       = System.Web.Configuration.WebConfigurationManager.AppSettings["contabM_mongodb_name"];

                var client = new MongoClient(contabm_mongodb_connection);
                // var server = client.GetServer();
                // nótese como el nombre de la base de datos mongo (de contabM) está en el archivo webAppSettings.config; en este db se registran las vacaciones
                var mongoDataBase = client.GetDatabase(contabM_mongodb_name);
                // --------------------------------------------------------------------------------------------------------------------------

                var mongoCollection = mongoDataBase.GetCollection <contab_cuentasYSusMovimientos>("temp_consulta_contab_cuentasYSusMovimientos");

                try
                {
                    // --------------------------------------------------------------------------------------------------------------------------
                    // solo para que ocura una exception si mongo no está iniciado ... nótese que antes, cuando establecemos mongo, no ocurre un
                    // exception si mongo no está iniciado ...

                    // var queryDeleteDocs = Query<contab_cuentasYSusMovimientos>.EQ(x => x.cia, -9999999);
                    var builder = Builders <contab_cuentasYSusMovimientos> .Filter;
                    var filter  = builder.Eq(x => x.cia, -99999999);

                    mongoCollection.DeleteManyAsync(filter);
                }
                catch (Exception ex)
                {
                    errorMessage = "Error al intentar establecer una conexión a la base de datos (mongo) de 'contabM'; el mensaje de error es: " +
                                   ex.Message;
                    ErrMessage_Cell.InnerHtml = errorMessage;
                    return;
                }

                dbContab_Contab_Entities dbContab = new dbContab_Contab_Entities();

                switch (report)
                {
                case "cuentasYMovimientos":
                {
                    errorMessage = "";

                    if (Request.QueryString["desde"] == null ||
                        Request.QueryString["hasta"] == null)
                    {
                        ErrMessage_Cell.InnerHtml = "Aparentemente, los parámetros pasados a esta página no son correctos.<br /><br />" +
                                                    "Los parámetros que reciba esta página deben ser correctos para su ejecución pueda ser posible.";
                        return;
                    }

                    string desde = Request.QueryString["desde"].ToString();
                    string hasta = Request.QueryString["hasta"].ToString();

                    if (!cuentasYSusMovimientos(mongoDataBase, dbContab, ciaContab, userID, desde, hasta, out errorMessage))
                    {
                        errorMessage = "Error: ha ocurrido un error al intentar obtener el reporte: " + errorMessage;
                        ErrMessage_Cell.InnerHtml = errorMessage;
                    }
                    break;
                }

                case "listadoAsientos_webReport":
                {
                    errorMessage = "";

                    if (!listadoAsientos_webReport(mongoDataBase, dbContab, userID, out errorMessage))
                    {
                        errorMessage = "Error: ha ocurrido un error al intentar obtener el reporte: " + errorMessage;
                        ErrMessage_Cell.InnerHtml = errorMessage;
                    }
                    break;
                }

                case "reposicionCajaChica":
                {
                    errorMessage = "";

                    if (!reposicionCajaChica(mongoDataBase, dbContab, ciaContab, userID, out errorMessage))
                    {
                        errorMessage = "Error: ha ocurrido un error al intentar obtener el reporte: " + errorMessage;
                        ErrMessage_Cell.InnerHtml = errorMessage;
                    }
                    break;
                }

                default:
                {
                    errorMessage = "Error: el parámetro 'report' indicado a esta página no corresponde a alguno de los establecidos.";
                    ErrMessage_Cell.InnerHtml = errorMessage;

                    break;
                }
                }
            }
        }
Ejemplo n.º 26
0
        private bool cuentasYSusMovimientos(IMongoDatabase mongoDatabase, dbContab_Contab_Entities dbContab,
                                            int ciaContab, string user, string desde, string hasta, out string errorMessage)
        {
            errorMessage = "";

            var monedasList = dbContab.Monedas.ToList();

            var mongoCollection  = mongoDatabase.GetCollection <contab_cuentasYSusMovimientos>("temp_consulta_contab_cuentasYSusMovimientos");
            var mongoCollection2 = mongoDatabase.GetCollection <contab_cuentasYMovimientos_movimientos>("temp_consulta_contab_cuentasYSusMovimientos2");

            //var mongoQuery = Query<contab_cuentasYSusMovimientos>.EQ(x => x.user, user);
            //MongoCursor<contab_cuentasYSusMovimientos> mongoCursor = mongoCollection.Find(mongoQuery);

            var query = mongoCollection.AsQueryable <contab_cuentasYSusMovimientos>().Where(m => m.user == user);

            // var items = query.ToList();

            List <contab_cuentasYSusMovimientos_report> myReportList = new List <contab_cuentasYSusMovimientos_report>();
            contab_cuentasYSusMovimientos_report        reportItem;

            int numero            = 0;
            int cantidadRegistros = 0;

            foreach (var item in query)
            {
                numero     = 0;
                reportItem = new contab_cuentasYSusMovimientos_report();

                reportItem.numero               = numero;
                reportItem.moneda               = monedasList.Where(m => m.Moneda1 == item.monedaID).Select(m => m.Descripcion).FirstOrDefault();
                reportItem.cuentaContable       = item.cuentaContable;
                reportItem.nombreCuentaContable = item.nombreCuentaContable;
                reportItem.fecha                      = null;
                reportItem.numeroAsiento              = null;
                reportItem.simboloMonedaOriginal      = "";
                reportItem.descripcion                = "Saldo inicial del período";
                reportItem.tipoAsiento                = "";
                reportItem.referencia                 = "";
                reportItem.asientoTipoCierreAnualFlag = false;
                reportItem.saldoInicial               = item.saldoInicial;
                reportItem.debe       = 0;
                reportItem.haber      = 0;
                reportItem.saldoFinal = item.saldoInicial;

                myReportList.Add(reportItem);
                cantidadRegistros++;

                // para cada cuenta, leemos sus movimientos
                //var mongoQuery2 = Query.And(
                //    Query<contab_cuentasYMovimientos_movimientos>.EQ(x => x.registroCuentaContableID, item._id),
                //    Query<contab_cuentasYMovimientos_movimientos>.EQ(x => x.user, user));
                //MongoCursor<contab_cuentasYMovimientos_movimientos> mongoCursor2 = mongoCollection2.Find(mongoQuery2);

                //var items = mongoCursor.ToList();

                var query2 = mongoCollection2.AsQueryable <contab_cuentasYMovimientos_movimientos>()
                             .Where(d => d.registroCuentaContableID == item._id && d.user == user);


                foreach (var partida in query2)
                {
                    numero++;

                    reportItem = new contab_cuentasYSusMovimientos_report();

                    reportItem.numero               = numero;
                    reportItem.moneda               = monedasList.Where(m => m.Moneda1 == item.monedaID).Select(m => m.Descripcion).FirstOrDefault();
                    reportItem.cuentaContable       = item.cuentaContable;
                    reportItem.nombreCuentaContable = item.nombreCuentaContable;
                    reportItem.fecha                      = partida.fecha;
                    reportItem.numeroAsiento              = partida.numeroAsiento;
                    reportItem.simboloMonedaOriginal      = partida.simboloMonedaOriginal;
                    reportItem.descripcion                = partida.descripcion;
                    reportItem.tipoAsiento                = partida.tipoAsiento;
                    reportItem.referencia                 = partida.referencia;
                    reportItem.asientoTipoCierreAnualFlag = partida.asientoTipoCierreAnualFlag;
                    reportItem.saldoInicial               = 0;
                    reportItem.debe       = partida.debe;
                    reportItem.haber      = partida.haber;
                    reportItem.saldoFinal = partida.debe - partida.haber;

                    myReportList.Add(reportItem);
                    cantidadRegistros++;
                }
            }

            if (cantidadRegistros == 0)
            {
                errorMessage = "No existe información para mostrar el reporte " +
                               "que Ud. ha requerido. <br /><br /> Probablemente Ud. no ha aplicado un " +
                               "filtro y seleccionado información aún.";
                return(false);
            }


            ReportViewer1.LocalReport.ReportPath = "contabm/reports/contab_cuentasYSusMovimientos.rdlc";

            ReportDataSource myReportDataSource = new ReportDataSource();

            myReportDataSource.Name  = "DataSet1";
            myReportDataSource.Value = myReportList;

            ReportViewer1.LocalReport.DataSources.Add(myReportDataSource);


            //ReportParameter FechaInicialPeriodo_ReportParameter = new
            //                                ReportParameter("FechaInicialPeriodo", dFechaInicialPeriodo.ToString());

            //ReportParameter FechaFinalPeriodo_ReportParameter = new
            //    ReportParameter("FechaFinalPeriodo", dFechaFinalPeriodo.ToString());

            string nombreCiaContab = dbContab.Companias.Where(x => x.Numero == ciaContab).Select(x => x.Nombre).FirstOrDefault();

            ReportParameter[] MyReportParameters =
            {
                new ReportParameter("nombreCiaContab", nombreCiaContab),
                new ReportParameter("desde",           desde),
                new ReportParameter("hasta",           hasta)
            };

            ReportViewer1.LocalReport.SetParameters(MyReportParameters);


            ReportViewer1.LocalReport.Refresh();


            return(true);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            Master.Page.Title = "contab - Reconversión";

            // TODO: porqué hay dos espacios para mostrar mensajes de error????
            this.ErrMessage_Span.InnerHtml = "";
            this.ErrMessage_Span.Visible   = false;

            this.errorMessageDiv.Visible  = false;
            this.InfoMessage_Span.Visible = false;

            if (!User.Identity.IsAuthenticated)
            {
                FormsAuthentication.SignOut();
                return;
            }

            if (!Page.IsPostBack)
            {
                // Gets a reference to a Label control that is not in a
                // ContentPlaceHolder control

                HtmlContainerControl MyHtmlSpan;

                MyHtmlSpan = (HtmlContainerControl)Master.FindControl("AppName_Span");
                if (!(MyHtmlSpan == null))
                {
                    MyHtmlSpan.InnerHtml = "Reconversión monetaria";
                }

                HtmlGenericControl MyHtmlH2;

                MyHtmlH2 = (HtmlGenericControl)Master.FindControl("PageTitle_TableCell");
                if (!(MyHtmlH2 == null))
                {
                    // sub título para la página
                    MyHtmlH2.InnerHtml = "Reconversión monetaria";
                }

                Session["reconversionMonetaria.cantidadDigitos"] = null;
                Session["reconversionMonetaria.ano"]             = null;

                // intentamos leer la compañía seleccionada
                int    ciaContabSeleccionada;
                string nombreCiaContabSeleccionada;

                using (dbContab_Contab_Entities context = new dbContab_Contab_Entities())
                {
                    try
                    {
                        var cia = context.tCiaSeleccionadas.Where(s => s.UsuarioLS == User.Identity.Name).
                                  Select(c => new { ciaContabSeleccionada = c.Compania.Numero, ciaContabSeleccionadaNombre = c.Compania.Nombre }).
                                  FirstOrDefault();

                        if (cia == null)
                        {
                            string errorMessage = "Error: aparentemente, no se ha seleccionado una <em>Cia Contab</em>.<br />" +
                                                  "Por favor seleccione una <em>Cia Contab</em> y luego regrese y continúe con la ejecución de esta función.";

                            this.ErrMessage_Span.InnerHtml = errorMessage;
                            this.ErrMessage_Span.Visible   = true;

                            return;
                        }

                        nombreCiaContabSeleccionada = cia.ciaContabSeleccionadaNombre;
                        ciaContabSeleccionada       = cia.ciaContabSeleccionada;

                        this.companiaSeleccionada_label.Text = nombreCiaContabSeleccionada;
                    }
                    catch (Exception ex)
                    {
                        string message = ex.Message;
                        if (ex.InnerException != null)
                        {
                            message += "<br />" + ex.InnerException.Message;
                        }

                        string errorMessage = "Error: se ha producido un error al intentar efectuar una operación en la base de datos.<br />" +
                                              "El mensaje específico de error es: <br />" + message;

                        this.ErrMessage_Span.InnerHtml = errorMessage;
                        this.ErrMessage_Span.Visible   = true;
                    }
                }

                this.texto1.Visible = false;
            }
            else
            {
                // -------------------------------------------------------------------------
                // la página puede ser 'refrescada' por el popup; en ese caso, ejeucutamos
                // una función que efectúa alguna funcionalidad y rebind la información

                if (RebindFlagHiddenField.Value == "1")
                {
                    RefreshAndBindInfo();
                    RebindFlagHiddenField.Value = "0";
                }
                // -------------------------------------------------------------------------
            }
        }
        private void bancos(dbContab_Contab_Entities context, string divisor, int moneda, short ano, int ciaSeleccionada, out bool error, out string message)
        {
            error   = false;
            message = "";

            string desde = new DateTime(ano, 1, 1).ToString("yyyy-MM-dd");
            string hasta = new DateTime(ano, 12, 31).ToString("yyyy-MM-dd");

            int cant_facturas_actualizadas             = 0;
            int cant_cuotas_actualizadas               = 0;
            int cant_impuestosRetenciones_actualizadas = 0;
            int cant_pagos_actualizadas  = 0;
            int cant_dPagos_actualizadas = 0;
            int cant_movimientosBancarios_actualizadas = 0;


            // -------------------------------------------------------
            // facturas
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update f Set f.MontoFacturaSinIva = Round(f.MontoFacturaSinIva / { divisor}, 2), f.RetencionSobreIva = Round(f.RetencionSobreIva / { divisor}, 2), " +
                    $"f.MontoFacturaConIva = Round(f.MontoFacturaConIva / { divisor}, 2), f.Iva = Round(f.Iva / { divisor}, 2), " +
                    $"f.TotalFactura = Round(f.TotalFactura / { divisor}, 2), f.MontoSujetoARetencion = Round(f.MontoSujetoARetencion / { divisor}, 2), " +
                    $"f.ImpuestoRetenidoISLRAntesSustraendo = Round(f.ImpuestoRetenidoISLRAntesSustraendo / { divisor}, 2), " +
                    $"f.ImpuestoRetenidoISLRSustraendo = Round(f.ImpuestoRetenidoISLRSustraendo / { divisor}, 2), f.ImpuestoRetenido = Round(f.ImpuestoRetenido / { divisor}, 2),  " +
                    $"f.OtrosImpuestos = Round(f.OtrosImpuestos / { divisor}, 2), f.OtrasRetenciones = Round(f.OtrasRetenciones / { divisor}, 2), " +
                    $"f.TotalAPagar = Round(f.TotalAPagar / { divisor}, 2), f.Anticipo = Round(f.Anticipo / { divisor}, 2), " +
                    $"f.Saldo = Round(f.Saldo / { divisor}, 2) " +
                    $"From Facturas f " +
                    $"Where ((f.CxCCxPFlag = 1 And f.FechaRecepcion Between '{desde}' and '{hasta}') Or " +
                    $"(f.CxCCxPFlag = 2 And f.FechaEmision Between '{desde}' and '{hasta}')) " +
                    $"And f.Moneda = {moneda} And f.Cia = {ciaSeleccionada}";

                cant_facturas_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }


            // -------------------------------------------------------
            // cuotas
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update c Set c.MontoCuota = Round(c.MontoCuota / { divisor}, 2), c.RetencionSobreIva = Round(c.RetencionSobreIva / { divisor}, 2), " +
                    $"c.RetencionSobreISLR = Round(c.RetencionSobreISLR / { divisor}, 2), c.OtrosImpuestos = Round(c.OtrosImpuestos / { divisor}, 2), " +
                    $"c.Iva = Round(c.Iva / { divisor}, 2), c.OtrasRetenciones = Round(c.OtrasRetenciones / { divisor}, 2), " +
                    $"c.TotalCuota = Round(c.TotalCuota / { divisor}, 2), " +
                    $"c.Anticipo = Round(c.Anticipo / { divisor}, 2), c.SaldoCuota = Round(c.SaldoCuota / { divisor}, 2) " +
                    $"from CuotasFactura c Inner Join Facturas f On c.ClaveUnicaFactura = f.ClaveUnica " +
                    $"Where ((f.CxCCxPFlag = 1 And f.FechaRecepcion Between '{desde}' and '{hasta}') Or " +
                    $"(f.CxCCxPFlag = 2 And f.FechaEmision Between '{desde}' and '{hasta}')) " +
                    $"And f.Moneda = {moneda} And f.Cia = {ciaSeleccionada}";

                cant_cuotas_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }


            // -------------------------------------------------------
            // impuestos / retenciones
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update i Set i.MontoBase = Round(i.MontoBase / { divisor}, 2), i.MontoAntesSustraendo = Round(i.MontoAntesSustraendo / { divisor}, 2), " +
                    $"i.Sustraendo = Round(i.Sustraendo / { divisor}, 2), i.Monto = Round(i.Monto / { divisor}, 2) " +
                    $"From Facturas_Impuestos i Inner Join Facturas f On i.FacturaID = f.ClaveUnica " +
                    $"Where ((f.CxCCxPFlag = 1 And f.FechaRecepcion Between '{desde}' and '{hasta}') Or " +
                    $"(f.CxCCxPFlag = 2 And f.FechaEmision Between '{desde}' and '{hasta}')) " +
                    $"And f.Moneda = {moneda} And f.Cia = {ciaSeleccionada}";

                cant_impuestosRetenciones_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            // -------------------------------------------------------
            // pagos
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update p Set p.Monto = Round(p.Monto / { divisor}, 2) " +
                    $"From Pagos p " +
                    $"Where (p.Fecha Between '{desde}' and '{hasta}') And " +
                    $"p.Moneda = {moneda} And p.Cia = {ciaSeleccionada}";

                cant_pagos_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            // -------------------------------------------------------
            // dPagos
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update d Set d.MontoPagado = Round(d.MontoPagado / { divisor}, 2) " +
                    $"From dPagos d Inner Join Pagos p On d.ClaveUnicaPago = p.ClaveUnica " +
                    $"Where (p.Fecha Between '{desde}' and '{hasta}') And p.Moneda = {moneda} And p.Cia = {ciaSeleccionada}";

                cant_dPagos_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            // -------------------------------------------------------
            // movimientos bancarios
            // -------------------------------------------------------

            try
            {
                string queryString =
                    $"Update m Set m.MontoBase = Round(m.MontoBase / { divisor}, 2), m.Comision = Round(m.Comision / { divisor}, 2), " +
                    $"m.Impuestos = Round(m.Impuestos / { divisor}, 2), m.Monto = Round(m.Monto / { divisor}, 2) " +
                    $"From MovimientosBancarios m Inner Join Chequeras ch On m.ClaveUnicaChequera = ch.NumeroChequera " +
                    $"Inner Join CuentasBancarias cb On ch.NumeroCuenta = cb.CuentaInterna " +
                    $"Where (m.Fecha Between '{desde}' and '{hasta}') And cb.Moneda = {moneda} And cb.Cia = {ciaSeleccionada}";

                cant_movimientosBancarios_actualizadas = context.ExecuteStoreCommand(queryString);
            }
            catch (Exception ex)
            {
                error   = true;
                message = "Ha ocurrido un error al intentar ejecutar una operación de acceso a la base de datos. <br /> " +
                          "El mensaje específico de error es: " + ex.Message + "<br /><br />";

                return;
            }

            message = $"<h3>Bancos</h3><br />" +
                      $"Ok, El proceso ha finalizado en forma satisfactoria.<br /><br />" +
                      $"En total, se han actualizado: {cant_facturas_actualizadas.ToString()} facturas, <br /> " +
                      $"{cant_cuotas_actualizadas.ToString()} cuotas de factura, <br />" +
                      $"{cant_impuestosRetenciones_actualizadas.ToString()} registros de impuestos y retenciones, <br />" +
                      $"{cant_pagos_actualizadas.ToString()} pagos, <br />" +
                      $"{cant_dPagos_actualizadas.ToString()} dPagos, <br />" +
                      $"y, finalmente, {cant_movimientosBancarios_actualizadas.ToString()} movimientos bancarios. ";

            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;
        }
        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;
            }
        }