public IActionResult GenerarKardex([FromQuery(Name = "fechaInicio")] string fechaInicio, [FromQuery(Name = "fechaFin")] string fechaFin, [FromQuery(Name = "empresaId")] int empresaId)
        {
            Guid guid = Guid.NewGuid();
            KardexPergaminoIngresoConsultaRequest request = new KardexPergaminoIngresoConsultaRequest();

            request.FechaInicio = Convert.ToDateTime(fechaInicio);
            request.FechaFin    = Convert.ToDateTime(fechaFin);
            request.EmpresaId   = empresaId;
            ExportarKardexResponseDTO response = new ExportarKardexResponseDTO();

            try
            {
                response = _kardexService.ExportarKardex(request);
                return(File(response.content, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", string.Format("Kardex-{0}_{1}.xlsx", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmss"))));
            }
            catch (ResultException ex)
            {
                response.Result = new Result()
                {
                    Success = true, ErrCode = ex.Result.ErrCode, Message = ex.Result.Message
                };
            }
            catch (Exception ex)
            {
                response.Result = new Result()
                {
                    Success = false, Message = "Ocurrio un problema en el servicio, intentelo nuevamente."
                };
                _log.RegistrarEvento(ex, guid.ToString());
            }

            _log.RegistrarEvento($"{guid}{Environment.NewLine}{JsonConvert.SerializeObject(response)}");

            return(Ok(response));
        }
