def extend_rows(self): pw = (self.parentWidget().width()) / (len(self.hheaders) + 2) # if pw == 14: # pw = 125 self.setColumnWidth(0, pw * 3) self.setColumnWidth(1, pw) self.setColumnWidth(2, pw) self.setColumnWidth(3, pw) self.setColumnWidth(4, pw) nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.setSpan(nb_rows, 0, 2, 2) mtt_ttc = QTableWidgetItem(u"TOTAUX: ") mtt_ttc.setTextAlignment(Qt.AlignRight) self.setItem(nb_rows + 1, 2, mtt_ttc) self.montant_ht = 0 self.montant_b = 0 for row_num in xrange(0, self.data.__len__()): mtt = is_int(self.item(row_num, 3).text()) mttb = is_int(self.item(row_num, 4).text()) self.montant_ht += mtt self.montant_b += mttb # Montant TTC montant_t = QTableWidgetItem(formatted_number(self.montant_ht)) montant_t.setTextAlignment(Qt.AlignRight) montant_tb = QTableWidgetItem(formatted_number(self.montant_b)) montant_tb.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 2, 3, montant_t) self.setItem(row_num + 2, 4, montant_tb)
def set_data_for(self, on, end): self.data = [(rap.type_, rap.store.name, rap.product, formatted_number(rap.qty_use), formatted_number(rap.remaining), show_date(rap.date), rap.id) for rap in Reports.filter(deleted=False, date__gte=on, date__lte=end) .order_by(Reports.date.desc())]
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.setSpan(nb_rows + 2, 2, 2, 4) self.totals_debit = 0 self.totals_credit = 0 self.balance_tt = 0 cp = 0 for row_num in range(0, self.data.__len__()): mtt_debit = is_int(unicode(self.item(row_num, 2).text())) mtt_credit = is_int(unicode(self.item(row_num, 3).text())) if cp == 0: last_balance = is_int(unicode(self.item(row_num, 4).text())) self.totals_debit += mtt_debit self.totals_credit += mtt_credit cp += 1 self.balance_tt = last_balance # self.balance_tt = self.totals_debit - self.totals_credit self.label_mov_tt = u"Totals mouvements: " self.setItem(nb_rows, 1, TotalsWidget(self.label_mov_tt)) self.setItem(nb_rows, 2, TotalsWidget(formatted_number(self.totals_debit))) self.setItem(nb_rows, 3, TotalsWidget(formatted_number(self.totals_credit))) self.parent.soldeField.setText(formatted_number(self.balance_tt))
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 1) # self.setSpan(nb_rows, 0, 1, 1) mtt_ttc = QTableWidgetItem(u"TOTAUX: ") mtt_ttc.setTextAlignment(Qt.AlignRight) self.setItem(nb_rows, 0, mtt_ttc) ttl_remainig = 0 tall_in = 0 tall_out = 0 for row_num in xrange(0, self.data.__len__()): all_in = is_int(unicode(self.item(row_num, 1).text())) tall_in += all_in all_out = is_int(unicode(self.item(row_num, 2).text())) tall_out += all_out remaining = is_int(unicode(self.item(row_num, 3).text())) ttl_remainig += remaining # Montant TTC tall_in = QTableWidgetItem(formatted_number(tall_in)) tall_in.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 1, 1, tall_in) tall_out = QTableWidgetItem(formatted_number(tall_out)) tall_out.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 1, 2, tall_out) ttl_remainig = QTableWidgetItem(formatted_number(ttl_remainig)) ttl_remainig.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 1, 3, ttl_remainig)
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 set_data_for(self): date = self.parent.date_.text() self.data = [ (rap.product.name, formatted_number(rap.qty), formatted_number(rap.selling_price), rap.qty * rap.selling_price) for rap in Report.select().where( Report.type_ == Report.S, Report.date < date_on_or_end(date, on=False), Report.date > date_on_or_end(date)).order_by(Report.id.desc()) ] self.refresh()
def set_data_for(self): date = self.parent.date_.text() self.data = [(rap.product.name, formatted_number(rap.qty), formatted_number(rap.selling_price), rap.qty * rap.selling_price) for rap in Report.select().where( Report.type_ == Report.S, Report.date < date_on_or_end(date, on=False), Report.date > date_on_or_end(date) ).order_by(Report.id.desc())] self.refresh()
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 1) self.setItem(nb_rows, 3, TotalsWidget(u"Totaux: ")) v_amount_tt_item = TotalsWidget(formatted_number(self.v_amount_tt)) self.setItem(nb_rows, 4, v_amount_tt_item) self.setItem(nb_rows, 6, TotalsWidget(formatted_number(self.b_f_tt))) # self.cancelbutton = DeletedBtt(u"Annuler l'achat") # self.cancelbutton.released.connect(self.parent.cancellation) self.setSpan(nb_rows, 0, 1, 3)
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 1) self.setItem(nb_rows, 3, TotalsWidget("Totaux: ")) v_amount_tt_item = TotalsWidget(formatted_number(self.v_amount_tt)) self.setItem(nb_rows, 4, v_amount_tt_item) self.setItem(nb_rows, 6, TotalsWidget(formatted_number(self.b_f_tt))) # self.cancelbutton = Deleted_btt(u"Annuler l'achat") # self.cancelbutton.released.connect(self.parent.cancellation) self.setSpan(nb_rows, 0, 1, 3)
def changed_value(self, refresh=False): """ Calcule les Resultat """ self.mtt_ht = 0 # self.button.setEnabled(False) for row_num in xrange(0, self.data.__len__()): product = Product.get( Product.name == unicode(self.item(row_num, 0).text())) last_report = product.last_report last_price = product.last_price() qtremaining = last_report.remaining selling_price = last_price invoice_date = unicode(self.parent.invoice_date.text()) qtsaisi = is_int(self.cellWidget(row_num, 1).text()) pusaisi = is_int(self.cellWidget(row_num, 2).text()) if check_is_empty(self.parent.num_invoice): return if check_is_empty(self.parent.name_client_field.lineEdit()): return # if check_field(self.parent.invoice_date, # "Le {} est Inférieure à la date de la dernière rapport (<b>{}</b>)".format(date_to_datetime(invoice_date), last_report.date), (last_report.date > date_to_datetime(invoice_date))): # return if (pusaisi and check_is_empty(self.cellWidget(row_num, 1))): return if (pusaisi and check_is_empty(self.cellWidget(row_num, 2))): return if check_field( self.cellWidget(row_num, 1), u"<b>{}</b> est supérieur à la quantité restante (<b>{}</b>)" .format(qtsaisi, qtremaining), qtremaining < qtsaisi): return if check_field( self.cellWidget(row_num, 2), u"<b>{}</b> est inférieure au prix minimum de vente<b> {} CFA</b>" .format(pusaisi, selling_price), pusaisi < selling_price): print("E") # return montant = (qtsaisi * pusaisi) self.mtt_ht += montant self.setItem(row_num, 3, TotalsWidget(formatted_number(montant))) self._update_data(row_num, [qtsaisi, pusaisi, self.mtt_ht]) self.setItem(row_num + 1, 3, TotalsWidget(formatted_number(self.mtt_ht))) typ = self.parent.liste_type_invoice[ self.parent.box_type_inv.currentIndex()] self.paid_amount_field.setText( str(self.mtt_ht) if typ == Invoice.TYPE_BON else "0") self.button.setEnabled(True)
def changed_value(self, refresh=False): """ Calcule les Resultat """ mtt_ht = 0 for row_num in xrange(0, self.data.__len__()): last_report = Product.filter(name=str(self.item(row_num, 1) .text())).get().last_report try: qtremaining = last_report.remaining except AttributeError: qtremaining = 0 qtsaisi = is_int(self.cellWidget(row_num, 0).text()) pu = is_int(self.cellWidget(row_num, 2).text()) self.isvalid = True viderreur_qtsaisi = "" viderreur_pu = "" stylerreur = "background-color: rgb(255, 235, 235);" + \ "border: 3px double SeaGreen" if qtsaisi == 0: viderreur_qtsaisi = stylerreur self.cellWidget(row_num, 0).setToolTip(u"obligatoire") self.isvalid = False if pu == 0: viderreur_pu = stylerreur self.cellWidget(row_num, 0).setToolTip(u"obligatoire") self.isvalid = False self.cellWidget(row_num, 0).setStyleSheet(viderreur_qtsaisi) self.cellWidget(row_num, 2).setStyleSheet(viderreur_pu) self.cellWidget(row_num, 0).setToolTip("") if qtremaining < qtsaisi: self.cellWidget(row_num, 0).setStyleSheet("font-size:20px;" " color: red") self.cellWidget(row_num, 0).setToolTip(u"%s est > %s (stock" u" remaining)" % (qtsaisi, qtremaining)) # self.isvalid = False # return False ui_item = (qtsaisi * pu) mtt_ht += ui_item montt = QTableWidgetItem(formatted_number(ui_item)) montt.setTextAlignment(Qt.AlignRight) self.setItem(row_num, 3, montt) monttc = QTableWidgetItem(formatted_number(mtt_ht)) monttc.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 1, 3, monttc)
def changed_value(self, refresh=False): some = 0 for row_num in xrange(0, self.data.__len__()): ui_item = (is_int(self.item(row_num, 1).text()) * is_int(self.cellWidget(row_num, 2).text())) some += ui_item ui_item_ = QTableWidgetItem(formatted_number(ui_item)) ui_item_.setTextAlignment(Qt.AlignRight) self.setItem(row_num, 3, ui_item_) row_num += 1 som_val = QTableWidgetItem(formatted_number(some)) som_val.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 1, 2, QTableWidgetItem(u"%s" % u"TOTAUX")) self.setItem(row_num + 1, 3, som_val)
def changed_value(self, refresh=False): """ Calcule les Resultat """ self.mtt_ht = 0 # self.button.setEnabled(False) for row_num in xrange(0, self.data.__len__()): product = Product.get( Product.name == unicode(self.item(row_num, 0).text())) last_report = product.last_report last_price = product.last_price() qtremaining = last_report.remaining selling_price = last_price invoice_date = unicode(self.parent.invoice_date.text()) qtsaisi = is_int(self.cellWidget(row_num, 1).text()) pusaisi = is_int(self.cellWidget(row_num, 2).text()) if check_is_empty(self.parent.num_invoice): return if check_is_empty(self.parent.name_client_field.lineEdit()): return # if check_field(self.parent.invoice_date, # "Le {} est Inférieure à la date de la dernière rapport (<b>{}</b>)".format(date_to_datetime(invoice_date), last_report.date), (last_report.date > date_to_datetime(invoice_date))): # return if (pusaisi and check_is_empty(self.cellWidget(row_num, 1))): return if (pusaisi and check_is_empty(self.cellWidget(row_num, 2))): return if check_field(self.cellWidget(row_num, 1), u"<b>{}</b> est supérieur à la quantité restante (<b>{}</b>)".format( qtsaisi, qtremaining), qtremaining < qtsaisi): return if check_field(self.cellWidget(row_num, 2), u"<b>{}</b> est inférieure au prix minimum de vente<b> {} CFA</b>".format( pusaisi, selling_price), pusaisi < selling_price): print("E") # return montant = (qtsaisi * pusaisi) self.mtt_ht += montant self.setItem(row_num, 3, TotalsWidget(formatted_number(montant))) self._update_data(row_num, [qtsaisi, pusaisi, self.mtt_ht]) self.setItem( row_num + 1, 3, TotalsWidget(formatted_number(self.mtt_ht))) typ = self.parent.liste_type_invoice[ self.parent.box_type_inv.currentIndex()] self.paid_amount_field.setText( str(self.mtt_ht) if typ == Invoice.TYPE_BON else "0") self.button.setEnabled(True)
def __init__(self, table_p, parent, provid_clt=None, type_=None, refund=None, *args, **kwargs): QDialog.__init__(self, parent, *args, **kwargs) self.type_ = type_ self.refund = refund self.parent = parent self.table_p = table_p self.provid_clt = provid_clt self.new = True if self.refund: self.new = False self.last_r = self.refund self.type_ = refund.type_ self.refund_date_field = FormatDate(self.refund.date) self.refund_date_field.setEnabled(False) self.title = u"Modification de {} {}".format(self.refund.type_, self.refund.invoice.client) self.succes_msg = u"{} a été bien mise à jour".format( self.refund.type_) self.amount = refund.amount self.provid_clt = refund.provider_client else: self.refund_date_field = FormatDate(QDate.currentDate()) self.succes_msg = u"Client a été bien enregistré" self.title = u"Création d'un nouvel client" self.amount = "" self.refund = Refund() self.last_r = Refund.select().where( Refund.provider_client == provid_clt).order_by(Refund.date.desc()).get() self.setWindowTitle(self.title) self.amount_field = IntLineEdit(unicode(self.amount)) vbox = QVBoxLayout() self.last_remaining = self.last_r.refund_remaing() print(self.last_remaining) # try: # self.last_r.refund_remaing() # self.remaining = self.last_r.remaining # except Exception as e: # self # print("last_r except ", e) # self.last_r = None # self.close() formbox = QFormLayout() formbox.addRow(FormLabel("Client :"), FormLabel(self.provid_clt.name)) formbox.addRow(FormLabel("Dette restante :"), FormLabel(str(formatted_number(self.last_remaining)) + Config.DEVISE)) formbox.addRow(FormLabel(u"Date : *"), self.refund_date_field) formbox.addRow(FormLabel(u"Montant : *"), self.amount_field) butt = Button_save(u"Enregistrer") butt.clicked.connect(self.save_edit) formbox.addRow("", butt) # formbox.addRow("", "Le client {} n'est pas endetté") vbox.addLayout(formbox) self.setLayout(vbox)
def display_name(self): from Common.ui.util import formatted_number ctct = "{}".format(formatted_number(self.number)) if self.name: ctct = u"({number}) {name}".format(name=self.name.title(), number=ctct) return ctct
def display_name(self): from Common.ui.util import formatted_number ctct = "{}".format(formatted_number(self.number)) if self.name: ctct = u"({number}) {name}".format( name=self.name.title(), number=ctct) return ctct
def __init__(self, table_p, parent, provid_clt=None, type_=None, refund=None, *args, **kwargs): QDialog.__init__(self, parent, *args, **kwargs) self.type_ = type_ self.refund = refund self.parent = parent self.table_p = table_p self.provid_clt = provid_clt self.new = True if self.refund: self.new = False self.last_r = self.refund self.type_ = refund.type_ self.refund_date_field = FormatDate(self.refund.date) self.refund_date_field.setEnabled(False) self.title = u"Modification de {} {}".format(self.refund.type_, self.refund.invoice.client) self.succes_msg = u"{} a été bien mise à jour".format( self.refund.type_) self.amount = refund.amount self.provid_clt = refund.provider_client else: self.refund_date_field = FormatDate(QDate.currentDate()) self.succes_msg = u"Client a été bien enregistré" self.title = u"Création d'un nouvel client" self.amount = "" self.refund = Refund() self.last_r = Refund.select().where( Refund.provider_client == provid_clt).order_by(Refund.date.desc()).get() self.setWindowTitle(self.title) self.amount_field = IntLineEdit(unicode(self.amount)) vbox = QVBoxLayout() self.last_remaining = self.last_r.refund_remaing() # try: # self.last_r.refund_remaing() # self.remaining = self.last_r.remaining # except Exception as e: # self # print("last_r except ", e) # self.last_r = None # self.close() formbox = QFormLayout() formbox.addRow(FormLabel("Client :"), FormLabel(self.provid_clt.name)) formbox.addRow(FormLabel("Dette restante :"), FormLabel(str(formatted_number(self.last_remaining)))) formbox.addRow(FormLabel(u"Date : *"), self.refund_date_field) formbox.addRow(FormLabel(u"Montant : *"), self.amount_field) butt = ButtonSave(u"Enregistrer") butt.clicked.connect(self.save_edit) formbox.addRow("", butt) # formbox.addRow("", "Le client {} n'est pas endetté") vbox.addLayout(formbox) self.setLayout(vbox)
def set_data_for(self): """ completed the table """ self._data = [ (transfer.contact.display_name(), formatted_number(transfer.amount), transfer.date.strftime(u"%c"), transfer.response) for transfer in Transfer.select().order_by(Transfer.date.desc()) ]
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.montant_ht = 0 for row_num in xrange(0, self.data.__len__()): self.montant_ht += (is_int(self.item(row_num, 0).text()) * is_int(self.item(row_num, 2).text())) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Totaux : ")) self.setItem( row_num, 3, TotalsWidget(formatted_number(self.montant_ht))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Montant payé : ")) self.setItem(row_num, 3, TotalsWidget( formatted_number(self.montant_ht - self.parent.invoice.paid_amount))) self.setSpan(nb_rows, 0, 2, 2)
def set_data_for(self, number): if not number: return try: self.data = [(transf.contact.number, transf.date.strftime(u"%c"), formatted_number(transf.amount), transf.response) for transf in Transfer.filter(contact__number=number).order_by(Transfer.date.desc())] except AttributeError: raise self.hheaders = [u"Vide", ] self.data = ["", "Aucun transfers", "", ]
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.setSpan(nb_rows, 0, 2, 2) self.setItem(nb_rows + 1, 2, TotalsWidget(u"TOTAUX: ")) self.sum_totals = 0 for row_num in xrange(0, self.data.__len__()): self.sum_totals += is_int(self.item(row_num, 3).text()) self.setItem( row_num + 2, 3, TotalsWidget(formatted_number(self.sum_totals)))
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.setSpan(nb_rows, 0, 2, 2) self.setItem(nb_rows + 1, 2, TotalsWidget(u"TOTAUX: ")) self.sum_totals = 0 for row_num in xrange(0, self.data.__len__()): self.sum_totals += is_int(self.item(row_num, 3).text()) self.setItem(row_num + 2, 3, TotalsWidget(formatted_number(self.sum_totals)))
def extend_rows(self): self.parent.btt_export.setEnabled(True) nb_rows = self.rowCount() date = self.parent.date_.text() self.setRowCount(nb_rows + 4) self.amount_ht = 0 for row_num in xrange(0, self.data.__len__()): mtt = is_int(self.item(row_num, 3).text()) self.amount_ht += mtt row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Total vente : ")) self.amount_apricot = self.amount_ht self.setItem( row_num, 3, TotalsWidget(formatted_number(formatted_number(self.amount_ht)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Dette du jour : ")) self.total_debt = Refund.select(fn.SUM(Refund.amount)).where( Refund.type_ == Refund.DT, Refund.date < date_on_or_end(date, on=False), Refund.date > date_on_or_end(date)).scalar() or 0 if self.total_debt: self.amount_apricot -= self.total_debt self.setItem( row_num, 3, TotalsWidget(formatted_number(formatted_number(self.total_debt)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Dette reglée : ")) self.total_refund = Refund.select(fn.SUM(Refund.amount)).where( Refund.type_ == Refund.RB, Refund.date < date_on_or_end(date, on=False), Refund.date > date_on_or_end(date)).scalar() or 0 if self.total_refund: self.amount_apricot += self.total_refund self.setItem( row_num, 3, TotalsWidget(formatted_number(formatted_number( self.total_refund)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Caise : ")) self.setItem( row_num, 3, TotalsWidget( formatted_number(formatted_number(self.amount_apricot)))) self.setSpan(nb_rows, 0, 4, 2)
def changed_value(self, refresh=False): """ Calcule les Resultat """ b_f_tt = 0 v_amount_tt = 0 for row_num in xrange(0, self.data.__len__()): qtsaisi = is_int(self.cellWidget(row_num, 1).text()) or 1 cost_buying = is_int(self.cellWidget(row_num, 2).text()) selling_price = is_int(self.cellWidget(row_num, 3).text()) self.isvalid = True # if not selling_price: # return if (selling_price and check_is_empty(self.cellWidget(row_num, 1))): self.isvalid = False if (selling_price and check_is_empty(self.cellWidget(row_num, 2))): self.isvalid = False if (check_is_empty(self.cellWidget(row_num, 3))): self.isvalid = False r_amount = qtsaisi * cost_buying v_amount = qtsaisi * selling_price b_f = v_amount - r_amount b_f_u = b_f / qtsaisi b_f_tt += b_f v_amount_tt += v_amount # montt.setTextAlignment(Qt.AlignRight) self.setItem(row_num, 4, TotalsWidget(formatted_number(v_amount))) self.setItem(row_num, 5, TotalsWidget(formatted_number(b_f_u))) self.setItem(row_num, 6, TotalsWidget(formatted_number(b_f))) # Mise à jour self._update_data( row_num, [qtsaisi, cost_buying, selling_price, v_amount, b_f_u, b_f]) row_num += 1 self.setItem(row_num, 4, TotalsWidget(formatted_number(v_amount_tt))) self.setItem(row_num, 6, TotalsWidget(formatted_number(b_f_tt)))
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 1) self.setSpan(nb_rows, 0, 1, 2) self.setItem(nb_rows, 3, TotalsWidget(u"Montant")) self.setItem(nb_rows, 6, TotalsWidget(formatted_number(u"%d" % 0))) nb_rows += 1 self.setRowCount(nb_rows + 1) self.setSpan(nb_rows, 0, 1, 6) bicon = QIcon.fromTheme('', QIcon(u"{}".format(Config.img_cmedia))) self.button = QPushButton(bicon, u"Enregistrer") self.button.released.connect(self.parent.save_b) self.setCellWidget(nb_rows, 6, self.button)
def _format_for_table(self, value): ''' formats input value for string in table widget override it to add more formats''' if isinstance(value, basestring): return value if isinstance(value, (int, float, long)): return formatted_number(value) elif isinstance(value, datetime.datetime): return value.strftime("%A %d/%m/%Y à %Hh:%Mmn") elif isinstance(value, datetime.date): return value.strftime("%A %d/%m/%Y") if value == None: return '' return u"%s" % value
def set_data_for(self, provid_clt_id=None, search=None): self.provid_clt_id = provid_clt_id qs = Refund.select().where(Refund.status == False).order_by( Refund.date.desc()) self.remaining = 0 if isinstance(provid_clt_id, int): qs = qs.select().where( Refund.provider_client == ProviderOrClient.get( id=provid_clt_id)) else: for prov in ProviderOrClient.select().where( ProviderOrClient.type_ == ProviderOrClient.CLT): self.remaining += prov.last_remaining() self.parent.remaining_box.setText( self.display_remaining(formatted_number(self.remaining))) self.data = [(ref.id, ref.type_, ref.date, ref.invoice.number, ref.amount, ref.remaining) for ref in qs.iterator()]
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 1) self.setSpan(nb_rows, 0, 1, 2) self.setItem(nb_rows, 2, QTableWidgetItem(u"Montant")) monttc = QTableWidgetItem(formatted_number(u"%d" % 0)) monttc.setTextAlignment(Qt.AlignRight) self.setItem(nb_rows, 3, monttc) nb_rows += 1 self.setRowCount(nb_rows + 1) self.setSpan(nb_rows, 0, 1, 3) self.button = Button_save(u"Enregistrer") self.button.released.connect(self.parent.save_b) self.setCellWidget(nb_rows, 3, self.button) pw = (self.parentWidget().width()) / 5 self.setColumnWidth(0, pw) self.setColumnWidth(1, pw * 2)
def extend_rows(self): nb_rows = self.rowCount() date = self.parent.date_.text() self.setRowCount(nb_rows + 4) self.amount_ht = 0 for row_num in xrange(0, self.data.__len__()): mtt = is_int(self.item(row_num, 3).text()) self.amount_ht += mtt row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Total vente : ")) self.amount_apricot = self.amount_ht self.setItem(row_num, 3, TotalsWidget( formatted_number(formatted_number(self.amount_ht)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Dette du jour : ")) self.total_debt = Refund.select(fn.SUM(Refund.amount)).where( Refund.type_ == Refund.DT, Refund.date < date_on_or_end( date, on=False), Refund.date > date_on_or_end(date)).scalar() or 0 if self.total_debt: self.amount_apricot -= self.total_debt self.setItem(row_num, 3, TotalsWidget( formatted_number(formatted_number(self.total_debt)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Dette reglée : ")) self.total_refund = Refund.select(fn.SUM(Refund.amount)).where( Refund.type_ == Refund.RB, Refund.date < date_on_or_end( date, on=False), Refund.date > date_on_or_end(date)).scalar() or 0 if self.total_refund: self.amount_apricot += self.total_refund self.setItem(row_num, 3, TotalsWidget( formatted_number(formatted_number(self.total_refund)))) row_num += 1 self.setItem(row_num, 2, TotalsWidget(u"Caise : ")) self.setItem(row_num, 3, TotalsWidget( formatted_number(formatted_number(self.amount_apricot)))) self.setSpan(nb_rows, 0, 4, 2)
def extend_rows(self): self.nb_rows = self.rowCount() self.setRowCount(self.nb_rows + 1) self.setItem(self.nb_rows, 0, TotalsWidget(u"Totaux: ")) self.setItem( self.nb_rows, 7, TotalsWidget(formatted_number(self.totals))) self.setItem( self.nb_rows, 1, TotalsWidget(formatted_number(self.total_sum_d1))) self.setItem( self.nb_rows, 2, TotalsWidget(formatted_number(self.total_sum_d2))) self.setItem( self.nb_rows, 3, TotalsWidget(formatted_number(self.total_sum_d3))) self.setItem( self.nb_rows, 4, TotalsWidget(formatted_number(self.total_sum_d4))) self.setItem( self.nb_rows, 5, TotalsWidget(formatted_number(self.total_sum_d5))) self.setItem( self.nb_rows, 6, TotalsWidget(formatted_number(self.total_sum_d6)))
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) nb_rows += 1 self.setItem(nb_rows, 3, TotalsWidget(u"Dette restante: ")) if isinstance(self.provid_clt_id, int): self.remaining = is_int( self.item(self.data.__len__() - 1, 5).text()) else: self.remaining = 0 # for prov in ProviderOrClient.select().where( # ProviderOrClient.type_ == ProviderOrClient.CLT): # rmaing = Refund.select(Refund.provider_client == prov).order_by( # Refund.date.desc()).get() # self.remaining += rmaing.remaining if rmaing else 0 self.setItem( nb_rows, 4, TotalsWidget(formatted_number(self.remaining))) self.btt_refund = QPushButton(u"Reglement") self.setSpan(nb_rows - 1, 0, 2, 3)
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 3) self.setItem(nb_rows, 2, TotalsWidget(u"Montant")) monttc = TotalsWidget(formatted_number(u"%d" % 0)) self.setItem(nb_rows, 3, monttc) nb_rows += 1 bicon = QIcon.fromTheme('', QIcon(u"{}save.png".format(Config.img_media))) self.button = QPushButton(bicon, u"Enregistrer") self.button.released.connect(self.parent.save_b) self.button.setEnabled(False) self.setItem(nb_rows, 2, TotalsWidget(u"Reste à payer")) self.paid_amount_field = IntLineEdit() self.setCellWidget(nb_rows, 3, self.paid_amount_field) self.setCellWidget(nb_rows + 1, 3, self.button) self.setSpan(nb_rows - 1, 0, 3, 2) pw = self.parent.parent.page_width() / 7 self.setColumnWidth(0, pw * 2) self.setColumnWidth(1, pw) self.setColumnWidth(2, pw)
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 3) self.setItem(nb_rows, 2, TotalsWidget(u"Montant")) monttc = TotalsWidget(formatted_number(u"%d" % 0)) self.setItem(nb_rows, 3, monttc) nb_rows += 1 bicon = QIcon.fromTheme( '', QIcon(u"{}save.png".format(Config.img_media))) self.button = QPushButton(bicon, u"Enregistrer") self.button.released.connect(self.parent.save_b) self.button.setEnabled(False) self.setItem(nb_rows, 2, TotalsWidget(u"Reste à payer")) self.paid_amount_field = IntLineEdit() self.setCellWidget(nb_rows, 3, self.paid_amount_field) self.setCellWidget(nb_rows + 1, 3, self.button) self.setSpan(nb_rows - 1, 0, 3, 2) pw = self.parent.parent.page_width() / 7 self.setColumnWidth(0, pw * 2) self.setColumnWidth(1, pw) self.setColumnWidth(2, pw)
def extend_rows(self): nb_rows = self.rowCount() self.setRowCount(nb_rows + 3) self.setSpan(nb_rows, 0, 3, 2) mtt_ttc = QTableWidgetItem(u"Total: ") mtt_ttc.setTextAlignment(Qt.AlignRight) self.setItem(nb_rows + 1, 2, mtt_ttc) montant_ht = 0 for row_num in xrange(0, self.data.__len__()): quantity = is_int(self.item(row_num, 0).text()) pu = is_int(self.item(row_num, 2).text()) montant_ht += (quantity * pu) # Montant TTC montant_ttc = QTableWidgetItem(formatted_number(montant_ht)) montant_ttc.setTextAlignment(Qt.AlignRight) self.setItem(row_num + 2, 3, montant_ttc) # bicon = QIcon.fromTheme('', QIcon(u"{}del.png".format(Config.img_media))) # self.button = QPushButton(bicon, u"Annuler la facture") self.button = Deleted_btt(u"Annuler la facture") self.button.released.connect(self.parent.annulation)
def extend_rows(self): pw = (self.parentWidget().width()) / 4 self.setColumnWidth(0, pw) self.setColumnWidth(1, pw) self.setColumnWidth(2, pw) self.setColumnWidth(3, pw) nb_rows = self.rowCount() self.setRowCount(nb_rows + 2) self.setSpan(nb_rows, 0, 2, 2) mtt_ttc = QtGui.QTableWidgetItem(u"TOTAUX: ") mtt_ttc.setTextAlignment(QtCore.Qt.AlignRight) self.setItem(nb_rows + 1, 2, mtt_ttc) self.montant_ht = 0 for row_num in xrange(0, self.data.__len__()): mtt = is_int(self.item(row_num, 3).text()) self.montant_ht += mtt # Montant TTC montant_ttc = QtGui.QTableWidgetItem(formatted_number(self.montant_ht)) montant_ttc.setTextAlignment(QtCore.Qt.AlignRight) self.setItem(row_num + 2, 3, montant_ttc)
def pdf_view(invoice): """ cette views est cree pour la generation du PDF """ # print(filename) # on recupere les items de la facture items_invoice = invoice.get("data") file_name = invoice.get("file_name") # title = invoice.get("title") # Static source pdf to be overlayed template_pdf = 'templates/fact_source.pdf' tmp_file = 'tmp.pdf' # DATE_FORMAT = u"%d/%m/%Y" # DEFAULT_FONT_SIZE = 11 # FONT = 'Courier-Bold' # A simple function to return a leading 0 on any single digit int. def double_zero(value): try: return '%02d' % value except TypeError: return value # setup the empty canvas from io import FileIO as file # from Common.pyPdf import PdfFileWriter, PdfFileReader from PyPDF2 import PdfFileWriter, PdfFileReader # PDF en entrée input1 = PdfFileReader(file(template_pdf, "rb")) # PDF en sortie output = PdfFileWriter() # Récupération du nombre de pages n_pages = input1.getNumPages() # Pour chaque page for i in range(n_pages): # Récupération de la page du doc initial (input1) page = input1.getPage(i) p = canvas.Canvas(tmp_file, pagesize=A4) # p.setFont(FONT, DEFAULT_FONT_SIZE) p.drawString(50, 683, invoice.get("invoice_type") + " N° : " + str(invoice.get("number"))) p.drawString(50, 667, "Doit à :" + str(invoice.get("name_client"))) p.drawString(450, 683, "Date : " + str(invoice.get("invoice_date"))) # On ecrit les invoiceitem x, y = 20, 625 cpt = 1 ht = 0 print(items_invoice) for qtty, designation, amount, montant in items_invoice: # montant = qtty * amount p.drawString(x + 43, y, str(cpt)) p.drawString(x + 55, y, str(designation)) p.drawRightString( x + 378, y, str(formatted_number(qtty))) p.drawRightString( x + 452, y, str(formatted_number(amount))) p.drawRightString( x + 535, y, str(formatted_number(montant))) y -= 20 ht += montant cpt += 1 ht_en_lettre = num2words(ht) p.drawRightString(555, 223, str(formatted_number(ht))) ht_en_lettre1, ht_en_lettre2 = controle_caratere( "Arrêté la présente facture à la somme de : " + ht_en_lettre + " francs CFA", 10, 90) p.drawString(50, 176, (ht_en_lettre1)) p.drawString(55, 160, (ht_en_lettre2)) p.drawString(450, 120, ('Le Fournisseur')) p.showPage() # Sauvegarde de la page p.save() # Création du watermark watermark = PdfFileReader(file(tmp_file, "rb")) # Création page_initiale+watermark page.mergePage(watermark.getPage(0)) # Création de la nouvelle page output.addPage(page) file_dest = file_name output_stream = file(file_dest, u"wb") output.write(output_stream) output_stream.close() return file_dest
def pdf_view(filename, invoice): """ cette views est cree pour la generation du PDF """ if not filename: filename = get_temp_filename('pdf') # print(filename) # on recupere les items de la facture items_invoice = Report.filter(invoice=invoice) # Static source pdf to be overlayed PDFSOURCE = Config.INV_TEMPLATE_PDF TMP_FILE = os.path.join(Config.ROOT_DIR, 'tmp.pdf') DATE_FORMAT = u"%d/%m/%Y" DEFAULT_FONT_SIZE = 11 FONT = 'Times-Roman' # PDF en entrée input1 = PdfFileReader(file(PDFSOURCE, "rb")) # PDF en sortie output = PdfFileWriter() # Récupération du nombre de pages n_pages = input1.getNumPages() # Pour chaque page for i in range(n_pages): # Récupération de la page du doc initial (input1) page = input1.getPage(i) p = canvas.Canvas(TMP_FILE, pagesize=A4) p.setFont(FONT, DEFAULT_FONT_SIZE) p.drawString(115, 639, str(invoice.number)) p.drawString(82, 625, (invoice.client.name)) p.drawString(445, 625, str(invoice.date.strftime(DATE_FORMAT))) # On ecrit les invoiceitem x, y = 122, 574 x_qty = x x_description = x + 10 x_price = x + 340 x_amount = x + 433 for i in items_invoice: p.drawRightString(x_qty, y, str(i.qty)) p.drawString(x_description, y, str(i.product.name)) p.drawRightString(x_price, y, str( formatted_number(i.selling_price))) p.drawRightString(x_amount, y, str(formatted_number( i.selling_price * i.qty))) y -= 17 # On calcul le montant total hors taxe et sa conversion en lettre ht = sum([(val.selling_price * val.qty) for val in items_invoice]) tax_rate = invoice.tax_rate if invoice.tax else 0 mt_tax = int((ht * tax_rate) / 100) htt = mt_tax + ht ht_en_lettre = num2words(ht, lang="fr") ht_en_lettre1, ht_en_lettre2 = controle_caratere( ht_en_lettre + " francs CFA", 50, 50) p.drawString(260, 191, (ht_en_lettre1)) p.drawString(50, 175, (ht_en_lettre2)) p.setFont('Times-Bold', 11) p.drawString(52, 639, "Facture N° :") p.drawString(x_price - 20, 248, str(tax_rate) + "%") # TVA p.drawRightString(x_amount, 248, device_amount(mt_tax)) # Hors Taxe p.drawRightString(x_amount, 265, str(device_amount(ht))) # Tout Taxe p.drawRightString(x_amount, 232, str(device_amount(htt))) x_foot = 145 p.drawString(50, x_foot, "Acceptation" if invoice.type_ == "Proforma" else "Acquit") p.drawString(490, x_foot, "Fournisseur") p.showPage() # Sauvegarde de la page p.save() # Création du watermark watermark = PdfFileReader(file(TMP_FILE, "rb")) # Création page_initiale+watermark page.mergePage(watermark.getPage(0)) # Création de la nouvelle page output.addPage(page) # Nouveau pdf file_dest = filename + ".pdf" try: outputStream = file(file_dest, u"wb") output.write(outputStream) outputStream.close() return file_dest except OSError as e: from Common.ui.util import raise_error raise_error(u"Impossible de lancer le PDF", """ Car un autre en cours d'utilistation. Kill le \n{}""".format(e)) return
def extend_rows(self): if isinstance(self.provid_clt_id, int): self.remaining = is_int(self.item(0, 5).text()) self.parent.remaining_box.setText( self.display_remaining(formatted_number(self.remaining)))
def set_data_for(self): """ completed the table """ self._data = [(transfer.contact.display_name(), formatted_number(transfer.amount), transfer.date.strftime(u"%c"), transfer.response) for transfer in Transfer.select().order_by(Transfer.date.desc())]