Ejemplo n.º 1
0
        public async Task <ICollection <DetalleLiquidacionParaArchivo> > ObtenerCabeceraParaArchivoObligacion(List <int> listaLiquidacionId, int pciId)
        {
            List <DetalleLiquidacionParaArchivo> listaFinal = new List <DetalleLiquidacionParaArchivo>();
            string identificacionPCI = string.Empty;
            var    pci = await _listaRepository.ObtenerPci(pciId);

            if (pci != null)
            {
                identificacionPCI = pci.Identificacion;
            }

            var lista = await(from dl in _context.DetalleLiquidacion
                              join t in _context.Tercero on dl.TerceroId equals t.TerceroId
                              join p in _context.ParametroLiquidacionTercero on dl.TerceroId equals p.TerceroId into parametroLiquidacion
                              from pl in parametroLiquidacion.DefaultIfEmpty()
                              join tc in _context.TipoCuentaXPagar on pl.TipoCuentaXPagarId equals tc.TipoCuentaXPagarId into CuentaPorPagar
                              from tiCu in CuentaPorPagar.DefaultIfEmpty()
                              join td in _context.TipoDocumentoSoporte on pl.TipoDocumentoSoporteId equals td.TipoDocumentoSoporteId into TipoDocumento
                              from tiDo in TipoDocumento.DefaultIfEmpty()
                              where dl.PciId == pl.PciId
                              where (listaLiquidacionId.Contains(dl.DetalleLiquidacionId))
                              select new DetalleLiquidacionParaArchivo()
            {
                FechaActual                = System.DateTime.Now.ToString("yyyy/MM/dd"),
                PCI                        = identificacionPCI,
                Crp                        = dl.Crp,
                Dip                        = "NO",
                TipoCuentaXPagarCodigo     = pl.TipoCuentaXPagarId > 0 ? tiCu.Codigo : string.Empty,
                ValorIva                   = decimal.Round(dl.ValorIva, 2, MidpointRounding.AwayFromZero),
                TipoDocumentoSoporteCodigo = pl.TipoDocumentoSoporteId > 0 ? tiDo.Codigo : string.Empty,
                NumeroFactura              = dl.NumeroFactura,
                ConstanteExpedidor         = "11",
                ConstanteCargo             = "SUPERVISOR",
                NombreSupervisor           = dl.NombreSupervisor,
                TextoComprobanteContable   =
                    dl.TextoComprobanteContable.Length > 220 ? dl.TextoComprobanteContable.Substring(0, 220) : dl.TextoComprobanteContable,
                ValorTotal    = decimal.Round(dl.ValorTotal, 2, MidpointRounding.AwayFromZero),
                FechaRegistro = dl.FechaRegistro.Value,
            })
                        .ToListAsync();

            if (lista != null && lista.Count > 0)
            {
                listaFinal = lista.OrderBy(x => x.FechaRegistro).ToList();
            }
            return(listaFinal);
        }