def test_list_invoices(self): con = Controller() con.create_invoice(create_attrs) invoices = con.list_invoices() (invoice, factoring_data) = invoices[0] self.assertTrue(isinstance(invoice, Invoice)) self.assertEqual(invoice.amt, 5) # should return a dict self.assertTrue(isinstance(factoring_data, dict))
def test_update_invoice(self): con = Controller() invoice = con.create_invoice(create_attrs) updated = con.update_invoice(invoice.id, update_attrs) self.assertTrue(isinstance(updated, Invoice)) self.assertEqual(updated.id, invoice.id) self.assertEqual(updated.amt, update_attrs["amt"])
def test_create_invoice(self): con = Controller() invoice = con.create_invoice(create_attrs) self.assertTrue(isinstance(invoice, Invoice)) (fetched, factoring_data) = con.get_invoice(invoice.id) self.assertTrue(isinstance(fetched, Invoice)) self.assertEqual(fetched.id, invoice.id) self.assertTrue(isinstance(factoring_data, dict))
class Main(QMainWindow, Ui_MainWindow): editing_invoice_id = None def __init__(self): super(Main, self).__init__() self.setupUi(self) self.con = Controller() # table setup self.OverviewTable.setEditTriggers(QTableWidget.NoEditTriggers) self.OverviewTable.setSelectionBehavior(QTableView.SelectRows) # table action buttons self.DeleteButton.clicked.connect(self.on_delete) self.EditButton.clicked.connect(self.on_edit) # connect form buttons self.SaveButton.clicked.connect(self.on_save) self.ResetButton.clicked.connect(self.on_reset) def on_save(self): try: attrs = { 'company_name': self.CompanyNameLineEdit.text(), 'credit_terms': int(self.CreditTermsLineEdit.text()), 'factor_pct': float(self.FactorPercentageLineEdit.text()) / 100, 'factor_start_date': self.FactorStartDayLineEdit.text(), 'amt': self.InvoiceAmountLineEdit.text(), 'date': self.InvoiceDateLineEdit.text() } if self.editing_invoice_id == None: self.con.create_invoice(attrs) else: self.con.update_invoice(self.editing_invoice_id, attrs) self.update_list() self.on_reset() except Exception as e: self.logger(str(e)) def on_reset(self): self.CompanyNameLineEdit.setText("") self.CreditTermsLineEdit.setText("") self.FactorPercentageLineEdit.setText("") self.InvoiceAmountLineEdit.setText("") self.FactorStartDayLineEdit.setText("") self.InvoiceDateLineEdit.setText("") self.editing_invoice_id = None def update_list(self): data = self.con.list_invoices() table = self.OverviewTable table.setRowCount(0) for invoice, calculated in data: rowPosition = self.OverviewTable.rowCount() table.insertRow(rowPosition) table.setItem(rowPosition, 0, QTableWidgetItem(str(invoice.id))) table.setItem(rowPosition, 1, QTableWidgetItem(str(invoice.company_name))) table.setItem(rowPosition, 2, QTableWidgetItem(f"${invoice.amt:.2f}")) table.setItem(rowPosition, 3, QTableWidgetItem(str(invoice.factor_pct * 100))) table.setItem(rowPosition, 4, QTableWidgetItem(invoice.date_iso_string)) table.setItem(rowPosition, 5, QTableWidgetItem(str(invoice.credit_terms))) table.setItem( rowPosition, 6, QTableWidgetItem(invoice.factor_start_date.isoformat())) table.setItem( rowPosition, 7, QTableWidgetItem(f"${calculated['amt_to_collect']:.2f}")) table.setItem(rowPosition, 8, QTableWidgetItem(f"${calculated['factor_amt']:.2f}")) table.setItem(rowPosition, 9, QTableWidgetItem(str(calculated['is_stale']))) def on_delete(self): try: items = self.OverviewTable.selectedItems() if len(items) == 0 or items[0].text() == '': return None id_col = items[0] id = float(id_col.text()) self.con.delete_invoice(id) self.update_list() except Exception as e: self.logger(str(e)) def on_edit(self): try: items = self.OverviewTable.selectedItems() if len(items) == 0 or items[0].text() == '': return None id_col = items[0] id = float(id_col.text()) invoice, data = self.con.get_invoice(id) self.CompanyNameLineEdit.setText(str(invoice.company_name)) self.CreditTermsLineEdit.setText(str(invoice.credit_terms)) self.FactorPercentageLineEdit.setText(str(invoice.factor_pct * 100)) self.InvoiceAmountLineEdit.setText(str(invoice.amt)) self.FactorStartDayLineEdit.setText( invoice.factor_start_date.isoformat()) self.InvoiceDateLineEdit.setText(invoice.date_iso_string) self.editing_invoice_id = id self.TabWidget.setCurrentIndex(1) except Exception as e: self.logger(str(e)) def logger(self, msg): self.LogBox.setPlainText(msg)