Tokiva-backend-Node / src /schemas /transaksi.schema.ts
anoderb
feat: initial commit of Tokiva POS Node backend for Hugging Face
ef874e6
Raw
History Blame Contribute Delete
1.47 kB
import { z } from 'zod';
export const createTransaksiSchema = z.object({
body: z.object({
member_id: z.number().optional().nullable(),
local_id: z.string().optional().nullable(),
catatan: z.string().optional().nullable(),
items: z.array(z.object({
produk_id: z.number({ required_error: 'produk_id item wajib diisi' }),
qty: z.number({ required_error: 'qty item wajib diisi' }).positive(),
})).min(1, 'Transaksi minimal harus memiliki 1 item'),
pembayaran: z.array(z.object({
metode: z.enum(['tunai', 'qris', 'transfer', 'bon', 'voucher'], { required_error: 'metode pembayaran wajib diisi' }),
nominal: z.number({ required_error: 'nominal pembayaran wajib diisi' }).nonnegative(),
referensi: z.string().optional().nullable(),
})).min(1, 'Transaksi minimal harus memiliki 1 metode pembayaran'),
}),
});
export const createTransaksiReturSchema = z.object({
body: z.object({
transaksi_id: z.number({ required_error: 'transaksi_id wajib diisi' }),
produk_id: z.number({ required_error: 'produk_id wajib diisi' }),
qty: z.number({ required_error: 'Kuantitas retur (qty) wajib diisi' }).positive(),
alasan: z.string({ required_error: 'Alasan retur wajib diisi' }).min(1),
tipe: z.enum(['refund', 'exchange'], { required_error: 'Tipe retur wajib diisi (refund/exchange)' }),
nominal_kembali: z.number().optional().default(0),
stok_kembali: z.number().optional().default(1),
}),
});