.
This commit is contained in:
parent
417d753f1e
commit
b22845f8da
@ -62,6 +62,17 @@ export class InvoiceItem extends ValueObject<IInvoiceItemProps> implements IInvo
|
||||
return this.props;
|
||||
}
|
||||
|
||||
toPrimitive() {
|
||||
return {
|
||||
description: this.description.toPrimitive(),
|
||||
quantity: this.quantity.toPrimitive(),
|
||||
unit_price: this.unitPrice.toPrimitive(),
|
||||
subtotal_price: this.subtotalPrice.toPrimitive(),
|
||||
discount: this.discount.toPrimitive(),
|
||||
total_price: this.totalPrice.toPrimitive(),
|
||||
};
|
||||
}
|
||||
|
||||
calculateSubtotal(): MoneyValue {
|
||||
return this.unitPrice.multiply(this.quantity.toNumber()); // Precio unitario * Cantidad
|
||||
}
|
||||
|
||||
@ -1,10 +1,36 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export const IListInvoicesRequestSchema = z.object({});
|
||||
export const ICreateInvoiceRequestSchema = z.object({
|
||||
id: z.string().uuid(),
|
||||
invoice_number: z.string().min(1),
|
||||
invoice_series: z.string().min(1),
|
||||
issue_date: z.string().refine((date) => {
|
||||
const dateStr = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Invalid YYYY-MM-DD format");
|
||||
return dateStr.safeParse(date).success;
|
||||
}),
|
||||
operation_date: z.string().refine((date) => {
|
||||
const dateStr = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Invalid YYYY-MM-DD format");
|
||||
return dateStr.safeParse(date).success;
|
||||
}),
|
||||
customerId: z.string().uuid(),
|
||||
lang_code: z.string().min(1),
|
||||
currency_code: z.string().min(1),
|
||||
|
||||
export const IGetInvoiceRequestSchema = z.object({});
|
||||
|
||||
export const ICreateInvoiceRequestSchema = z.object({});
|
||||
items: z.array(
|
||||
z.object({
|
||||
//id: z.string().uuid(),
|
||||
description: z.string().min(1),
|
||||
unit_price: z.object({
|
||||
amount: z.number().positive(),
|
||||
scale: z.number().positive(),
|
||||
}),
|
||||
quantity: z.object({
|
||||
amount: z.number().positive(),
|
||||
scale: z.number().positive(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
});
|
||||
|
||||
export const IUpdateInvoiceRequestSchema = z.object({});
|
||||
|
||||
|
||||
@ -3,8 +3,7 @@ import {
|
||||
buildCreateInvoiceController,
|
||||
buildGetInvoiceController,
|
||||
buildListInvoicesController,
|
||||
IGetInvoiceRequestSchema,
|
||||
IListInvoicesRequestSchema,
|
||||
ICreateInvoiceRequestSchema,
|
||||
} from "@contexts/invoices/presentation";
|
||||
|
||||
import { NextFunction, Request, Response, Router } from "express";
|
||||
@ -14,7 +13,6 @@ export const invoicesRouter = (appRouter: Router) => {
|
||||
|
||||
routes.get(
|
||||
"/",
|
||||
validateAndParseBody(IListInvoicesRequestSchema),
|
||||
//checkTabContext,
|
||||
//checkUser,
|
||||
(req: Request, res: Response, next: NextFunction) => {
|
||||
@ -24,7 +22,6 @@ export const invoicesRouter = (appRouter: Router) => {
|
||||
|
||||
routes.get(
|
||||
"/:invoiceId",
|
||||
validateAndParseBody(IGetInvoiceRequestSchema),
|
||||
//checkTabContext,
|
||||
//checkUser,
|
||||
(req: Request, res: Response, next: NextFunction) => {
|
||||
@ -34,7 +31,7 @@ export const invoicesRouter = (appRouter: Router) => {
|
||||
|
||||
routes.post(
|
||||
"/",
|
||||
//validateAndParseBody(ICreateInvoiceRequestSchema),
|
||||
validateAndParseBody(ICreateInvoiceRequestSchema, { sanitize: false }),
|
||||
//checkTabContext,
|
||||
//checkUser,
|
||||
(req: Request, res: Response, next: NextFunction) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user