metallkart-erp/scripts/inspect_bug.ts

45 lines
2.0 KiB
TypeScript

import { PrismaClient } from '@prisma/client';
const p = new PrismaClient();
function n(v: any): number { return v == null ? 0 : Number(v); }
async function main() {
const order = await p.order.findFirst({
where: { orderCode: { contains: 'OZ2604OZ113' } },
select: { id: true, orderCode: true },
});
if (!order) { console.log('Order not found'); return; }
console.log('Order', order.id, order.orderCode);
const prs = await p.purchaseRequirement.findMany({
where: { orderId: order.id, description: { contains: 'Trub', mode: 'insensitive' } },
include: {
poLines: {
include: {
purchaseOrder: { select: { orderCode: true, status: true } },
receptions: { select: { id: true, receivedQty: true, status: true, lotId: true } },
lotLines: { include: { lot: { select: { id: true, lotNumber: true, status: true, plannedDate: true, deliveryDate: true, quantity: true } } } },
},
},
},
orderBy: { id: 'asc' },
});
console.log('PR count:', prs.length);
for (const pr of prs) {
console.log();
console.log('=== PR', pr.id, pr.description, 'qty:', n(pr.quantity), 'orig:', n(pr.originalQuantity), 'status:', pr.status, 'arch:', pr.archived);
for (const pl of pr.poLines) {
console.log(' POLine', pl.id, 'PO:', pl.purchaseOrder?.orderCode, 'status:', pl.purchaseOrder?.status);
console.log(' receptions:', pl.receptions.length);
for (const rc of pl.receptions) console.log(' #', rc.id, 'qty:', n(rc.receivedQty), 'status:', rc.status, 'lotId:', rc.lotId);
console.log(' lotLines:', pl.lotLines.length);
for (const ll of pl.lotLines) {
const dd = ll.lot.deliveryDate ? ll.lot.deliveryDate.toISOString().slice(0, 10) : 'NULL';
console.log(' ll.qty:', n(ll.quantity), 'lot#:', ll.lot.id, ll.lot.lotNumber, 'status:', ll.lot.status, 'dd:', dd, 'lot.qty:', n(ll.lot.quantity));
}
}
}
await p.$disconnect();
}
main().catch(e => { console.error(e); process.exit(1); });