Facturas de cliente

This commit is contained in:
David Arranz 2025-06-26 16:35:53 +02:00
parent dba421e9c5
commit 6c472c21aa
6 changed files with 20 additions and 12 deletions

View File

@ -1,3 +1,4 @@
export * from "./domain-validation-error";
export * from "./error-mapper";
export * from "./validation-api-error";
export * from "./validation-error-collection";

View File

@ -1,5 +1,5 @@
// src/common/middlewares/validate-dto.ts
import { ValidationApiError } from "@erp/core/api";
import { ExpressController, ValidationApiError } from "@erp/core/api";
import { RequestHandler } from "express";
import { ZodSchema } from "zod/v4";
@ -40,17 +40,22 @@ export const validateRequest = <T extends "body" | "query" | "params">(
options: ValidateRequestWithSchemaOptions = { sanitize: true }
): RequestHandler => {
return async (req, res, next) => {
console.debug(`Validating request ${source} with schema:`, schema);
console.debug(`Validating request ${source} with schema.`);
const result = schema.safeParse(req[source]);
if (!result.success) {
// Construye errores detallados
const validationErrors = result.error.errors.map((err) => ({
const validationErrors = result.error.issues.map((err) => ({
field: err.path.join("."),
message: err.message,
}));
return new ValidationApiError("Validation failed", validationErrors);
console.debug(validationErrors);
return ExpressController.errorResponse(
new ValidationApiError("Validation failed", validationErrors),
res
);
}
// Si pasa la validación, opcionalmente reescribe req.body

View File

@ -1,10 +1,9 @@
import { ExpressController, errorMapper } from "@erp/core/api";
import { CreateCustomerInvoiceCommandDTO } from "../../../common/dto";
import { CreateCustomerInvoiceUseCase } from "../../application";
export class CreateCustomerInvoiceController extends ExpressController {
public constructor(
private readonly createCustomerInvoice: any // Replace with actual type
) {
public constructor(private readonly createCustomerInvoice: CreateCustomerInvoiceUseCase) {
super();
}
@ -25,6 +24,7 @@ export class CreateCustomerInvoiceController extends ExpressController {
const result = await this.createCustomerInvoice.execute(dto);
if (result.isFailure) {
console.log(result.error);
const apiError = errorMapper.toApiError(result.error);
return this.handleApiError(apiError);
}

View File

@ -45,5 +45,4 @@ export interface ICustomerInvoiceRepository {
* @returns Result<void, Error>
*/
deleteById(id: UniqueID, transaction: any): Promise<Result<void, Error>>;
}

View File

@ -5,7 +5,10 @@ import {
CreateCustomerInvoiceCommandSchema,
ListCustomerInvoicesQuerySchema,
} from "../../../common/dto";
import { buildListCustomerInvoicesController } from "../../controllers";
import {
buildCreateCustomerInvoicesController,
buildListCustomerInvoicesController,
} from "../../controllers";
export const customerInvoicesRouter = (params: ModuleParams) => {
const { app, database, baseRoutePath, logger } = params as {
@ -43,7 +46,7 @@ export const customerInvoicesRouter = (params: ModuleParams) => {
//checkUser,
validateRequest(CreateCustomerInvoiceCommandSchema),
(req: Request, res: Response, next: NextFunction) => {
buildCreateCustomerInvoiceController(database).execute(req, res, next);
buildCreateCustomerInvoicesController(database).execute(req, res, next);
}
);

View File

@ -1,7 +1,7 @@
import * as z from "zod/v4";
export const ICreateCustomerInvoiceRequestSchema = z.object({
id: z.string().uuid(),
id: z.uuid(),
customerInvoice_number: z.string().min(1),
customerInvoice_series: z.string().min(1),
issue_date: z.string().refine((date) => {