feat: Implementación de Secciones, Recargos, Porc. Pago Dist. y backend E/S Dist.
Backend API:
- Recargos por Zona (`dist_RecargoZona`):
  - CRUD completo (Modelos, DTOs, Repositorio, Servicio, Controlador).
  - Endpoints anidados bajo `/publicaciones/{idPublicacion}/recargos`.
  - Lógica de negocio para vigencias (cierre/reapertura de períodos).
  - Auditoría en `dist_RecargoZona_H`.
- Porcentajes de Pago Distribuidores (`dist_PorcPago`):
  - CRUD completo (Modelos, DTOs, Repositorio, Servicio, Controlador).
  - Endpoints anidados bajo `/publicaciones/{idPublicacion}/porcentajespago`.
  - Lógica de negocio para vigencias.
  - Auditoría en `dist_PorcPago_H`.
- Porcentajes/Montos Pago Canillitas (`dist_PorcMonPagoCanilla`):
  - CRUD completo (Modelos, DTOs, Repositorio, Servicio, Controlador).
  - Endpoints anidados bajo `/publicaciones/{idPublicacion}/porcentajesmoncanilla`.
  - Lógica de negocio para vigencias.
  - Auditoría en `dist_PorcMonPagoCanilla_H`.
- Secciones de Publicación (`dist_dtPubliSecciones`):
  - CRUD completo (Modelos, DTOs, Repositorio, Servicio, Controlador).
  - Endpoints anidados bajo `/publicaciones/{idPublicacion}/secciones`.
  - Auditoría en `dist_dtPubliSecciones_H`.
- Entradas/Salidas Distribuidores (`dist_EntradasSalidas`):
  - Implementado backend (Modelos, DTOs, Repositorio, Servicio, Controlador).
  - Lógica para determinar precios/recargos/porcentajes aplicables.
  - Cálculo de monto y afectación de saldos de distribuidores en `cue_Saldos`.
  - Auditoría en `dist_EntradasSalidas_H`.
- Correcciones de Mapeo Dapper:
  - Aplicados alias explícitos en repositorios de RecargoZona, PorcPago, PorcMonCanilla, PubliSeccion,
    Canilla, Distribuidor y Precio para asegurar mapeo correcto de IDs y columnas.
Frontend React:
- Recargos por Zona:
  - `recargoZonaService.ts`.
  - `RecargoZonaFormModal.tsx` para crear/editar períodos de recargos.
  - `GestionarRecargosPublicacionPage.tsx` para listar y gestionar recargos por publicación.
- Porcentajes de Pago Distribuidores:
  - `porcPagoService.ts`.
  - `PorcPagoFormModal.tsx`.
  - `GestionarPorcentajesPagoPage.tsx`.
- Porcentajes/Montos Pago Canillitas:
  - `porcMonCanillaService.ts`.
  - `PorcMonCanillaFormModal.tsx`.
  - `GestionarPorcMonCanillaPage.tsx`.
- Secciones de Publicación:
  - `publiSeccionService.ts`.
  - `PubliSeccionFormModal.tsx`.
  - `GestionarSeccionesPublicacionPage.tsx`.
- Navegación:
  - Actualizadas rutas y menús para acceder a la gestión de recargos, porcentajes (dist. y canillita) y secciones desde la vista de una publicación.
- Layout:
  - Uso consistente de `Box` con Flexbox en lugar de `Grid` en nuevos modales y páginas para evitar errores de tipo.
			
			
This commit is contained in:
		| @@ -0,0 +1,52 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { EntradaSalidaDistDto } from '../../models/dtos/Distribucion/EntradaSalidaDistDto'; | ||||
