예제 #1
0
파일: by_product.py 프로젝트: fadiga/mstock
    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]
예제 #2
0
    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]
예제 #3
0
    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]
예제 #4
0
파일: dashboard.py 프로젝트: fadiga/mstock
 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())]
예제 #5
0
    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))
예제 #6
0
 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)