示例#1
0
        private async Task <string> GetHtmlReporteDiario(Usuario usuario, ReporteDto reporte)
        {
            var ordenes = await _proveedorBl.ObtenerTodosAsync();

            var documentoPagos = await _documentoPagoBl.ObtenerTodosAsync();

            ordenes        = ordenes.Where(x => x.FechaHora.Date == reporte.FechaDesde.Date).ToList();
            documentoPagos = documentoPagos.Where(x => x.FechaHora.Date == reporte.FechaDesde.Date).ToList();

            var fecha         = $"{GetDayName((int)reporte.FechaDesde.DayOfWeek)}, {reporte.FechaDesde.Date:dd-MM-yyyy}";
            var solicitante   = $"{usuario.Persona.Nombre} {usuario.Persona.Apellido}";
            var cantOrdenes   = ordenes.Count;
            var montoEgresos  = ordenes.Sum(x => x.Total);
            var cantPedidos   = documentoPagos.Count;
            var montoIngresos = documentoPagos.Sum(x => x.Total);
            var montoBalance  = montoIngresos - montoEgresos;
            var rutaImagen    = "C:\\Storage\\logo_sxxi.png";

            //Recorrer las boletas/facturas del dia y las ordenes de compra a proveedores INGRESADAS
            var detalleIngresos = "";
            var detalleEgresos  = "";

            ordenes.ForEach(x =>
            {
                detalleEgresos += "<tr>";
                detalleEgresos += $"<td>{x.Id}</td>";
                detalleEgresos += $"<td>{x.FechaHora:HH:mm}</td>";
                detalleEgresos += $"<td>{x.EstadosOrdenProveedor.OrderByDescending(z => z.Fecha).FirstOrDefault()?.Nombre}</td>";
                detalleEgresos += $"<td>$ {x.Total:#,##0}</td>";
                detalleEgresos += "</tr>";
            });
            if (detalleEgresos == string.Empty)
            {
                detalleEgresos = "<tr><td colspan='4'><p class='lead no-encontrado text-center font-weight-bold'>No se encontraron órdenes en el periodo seleccionado</p></td></tr>";
            }
            documentoPagos.ForEach(x =>
            {
                detalleIngresos += "<tr>";
                detalleIngresos += $"<td>{x.Id}</td>";
                detalleIngresos += $"<td>{x.FechaHora:HH:mm}</td>";
                detalleIngresos += $"<td>{x.TipoDocumentoPago.Nombre}</td>";
                detalleIngresos += $"<td>$ {x.Total}</td>";
                detalleIngresos += "</tr>";
            });
            if (detalleIngresos == string.Empty)
            {
                detalleIngresos = "<tr><td colspan='4'><p class='lead no-encontrado text-center font-weight-bold'>No se encontraron atenciones en el periodo seleccionado</p></td></tr>";
            }
            return
                (@"<!DOCTYPE html><html><head><meta charset='utf-8'></meta><style>table{page-break-inside:auto}tr{page-break-inside:avoid; page-break-after:auto}thead{display:table-header-group}tfoot{display:table-footer-group}body{font-family: 'Arial', 'Verdana', 'Helvetica', Sans-serif;font-size: 13px;}h1{color: #22776b;}h3{color: #383838;}.center{margin: 0 auto;}.w-100{width: 100%;}.w-50{width: 49%;}.logo{width: 100px;}.text-center{text-align: center;}.text-left{text-align: left;}.text-right{text-align: right;}.d-inline-block{display: inline-block;vertical-align: top;}.tabla-estilizada{width: 100%;margin: 25px 0;}.tabla-estilizada thead tr{background-color: #009879;color: #ffffff;text-align: left;}.tabla-estilizada thead tr th.transparente{background-color: #ffffff !important;}.tabla-estilizada th,.tabla-estilizada td{padding: 12px 15px;}.tabla-estilizada tbody tr{border-bottom: 1px solid #dddddd;}.tabla-estilizada tbody tr:nth-of-type(even){background-color: #f3f3f3;}.tabla-estilizada tbody tr:last:child{border-bottom: 2px solid #009879;}.tabla-estilizada.tabla-estilizada-resumen th:nth-child(even){background-color: #efefef;color: #2d2d2d;}.tabla-estilizada.egresos thead tr{background-color: #d49292;}.tabla-estilizada.ingresos thead tr{background-color: #71a2a5;}.tabla-estilizada.egresos td, .tabla-estilizada.ingresos td{text-align: center;}.tabla-estilizada.egresos td:last-child, .tabla-estilizada.ingresos td:last-child{text-align: right;}</style></head><body><div id='container'><div class='w-100'><img class='logo' src='" + rutaImagen + "'/></div><div class='w-100 text-center'><h1>Reporte de utilidad diaria</h1></div><div class='w-100'><div class='w-50 d-inline-block' style='margin-bottom: 68px;'><table class='tabla-estilizada tabla-estilizada-resumen'><thead><tr><th>Fecha:</th><th>" + fecha + "</th><th class='transparente'></th><th class='transparente'></th></tr><tr><th>Solicitante:</th><th>" + solicitante + "</th><th class='transparente'></th><th class='transparente'></th></tr></thead></table></div><div class='w-50 d-inline-block'><table class='tabla-estilizada tabla-estilizada-resumen'><thead><tr><th>N° órdenes</th><th>" + cantOrdenes + "</th><th>Egresos</th><th class='text-right'>$ " + montoEgresos.ToString("#,##0") + "</th></tr><tr><th>N° pedidos</th><th>" + cantPedidos + "</th><th>Ingresos</th><th class='text-right'>$ " + montoIngresos.ToString("#,##0") + "</th></tr><tr><th colspan='4' class='transparente'></th><tr><th class='transparente'></th><th class='transparente'></th><th>Utilidades</th><th class='text-right'>$ " + montoBalance.ToString("#,##0") + "</th></tr></thead></table></div></div><div><h3>Detalle de Egresos</h3><table class='tabla-estilizada egresos text-left'><thead><tr><th>Id Orden</th><th class='text-center'>Hora</th><th class='text-center'>Estado</th><th class='text-center'>Total</th></tr></thead><tbody>" + detalleEgresos + "</tbody></table></div><div><h3>Detalle de Ingresos</h3><table class='tabla-estilizada ingresos text-left'><thead><tr><th>Id Pedido</th><th class='text-center'>Hora</th><th class='text-center'>Medio de pago</th><th class='text-center'>Total</th></tr></thead><tbody>" + detalleIngresos + "</tbody></table></div></div></div></body></html>");
        }