Ejemplo n.º 1
0
    def __init__(self, table_group, parent, *args, **kwargs):
        QDialog.__init__(self, parent, *args, **kwargs)

        self.parent = table_group
        group_id = self.parent.table_group.group.group_id
        self.group = Group.select().where(Group.id == group_id).get()
        vbox = QVBoxLayout()
        vbox.addWidget(
            FBoxTitle(u"<h3>Groupe: {}</h3>".format(self.group.name)))
        self.order_number = LineEdit()

        # form transfer
        self.amount = LineEdit()
        self.amount.setFont(QFont("Arial", 15))
        self.amount.setValidator(QIntValidator())
        self.amount.setToolTip(u"Taper le montant du transfert")
        # self.solde = FLabel(get_solde())
        self.amount_error = ErrorLabel(u"")

        send_butt = Button(u"Envoyer")
        send_butt.clicked.connect(self.sender)
        cancel_but = Button(u"Annuler")
        cancel_but.clicked.connect(self.cancel)

        formbox = QGridLayout()
        formbox.addWidget(FLabel(u"Montant: "), 0, 0)
        formbox.addWidget(self.amount, 0, 1)
        formbox.addWidget(send_butt, 2, 1)
        formbox.addWidget(cancel_but, 2, 0)

        vbox.addLayout(formbox)
        self.setLayout(vbox)
Ejemplo n.º 2
0
    def __init__(self, table_group, parent, *args, **kwargs):
        QDialog.__init__(self, parent, *args, **kwargs)

        self.parent = table_group
        group_id = self.parent.table_group.group.group_id
        self.group = Group.select().where(Group.id == group_id).get()
        vbox = QVBoxLayout()
        vbox.addWidget(
            FBoxTitle(
                u"<h2>Envoi pour les ({0}) contactes du groupe <b>{1}</b></h2>"
                .format(len(self.group.contacts), self.group.name)))

        # form transfer
        self.amount = LineEdit()
        self.amount.setFont(QFont("Arial", 15))
        self.amount.setValidator(QIntValidator())
        self.amount.setToolTip(u"Taper le montant du transfert")
        self.amount_error = ErrorLabel(u"")
        self.password_field = EnterTabbedLineEdit()
        self.password_field.setEchoMode(LineEdit.Password)
        self.password_field.setToolTip(u"Taper le code orange money")

        self.send_butt = Button(u"Envoyer")
        self.send_butt.clicked.connect(self.sender)
        cancel_but = Button(u"Annuler")
        cancel_but.clicked.connect(self.cancel)

        formbox = QGridLayout()
        formbox.addWidget(FLabel(u"Montant: "), 0, 0)
        formbox.addWidget(self.amount, 0, 1)
        formbox.addWidget(FLabel(u"Code: "), 1, 0)
        formbox.addWidget(self.password_field, 1, 1)
        formbox.addWidget(self.send_butt, 2, 1)
        formbox.addWidget(cancel_but, 2, 0)

        self.isvalid()

        vbox.addLayout(formbox)
        self.setLayout(vbox)
