feat(import): upsert ProductVendorPrice from imported PO line items
For each line item with a price and a resolved vendor, upsert a ProductVendorPrice record (productId + vendorId → price). This keeps the per-vendor price list in the item catalogue up to date from imports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0d6df57a88
commit
734f96107f
1 changed files with 11 additions and 2 deletions
|
|
@ -88,13 +88,13 @@ export async function importPo(
|
||||||
let productId: string | undefined;
|
let productId: string | undefined;
|
||||||
if (existing) {
|
if (existing) {
|
||||||
productId = existing.id;
|
productId = existing.id;
|
||||||
// Update lastPrice if we have a better price
|
// Update lastPrice / lastVendor on the product
|
||||||
if (item.unitPrice > 0) {
|
if (item.unitPrice > 0) {
|
||||||
await db.product.update({
|
await db.product.update({
|
||||||
where: { id: existing.id },
|
where: { id: existing.id },
|
||||||
data: {
|
data: {
|
||||||
lastPrice: item.unitPrice,
|
lastPrice: item.unitPrice,
|
||||||
lastVendorId: resolvedVendorId ?? undefined,
|
...(resolvedVendorId ? { lastVendorId: resolvedVendorId } : {}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -113,6 +113,15 @@ export async function importPo(
|
||||||
productId = newProduct.id;
|
productId = newProduct.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Upsert per-vendor price so the item catalogue reflects actual invoice prices
|
||||||
|
if (productId && resolvedVendorId && item.unitPrice > 0) {
|
||||||
|
await db.productVendorPrice.upsert({
|
||||||
|
where: { productId_vendorId: { productId, vendorId: resolvedVendorId } },
|
||||||
|
update: { price: item.unitPrice },
|
||||||
|
create: { productId, vendorId: resolvedVendorId, price: item.unitPrice },
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
resolvedLineItems.push({ ...item, productId });
|
resolvedLineItems.push({ ...item, productId });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue