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 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 __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 popup(self, pos): row = self.selectionModel().selection().indexes()[0].row() if (len(self.data) - 1) < row: return refund = Refund.get(id=self.data[row][0]) # if refund.type_ != Refund.RB: # return menu = QMenu() edit_refund = menu.addAction("Modification") del_refund = menu.addAction("Suprimer") action = menu.exec_(self.mapToGlobal(pos)) if action == del_refund: from ui.deleteview import DeleteViewWidget self.parent.open_dialog(DeleteViewWidget, modal=True, obj=refund, table_p=self) if action == edit_refund: from ui.refund_edit_add import RefundEditAddDialog self.parent.open_dialog(RefundEditAddDialog, modal=True, type_=Refund.RB, refund=refund, table_p=self)
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()) if isinstance(provid_clt_id, int): qs = qs.select().where( Refund.provider_client == ProviderOrClient.get(id=provid_clt_id)) self.data = [(ref.id, ref.type_, show_date(ref.date), ref.invoice.number, ref.amount, ref.remaining) for ref in qs]
def process_refund(notification): # Store the refund, and send an email! if notification.success: try: ts = TransactionStatus.objects.get(pspReference=notification.originalReference) refund = Refund(notification=notification, transaction=ts, refund_amount=notification.amount) refund.save() # Generate an open accounting record for this refund. # We expect this happens so seldom that we can just deal with # manually finishing off the accounting records. urls = [ "https://ca-live.adyen.com/ca/ca/accounts/showTx.shtml?pspReference=%s&txType=Payment&accountKey=MerchantAccount.%s" % (notification.pspReference, notification.merchantAccountCode), ] accrows = [ (settings.ACCOUNTING_ADYEN_REFUNDS_ACCOUNT, "Refund of %s (transaction %s) " % (ts.notes, ts.pspReference), -refund.refund_amount, None), ] send_simple_mail(settings.INVOICE_SENDER_EMAIL, settings.ADYEN_NOTIFICATION_RECEIVER, 'Adyen refund received', "A refund of %s%s for transaction %s was processed\n\nNOTE! You must complete the accounting system entry manually for refunds!" % (settings.CURRENCY_ABBREV, notification.amount, notification.originalReference)) create_accounting_entry(date.today(), accrows, True, urls) except TransactionStatus.DoesNotExist: send_simple_mail(settings.INVOICE_SENDER_EMAIL, settings.ADYEN_NOTIFICATION_RECEIVER, 'Adyen refund received for nonexisting transaction', "A refund for %s was received, but the transaction does not exist!\n\nYou probably want to investigate this!\n" % notification.originalReference) else: send_simple_mail(settings.INVOICE_SENDER_EMAIL, settings.ADYEN_NOTIFICATION_RECEIVER, 'Unsuccessful adyen refund received', "A refund for %s has failed.\nThe reason given was:\n%s\n\nYou probably want to investigate this!\n" % ( notification.merchantReference, notification.reason)) notification.confirmed = True notification.save()
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 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 popup(self, pos): row = self.selectionModel().selection().indexes()[0].row() if (len(self.data) - 1) < row: return refund = Refund.get(id=self.data[row][0]) # if refund.type_ != Refund.RB: # return menu = QMenu() edit_refund = menu.addAction("Modification") del_refund = menu.addAction("Suprimer") action = menu.exec_(self.mapToGlobal(pos)) if action == del_refund: from ui.deleteview import DeleteViewWidget self.parent.open_dialog( DeleteViewWidget, modal=True, obj=refund, table_p=self) if action == edit_refund: from ui.refund_edit_add import RefundEditAddDialog self.parent.open_dialog( RefundEditAddDialog, modal=True, type_=Refund.RB, refund=refund, table_p=self)
def save_b(self): ''' add operation ''' # entete de la facture print("save") if not self.is_valide(): return invoice_date = unicode(self.invoice_date.text()) num_invoice = int(self.num_invoice.text()) invoice_type = self.liste_type_invoice[ self.box_type_inv.currentIndex()] lis_error = [] invoice = Invoice() try: self.owner = Owner.get(Owner.islog == True) except: lis_error.append("Aucun utilisateur est connecté <br/>") paid_amount = int(self.table_invoice.paid_amount_field.text()) try: clt = ProviderOrClient.get_or_create( self.name_client, int(self.phone.replace(" ", "")), ProviderOrClient.CLT) except ValueError: field_error(self.name_client_field, "Nom, numéro de téléphone du client") invoice.number = num_invoice invoice.owner = self.owner invoice.client = clt invoice.location = "Bamako" invoice.type_ = invoice_type invoice.subject = "" invoice.paid_amount = paid_amount invoice.tax = False try: invoice.save() if int(paid_amount) != 0 or invoice_type == Invoice.TYPE_BON: Refund(type_=Refund.DT, owner=self.owner, amount=paid_amount, date=date_to_datetime(invoice_date), provider_client=clt, invoice=Invoice.get(number=num_invoice)).save() except Exception as e: invoice.deletes_data() lis_error.append( "Erreur sur l'enregistrement d'entête de facture<br/>") return False # Save invoiceitems invoice = Invoice.get(Invoice.number == num_invoice) for name, qty, price in self.table_invoice.get_table_items(): rep = Report() product = Product.get(Product.name == name) rep.store = 1 rep.product = product rep.invoice = invoice rep.type_ = Report.S rep.cost_buying = int(product.last_report.cost_buying) rep.date = date_to_datetime(invoice_date) rep.qty = int(qty) rep.selling_price = int(price) try: rep.save() except Exception as e: lis_error.append(e) if lis_error != []: invoice.delete_instance() self.parent.Notify(lis_error, "error") return False else: self.parent.Notify("Facture Enregistrée avec succès", "success") self.table_invoice._reset() try: self.parent.open_dialog(ShowInvoiceViewWidget, modal=True, opacity=100, table_p=self, invoice_num=invoice.number) except Exception as e: print(e)