Re: tracking shipments, inventory

From: Neo <neo55592_at_hotmail.com>
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

Original text of this message