def set_data_for(self, main_date): try: on, end = main_date.current.current[0], main_date.current.current[1] except: on, end = main_date.current[0], main_date.current[1] on = datetime(on.year, on.month, on.day, 0, 0, 0) end = datetime(end.year, end.month, end.day, 23, 59, 59) reports = [] period_report = Reports.select().filter(product=self.product, date__gte=on, date__lte=end) for rept in period_report.group_by("store").order_by(Reports.date.desc()): dict = {} reports_stores = period_report.filter(store=rept.store) sum_qty_in = reports_stores.filter(type_=Reports.E).aggregate(peewee.Sum('qty_use')) sum_qty_out = reports_stores.filter(type_=Reports.S).aggregate(peewee.Sum('qty_use')) dict["store"] = rept.store.name dict["sum_qty_in"] = sum_qty_in if sum_qty_in else 0 dict["sum_qty_out"] = sum_qty_out if sum_qty_out else 0 dict["sum_nbr_part_in"] = rept.product.number_parts_box * dict["sum_qty_in"] dict["sum_nbr_part_out"] = rept.product.number_parts_box * dict["sum_qty_out"] try: dict["remaining"] = reports_stores.order_by(('.date', 'desc')).get().remaining reports.append(dict) except: raise # pass self.data = [(rep.get('store'), rep.get('sum_qty_in'), rep.get('sum_qty_out'), rep.get('remaining')) for rep in reports]
def set_data_for(self, main_date): try: on, end = main_date.current.current except: on, end = main_date.current on = datetime(on.year, on.month, on.day, 0, 0, 0) end = datetime(end.year, end.month, end.day, 23, 59, 59) reports = [] this_periode_rpt = Reports.select().where(Reports.date >= on, Reports.date <= end) for store in Store.select().order_by(Store.name): if ([(i) for i in this_periode_rpt.where(Reports.store << [store, ])] == []): continue cpt = 0 for prod in Product.select().order_by(Product.name): if ([(i) for i in this_periode_rpt.where(Reports.store == store, Reports.product << [prod, ])] == []): continue dict_store = {} repts = this_periode_rpt.where( Reports.store == store, Reports.product == prod) dict_store["store"] = store.name if cpt < 1 else "" dict_store["product"] = prod.name dict_store["sum_qty_in"] = repts.select( peewee.fn.SUM(Reports.qty_use)).where(Reports.type_ == Reports.E).scalar() dict_store["sum_qty_out"] = repts.select( peewee.fn.SUM(Reports.qty_use)).where(Reports.type_ == Reports.S).scalar() cpt += 1 reports.append(dict_store) self.data = [(rep.get('store'), rep.get('product'), rep.get('sum_qty_in'), rep.get('sum_qty_out')) for rep in reports]
def set_data_for(self, value): products = [(Product.get(id=rpt.product_id).name) for rpt in Reports.select(fn.Distinct(Reports.product))] if value: products = [(prod.name) for prod in Product.select().where(Product.name.contains(value)) .where(Product.name << products).order_by(Product.name.desc())] self.data = [("", rpt, "") for rpt in products]
def set_data_for(self): self.data = [(rap.type_, rap.store.name, rap.product, formatted_number(rap.qty_use), formatted_number(rap.remaining), show_date(rap.date)) for rap in Reports.select().where( Reports.date < date_on_or_end(self.today, on=False), Reports.date > date_on_or_end(self.today) ).order_by(Reports.id.desc())]
def popup(self, pos): row = self.selectionModel().selection().indexes()[0].row() if (len(self.data) - 1) < row: return False # self.report = Reports.filter(id=self.data[row][6]).get() self.report = Reports.select().where( Reports.id == self.data[row][6]).get() menu = QMenu() menu.addAction(QIcon("{}del.png".format(Config.img_cmedia)), u"supprimer", lambda: self.del_report(self.report)) self.action = menu.exec_(self.mapToGlobal(pos))
def del_report(self, report): remaining, nb = report.store.get_remaining_and_nb_parts(report.product) remaining -= report.remaining if remaining >= 0: self.parent.open_dialog(ConfirmDeletionDiag, modal=True, obj_delete=report, msg="Magasin : {}\nProduit: {}\nQuantité: {}".format(report.store, report.product, report.qty_use), table_p=self.parent.table_op) rep = Reports.select().where(Reports.date < report.date).order_by(Reports.date.desc()).get() rep.save() else: raise_error(u"Erreur", u"Impossible de supprimer ce rapport car" u" le restant sera : <b>%s</b> qui est < 0" % remaining)