Author: kilo Date: 2005-05-19 05:12:52 -0500 (Thu, 19 May 2005) New Revision: 7547
Modified: trunk/gnue-packages/supply-chain/doc/Inv.dia trunk/gnue-packages/supply-chain/doc/Inv.png trunk/gnue-packages/supply-chain/inventory/invent.gcd Log: Packages. Inventory basic add/remove operation implemented. Modified: trunk/gnue-packages/supply-chain/doc/Inv.dia =================================================================== --- trunk/gnue-packages/supply-chain/doc/Inv.dia 2005-05-18 12:27:19 UTC (rev 7546) +++ trunk/gnue-packages/supply-chain/doc/Inv.dia 2005-05-19 10:12:52 UTC (rev 7547) @@ -65,13 +65,13 @@ <dia:layer name="HÃttÃr" visible="true"> <dia:object type="UML - Class" version="0" id="O0"> <dia:attribute name="obj_pos"> - <dia:point val="17,6"/> + <dia:point val="31,7"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="16.95,5.95;23.6,8.85"/> + <dia:rectangle val="30.95,6.95;37.6,9.85"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="17,6"/> + <dia:point val="31,7"/> </dia:attribute> <dia:attribute name="elem_width"> <dia:real val="6.55"/> @@ -184,19 +184,19 @@ </dia:object> <dia:object type="UML - Class" version="0" id="O1"> <dia:attribute name="obj_pos"> - <dia:point val="5,8"/> + <dia:point val="5,11"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="4.95,7.95;13.35,10.85"/> + <dia:rectangle val="4.95,10.95;27,15.25"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="5,8"/> + <dia:point val="5,11"/> </dia:attribute> <dia:attribute name="elem_width"> - <dia:real val="8.3"/> + <dia:real val="21.95"/> </dia:attribute> <dia:attribute name="elem_height"> - <dia:real val="2.8"/> + <dia:real val="4.2"/> </dia:attribute> <dia:attribute name="name"> <dia:string>#ItemInWhouse#</dia:string> @@ -295,7 +295,172 @@ </dia:attribute> </dia:composite> </dia:attribute> - <dia:attribute name="operations"/> + <dia:attribute name="operations"> + <dia:composite type="umloperation"> + <dia:attribute name="name"> + <dia:string>#Add#</dia:string> + </dia:attribute> + <dia:attribute name="stereotype"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#number(10,2)#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Adds a given quantity of items to a warehouse#</dia:string> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="inheritance_type"> + <dia:enum val="2"/> + </dia:attribute> + <dia:attribute name="query"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="parameters"> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#whouseId#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#id#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#itemId#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#id#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#qty#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#number(10,2)#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + </dia:attribute> + </dia:composite> + <dia:composite type="umloperation"> + <dia:attribute name="name"> + <dia:string>#Remove#</dia:string> + </dia:attribute> + <dia:attribute name="stereotype"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#number(10,2)#</dia:string> + </dia:attribute> + <dia:attribute name="visibility"> + <dia:enum val="0"/> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>#Removes a given number of items from a warehouse#</dia:string> + </dia:attribute> + <dia:attribute name="abstract"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="inheritance_type"> + <dia:enum val="2"/> + </dia:attribute> + <dia:attribute name="query"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="class_scope"> + <dia:boolean val="false"/> + </dia:attribute> + <dia:attribute name="parameters"> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#whouseId#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#id#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#itemId#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#id#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + <dia:composite type="umlparameter"> + <dia:attribute name="name"> + <dia:string>#qty#</dia:string> + </dia:attribute> + <dia:attribute name="type"> + <dia:string>#number(10,2)#</dia:string> + </dia:attribute> + <dia:attribute name="value"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="comment"> + <dia:string>##</dia:string> + </dia:attribute> + <dia:attribute name="kind"> + <dia:enum val="0"/> + </dia:attribute> + </dia:composite> + </dia:attribute> + </dia:composite> + </dia:attribute> <dia:attribute name="template"> <dia:boolean val="false"/> </dia:attribute> @@ -351,13 +516,13 @@ </dia:object> <dia:object type="UML - SmallPackage" version="0" id="O3"> <dia:attribute name="obj_pos"> - <dia:point val="25,4"/> + <dia:point val="39,4"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="24.95,3.05;29.5,5.45"/> + <dia:rectangle val="38.95,3.05;43.5,5.45"/> </dia:attribute> <dia:attribute name="elem_corner"> - <dia:point val="25,4"/> + <dia:point val="39,4"/> </dia:attribute> <dia:attribute name="elem_width"> <dia:real val="4.45"/> @@ -386,7 +551,7 @@ <dia:real val="0.8"/> </dia:attribute> <dia:attribute name="pos"> - <dia:point val="25.3,4.95"/> + <dia:point val="39.3,4.95"/> </dia:attribute> <dia:attribute name="color"> <dia:color val="#000000"/> @@ -402,13 +567,13 @@ <dia:point val="2.05,5.7"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="2,5.65;7.1,11.5"/> + <dia:rectangle val="2,5.65;7.1,14.5"/> </dia:attribute> <dia:attribute name="orth_points"> <dia:point val="2.05,5.7"/> <dia:point val="2.75,5.7"/> - <dia:point val="2.75,9.9"/> - <dia:point val="5,9.9"/> + <dia:point val="2.75,12.9"/> + <dia:point val="5,12.9"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="0"/> @@ -461,16 +626,16 @@ </dia:object> <dia:object type="UML - Association" version="0" id="O5"> <dia:attribute name="obj_pos"> - <dia:point val="13.3,9.9"/> + <dia:point val="26.95,12.9"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="13.25,6.65;17.7,11.5"/> + <dia:rectangle val="26.9,7.65;31.7,14.5"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="13.3,9.9"/> - <dia:point val="15.325,9.9"/> - <dia:point val="15.325,6.7"/> - <dia:point val="17,6.7"/> + <dia:point val="26.95,12.9"/> + <dia:point val="30,12.9"/> + <dia:point val="30,7.7"/> + <dia:point val="31,7.7"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="0"/> @@ -523,16 +688,16 @@ </dia:object> <dia:object type="UML - Association" version="0" id="O6"> <dia:attribute name="obj_pos"> - <dia:point val="23.55,7.9"/> + <dia:point val="37.55,8.9"/> </dia:attribute> <dia:attribute name="obj_bb"> - <dia:rectangle val="23.5,4.65;26.35,9.5"/> + <dia:rectangle val="37.5,4.65;40.35,10.5"/> </dia:attribute> <dia:attribute name="orth_points"> - <dia:point val="23.55,7.9"/> - <dia:point val="24.275,7.9"/> - <dia:point val="24.275,4.7"/> - <dia:point val="25,4.7"/> + <dia:point val="37.55,8.9"/> + <dia:point val="38.275,8.9"/> + <dia:point val="38.275,4.7"/> + <dia:point val="39,4.7"/> </dia:attribute> <dia:attribute name="orth_orient"> <dia:enum val="0"/> Modified: trunk/gnue-packages/supply-chain/doc/Inv.png =================================================================== (Binary files differ) Modified: trunk/gnue-packages/supply-chain/inventory/invent.gcd =================================================================== --- trunk/gnue-packages/supply-chain/inventory/invent.gcd 2005-05-18 12:27:19 UTC (rev 7546) +++ trunk/gnue-packages/supply-chain/inventory/invent.gcd 2005-05-19 10:12:52 UTC (rev 7547) @@ -24,23 +24,102 @@ $Id$ --> <module name="INVENT"> - <class name="Item" module="ITEM" comment="Expand base item with inventory-specific attributes"> <property name="minQty" type="number(10,2)" comment=""/> <property name="maxQty" type="number(10,2)" comment=""/> <property name="reorderLimit" type="number(10,2)" comment=""/> <property name="reorderQty" type="number(10,2)" comment=""/> + + <procedure name="OnInit"> + self.minQty = 0 + self.maxQty = None + self.reorderLimit = 0 + </procedure> </class> + <class name="Whouse" comment="Warehouse"> <property name="name" type="string(35)" nullable="False" comment=""/> <property name="location" type="LOC_Address" comment=""/> </class> + <class name="ItemInWhouse" comment="Item in warehouse"> - <property name="whouseId" type="INVENT_Whouse" nullable="False" comment="" /> - <property name="itemId" type="ITEM_Item" nullable="False" comment="" /> - <property name="onStock" type="number(10,2)" nullable="False" comment="" /> + <property name="whouseId" type="INVENT_Whouse" nullable="False" comment="where" /> + <property name="itemId" type="ITEM_Item" nullable="False" comment="what" /> + <property name="onStock" type="number(10,2)" nullable="False" comment="how many" /> + + <!-- + Adds a given number of items to a warehouse. + Return: quantity of items in the warehouse after addition + -1 on limit error (ie stock would go beyond the maximum quantity) + None on any other error + --> + <procedure name="Add" type="number(10,2)" comment="Return: new qty on stock, -1 on limit error"> + <parameter name="whouseId" type="id"/> + <parameter name="itemId" type="id"/> + <parameter name="qty" type="number(10,2)"/> + <![CDATA[ + try: + itemObj = session.get('ITEM_Item', itemId) + + if qty <= itemObj.maxQty: + lot = find('INVENT_ItemInWhouse', {'INVENT_whouseId':whouseId, 'INVENT_itemId':itemId}, [], []) + if not lot: + newLot = new('INVENT_ItemInWhouse') + newLot.whouse = whouseId + newLot.item = itemId + newLot.onStock = qty + ret = newLot.onStock + else: + if itemObj.maxQty and (lot[0].onStock + qty <= itemObj.maxQty) or not itemObj.maxQty: + lot[0].onStock += qty + ret = lot[0].onStock + else: + ret = -1 + session.commit() + else: + ret = -1 + except: + ret = None + + return ret + ]]> + </procedure> + + <!-- + Removes a given number of items from a warehouse. + If the quantity falls below the reorder limit, initiates a reorder process (TODO) + Return: quantity of items left in the warehouse + -1 on limit error (ie stock would fall below the minimum quantity) + None on any other error + --> + <procedure name="Remove" type="number(10,2)" comment="Return: new qty on stock, -1 on limit error"> + <parameter name="whouseId" type="id"/> + <parameter name="itemId" type="id"/> + <parameter name="qty" type="number(10,2)"/> + <![CDATA[ + try: + lot = find('INVENT_ItemInWhouse', {'INVENT_whouseId':whouseId, 'INVENT_itemId':itemId}, [], []) + if lot: + itemObj = session.get('ITEM_Item', itemId) + if itemObj.minQty and (lot[0].onStock - qty >= itemObj.minQty) or not itemObj.minQty: + lot[0].onStock -= qty + ret = lot[0].onStock + session.commit() + + if itemObj.reorderLimit and (lot[0].onStock < itemObj.reorderLimit): + print "Reorder!" + #reorder + else: + ret = -1 + else: + ret = -1 + except: + ret = None + + return ret + ]]> + </procedure> </class> - </module> _______________________________________________ Commit-gnue mailing list Commit-gnue@gnu.org http://lists.gnu.org/mailman/listinfo/commit-gnue