Beispiel #1
0
def main():
    with dbapi.session:
        for x in dbapi.search(ProdItem):
            prod_id = get_real_prod_id(x.prod_id)
            itemgroup = dbapi.getone(ProdItemGroup, prod_id=prod_id)
            if itemgroup:
                dbapi.update(x, {'itemgroupid': itemgroup.uid})
            else:
                print prod_id
def main():
    with dbapi.session:
        for x in dbapi.search(ProdItem):
            prod_id = get_real_prod_id(x.prod_id)
            itemgroup = dbapi.getone(ProdItemGroup, prod_id=prod_id)
            if itemgroup:
                dbapi.update(x, {'itemgroupid': itemgroup.uid})
            else:
                print prod_id
Beispiel #3
0
 def items_to_transaction(self, dbapi):
     for item in self.items:
         proditem = dbapi.getone(ProdItem, prod_id=item.prod.prod_id)
         # TODO: deprecate use of upi at all
         inv_id = item.prod.upi or self.meta.bodega_id
         yield InventoryMovement(
             from_inv_id=inv_id,
             to_inv_id=-1,
             quantity=(item.cant * item.prod.multiplicador),
             prod_id=get_real_prod_id(item.prod.prod_id),
             itemgroup_id=proditem.itemgroupid,
             type=InvMovementType.SALE,
             reference_id=str(self.meta.uid),
         )
Beispiel #4
0
def get_sale_report_full(invapi, start, end):
    invs = invapi.search_metadata_by_date_range(start, end, status=Status.COMITTED)
    report = SaleReport()
    prod_sale_map = defaultdict(ProdSale)
    visitors = set()
    for inv in invs:
        datestr = inv.timestamp.date().isoformat()
        if inv.almacen_id == 2:
            report.mayor[datestr] += Decimal(inv.subtotal - (inv.discount or 0)) / 100
        if inv.almacen_id in (1, 3):
            report.menor[datestr] += Decimal(inv.subtotal - (inv.discount or 0)) / 100
            report.menor_inv_count[datestr] += 1
        visitors.add(inv.client.codigo)

        inv_full = invapi.get_doc_from_file(inv.items_location)
        for item in inv_full.items:
            cod = get_real_prod_id(item.prod.prod_id)
            prod_sale_map[cod].prod = item.prod.nombre
            prod_sale_map[cod].cant += item.cant * (item.prod.multiplicador or 1)
            prod_sale_map[cod].value += item.cant * Decimal(item.prod.precio2 or item.prod.precio1) / 100

    report.best_sellers = prod_sale_map.items()
    report.unique_visitors = len(visitors)
    return report