Files
GestionIntegralWeb/Frontend/src/services/Impresion/stockBobinaService.ts
dmolinari 8e1b8d2326
All checks were successful
Optimized Build and Deploy / remote-build-and-deploy (push) Successful in 2m15s
feat: DataGrid y filtro por Fechas en Stock Bobinas
Frontend:
- Se reemplazó el componente Table por DataGrid para habilitar ordenamiento y filtrado nativo en cliente.
- Se agregó la UI para filtrar por rango de "Fecha de Estado".
- Se corrigió el tipado de columnas de fecha (`type: 'date'`) implementando un `valueGetter` personalizado que parsea año/mes/día localmente para evitar errores de filtrado por diferencia de Zona Horaria (UTC vs Local).
- Se actualizó `stockBobinaService` para enviar los parámetros `fechaEstadoDesde` y `fechaEstadoHasta`.

Backend:
- Se actualizó `StockBobinasController` para recibir los nuevos parámetros de fecha.
- Se modificó `StockBobinaRepository` implementando la lógica SQL para los nuevos filtros.
2025-11-27 13:49:46 -03:00

88 lines
3.9 KiB
TypeScript

import apiClient from '../apiClient';
import type { StockBobinaDto } from '../../models/dtos/Impresion/StockBobinaDto';
import type { CreateStockBobinaDto } from '../../models/dtos/Impresion/CreateStockBobinaDto';
import type { UpdateStockBobinaDto } from '../../models/dtos/Impresion/UpdateStockBobinaDto';
import type { CambiarEstadoBobinaDto } from '../../models/dtos/Impresion/CambiarEstadoBobinaDto';
import type { CreateStockBobinaLoteDto } from '../../models/dtos/Impresion/CreateStockBobinaLoteDto';
import type { UpdateFechaRemitoLoteDto } from '../../models/dtos/Impresion/UpdateFechaRemitoLoteDto';
interface GetAllStockBobinasParams {
idTipoBobina?: number | null;
nroBobinaFilter?: string | null;
idPlanta?: number | null;
idEstadoBobina?: number | null;
remitoFilter?: string | null;
fechaDesde?: string | null; // "yyyy-MM-dd"
fechaHasta?: string | null; // "yyyy-MM-dd"
fechaEstadoDesde?: string | null; // "yyyy-MM-dd"
fechaEstadoHasta?: string | null; // "yyyy-MM-dd"
}
const getAllStockBobinas = async (filters: GetAllStockBobinasParams): Promise<StockBobinaDto[]> => {
const params: Record<string, string | number | boolean> = {};
if (filters.idTipoBobina) params.idTipoBobina = filters.idTipoBobina;
if (filters.nroBobinaFilter) params.nroBobina = filters.nroBobinaFilter; // El backend espera nroBobina
if (filters.idPlanta) params.idPlanta = filters.idPlanta;
if (filters.idEstadoBobina) params.idEstadoBobina = filters.idEstadoBobina;
if (filters.remitoFilter) params.remito = filters.remitoFilter; // El backend espera remito
if (filters.fechaDesde) params.fechaDesde = filters.fechaDesde;
if (filters.fechaHasta) params.fechaHasta = filters.fechaHasta;
if (filters.fechaEstadoDesde) params.fechaEstadoDesde = filters.fechaEstadoDesde;
if (filters.fechaEstadoHasta) params.fechaEstadoHasta = filters.fechaEstadoHasta;
const response = await apiClient.get<StockBobinaDto[]>('/stockbobinas', { params });
return response.data;
};
const getStockBobinaById = async (idBobina: number): Promise<StockBobinaDto> => {
const response = await apiClient.get<StockBobinaDto>(`/stockbobinas/${idBobina}`);
return response.data;
};
const ingresarBobina = async (data: CreateStockBobinaDto): Promise<StockBobinaDto> => {
const response = await apiClient.post<StockBobinaDto>('/stockbobinas', data);
return response.data;
};
const updateDatosBobinaDisponible = async (idBobina: number, data: UpdateStockBobinaDto): Promise<void> => {
await apiClient.put(`/stockbobinas/${idBobina}/datos`, data);
};
const cambiarEstadoBobina = async (idBobina: number, data: CambiarEstadoBobinaDto): Promise<void> => {
await apiClient.put(`/stockbobinas/${idBobina}/cambiar-estado`, data);
};
const deleteIngresoBobina = async (idBobina: number): Promise<void> => {
await apiClient.delete(`/stockbobinas/${idBobina}`);
};
const verificarRemitoExistente = async (idPlanta: number, remito: string, fechaRemito?: string | null): Promise<StockBobinaDto[]> => {
const params: { idPlanta: number; remito: string; fechaRemito?: string } = { idPlanta, remito };
if (fechaRemito) {
params.fechaRemito = fechaRemito;
}
const response = await apiClient.get<StockBobinaDto[]>('/stockbobinas/verificar-remito', { params });
return response.data;
};
const ingresarLoteBobinas = async (data: CreateStockBobinaLoteDto): Promise<void> => {
await apiClient.post('/stockbobinas/lote', data);
};
const actualizarFechaRemitoLote = async (data: UpdateFechaRemitoLoteDto): Promise<void> => {
await apiClient.put('/stockbobinas/actualizar-fecha-remito', data);
};
const stockBobinaService = {
getAllStockBobinas,
getStockBobinaById,
ingresarBobina,
updateDatosBobinaDisponible,
cambiarEstadoBobina,
deleteIngresoBobina,
verificarRemitoExistente,
ingresarLoteBobinas,
actualizarFechaRemitoLote,
};
export default stockBobinaService;