Ejemplo n.º 3
0
    def __init__(self, product="", parent=0, *args, **kwargs):
        super(InvoiceViewWidget, self).__init__(parent=parent, *args, **kwargs)
        self.parentWidget().setWindowTitle(Config.NAME_ORGA + u"      FACTURATION")
        self.parent = parent

        vbox = QVBoxLayout(self)
        hbox = QHBoxLayout(self)
        editbox = QGridLayout()

        self.num_invoice = IntLineEdit("%d" % (Invoice.select().count() + 1))
        self.num_invoice.setToolTip(u"Le numéro de la facture")
        self.num_invoice.setMaximumSize(40, self.num_invoice.maximumSize().height())
        self.num_invoice_error = ErrorLabel("")
        self.invoice_date = FormatDate(QDate.currentDate())
        self.name_client = QLineEdit()
        self.name_client.setMaximumSize(200, self.name_client.maximumSize().height())
        self.name_client.setToolTip("Taper le nom du client")
        self.name_client_error = ErrorLabel("")
        self.search_field = QLineEdit()
        self.search_field.setMaximumSize(200, self.search_field.maximumSize().height())
        self.search_field.textChanged.connect(self.finder)

        self.vline = QFrame()
        self.vline.setFrameShape(QFrame.VLine)
        self.vline.setFrameShadow(QFrame.Sunken)

        self.table_invoice = OrderTableWidget(parent=self)
        self.table_resultat = ResultatTableWidget(parent=self)
        self.table_info = InfoTableWidget(parent=self)

        self.table_resultat.refresh_("")
        editbox.addWidget(FormLabel(u"Recherche:"), 0, 0)
        editbox.addWidget(self.search_field, 1, 0)
        editbox.addWidget(self.vline, 0, 1, 2, 5)
        editbox.addWidget(FormLabel(u"Facture N°:"), 0, 2)
        editbox.addWidget(self.num_invoice, 0, 3)
        editbox.addWidget(self.num_invoice_error, 0, 4)
        editbox.addWidget(FormLabel(u"Doit:"), 1, 2)
        editbox.addWidget(self.name_client, 1, 3)
        editbox.addWidget(self.name_client_error, 1, 4)
        editbox.addWidget(FormLabel(u"Date:"), 0, 5)
        editbox.addWidget(self.invoice_date, 0, 6)

        splitter = QSplitter(Qt.Horizontal)

        splitter_left = QSplitter(Qt.Vertical)
        splitter_down = QSplitter(Qt.Vertical)
        splitter_left.addWidget(FBoxTitle(u"Les resultats"))
        splitter_left.addWidget(self.table_resultat)
        splitter_down.resize(15, 20)
        splitter_down.addWidget(self.table_info)
        splitter_rigth = QSplitter(Qt.Vertical)
        splitter_rigth.addWidget(FBoxTitle(u"Les produits vendus"))
        splitter_rigth.addWidget(self.table_invoice)
        splitter_rigth.resize(500, 900)

        splitter_left.addWidget(splitter_down)
        splitter.addWidget(splitter_left)
        splitter.addWidget(splitter_rigth)

        hbox.addWidget(splitter)
        vbox.addLayout(editbox)
        vbox.addLayout(hbox)
        self.setLayout(vbox)
