feat(P16C-1,P16C-3): 完成供应商主数据后端与种子

这个提交包含在:
2026-03-07 17:39:49 +08:00
父节点 195f46a2e3
当前提交 aafa911ee7
共修改 6 个文件,包含 645 行新增和 0 行删除
+56
查看文件
@@ -109,6 +109,49 @@ async function ensureCostCenter(prisma, payload) {
});
}
async function ensureSupplier(prisma, payload) {
const now = new Date();
const existing = await prisma.supplier.findUnique({
where: { code: payload.code },
select: { id: true },
});
if (existing) {
return prisma.supplier.update({
where: { id: existing.id },
data: {
name: payload.name,
short_name: payload.shortName ?? null,
tax_no: payload.taxNo ?? null,
contact_name: payload.contactName ?? null,
contact_phone: payload.contactPhone ?? null,
payment_terms: payload.paymentTerms ?? null,
legal_entity_id: payload.legalEntityId ?? null,
enabled: true,
archived_at: null,
updated_at: now,
},
});
}
return prisma.supplier.create({
data: {
code: payload.code,
name: payload.name,
short_name: payload.shortName ?? null,
tax_no: payload.taxNo ?? null,
contact_name: payload.contactName ?? null,
contact_phone: payload.contactPhone ?? null,
payment_terms: payload.paymentTerms ?? null,
legal_entity_id: payload.legalEntityId ?? null,
enabled: true,
archived_at: null,
created_at: now,
updated_at: now,
},
});
}
async function ensureHolidayCalendar(prisma, payload) {
const now = new Date();
const existing = await prisma.holidayCalendar.findUnique({
@@ -442,6 +485,17 @@ async function main() {
ownerEmployeeId: manager.id,
});
const supplier = await ensureSupplier(prisma, {
code: "HYB_DEMO_VENDOR",
name: "海音达演示供应商",
shortName: "演示供应商",
taxNo: "91440300DEMO12345X",
contactName: "张采购",
contactPhone: "0755-12345678",
paymentTerms: "月结30天",
legalEntityId: legalEntity.id,
});
// eslint-disable-next-line no-console
console.log("Seeded dev users:");
// eslint-disable-next-line no-console
@@ -464,6 +518,8 @@ async function main() {
console.log(`- Legal Entity: ${legalEntity.code} / ${legalEntity.name}`);
// eslint-disable-next-line no-console
console.log(`- HolidayCalendar: ${holidayCalendar.code} / ${holidayCalendar.name}`);
// eslint-disable-next-line no-console
console.log(`- Supplier: ${supplier.code} / ${supplier.name}`);
} finally {
await prisma.$disconnect();
await pool.end();