public override MemoryStream ImprimePoliza(object datosPoliza, IList <PolizaInfo> polizas) { try { PolizaModel = new PolizaModel(); polizaImpresion = new PolizaImpresion <PolizaModel>(PolizaModel, TipoPoliza.SalidaMuerte); var costosAnimal = datosPoliza as List <AnimalCostoInfo>; var animalCostoAgrupado = (from costo in costosAnimal group costo by new { costo.AnimalID, costo.CostoID } into agrupado select new AnimalCostoInfo { AnimalID = agrupado.Key.AnimalID, Arete = agrupado.Select(ani => ani.Arete).FirstOrDefault(), CostoID = agrupado.Key.CostoID, Importe = agrupado.Sum(cos => cos.Importe), FolioReferencia = agrupado.Select(cos => cos.FolioReferencia).FirstOrDefault(), FechaCosto = agrupado.Select(cos => cos.FechaCosto).FirstOrDefault(), OrganizacionID = agrupado.Select(org => org.OrganizacionID).FirstOrDefault() }).ToList(); costosAnimal = animalCostoAgrupado; long folioVenta = Convert.ToInt64(costosAnimal.Select(folio => folio.Arete).FirstOrDefault()); int organizacionID = costosAnimal.Select(org => org.OrganizacionID).FirstOrDefault(); DateTime fechaVenta = DateTime.Today; OrganizacionInfo organizacionOrigen = ObtenerOrganizacionIVA(organizacionID); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = organizacionOrigen.Descripcion, Desplazamiento = 0 }, }; polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera"); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = "Salida De Ganado x Muerte", Desplazamiento = 0 }, }; polizaImpresion.GeneraCabecero(new[] { "100" }, "NombreGanadera"); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = string.Format("{0} {1}", "FECHA:", fechaVenta.ToShortDateString()), Desplazamiento = 0 }, new PolizaEncabezadoModel { Descripcion = string.Format("{0} {1}", "FOLIO No.", folioVenta), Desplazamiento = 0 }, }; polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "Folio"); polizaImpresion.GenerarLineaEnBlanco("Folio", 2); PolizaModel.Encabezados = new List <PolizaEncabezadoModel> { new PolizaEncabezadoModel { Descripcion = string.Format("{0}:{1}", "REFERENCIA", organizacionOrigen.Descripcion), }, new PolizaEncabezadoModel { Descripcion = string.Format("{0}:{1}", "FECHA", fechaVenta.ToShortDateString()), }, }; polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA"); GeneraLinea(2); polizaImpresion.GeneraCabecero(new[] { "50", "50" }, "FECHA"); GeneraLineaEncabezadoDetalle(); var tipoGanadoBL = new TipoGanadoBL(); List <long> animalId = costosAnimal.Select(id => id.AnimalID).Distinct().ToList(); List <AnimalInfo> animales = animalId.Select(ani => new AnimalInfo { AnimalID = ani }).Distinct().ToList(); List <ContenedorTipoGanadoPoliza> tipoGanadoPolizas = tipoGanadoBL.ObtenerTipoPorAnimal(animales, TipoMovimiento. Muerte); List <ContenedorVentaGanado> ventasGanado = costosAnimal .Select(venta => new ContenedorVentaGanado { CausaPrecio = new CausaPrecioInfo(), VentaGanado = new VentaGanadoInfo(), VentaGanadoDetalle = new VentaGanadoDetalleInfo { Animal = new AnimalInfo { AnimalID = venta.AnimalID } } }).ToList(); GeneraLineasDetalle(tipoGanadoPolizas, costosAnimal, ventasGanado); GeneraLinea(12); polizaImpresion.GeneraCabecero(new[] { "100" }, "Detalle"); GeneraLineaEncabezadoCostos(); polizaImpresion.GeneraCabecero(new[] { "30", "20", "20", "5", "40" }, "Costos"); GeneraLineaCostos(costosAnimal, string.Empty); polizaImpresion.GeneraCostos("Costos"); GeneraLineaCostosTotales(); polizaImpresion.GeneraCabecero(new[] { "30", "20", "20", "5", "40" }, "Costos"); GeneraLineaTotalCostos(costosAnimal); GeneraLinea(5); polizaImpresion.GeneraCabecero(new[] { "100" }, "Costos"); polizaImpresion.GenerarLineaEnBlanco(); GeneraLineaEncabezadoRegistroContable(folioVenta); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); GeneraLineaSubEncabezadoRegistroContable(false, "No DE CUENTA", "CARGOS", "ABONOS"); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); IList <PolizaInfo> cargos; IList <PolizaInfo> abonos; GeneraLineaRegistroContable(polizas, out cargos, out abonos); polizaImpresion.GenerarRegistroContable("RegistroContable"); GeneraLinea(5); polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable"); GenerarLineaSumaRegistroContable(polizas, "*= SUMAS -=>"); polizaImpresion.GeneraCabecero(new[] { "30", "60", "65", "25", "25" }, "RegistroContable"); GeneraLinea(5); polizaImpresion.GeneraCabecero(new[] { "100" }, "RegistroContable"); return(polizaImpresion.GenerarArchivo()); } catch (Exception ex) { Logger.Error(ex); throw; } }