feat(P16C-1,P16C-3): 完成供应商主数据后端与种子
这个提交包含在:
@@ -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();
|
||||
|
||||
在新工单中引用
屏蔽一个用户