Exemplo n.º 1
0
        public ResultadoId Contable_Asiento_Editar(DTO.Contable.Asiento.Insertar ficha)
        {
            ResultadoId result = new ResultadoId();

            try
            {
                using (var ctx = new dBEntities(_cn.ConnectionString))
                {
                    using (var ts = ctx.Database.BeginTransaction())
                    {
                        try
                        {
                            var FechaSistema = ctx.Database.SqlQuery <DateTime>("select NOW()").FirstOrDefault();
                            var entA         = ctx.contabilidad_asiento.Find(ficha.IdAsientoEditado);
                            var entADoc      = ctx.contabilidad_asiento_documento.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList();
                            var entADet      = ctx.contabilidad_asiento_detalle.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList();
                            var entARes      = ctx.contabilidad_asiento_resumen.Where(d => d.idAsiento == ficha.IdAsientoEditado).ToList();
                            int cnt          = entA.numeroComprobante;

                            foreach (var rs in entARes)
                            {
                                ctx.contabilidad_asiento_resumen.Remove(rs);
                                ctx.SaveChanges();
                            }

                            foreach (var dt in entADet)
                            {
                                var debe  = dt.montoDebe;
                                var haber = dt.montoHaber;
                                var entDt = dt.contabilidad_plancta;
                                var nivel = entDt.nivel;
                                entDt.debe  -= debe;
                                entDt.haber -= haber;
                                ctx.SaveChanges();

                                if (nivel >= 1)
                                {
                                    var entNiv = entDt;
                                    for (var nv = nivel; nv > 1; nv--)
                                    {
                                        entNiv        = entNiv.contabilidad_plancta2;
                                        entNiv.debe  -= debe;
                                        entNiv.haber -= haber;
                                        ctx.SaveChanges();
                                    }
                                }
                                ctx.contabilidad_asiento_detalle.Remove(dt);
                            }

                            foreach (var doc in entADoc)
                            {
                                ctx.contabilidad_asiento_documento.Remove(doc);
                            }
                            ctx.contabilidad_asiento.Remove(entA);

                            //
                            var ent = new contabilidad_asiento()
                            {
                                fechaEmision         = FechaSistema.Date,
                                mesRelacion          = ficha.PeriodoMes,
                                anoRelacion          = ficha.PeriodoAno,
                                descripcion          = ficha.DescripcionDocumentoRef,
                                tipoAsiento          = (int)ficha.TipoAsiento,
                                autoGenerado         = "N",
                                estaAnulado          = "N",
                                estaProcesado        = "S",
                                numeroComprobante    = cnt,
                                renglones            = 1,
                                tipoDocumento        = ficha.DescTipoDocumento,
                                idTipoDocumento      = ficha.IdTipoDocumento,
                                reglaIntegracionCod  = "",
                                reglaIntegracionDesc = "",
                                importe = ficha.Importe
                            };
                            ctx.contabilidad_asiento.Add(ent);
                            ctx.SaveChanges();

                            var entDoc = new contabilidad_asiento_documento()
                            {
                                idAsiento   = ent.id,
                                documento   = ficha.DocumentoRef,
                                fecha       = ficha.FechaDocumentoRef,
                                descripcion = ficha.DescripcionDocumentoRef,
                                signo       = 1,
                                incluir     = "S",
                            };
                            ctx.contabilidad_asiento_documento.Add(entDoc);
                            ctx.SaveChanges();

                            var reng = 0;
                            foreach (var it in ficha.Ctas)
                            {
                                reng += 1;
                                var entDet = new contabilidad_asiento_detalle()
                                {
                                    idAsiento          = ent.id,
                                    idAsientoDocumento = entDoc.id,
                                    idPlanCta          = it.Id,
                                    numRenglon         = reng,
                                    codigoCta          = it.codigo,
                                    descripcionCta     = it.Descripcion,
                                    montoDebe          = it.MontoDebe,
                                    montoHaber         = it.MontoHaber,
                                    naturalezaCta      = (it.Naturaleza == DTO.Contable.PlanCta.Enumerados.Naturaleza.Deudora ? "D" : "A"),
                                };
                                ctx.contabilidad_asiento_detalle.Add(entDet);
                                ctx.SaveChanges();

                                var entAsientoResumen = new contabilidad_asiento_resumen()
                                {
                                    idAsiento      = ent.id,
                                    idPlanCta      = it.Id,
                                    codigoCta      = it.codigo,
                                    descripcionCta = it.Descripcion,
                                    montoDebe      = it.MontoDebe,
                                    montoHaber     = it.MontoHaber
                                };
                                ctx.contabilidad_asiento_resumen.Add(entAsientoResumen);
                                ctx.SaveChanges();

                                var entPlanCta = ctx.contabilidad_plancta.Find(it.Id);
                                entPlanCta.debe  += it.MontoDebe;
                                entPlanCta.haber += it.MontoHaber;
                                ctx.SaveChanges();

                                var nivel = entPlanCta.nivel;
                                if (nivel >= 1)
                                {
                                    var entNiv = entPlanCta;
                                    for (var nv = nivel; nv > 1; nv--)
                                    {
                                        entNiv        = entNiv.contabilidad_plancta2;
                                        entNiv.debe  += it.MontoDebe;
                                        entNiv.haber += it.MontoHaber;
                                        ctx.SaveChanges();
                                    }
                                }
                            }

                            ts.Commit();
                            result.Id = ent.id;
                        }
                        catch (Exception ex)
                        {
                            throw new Exception(ex.Message);
                        }
                        finally
                        {
                            ctx.Configuration.AutoDetectChangesEnabled = true;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DTO.EnumResult.isError;
                result.Id      = -1;
            }

            return(result);
        }
Exemplo n.º 2
0
        public ResultadoId Contable_Asiento_Preview(DTO.Contable.Asiento.Insertar ficha)
        {
            ResultadoId result = new ResultadoId();

            try
            {
                using (var ctx = new dBEntities(_cn.ConnectionString))
                {
                    using (var ts = new TransactionScope())
                    {
                        var FechaSistema = ctx.Database.SqlQuery <DateTime>("select NOW()").FirstOrDefault();
                        int cnt          = 0;

                        if (ficha.IdAsientoPreview != -1)
                        {
                            var entA    = ctx.contabilidad_asiento.Find(ficha.IdAsientoPreview);
                            var entADoc = ctx.contabilidad_asiento_documento.Where(d => d.idAsiento == ficha.IdAsientoPreview).ToList();
                            var entADet = ctx.contabilidad_asiento_detalle.Where(d => d.idAsiento == ficha.IdAsientoPreview).ToList();
                            cnt = entA.numeroComprobante;

                            foreach (var dt in entADet)
                            {
                                ctx.contabilidad_asiento_detalle.Remove(dt);
                                ctx.SaveChanges();
                            }
                            foreach (var doc in entADoc)
                            {
                                ctx.contabilidad_asiento_documento.Remove(doc);
                                ctx.SaveChanges();
                            }
                            ctx.contabilidad_asiento.Remove(entA);
                            ctx.SaveChanges();
                        }
                        else
                        {
                            var cont = ctx.contabilidad_contadores.Find(1);
                            cont.cnt_aisento_preview += 1;
                            cnt = cont.cnt_aisento_preview;
                            ctx.SaveChanges();
                        }

                        var ent = new contabilidad_asiento()
                        {
                            fechaEmision         = FechaSistema.Date,
                            mesRelacion          = ficha.PeriodoMes,
                            anoRelacion          = ficha.PeriodoAno,
                            descripcion          = ficha.DescripcionDocumentoRef,
                            tipoAsiento          = (int)ficha.TipoAsiento,
                            autoGenerado         = "N",
                            estaAnulado          = "N",
                            estaProcesado        = "N",
                            numeroComprobante    = cnt,
                            renglones            = 1,
                            tipoDocumento        = ficha.DescTipoDocumento,
                            idTipoDocumento      = ficha.IdTipoDocumento,
                            reglaIntegracionCod  = "",
                            reglaIntegracionDesc = "",
                            importe = ficha.Importe
                        };
                        ctx.contabilidad_asiento.Add(ent);
                        ctx.SaveChanges();

                        var entDoc = new contabilidad_asiento_documento()
                        {
                            idAsiento   = ent.id,
                            documento   = ficha.DocumentoRef,
                            fecha       = ficha.FechaDocumentoRef,
                            descripcion = ficha.DescripcionDocumentoRef,
                            signo       = 1,
                            incluir     = "S",
                        };
                        ctx.contabilidad_asiento_documento.Add(entDoc);
                        ctx.SaveChanges();

                        var reng = 0;
                        foreach (var it in ficha.Ctas)
                        {
                            reng += 1;
                            var entDet = new contabilidad_asiento_detalle()
                            {
                                idAsiento          = ent.id,
                                idAsientoDocumento = entDoc.id,
                                idPlanCta          = it.Id,
                                numRenglon         = reng,
                                codigoCta          = it.codigo,
                                descripcionCta     = it.Descripcion,
                                montoDebe          = it.MontoDebe,
                                montoHaber         = it.MontoHaber,
                                naturalezaCta      = (it.Naturaleza == DTO.Contable.PlanCta.Enumerados.Naturaleza.Deudora ? "D" : "A"),
                            };
                            ctx.contabilidad_asiento_detalle.Add(entDet);
                            ctx.SaveChanges();
                        }

                        ts.Complete();
                        result.Id = ent.id;
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DTO.EnumResult.isError;
                result.Id      = -1;
            }

            return(result);
        }