| import type { CreateEntradaSalidaDistDto } from '../../models/dtos/Distribucion/CreateEntradaSalidaDistDto'; | ||||
| import type { UpdateEntradaSalidaDistDto } from '../../models/dtos/Distribucion/UpdateEntradaSalidaDistDto'; | ||||
|  | ||||
| interface GetAllESDistParams { | ||||
|     fechaDesde?: string | null; // yyyy-MM-dd | ||||
|     fechaHasta?: string | null; // yyyy-MM-dd | ||||
|     idPublicacion?: number | null; | ||||
|     idDistribuidor?: number | null; | ||||
|     tipoMovimiento?: 'Salida' | 'Entrada' | '' | null; | ||||
| } | ||||
|  | ||||
| const getAllEntradasSalidasDist = async (filters: GetAllESDistParams): Promise<EntradaSalidaDistDto[]> => { | ||||
|     const params: Record<string, string | number> = {}; | ||||
|     if (filters.fechaDesde) params.fechaDesde = filters.fechaDesde; | ||||
|     if (filters.fechaHasta) params.fechaHasta = filters.fechaHasta; | ||||
|     if (filters.idPublicacion) params.idPublicacion = filters.idPublicacion; | ||||
|     if (filters.idDistribuidor) params.idDistribuidor = filters.idDistribuidor; | ||||
|     if (filters.tipoMovimiento) params.tipoMovimiento = filters.tipoMovimiento; | ||||
|  | ||||
|     const response = await apiClient.get<EntradaSalidaDistDto[]>('/entradassalidasdist', { params }); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const getEntradaSalidaDistById = async (idParte: number): Promise<EntradaSalidaDistDto> => { | ||||
|     const response = await apiClient.get<EntradaSalidaDistDto>(`/entradassalidasdist/${idParte}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createEntradaSalidaDist = async (data: CreateEntradaSalidaDistDto): Promise<EntradaSalidaDistDto> => { | ||||
|     const response = await apiClient.post<EntradaSalidaDistDto>('/entradassalidasdist', data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updateEntradaSalidaDist = async (idParte: number, data: UpdateEntradaSalidaDistDto): Promise<void> => { | ||||
|     await apiClient.put(`/entradassalidasdist/${idParte}`, data); | ||||
| }; | ||||
|  | ||||
| const deleteEntradaSalidaDist = async (idParte: number): Promise<void> => { | ||||
|     await apiClient.delete(`/entradassalidasdist/${idParte}`); | ||||
| }; | ||||
|  | ||||
| const entradaSalidaDistService = { | ||||
|     getAllEntradasSalidasDist, | ||||
|     getEntradaSalidaDistById, | ||||
|     createEntradaSalidaDist, | ||||
|     updateEntradaSalidaDist, | ||||
|     deleteEntradaSalidaDist, | ||||
| }; | ||||
|  | ||||
| export default entradaSalidaDistService; | ||||
							
								
								
									
										37
									
								
								Frontend/src/services/Distribucion/porcMonCanillaService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Frontend/src/services/Distribucion/porcMonCanillaService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { PorcMonCanillaDto } from '../../models/dtos/Distribucion/PorcMonCanillaDto'; | ||||
| import type { CreatePorcMonCanillaDto } from '../../models/dtos/Distribucion/CreatePorcMonCanillaDto'; | ||||
| import type { UpdatePorcMonCanillaDto } from '../../models/dtos/Distribucion/UpdatePorcMonCanillaDto'; | ||||
|  | ||||
| const getPorcMonCanillaPorPublicacion = async (idPublicacion: number): Promise<PorcMonCanillaDto[]> => { | ||||
|     const response = await apiClient.get<PorcMonCanillaDto[]>(`/publicaciones/${idPublicacion}/porcentajesmoncanilla`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const getPorcMonCanillaById = async (idPublicacion: number, idPorcMon: number): Promise<PorcMonCanillaDto> => { | ||||
|     const response = await apiClient.get<PorcMonCanillaDto>(`/publicaciones/${idPublicacion}/porcentajesmoncanilla/${idPorcMon}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createPorcMonCanilla = async (idPublicacion: number, data: CreatePorcMonCanillaDto): Promise<PorcMonCanillaDto> => { | ||||
|     const response = await apiClient.post<PorcMonCanillaDto>(`/publicaciones/${idPublicacion}/porcentajesmoncanilla`, data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updatePorcMonCanilla = async (idPublicacion: number, idPorcMon: number, data: UpdatePorcMonCanillaDto): Promise<void> => { | ||||
|     await apiClient.put(`/publicaciones/${idPublicacion}/porcentajesmoncanilla/${idPorcMon}`, data); | ||||
| }; | ||||
|  | ||||
| const deletePorcMonCanilla = async (idPublicacion: number, idPorcMon: number): Promise<void> => { | ||||
|     await apiClient.delete(`/publicaciones/${idPublicacion}/porcentajesmoncanilla/${idPorcMon}`); | ||||
| }; | ||||
|  | ||||
| const porcMonCanillaService = { | ||||
|     getPorcMonCanillaPorPublicacion, | ||||
|     getPorcMonCanillaById, | ||||
|     createPorcMonCanilla, | ||||
|     updatePorcMonCanilla, | ||||
|     deletePorcMonCanilla, | ||||
| }; | ||||
|  | ||||
| export default porcMonCanillaService; | ||||
							
								
								
									
										39
									
								
								Frontend/src/services/Distribucion/porcPagoService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Frontend/src/services/Distribucion/porcPagoService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { PorcPagoDto } from '../../models/dtos/Distribucion/PorcPagoDto'; | ||||
| import type { CreatePorcPagoDto } from '../../models/dtos/Distribucion/CreatePorcPagoDto'; | ||||
| import type { UpdatePorcPagoDto } from '../../models/dtos/Distribucion/UpdatePorcPagoDto'; | ||||
|  | ||||
| const getPorcentajesPorPublicacion = async (idPublicacion: number): Promise<PorcPagoDto[]> => { | ||||
|     const response = await apiClient.get<PorcPagoDto[]>(`/publicaciones/${idPublicacion}/porcentajespago`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| // getPorcPagoById no es estrictamente necesario para el CRUD dentro de la página de una publicación, | ||||
| // pero podría ser útil para una edición muy específica o si se accede directamente. | ||||
| const getPorcPagoById = async (idPublicacion: number, idPorcentaje: number): Promise<PorcPagoDto> => { | ||||
|     const response = await apiClient.get<PorcPagoDto>(`/publicaciones/${idPublicacion}/porcentajespago/${idPorcentaje}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createPorcPago = async (idPublicacion: number, data: CreatePorcPagoDto): Promise<PorcPagoDto> => { | ||||
|     const response = await apiClient.post<PorcPagoDto>(`/publicaciones/${idPublicacion}/porcentajespago`, data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updatePorcPago = async (idPublicacion: number, idPorcentaje: number, data: UpdatePorcPagoDto): Promise<void> => { | ||||
|     await apiClient.put(`/publicaciones/${idPublicacion}/porcentajespago/${idPorcentaje}`, data); | ||||
| }; | ||||
|  | ||||
| const deletePorcPago = async (idPublicacion: number, idPorcentaje: number): Promise<void> => { | ||||
|     await apiClient.delete(`/publicaciones/${idPublicacion}/porcentajespago/${idPorcentaje}`); | ||||
| }; | ||||
|  | ||||
| const porcPagoService = { | ||||
|     getPorcentajesPorPublicacion, | ||||
|     getPorcPagoById, | ||||
|     createPorcPago, | ||||
|     updatePorcPago, | ||||
|     deletePorcPago, | ||||
| }; | ||||
|  | ||||
| export default porcPagoService; | ||||
							
								
								
									
										41
									
								
								Frontend/src/services/Distribucion/publiSeccionService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								Frontend/src/services/Distribucion/publiSeccionService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { PubliSeccionDto } from '../../models/dtos/Distribucion/PubliSeccionDto'; | ||||
| import type { CreatePubliSeccionDto } from '../../models/dtos/Distribucion/CreatePubliSeccionDto'; | ||||
| import type { UpdatePubliSeccionDto } from '../../models/dtos/Distribucion/UpdatePubliSeccionDto'; | ||||
|  | ||||
| const getSeccionesPorPublicacion = async (idPublicacion: number, soloActivas?: boolean): Promise<PubliSeccionDto[]> => { | ||||
|     const params: Record<string, boolean> = {}; | ||||
|     if (soloActivas !== undefined) { | ||||
|         params.soloActivas = soloActivas; | ||||
|     } | ||||
|     const response = await apiClient.get<PubliSeccionDto[]>(`/publicaciones/${idPublicacion}/secciones`, { params }); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const getPubliSeccionById = async (idPublicacion: number, idSeccion: number): Promise<PubliSeccionDto> => { | ||||
|     const response = await apiClient.get<PubliSeccionDto>(`/publicaciones/${idPublicacion}/secciones/${idSeccion}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createPubliSeccion = async (idPublicacion: number, data: CreatePubliSeccionDto): Promise<PubliSeccionDto> => { | ||||
|     const response = await apiClient.post<PubliSeccionDto>(`/publicaciones/${idPublicacion}/secciones`, data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updatePubliSeccion = async (idPublicacion: number, idSeccion: number, data: UpdatePubliSeccionDto): Promise<void> => { | ||||
|     await apiClient.put(`/publicaciones/${idPublicacion}/secciones/${idSeccion}`, data); | ||||
| }; | ||||
|  | ||||
| const deletePubliSeccion = async (idPublicacion: number, idSeccion: number): Promise<void> => { | ||||
|     await apiClient.delete(`/publicaciones/${idPublicacion}/secciones/${idSeccion}`); | ||||
| }; | ||||
|  | ||||
| const publiSeccionService = { | ||||
|     getSeccionesPorPublicacion, | ||||
|     getPubliSeccionById, | ||||
|     createPubliSeccion, | ||||
|     updatePubliSeccion, | ||||
|     deletePubliSeccion, | ||||
| }; | ||||
|  | ||||
| export default publiSeccionService; | ||||
							
								
								
									
										38
									
								
								Frontend/src/services/Distribucion/recargoZonaService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								Frontend/src/services/Distribucion/recargoZonaService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| // src/services/recargoZonaService.ts | ||||
| import apiClient from '../apiClient'; | ||||
| import type { RecargoZonaDto } from '../../models/dtos/Distribucion/RecargoZonaDto'; | ||||
| import type { CreateRecargoZonaDto } from '../../models/dtos/Distribucion/CreateRecargoZonaDto'; | ||||
| import type { UpdateRecargoZonaDto } from '../../models/dtos/Distribucion/UpdateRecargoZonaDto'; | ||||
|  | ||||
| const getRecargosPorPublicacion = async (idPublicacion: number): Promise<RecargoZonaDto[]> => { | ||||
|     const response = await apiClient.get<RecargoZonaDto[]>(`/publicaciones/${idPublicacion}/recargos`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const getRecargoZonaById = async (idPublicacion: number, idRecargo: number): Promise<RecargoZonaDto> => { | ||||
|     const response = await apiClient.get<RecargoZonaDto>(`/publicaciones/${idPublicacion}/recargos/${idRecargo}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createRecargoZona = async (idPublicacion: number, data: CreateRecargoZonaDto): Promise<RecargoZonaDto> => { | ||||
|     const response = await apiClient.post<RecargoZonaDto>(`/publicaciones/${idPublicacion}/recargos`, data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updateRecargoZona = async (idPublicacion: number, idRecargo: number, data: UpdateRecargoZonaDto): Promise<void> => { | ||||
|     await apiClient.put(`/publicaciones/${idPublicacion}/recargos/${idRecargo}`, data); | ||||
| }; | ||||
|  | ||||
| const deleteRecargoZona = async (idPublicacion: number, idRecargo: number): Promise<void> => { | ||||
|     await apiClient.delete(`/publicaciones/${idPublicacion}/recargos/${idRecargo}`); | ||||
| }; | ||||
|  | ||||
| const recargoZonaService = { | ||||
|     getRecargosPorPublicacion, | ||||
|     getRecargoZonaById, | ||||
|     createRecargoZona, | ||||
|     updateRecargoZona, | ||||
|     deleteRecargoZona, | ||||
| }; | ||||
|  | ||||
| export default recargoZonaService; | ||||
| @@ -0,0 +1,50 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { SalidaOtroDestinoDto } from '../../models/dtos/Distribucion/SalidaOtroDestinoDto'; | ||||
| import type { CreateSalidaOtroDestinoDto } from '../../models/dtos/Distribucion/CreateSalidaOtroDestinoDto'; | ||||
| import type { UpdateSalidaOtroDestinoDto } from '../../models/dtos/Distribucion/UpdateSalidaOtroDestinoDto'; | ||||
|  | ||||
| interface GetAllSalidasParams { | ||||
|     fechaDesde?: string | null; // yyyy-MM-dd | ||||
|     fechaHasta?: string | null; // yyyy-MM-dd | ||||
|     idPublicacion?: number | null; | ||||
|     idDestino?: number | null; | ||||
| } | ||||
|  | ||||
| const getAllSalidasOtrosDestinos = async (filters: GetAllSalidasParams): Promise<SalidaOtroDestinoDto[]> => { | ||||
|     const params: Record<string, string | number> = {}; | ||||
|     if (filters.fechaDesde) params.fechaDesde = filters.fechaDesde; | ||||
|     if (filters.fechaHasta) params.fechaHasta = filters.fechaHasta; | ||||
|     if (filters.idPublicacion) params.idPublicacion = filters.idPublicacion; | ||||
|     if (filters.idDestino) params.idDestino = filters.idDestino; | ||||
|  | ||||
|     const response = await apiClient.get<SalidaOtroDestinoDto[]>('/salidasotrosdestinos', { params }); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const getSalidaOtroDestinoById = async (idParte: number): Promise<SalidaOtroDestinoDto> => { | ||||
|     const response = await apiClient.get<SalidaOtroDestinoDto>(`/salidasotrosdestinos/${idParte}`); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const createSalidaOtroDestino = async (data: CreateSalidaOtroDestinoDto): Promise<SalidaOtroDestinoDto> => { | ||||
|     const response = await apiClient.post<SalidaOtroDestinoDto>('/salidasotrosdestinos', data); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const updateSalidaOtroDestino = async (idParte: number, data: UpdateSalidaOtroDestinoDto): Promise<void> => { | ||||
|     await apiClient.put(`/salidasotrosdestinos/${idParte}`, data); | ||||
| }; | ||||
|  | ||||
| const deleteSalidaOtroDestino = async (idParte: number): Promise<void> => { | ||||
|     await apiClient.delete(`/salidasotrosdestinos/${idParte}`); | ||||
| }; | ||||
|  | ||||
| const salidaOtroDestinoService = { | ||||
|     getAllSalidasOtrosDestinos, | ||||
|     getSalidaOtroDestinoById, | ||||
|     createSalidaOtroDestino, | ||||
|     updateSalidaOtroDestino, | ||||
|     deleteSalidaOtroDestino, | ||||
| }; | ||||
|  | ||||
| export default salidaOtroDestinoService; | ||||
							
								
								
									
										62
									
								
								Frontend/src/services/Impresion/stockBobinaService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								Frontend/src/services/Impresion/stockBobinaService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,62 @@ | ||||
| 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'; | ||||
|  | ||||
| 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" | ||||
| } | ||||
|  | ||||
| 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; | ||||
|  | ||||
|     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 stockBobinaService = { | ||||
|     getAllStockBobinas, | ||||
|     getStockBobinaById, | ||||
|     ingresarBobina, | ||||
|     updateDatosBobinaDisponible, | ||||
|     cambiarEstadoBobina, | ||||
|     deleteIngresoBobina, | ||||
| }; | ||||
|  | ||||
| export default stockBobinaService; | ||||
							
								
								
									
										43
									
								
								Frontend/src/services/Impresion/tiradaService.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Frontend/src/services/Impresion/tiradaService.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| import apiClient from '../apiClient'; | ||||
| import type { TiradaDto } from '../../models/dtos/Impresion/TiradaDto'; | ||||
| import type { CreateTiradaRequestDto } from '../../models/dtos/Impresion/CreateTiradaRequestDto'; | ||||
|  | ||||
| interface GetTiradasParams { | ||||
|     fecha?: string | null; // "yyyy-MM-dd" | ||||
|     idPublicacion?: number | null; | ||||
|     idPlanta?: number | null; | ||||
| } | ||||
|  | ||||
| const getTiradas = async (filters: GetTiradasParams): Promise<TiradaDto[]> => { | ||||
|     const params: Record<string, string | number> = {}; | ||||
|     if (filters.fecha) params.fecha = filters.fecha; | ||||
|     if (filters.idPublicacion) params.idPublicacion = filters.idPublicacion; | ||||
|     if (filters.idPlanta) params.idPlanta = filters.idPlanta; | ||||
|  | ||||
|     const response = await apiClient.get<TiradaDto[]>('/tiradas', { params }); | ||||
|     return response.data; | ||||
| }; | ||||
|  | ||||
| const registrarTirada = async (data: CreateTiradaRequestDto): Promise<TiradaDto> => { | ||||
|     const response = await apiClient.post<TiradaDto>('/tiradas', data); | ||||
|     return response.data; // El backend devuelve la tirada creada | ||||
| }; | ||||
|  | ||||
| const deleteTiradaCompleta = async (fecha: string, idPublicacion: number, idPlanta: number): Promise<void> => { | ||||
|     // Los parámetros van en la query string para este DELETE | ||||
|     await apiClient.delete('/tiradas', { | ||||
|         params: { | ||||
|             fecha, | ||||
|             idPublicacion, | ||||
|             idPlanta | ||||
|         } | ||||
|     }); | ||||
| }; | ||||
|  | ||||
| const tiradaService = { | ||||
|     getTiradas, | ||||
|     registrarTirada, | ||||
|     deleteTiradaCompleta, | ||||
| }; | ||||
|  | ||||
| export default tiradaService; | ||||
		Reference in New Issue
	
	Block a user