Ejemplo n.º 4
0
class InvoiceViewWidget(FWidget):

    def __init__(self, product="", parent=0, *args, **kwargs):
        super(InvoiceViewWidget, self).__init__(parent=parent, *args, **kwargs)
        self.parentWidget().setWindowTitle(Config.NAME_ORGA + u"      FACTURATION")
        self.parent = parent

        vbox = QVBoxLayout(self)
        hbox = QHBoxLayout(self)
        editbox = QGridLayout()

        self.num_invoice = IntLineEdit("%d" % (Invoice.select().count() + 1))
        self.num_invoice.setToolTip(u"Le numéro de la facture")
        self.num_invoice.setMaximumSize(40, self.num_invoice.maximumSize().height())
        self.num_invoice_error = ErrorLabel("")
        self.invoice_date = FormatDate(QDate.currentDate())
        self.name_client = QLineEdit()
        self.name_client.setMaximumSize(200, self.name_client.maximumSize().height())
        self.name_client.setToolTip("Taper le nom du client")
        self.name_client_error = ErrorLabel("")
        self.search_field = QLineEdit()
        self.search_field.setMaximumSize(200, self.search_field.maximumSize().height())
        self.search_field.textChanged.connect(self.finder)

        self.vline = QFrame()
        self.vline.setFrameShape(QFrame.VLine)
        self.vline.setFrameShadow(QFrame.Sunken)

        self.table_invoice = OrderTableWidget(parent=self)
        self.table_resultat = ResultatTableWidget(parent=self)
        self.table_info = InfoTableWidget(parent=self)

        self.table_resultat.refresh_("")
        editbox.addWidget(FormLabel(u"Recherche:"), 0, 0)
        editbox.addWidget(self.search_field, 1, 0)
        editbox.addWidget(self.vline, 0, 1, 2, 5)
        editbox.addWidget(FormLabel(u"Facture N°:"), 0, 2)
        editbox.addWidget(self.num_invoice, 0, 3)
        editbox.addWidget(self.num_invoice_error, 0, 4)
        editbox.addWidget(FormLabel(u"Doit:"), 1, 2)
        editbox.addWidget(self.name_client, 1, 3)
        editbox.addWidget(self.name_client_error, 1, 4)
        editbox.addWidget(FormLabel(u"Date:"), 0, 5)
        editbox.addWidget(self.invoice_date, 0, 6)

        splitter = QSplitter(Qt.Horizontal)

        splitter_left = QSplitter(Qt.Vertical)
        splitter_down = QSplitter(Qt.Vertical)
        splitter_left.addWidget(FBoxTitle(u"Les resultats"))
        splitter_left.addWidget(self.table_resultat)
        splitter_down.resize(15, 20)
        splitter_down.addWidget(self.table_info)
        splitter_rigth = QSplitter(Qt.Vertical)
        splitter_rigth.addWidget(FBoxTitle(u"Les produits vendus"))
        splitter_rigth.addWidget(self.table_invoice)
        splitter_rigth.resize(500, 900)

        splitter_left.addWidget(splitter_down)
        splitter.addWidget(splitter_left)
        splitter.addWidget(splitter_rigth)

        hbox.addWidget(splitter)
        vbox.addLayout(editbox)
        vbox.addLayout(hbox)
        self.setLayout(vbox)

    def finder(self):
        completion_values = []
        search_term = self.search_field.text()
        # try:
        #     products = Product.select().where(Product.name.icontains(search_term))
        # except ValueError:
        #     pass
        # for product in products:
        #     last_r = product.last_report_by_prod()
        #     try:
        #         completion_values.append(last_r.product.__str__())
        #     except:
        #         pass
        # completer = QCompleter(completion_values, parent=self)
        # completer.setCaseSensitivity(Qt.CaseInsensitive)
        # completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)

        # self.search_field.setCompleter(completer)
        self.table_resultat.refresh_(search_term)

    def save_b(self):
        ''' add operation '''
        # entete de la facture
        if not self.table_invoice.isvalid:
            return False
        try:
            num_invoice = int(self.num_invoice.text())
            self.num_invoice_error.setText(u"")
        except:
            self.pixmap = QPixmap(u"{img_media}{img}".format(img_media=Config.img_media,
                                                      img="warning.png"))
            self.num_invoice.setStyleSheet("background-color:  rgb(255, 235, 235);")
            self.num_invoice_error.setToolTip(u"Le numero de facture est obligatoire.")
            self.num_invoice_error.setPixmap(self.pixmap)
        invoice_date = str(self.invoice_date.text())
        name_client = str(self.name_client.text())
        datetime_ = date_to_datetime(invoice_date)

        values_t = self.table_invoice.get_table_items()
        if name_client == "":
            self.name_client.setStyleSheet("background-color: rgb(255, 235, 235);")
            self.pixmap = QPixmap(u"{img_media}{img}".format(img_media=Config.img_media,
                                                      img="decline.png"))
            self.name_client_error.setToolTip(u"Nom du client est obligatoire.")
            self.name_client_error.setPixmap(self.pixmap)
            return False
        # if num_invoice > Config.credit:
        #     raise_error(("Avertisement"), u"<h2>Veuillez payer la reste de la licence</h2>")
        #     return False
        invoice = Invoice()
        try:
            invoice.owner = Owner.get(islog=True)
        except:
            if Config.DEBUG:
                invoice.owner = Owner.get(username='******')
            else:
                return False

        invoice.number = num_invoice
        invoice.date_ord = datetime_
        invoice.client = name_client.capitalize()
        invoice.location = "Bamako"
        invoice.type_ = "Facture"
        invoice.subject = ""
        invoice.tax = False
        invoice.otax_rate = 18
        try:
            invoice.save()
        except:
            raise_error("Erreur", u"Impossible d'enregistrer l'entête de la facture")
            return False

        # Save orderitems
        try:
            order = Invoice.get(number=num_invoice)
        except:
            return False
        for i in values_t:
            qty, name, price = i
            description = Product.filter(name=name).get()
            item = InvoiceItem()
            item.invoices = invoice.id
            item.quantity = int(i[0])
            item.description = description
            item.price = int(i[2])
            try:
                item.save()
                self.name_client.clear()
                self.num_invoice.clear()
            except Exception as e:
                print(e)
                invoice.delete_instance()
                raise_error("Erreur", u"Ce mouvement n'a pas pu etre "
                                      u"enregistré dans les rapports")
                return False

        self.change_main_context(ShowInvoiceViewWidget,
                                        invoice=invoice)