Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Report refactoring #472

Merged
merged 4 commits into from
Dec 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ nb-configuration.xml
.idea/
*.iml
/newrelic
src/main/resources/**/*.jasper
17 changes: 9 additions & 8 deletions src/main/java/sic/controller/CuentaCorrienteController.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import sic.service.IClienteService;
import sic.service.ICuentaCorrienteService;
import sic.service.IProveedorService;
import sic.util.FormatoReporte;

@RestController
@RequestMapping("/api/v1")
Expand Down Expand Up @@ -119,7 +120,7 @@ public ResponseEntity<byte[]> getReporteCuentaCorriente(
cuentaCorrienteService.getReporteCuentaCorrienteCliente(
cuentaCorrienteService.getCuentaCorrientePorCliente(
clienteService.getClienteNoEliminadoPorId(criteria.getIdCliente())),
formato);
FormatoReporte.XLSX);
headers.setContentLength(reporteXls.length);
return new ResponseEntity<>(reporteXls, headers, HttpStatus.OK);
}
Expand All @@ -130,7 +131,7 @@ public ResponseEntity<byte[]> getReporteCuentaCorriente(
cuentaCorrienteService.getReporteCuentaCorrienteCliente(
cuentaCorrienteService.getCuentaCorrientePorCliente(
clienteService.getClienteNoEliminadoPorId(criteria.getIdCliente())),
formato);
FormatoReporte.PDF);
return new ResponseEntity<>(reportePDF, headers, HttpStatus.OK);
}
default -> throw new BusinessServiceException(messageSource.getMessage(
Expand All @@ -148,32 +149,32 @@ public ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClientePorCriteri
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
return switch (formato) {
case "xlsx" ->
this.getReporteListaDeCuentasCorrienteClienteEnXlsx(headers, criteria, claims, formato);
this.getReporteListaDeCuentasCorrienteClienteEnXlsx(headers, criteria, claims);
case "pdf" ->
this.getReporteListaDeCuentasCorrienteClienteEnPdf(headers, criteria, claims, formato);
this.getReporteListaDeCuentasCorrienteClienteEnPdf(headers, criteria, claims);
default -> throw new BusinessServiceException(
messageSource.getMessage("mensaje_formato_no_valido", null, Locale.getDefault()));
};
}

private ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClienteEnXlsx(
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims, String formato) {
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims) {
headers.setContentType(new MediaType("application", "vnd.ms-excel"));
headers.set(CONTENT_DISPOSITION_HEADER, "attachment; filename=ListaClientes.xlsx");
byte[] reporteXls =
cuentaCorrienteService.getReporteListaDeCuentasCorrienteClientePorCriteria(
criteria, (int) claims.get(ID_USUARIO), formato);
criteria, (int) claims.get(ID_USUARIO), FormatoReporte.XLSX);
headers.setContentLength(reporteXls.length);
return new ResponseEntity<>(reporteXls, headers, HttpStatus.OK);
}

private ResponseEntity<byte[]> getReporteListaDeCuentasCorrienteClienteEnPdf(
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims, String formato) {
HttpHeaders headers, BusquedaCuentaCorrienteClienteCriteria criteria, Claims claims) {
headers.setContentType(MediaType.APPLICATION_PDF);
headers.add(CONTENT_DISPOSITION_HEADER, "attachment; filename=ListaClientes.pdf");
byte[] reportePDF =
cuentaCorrienteService.getReporteListaDeCuentasCorrienteClientePorCriteria(
criteria, (int) claims.get(ID_USUARIO), formato);
criteria, (int) claims.get(ID_USUARIO), FormatoReporte.PDF);
return new ResponseEntity<>(reportePDF, headers, HttpStatus.OK);
}
}
9 changes: 4 additions & 5 deletions src/main/java/sic/controller/ProductoController.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import sic.modelo.dto.*;
import sic.service.*;
import sic.exception.BusinessServiceException;
import sic.util.FormatoReporte;

import javax.persistence.EntityNotFoundException;