예제 #2
0
        public ExportarKardexResponseDTO ExportarKardex(KardexPergaminoIngresoConsultaRequest request)
        {
            ExportarKardexResponseDTO respose = new ExportarKardexResponseDTO();

            try
            {
                using (var workbook = new XLWorkbook())
                {
                    IXLWorksheet ws = workbook.Worksheets.Add("Kardex");
                    ws.Style.Fill.BackgroundColor = XLColor.White;
                    ws.Range("A1:BA90").Style.Fill.BackgroundColor = XLColor.White;
                    ws.Column("A").Width = 1.71;
                    ws.Column("B").Width = 11.29;

                    //ws.Cell(2, 2).Value = "Kardex:";
                    //ws.Cell(2, 2).Style.Font.Bold = true;
                    //ws.Cell(3, 2).Value = "Producto:";
                    //ws.Cell(3, 2).Style.Font.Bold = true;
                    //ws.Cell(4, 2).Value = "Sub Producto:";
                    //ws.Cell(4, 2).Style.Font.Bold = true;
                    ws.Cell(3, 2).Value           = "Fecha Inicio:";
                    ws.Cell(3, 2).Style.Font.Bold = true;
                    ws.Cell(4, 2).Value           = "Fecha Fin:";
                    ws.Cell(4, 2).Style.Font.Bold = true;

                    ws.Cell(1, 7).Value           = "KARDEX PERGAMINO";
                    ws.Cell(1, 7).Style.Font.Bold = true;
                    //PRIMERA TABLA

                    /*
                     * ws.Cell(2, 8).Value = "Sacos";
                     * ws.Cell(2, 8).Style.Font.Bold = true;
                     * ws.Cell(2, 8).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(2, 8).Style.Alignment.WrapText = true;
                     * ws.Cell(2, 9).Value = "Kgs Netos a pagar";
                     * ws.Cell(2, 9).Style.Font.Bold = true;
                     * ws.Cell(2, 9).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(2, 10).Value = "Moneda";
                     * ws.Cell(2, 10).Style.Font.Bold = true;
                     * ws.Cell(2, 10).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(2, 11).Value = "Importe";
                     * ws.Cell(2, 11).Style.Font.Bold = true;
                     * ws.Cell(2, 11).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(3, 7).Value = "Inventario Actual:";
                     * ws.Cell(3, 7).Style.Font.Bold = true;
                     * ws.Cell(3, 7).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(3, 7).Style.Fill.BackgroundColor = XLColor.LightGray;
                     * ws.Range("H2:K2").Style.Fill.BackgroundColor = XLColor.LightGray;
                     * ws.Range("H2:K2").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                     * ws.Range("H2:K2").Style.Alignment.Vertical = XLAlignmentVerticalValues.Center;
                     */

                    ws.Cell(8, 2).Value                      = "INGRESOS";
                    ws.Cell(8, 2).Style.Font.Bold            = true;
                    ws.Cell(8, 2).Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;
                    ws.Cell(8, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                    IXLRange rangeIngresos = ws.Range(ws.Cell(8, 2), ws.Cell(8, 19));
                    rangeIngresos.Merge();
                    rangeIngresos.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                    rangeIngresos.Style.Fill.BackgroundColor = XLColor.FromHtml("#479d9c");//XLColor.YellowProcess;

                    ws.Cell(8, 20).Value                      = "SALIDAS";
                    ws.Cell(8, 20).Style.Font.Bold            = true;
                    ws.Cell(8, 20).Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;
                    ws.Cell(8, 20).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                    IXLRange rangeSalidas = ws.Range(ws.Cell(8, 20), ws.Cell(8, 31));
                    rangeSalidas.Merge();
                    rangeSalidas.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                    rangeSalidas.Style.Fill.BackgroundColor = XLColor.FromHtml("#479d9c");

                    //INGRESOS
                    ws.Cell(9, 2).Value  = "Fecha Registro";
                    ws.Cell(9, 3).Value  = "Nro. Guia de Recepcion";
                    ws.Cell(9, 4).Value  = "Observaciones";
                    ws.Cell(9, 5).Value  = "Nombre/Razon Social";
                    ws.Cell(9, 6).Value  = "Nro. Documento";
                    ws.Cell(9, 7).Value  = "Zona";
                    ws.Cell(9, 8).Value  = "Producto";
                    ws.Cell(9, 9).Value  = "Cantidad";
                    ws.Cell(9, 10).Value = "Kilos Brutos";
                    ws.Cell(9, 11).Value = "Tara";
                    ws.Cell(9, 12).Value = "Kilos Netos a Descontar";
                    ws.Cell(9, 13).Value = "Kilos Netos a Pagar";
                    ws.Cell(9, 14).Value = "Precio del Día";
                    ws.Cell(9, 15).Value = "Importe";
                    ws.Cell(9, 16).Value = "% Humedad";
                    ws.Cell(9, 17).Value = "% Rendimiento (Exportable)";
                    ws.Cell(9, 18).Value = "Calculo (kilos Netos a Pagar x % Humedad)";
                    ws.Cell(9, 19).Value = "Calculo (kilos Netos a Pagar x % Rendimiento (Exportable))";


                    //SALIDAS
                    ws.Cell(9, 20).Value = "Nro. Guia de Remisión Electronica";
                    ws.Cell(9, 21).Value = "Fecha Guia de Remisión Electronica";
                    ws.Cell(9, 22).Value = "Calculo (Kilos Netos * % Humedad)";
                    ws.Cell(9, 23).Value = "Calculo (Kilos Netos * % Rendimiento)";
                    ws.Cell(9, 24).Value = "Cantidad";
                    ws.Cell(9, 25).Value = "Kilos Brutos";
                    ws.Cell(9, 26).Value = "Tara";
                    ws.Cell(9, 27).Value = "Kilos Netos a Descontar";
                    ws.Cell(9, 28).Value = "Kilos Netos";
                    ws.Cell(9, 29).Value = "% Humedad";
                    ws.Cell(9, 30).Value = "% Rendimiento";
                    ws.Cell(9, 31).Value = "Saldo";

                    for (int i = 2; i <= 19; i++)
                    {
                        ws.Cell(9, i).Style.Fill.SetBackgroundColor(XLColor.FromHtml("#479d9c"));
                        ws.Cell(9, i).Style.Font.Bold            = true;
                        ws.Cell(9, i).Style.Alignment.WrapText   = true;
                        ws.Cell(9, i).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        ws.Cell(9, i).Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;
                        ws.Cell(9, i).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                    }

                    for (int i = 20; i <= 31; i++)
                    {
                        ws.Cell(9, i).Style.Fill.SetBackgroundColor(XLColor.FromHtml("#479d9c"));
                        ws.Cell(9, i).Style.Font.Bold            = true;
                        ws.Cell(9, i).Style.Alignment.WrapText   = true;
                        ws.Cell(9, i).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                        ws.Cell(9, i).Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;
                        ws.Cell(9, i).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                    }

                    //INICIO: DATA HARDCODE

                    //ws.Cell(2, 3).Value = "Almacén 01";
                    // ws.Cell(3, 3).Value = "Café Pergamino";
                    // ws.Cell(4, 3).Value = "Seco";
                    ws.Cell(3, 3).Value = request.FechaInicio.ToShortDateString();
                    ws.Cell(4, 3).Value = request.FechaFin.ToShortDateString();
                    ws.Range("D2:D6").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;
                    ws.Range("D2:D6").Style.Alignment.Vertical   = XLAlignmentVerticalValues.Center;

                    /*
                     * ws.Cell(3, 8).Value = 24;
                     * ws.Cell(3, 8).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(3, 9).Value = 1286.20;
                     * ws.Cell(3, 9).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(3, 10).Value = "Soles";
                     * ws.Cell(3, 10).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Cell(3, 11).Value = 9727.03;
                     * ws.Cell(3, 11).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     *
                     *
                     * ws.Cell("G10").Value = "SALDO ANTERIOR";
                     * ws.Cell("G10").Style.Font.Bold = true;
                     * ws.Cell("G10").Style.Font.FontColor = XLColor.Red;
                     *
                     * ws.Cell("R10").Value = "Saco";
                     * ws.Cell("S10").Value = 20;
                     * ws.Cell("V10").Value = 1096;
                     * ws.Cell("X10").Value = 48.5;
                     * ws.Cell("Y10").Value = 1047.5;
                     * ws.Cell("Z10").Value = "Soles";
                     * ws.Cell("AB10").Value = 7891.20;
                     *
                     * ws.Range("B10:AH10").Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Range("AI10:AZ10").Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     */
                    /*
                     * KardexPergaminoIngresoConsultaRequest requestIngreso = new KardexPergaminoIngresoConsultaRequest();
                     * requestIngreso.EmpresaId = 1;
                     * requestIngreso.FechaInicio = Convert.ToDateTime("2018-07-19T00:00:00");
                     * requestIngreso.FechaFin = Convert.ToDateTime("2024-07-19T00:00:00");
                     */
                    var list = _IKardexProcesoRepository.KardexPergaminoIngresoConsulta(request);
                    List <KardexPergaminoIngresoConsultaResponse> listaIngreso = list.ToList();

                    decimal sumaKilosBrutos = 0;
                    decimal sumaKilosNetos  = 0;
                    decimal sumaImporte     = 0;
                    decimal sumaRemdimiento = 0;
                    for (int i = 1; i <= listaIngreso.Count; i++)
                    {
                        ws.Cell(9 + i, 2).Value  = listaIngreso[i - 1].FechaRegistro.ToShortDateString();
                        ws.Cell(9 + i, 3).Value  = listaIngreso[i - 1].Numero;
                        ws.Cell(9 + i, 4).Value  = listaIngreso[i - 1].ObservacionPesado;
                        ws.Cell(9 + i, 5).Value  = listaIngreso[i - 1].NombreRazonSocial;
                        ws.Cell(9 + i, 6).Value  = listaIngreso[i - 1].NumeroDocumento;
                        ws.Cell(9 + i, 7).Value  = listaIngreso[i - 1].Zona;
                        ws.Cell(9 + i, 8).Value  = listaIngreso[i - 1].Producto;
                        ws.Cell(9 + i, 9).Value  = listaIngreso[i - 1].CantidadPesado;
                        ws.Cell(9 + i, 10).Value = listaIngreso[i - 1].KilosBrutosPesado;
                        ws.Cell(9 + i, 11).Value = listaIngreso[i - 1].TaraPesado;
                        ws.Cell(9 + i, 12).Value = listaIngreso[i - 1].KilosNetosDescontar;
                        ws.Cell(9 + i, 13).Value = listaIngreso[i - 1].KilosNetosPagar;
                        ws.Cell(9 + i, 14).Value = listaIngreso[i - 1].PrecioPagado;
                        ws.Cell(9 + i, 15).Value = listaIngreso[i - 1].Importe;
                        ws.Cell(9 + i, 16).Value = listaIngreso[i - 1].HumedadPorcentajeAnalisisFisico;
                        ws.Cell(9 + i, 17).Value = listaIngreso[i - 1].ExportablePorcentajeAnalisisFisico;
                        ws.Cell(9 + i, 18).Value = listaIngreso[i - 1].CalculoKilosNetosPagarPorHumedad;
                        ws.Cell(9 + i, 19).Value = listaIngreso[i - 1].CalculoKilosNetosPagarPorRendimiento;
                        sumaKilosBrutos          = sumaKilosBrutos + listaIngreso[i - 1].KilosBrutosPesado;
                        sumaKilosNetos           = sumaKilosNetos + listaIngreso[i - 1].KilosNetosPagar;
                        sumaImporte     = sumaImporte + listaIngreso[i - 1].Importe;
                        sumaRemdimiento = sumaRemdimiento + listaIngreso[i - 1].ExportablePorcentajeAnalisisFisico;
                    }
                    ws.Cell(9 + listaIngreso.Count + 1, 10).Value           = sumaKilosBrutos;
                    ws.Cell(9 + listaIngreso.Count + 1, 10).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 13).Value           = sumaKilosNetos;
                    ws.Cell(9 + listaIngreso.Count + 1, 13).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 15).Value           = sumaImporte;
                    ws.Cell(9 + listaIngreso.Count + 1, 15).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 17).Value           = listaIngreso.Count > 0 ? sumaRemdimiento / listaIngreso.Count : 0;
                    ws.Cell(9 + listaIngreso.Count + 1, 17).Style.Font.Bold = true;

                    KardexPergaminoSalidaConsultaRequest requestSalida = new KardexPergaminoSalidaConsultaRequest();
                    requestSalida.EmpresaId   = request.EmpresaId;
                    requestSalida.FechaInicio = request.FechaInicio;
                    requestSalida.FechaFin    = request.FechaFin;
                    var listSalida = _IKardexProcesoRepository.KardexPergaminoSalidadConsulta(requestSalida);
                    List <KardexPergaminoSalidaConsultaResponse> listaSalida = listSalida.ToList();

                    decimal sumaKilosBrutosSalida   = 0;
                    decimal sumaTaraSalida          = 0;
                    decimal sumaKilosNetosSalida    = 0;
                    decimal sumaKilosNetosDescontar = 0;



                    for (int i = 1; i <= listaSalida.Count; i++)
                    {
                        ws.Cell(9 + i, 20).Value = listaSalida[i - 1].NumeroGuiaRemision;
                        ws.Cell(9 + i, 21).Value = listaSalida[i - 1].FechaGuiaRemision.ToShortDateString();
                        ws.Cell(9 + i, 22).Value = listaSalida[i - 1].CalculoKilosNetosPagarPorHumedad;
                        ws.Cell(9 + i, 23).Value = listaSalida[i - 1].CalculoKilosNetosPagarPorRendimiento;
                        ws.Cell(9 + i, 24).Value = listaSalida[i - 1].Cantidad;
                        ws.Cell(9 + i, 25).Value = listaSalida[i - 1].TotalKilosBrutosPesado;
                        ws.Cell(9 + i, 26).Value = listaSalida[i - 1].Tara;
                        ws.Cell(9 + i, 27).Value = listaSalida[i - 1].TotalKilosNetosDescontar;
                        ws.Cell(9 + i, 28).Value = listaSalida[i - 1].TotalKilosNetosPesado;
                        ws.Cell(9 + i, 29).Value = listaSalida[i - 1].HumedadPorcentajeAnalisisFisico;
                        ws.Cell(9 + i, 30).Value = listaSalida[i - 1].RendimientoPorcentaje;
                        sumaKilosBrutosSalida    = sumaKilosBrutosSalida + listaSalida[i - 1].TotalKilosBrutosPesado;
                        sumaTaraSalida           = sumaTaraSalida + listaSalida[i - 1].Tara;
                        sumaKilosNetosSalida     = sumaKilosNetosSalida + listaSalida[i - 1].TotalKilosNetosPesado;
                        sumaKilosNetosDescontar  = sumaKilosNetosDescontar + listaSalida[i - 1].TotalKilosNetosDescontar;
                    }

                    ws.Cell(9 + listaIngreso.Count + 1, 25).Value           = sumaKilosBrutosSalida;
                    ws.Cell(9 + listaIngreso.Count + 1, 25).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 26).Value           = sumaTaraSalida;
                    ws.Cell(9 + listaIngreso.Count + 1, 26).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 27).Value           = sumaKilosNetosDescontar;
                    ws.Cell(9 + listaIngreso.Count + 1, 27).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 28).Value           = sumaKilosNetosSalida;
                    ws.Cell(9 + listaIngreso.Count + 1, 28).Style.Font.Bold = true;

                    ws.Cell(9 + listaIngreso.Count + 1, 31).Value           = sumaKilosNetos - sumaKilosNetosSalida;
                    ws.Cell(9 + listaIngreso.Count + 1, 31).Style.Font.Bold = true;

                    int g = 0;

                    for (int i = 0; i <= listaIngreso.Count - 1; i++)
                    {
                        g = 10 + i;
                        for (int y = 2; y <= 31; y++)
                        {
                            ws.Cell(g, y).Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                        }
                    }

                    /*
                     * ws.Cell("R15").Value = 70;
                     * ws.Cell("V15").Value = 4249.5;
                     * ws.Cell("Y15").Value = 4111.32;
                     * ws.Cell("Z15").Value = "Soles";
                     * ws.Cell("AB15").Value = 31099.83;
                     * ws.Cell("AO15").Value = 46;
                     * ws.Cell("AR15").Value = 2963.30;
                     * ws.Cell("AU15").Value = 2901.04;
                     * ws.Cell("AX15").Value = 21372.80;
                     *
                     * ws.Range("B15:AH15").Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Range("B15:AH15").Style.Fill.BackgroundColor = XLColor.LightGray;
                     * ws.Range("AI15:AZ15").Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
                     * ws.Range("AI15:AZ15").Style.Fill.BackgroundColor = XLColor.LightGray;
                     */
                    //FIN: DATA HARDCODE

                    ws.ColumnsUsed().AdjustToContents();
                    ws.RowsUsed().AdjustToContents();

                    using (var stream = new MemoryStream())
                    {
                        workbook.SaveAs(stream);
                        respose.content = stream.ToArray();
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(respose);
        }