This commit is contained in:
seb
2026-10-20 02:22:58 +02:00
parent 4b34902b92
commit 5cb38874ca
6 changed files with 151 additions and 10 deletions

View File

@@ -1,6 +1,6 @@
import { describe, it, before, after } from 'node:test';
import assert from 'node:assert/strict';
import { createTestStore, createTenant, createArticle, makePng } from './helpers.js';
import { createTestStore, createTenant, createArticle, createCustomer, makePng } from './helpers.js';
describe('store.article', () => {
let ctx;
@@ -694,4 +694,70 @@ describe('store.article', () => {
assert.equal(res.article.suppliers[0].incoming[0].date, '2026-11-15T00:00:00.000Z');
});
});
describe('undelivered customer orders', () => {
it('returns total remaining unshipped quantity across open orders', async () => {
const art = await createArticle(store, tenant, { name: 'Order Article', sku: 'ORD-TEST-1' });
const cust = await createCustomer(store, tenant, 'Order Customer');
let res = await store.article.getBySku(gid, art.sku);
assert.deepEqual(res.article.undeliveredOrders, []);
const o1 = await store.order.create(gid, {
number: 'ORD-1001',
date: '2026-10-20',
entityId: cust.id,
lines: [{ sku: art.sku, name: 'Item', amount: 10, net: 5, taxrate: 19 }],
});
res = await store.article.getBySku(gid, art.sku);
assert.equal(res.article.undeliveredOrders.length, 1);
assert.equal(res.article.undeliveredOrders[0].orderId, o1.id);
assert.equal(res.article.undeliveredOrders[0].orderNumber, 'ORD-1001');
assert.equal(res.article.undeliveredOrders[0].customerName, 'Order Customer');
assert.equal(res.article.undeliveredOrders[0].amount, 10);
const o2 = await store.order.create(gid, {
number: 'ORD-1002',
date: '2026-10-21',
entityId: cust.id,
lines: [{ sku: art.sku, name: 'Item', amount: 5, net: 5, taxrate: 19 }],
});
res = await store.article.getBySku(gid, art.sku);
assert.equal(res.article.undeliveredOrders.length, 2);
assert.equal(res.article.undeliveredOrders[0].orderNumber, 'ORD-1001');
assert.equal(res.article.undeliveredOrders[0].amount, 10);
assert.equal(res.article.undeliveredOrders[1].orderNumber, 'ORD-1002');
assert.equal(res.article.undeliveredOrders[1].amount, 5);
await store.shipment.create(gid, {
orderId: o1.id,
lines: [{ sku: art.sku, amount: 4 }],
});
res = await store.article.getBySku(gid, art.sku);
assert.equal(res.article.undeliveredOrders.length, 2);
assert.equal(res.article.undeliveredOrders[0].amount, 6);
assert.equal(res.article.undeliveredOrders[1].amount, 5);
await store.shipment.create(gid, {
orderId: o1.id,
lines: [{ sku: art.sku, amount: 6 }],
});
res = await store.article.getBySku(gid, art.sku);
assert.equal(res.article.undeliveredOrders.length, 1);
assert.equal(res.article.undeliveredOrders[0].orderNumber, 'ORD-1002');
assert.equal(res.article.undeliveredOrders[0].amount, 5);
await store.shipment.create(gid, {
orderId: o2.id,
});
res = await store.article.getBySku(gid, art.sku);
assert.deepEqual(res.article.undeliveredOrders, []);
});
});
});