Expand Down Expand Up @@ -126,12 +127,10 @@ public void getListaDePrecios(
@RequestBody BusquedaProductoCriteria criteria,
@PathVariable long idSucursal,
@RequestParam(required = false) String formato) {
if (formato == null || formato.isEmpty()) {
formato = "xlsx";
}
if (formato == null || formato.isEmpty()) formato = "pdf";
switch (formato) {
case "xlsx" -> productoService.getListaDePreciosEnXls(criteria, idSucursal);
case "pdf" -> productoService.getListaDePreciosEnPdf(criteria, idSucursal);
case "xlsx" -> productoService.procesarReporteListaDePrecios(criteria, idSucursal, FormatoReporte.XLSX);
case "pdf" -> productoService.procesarReporteListaDePrecios(criteria, idSucursal, FormatoReporte.PDF);
default -> throw new BusinessServiceException(
messageSource.getMessage("mensaje_formato_no_valido", null, Locale.getDefault()));
}
Expand Down
20 changes: 8 additions & 12 deletions src/main/java/sic/service/ICuentaCorrienteService.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import sic.modelo.*;
import sic.modelo.criteria.BusquedaCuentaCorrienteClienteCriteria;
import sic.modelo.criteria.BusquedaCuentaCorrienteProveedorCriteria;

import sic.util.FormatoReporte;
import java.math.BigDecimal;
import java.util.List;

Expand All @@ -18,11 +18,9 @@ public interface ICuentaCorrienteService {

BigDecimal getSaldoCuentaCorriente(long idCliente);

CuentaCorrienteCliente guardarCuentaCorrienteCliente(
CuentaCorrienteCliente cuentaCorrienteCliente);
CuentaCorrienteCliente guardarCuentaCorrienteCliente(CuentaCorrienteCliente cuentaCorrienteCliente);

CuentaCorrienteProveedor guardarCuentaCorrienteProveedor(
CuentaCorrienteProveedor cuentaCorrienteProveedor);
CuentaCorrienteProveedor guardarCuentaCorrienteProveedor(CuentaCorrienteProveedor cuentaCorrienteProveedor);

void validarReglasDeNegocio(CuentaCorriente cuentaCorriente);

Expand Down Expand Up @@ -50,8 +48,10 @@ Page<CuentaCorrienteProveedor> buscarCuentaCorrienteProveedor(

void asentarEnCuentaCorriente(Remito remito, TipoDeOperacion tipo);

byte[] getReporteCuentaCorrienteCliente(
CuentaCorrienteCliente cuentaCorrienteCliente, String formato);
byte[] getReporteCuentaCorrienteCliente(CuentaCorrienteCliente cuentaCorrienteCliente, FormatoReporte formato);

byte[] getReporteListaDeCuentasCorrienteClientePorCriteria(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn, FormatoReporte formato);

List<RenglonCuentaCorriente> getUltimosDosMovimientos(CuentaCorriente cuentaCorriente);

Expand All @@ -65,11 +65,7 @@ byte[] getReporteCuentaCorrienteCliente(

RenglonCuentaCorriente getRenglonCuentaCorrienteDeRemito(Remito remito, boolean eliminado);

byte[] getReporteListaDeCuentasCorrienteClientePorCriteria(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn, String formato);

BooleanBuilder getBuilder(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);
BooleanBuilder getBuilder(BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);

List<CuentaCorrienteCliente> buscarCuentasCorrienteClienteParaReporte(
BusquedaCuentaCorrienteClienteCriteria criteria, long idUsuarioLoggedIn);
Expand Down
18 changes: 11 additions & 7 deletions src/main/java/sic/service/IProductoService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import sic.modelo.dto.*;
import sic.modelo.embeddable.CantidadProductoEmbeddable;
import sic.modelo.embeddable.PrecioProductoEmbeddable;
import sic.util.FormatoReporte;

public interface IProductoService {

Expand Down Expand Up @@ -38,9 +39,11 @@ void actualizarStockNotaCredito(

Page<Producto> buscarProductos(BusquedaProductoCriteria criteria, Long idSucursal);

Page<Producto> buscarProductosDeCatalogoParaUsuario(BusquedaProductoCriteria criteria, Long idSucursal, Long isSucursal);
Page<Producto> buscarProductosDeCatalogoParaUsuario(
BusquedaProductoCriteria criteria, Long idSucursal, Long isSucursal);

Page<Producto> buscarProductosDeCatalogoParaVenta(BusquedaProductoCriteria criteria, Long idSucursal, Long idUsuario, Long idCliente);
Page<Producto> buscarProductosDeCatalogoParaVenta(
BusquedaProductoCriteria criteria, Long idSucursal, Long idUsuario, Long idCliente);

void marcarFavoritos(Page<Producto> productos, long idUsuario);

Expand Down Expand Up @@ -75,17 +78,17 @@ BigDecimal calcularGananciaPorcentaje(

Producto getProductoPorCodigo(String codigo);

Producto getProductoPorDescripcion(String descripciona);
Producto getProductoPorDescripcion(String descripcion);

Producto getProductoNoEliminadoPorId(long idProducto);

BigDecimal calcularValorStock(BusquedaProductoCriteria criteria);

void getListaDePreciosEnXls(BusquedaProductoCriteria criteria, long idSucursal);
void procesarReporteListaDePrecios(BusquedaProductoCriteria criteria, long idSucursal, FormatoReporte formato);

void getListaDePreciosEnPdf(BusquedaProductoCriteria criteria, long idSucursal);
void enviarListaDeProductosPorEmail(String mailTo, byte[] listaDeProductos, FormatoReporte formato);

void enviarListaDeProductosPorEmail(String mailTo, byte[] listaDeProductos, String formato);
byte[] getReporteListaDePrecios(List<Producto> productos, FormatoReporte formato);

Producto guardar(NuevoProductoDTO producto, long idMedida, long idRubro, long idProveedor);

Expand Down Expand Up @@ -119,7 +122,8 @@ BigDecimal calcularGananciaPorcentaje(

void validarLongitudDeArrays(int longitudIds, int longitudCantidades);

ProductoFaltanteDTO construirNuevoProductoFaltante(Producto producto, BigDecimal cantidadSolicitada, BigDecimal cantidadDisponible, long idSucursal);
ProductoFaltanteDTO construirNuevoProductoFaltante(
Producto producto, BigDecimal cantidadSolicitada, BigDecimal cantidadDisponible, long idSucursal);

PrecioProductoEmbeddable construirPrecioProductoEmbeddable(ProductoDTO productoDTO);

Expand Down
Loading
Loading