Re: tracking shipments, inventory
Date: 23 Dec 2004 09:11:39 -0800
Message-ID: <1103821899.960848.162680_at_z14g2000cwz.googlegroups.com>
> ... best practice for an order processing system where ...
The XDb2 script below provides an alternate method. It models shipment of 10 blenders from warehouse #1's stock location A8 to customer John Smith. It also models shipment of 100 blenders from warehouse #1's stock location A8 to warehouse #2 stock location D88. A sample query finds which warehouse shipped the blenders to John Smith.
// Create various classes and add to main directory
CREATE *person.item ~in = dir; CREATE *customer.item ~in = dir; CREATE *warehouse.item ~in = dir; CREATE *stock location.item ~in = dir; CREATE *product.item ~in = dir; CREATE *kitchen appliance.item ~in = dir; CREATE *address.item ~in = dir; CREATE *street.item ~in = dir; CREATE *suite.item ~in = dir; CREATE *city.item ~in = dir; CREATE *state.item ~in = dir; CREATE *zip.item ~in = dir; CREATE *shipment.item ~in = dir; CREATE *source.item ~in = dir; CREATE *destination.item ~in = dir; CREATE *floor.item ~in = dir; CREATE *isle.item ~in = dir; CREATE *bin.item ~in = dir; CREATE *quantity.item ~in = dir; CREATE *date.item ~in = dir; CREATE *memo.item ~in = dir;
// Create an address for john smith
CREATE *;
CREATE it.cls = address; CREATE it.street = +123 main st; CREATE it.suite = +D8; CREATE it.city = +chicago; CREATE it.state = +illinois; CREATE it.zip = +12345;
// Create customer john smith and link to his address
CREATE *;
CREATE it.name,first = +john; CREATE it.name,last = +smith; CREATE it.cls = person; CREATE it.cls = customer; CREATE it.address = (%.cls=address & %.street=123 main st & %.suite=D8& %.city=chicago & %.state=illinois & %.zip=12345);
// Create an address for warehouse #1
CREATE *;
CREATE it.cls = address; CREATE it.street = +456 industrial dr; CREATE it.city = +cinncinati; CREATE it.state = +ohio; CREATE it.zip = +22333;
// Create warehouse #1 and link to its address
CREATE *;
CREATE it.name = +warehouse #1; CREATE it.cls = warehouse; CREATE it.address = (%.cls=address & %.street=456 industrial dr &%.zip=22333);
// Create a stock location in warehouse #1
CREATE *;
CREATE it.cls = stock location; CREATE it.warehouse = warehouse #1; CREATE it.floor = +2nd; CREATE it.isle = +34; CREATE it.bin = +A8;
// Create an address for warehouse #2
CREATE *;
CREATE it.cls = address; CREATE it.street = +789 broadway dr; CREATE it.city = +toledo; CREATE it.state = +ohio; CREATE it.zip = +22444;
// Create warehouse #2
CREATE *;
CREATE it.name = +warehouse #2; CREATE it.cls = warehouse; CREATE it.address = (%.cls=address & %.street=789 broadway dr &%.zip=22444);
// Create a stock location in warehouse #2
CREATE *;
CREATE it.cls = stock location; CREATE it.warehouse = warehouse #2; CREATE it.bin = +D88;
// Create a blender and classify as product and kitchen appliance
CREATE *blender.cls = product;
CREATE blender.cls = kitchen appliance;
// Ship 10 blenders from whse #1 loc A8 to john smith
CREATE *;
CREATE it.cls = shipment; CREATE it.product = blender; CREATE it.quantity = +10; CREATE it.date = +12/25/04; CREATE it.source = (%.cls=stock location & %.warehouse=warehouse #1 &%.floor=2nd & %.isle=34 & %.bin=A8);
CREATE it.destination = (%.cls=customer & %.name,first=john & %.name,last=smith);
CREATE it.memo = +no one home, signed for by neighbor;
// Ship 100 blenders from whse #1 loc A8 to whse #2 loc D88
CREATE *;
CREATE it.cls = shipment; CREATE it.product = blender; CREATE it.quantity = +100; CREATE it.date = +12/29/04; CREATE it.source = (%.cls=stock location & %.warehouse=warehouse #1 &%.floor=2nd & %.isle=34 & %.bin=A8);
CREATE it.destination = (%.cls=stock location & %.warehouse=warehouse #2 & %.bin=D88);
CREATE it.memo = +5 blenders lost during transit;
// Find which warehouse shipped the blenders to john smith.
// Finds warehouse #1
SELECT %.cls=warehouse & (%.cls=stock location & (%.cls=shipment &
%.product=blender & %.destination=(%.name,first=john &
%.name,last=smith)).source=%).warehouse=%;
Received on Thu Dec 23 2004 - 18:11:39 CET