示例#1
0
        public async Task <IActionResult> Index(SolicitudAsientoViewModel solicitud)
        {
            if (ModelState.IsValid)
            {
                using (var caller = new ApiCaller(configuration))
                {
                    var     detalles = new List <Detalle>();
                    decimal MontoDB  = 0;
                    decimal MontoCR  = 0;
                    foreach (var af in ActivosFijosDB.ActivosFijos)
                    {
                        var cd = af.CalculoDepreciacion.ToList();
                        if (!cd.Exists(x => x.FechaProceso > solicitud.FechaInicio && x.FechaProceso < solicitud.FechaFin))
                        {
                            decimal depreciado = af.DepreciacionPorAnno / 12;
                            MontoDB += depreciado;
                            decimal totalDepreciado = 0;
                            if (cd.Count > 0)
                            {
                                totalDepreciado = cd.Max(x => x.DepreciacionAcumulada);
                            }
                            totalDepreciado += MontoDB;
                            MontoCR          = af.ValorCompra - totalDepreciado;
                            TipoActivo ta = ActivosFijosDB.TipoActivo.FirstOrDefault(x => x.Id == af.IdTipoActivo);
                            ActivosFijosDB.CalculoDepreciacion.Add(new CalculoDepreciacion
                            {
                                IdActivoFijo          = af.Id,
                                DepreciacionAcumulada = totalDepreciado,
                                FechaProceso          = solicitud.FechaFin,
                                CuentaDepreciacion    = ta.CuentaDepreciacion,
                                CuentaCompra          = ta.CuentaCompra,
                                MontoDepreciado       = depreciado
                            });
                            detalles.Add(new Detalle
                            {
                                Monto           = MontoDB,
                                NumeroCuenta    = ta.CuentaCompra,
                                TipoTransaccion = "DB"
                            });
                            detalles.Add(new Detalle
                            {
                                Monto           = MontoCR,
                                NumeroCuenta    = ta.CuentaDepreciacion,
                                TipoTransaccion = "CR"
                            });
                        }
                    }

                    var itsOk = await caller.ConsumoContabilidad(new ApiRequest
                    {
                        Auxiliar    = "8",
                        Descripcion = $"Generacion de Asientos de Activos Fijos {solicitud.FechaFin.ToString("ddMMyyyy")}",
                        Moneda      = "DOP",
                        Detalle     = detalles
                    });
                }
                return(View("Resultado", new ResultadoApiViewModel {
                    Message = "Completado"
                }));
            }
            return(View(solicitud));
        }