def test_create(self): with self.sessionmanager: meta = InvMovementMeta() meta.timestamp = datetime.datetime(2011, 1, 1, 1, 1) meta.inventory_codename = 'boya' meta.inventory_docid = 1 meta.transtype = 'sale' meta.origin = 1 meta.dest = 2 items = [ItemGroupCant(cant=1, itemgroup=ProdItemGroup(uid=1, prod_id='AAAA'))] inv = InvMovementFull(meta=meta, items=items) self.invmomanager.create(inv) self.assertEquals(1, self.inventoryapi.get_current_quantity(1)[2])
def make_inv_movement(self, work): invmeta = InvMovementMeta() doc = work.content if work.objtype == WorkObject.INV_TRANS: invmeta.timestamp = doc.meta.timestamp invmeta.value_usd = Decimal(doc.meta.subtotal - (doc.meta.discount or 0)) / 100 invmeta.inventory_docid = doc.meta.uid invmeta.trans_type = InvMovementType.SALE invmeta.origin = doc.meta.bodega_id invmeta.dest = -1 else: invmeta.timestamp = doc.meta.timestamp invmeta.value_usd = doc.meta.value invmeta.inventory_docid = doc.meta.uid invmeta.origin = doc.meta.origin invmeta.dest = doc.meta.dest invmeta.trans_type = transtype_to_invtype(doc.meta.trans_type) invmeta.inventory_codename = self.codename items = [] if work.action == WorkObject.DELETE: invmeta.origin, invmeta.dest = invmeta.dest, invmeta.origin invmeta.trans_type = InvMovementType.delete_type(invmeta.trans_type) invmeta.timestamp = datetime.datetime.now() # record delete time which is different than invoice time for trans in doc.items_to_transaction(self.dbapi): itemgroup = self.dbapi.get(trans.itemgroup_id, ProdItemGroup) items.append(ItemGroupCant(cant=trans.quantity, itemgroup=itemgroup)) return InvMovementFull(meta=invmeta, items=items)