def test_invoice_item_delete(client, web2py): """ Can we delete an item from an invoice? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py) populate_invoices_items(web2py) # Is the confirmation page showing? url = '/invoices/item_delete_confirm?iID=1&iiID=1' client.get(url) assert client.status == 200 url = '/invoices/item_delete?iID=1&iiID=1' client.get(url) assert client.status == 200 assert web2py.db.invoices_items(1) is None # check amounts amounts = web2py.db.invoices_amounts(1) assert amounts.TotalPriceVAT == 0
def test_invoice_paid(client, web2py): """ Is a payment added when an invoice is paid? """ url = '/default/user/login' client.get(url) assert client.status == 200 populate_customers(web2py, 1) populate_invoices(web2py) populate_invoices_items(web2py) amounts = web2py.db.invoices_amounts(1) price = str(amounts.TotalPriceVAT) mollie_id = 'tr_test' date = '2014-01-01' url = '/mollie/test_webhook_invoice_paid?iID=1&payment_amount=' + price + '&payment_date=' + date + '&mollie_payment_id=' + mollie_id client.get(url) assert client.status == 200 payment = web2py.db.invoices_payments(1) print(payment) assert payment.Amount == amounts.TotalPriceVAT assert payment.mollie_payment_id == mollie_id assert str(payment.PaymentDate) == date
def test_invoice_item_edit(client, web2py): """ Can we edit an item in an invoice? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py) populate_invoices_items(web2py) url = '/invoices/item_edit?iID=1&iiID=1' client.get(url) assert client.status == 200 data = { 'id' : 1, 'ProductName' : 'Cherries' } client.post(url, data=data) assert client.status == 200 assert data['ProductName'] in client.text
def test_webhook_invoice_refund(client, web2py): """ Is a payment added when an invoice is paid with chargeback(s)? """ url = '/default/user/login' client.get(url) assert client.status == 200 populate_customers(web2py, 1) populate_invoices(web2py) populate_invoices_items(web2py) invoice = web2py.db.invoices(1) invoice.Status = 'paid' invoice.update_record() web2py.db.commit() amounts = web2py.db.invoices_amounts(1) price = str(amounts.TotalPriceVAT * -1) mollie_id = 'tr_test' refund_id = 're_test' date = '2014-01-01' url = '/mollie/test_webhook_invoice_refund?' + \ 'iID=1' +\ '&refund_amount=' + price + \ '&refund_date=' + date + \ '&mollie_payment_id=' + mollie_id + \ '&refund_id=' + refund_id + \ '&refund_details=refund' client.get(url) assert client.status == 200 payment = web2py.db.invoices_payments(1) assert payment.Amount == amounts.TotalPriceVAT * -1 assert payment.mollie_payment_id == mollie_id assert payment.mollie_refund_id == refund_id assert str(payment.PaymentDate) == date assert payment.Note == 'refund' # Check status changes back to 'sent' invoice = web2py.db.invoices(1) assert invoice.Status == 'sent'
def test_invoice_dont_show_duplicate_button_employee_claim(client, web2py): """ Does the Button not show when it is an employee Claim? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py, employee_claim=True) populate_invoices_items(web2py) url = '/invoices/edit?iID=1' client.get(url) assert client.status == 200 assert 'Duplicate' not in client.text
def test_invoice_dont_show_duplicate_button_teacher_payment(client, web2py): """ DOes the button not show when teacher payment? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py, teacher_fixed_price_invoices=True) populate_invoices_items(web2py) url = '/invoices/edit?iID=1' client.get(url) assert client.status == 200 assert 'Duplicate' not in client.text
def test_invoice_show_duplicate_button(client, web2py): """ Does the Button show and doesn't when it shouldn't """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py) populate_invoices_items(web2py) url = '/invoices/edit?iID=1' client.get(url) assert client.status == 200 assert 'Duplicate' in client.text
def test_cancel_and_create_credit_invoice(client, web2py): """ Is an invoice cancelled and a credit invoice created? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py) populate_invoices_items(web2py) url = '/invoices/cancel_and_create_credit_invoice?iID=1' client.get(url) assert client.status == 200 assert web2py.db.invoices_items(5).Price == -12 assert web2py.db.invoices_items(5).TotalPriceVAT == -120 assert "This is a credit invoice for invoice" in client.text
def test_invoice_duplicate_invoice(client, web2py): """ Does the Duplicate get generated correctly with all possible connections? """ populate_customers(web2py, 3) url = '/customers/invoices?cuID=1001' client.get(url) assert client.status == 200 populate_invoices(web2py, customers_orders=True) # print 1 populate_invoices_items(web2py) # print 2 url = '/invoices/edit?iID=1' client.get(url) assert client.status == 200 # print 3 url = '/invoices/duplicate_invoice?iID=1' client.get(url) assert client.status == 200 # print 4 oldrow = web2py.db.invoices(id=1) query = ( (web2py.db.invoices.CustomerName == oldrow.CustomerName) & (web2py.db.invoices.invoices_groups_id == oldrow.invoices_groups_id) & (web2py.db.invoices.payment_methods_id == oldrow.payment_methods_id) & (web2py.db.invoices.id != oldrow.id) & (web2py.db.invoices.InvoiceID != oldrow.InvoiceID)) assert web2py.db(query).count() == 1 newrow = web2py.db(query).select().first() cusrow = web2py.db(web2py.db.invoices_customers.invoices_id == newrow.id).select().first() oldcusrow = web2py.db(web2py.db.invoices_customers.invoices_id == oldrow.id).select().first() assert cusrow.auth_customer_id == oldcusrow.auth_customer_id #Are all the items correctly duplicated? query = (web2py.db.invoices_items.invoices_id == oldrow.id) oldrows = web2py.db(query).select() query = (web2py.db.invoices_items.invoices_id == oldrow.id) rows = web2py.db(query).select() for row in oldrows: query = ((web2py.db.invoices_items.invoices_id == newrow.id) & (web2py.db.invoices_items.ProductName == row.ProductName) & (web2py.db.invoices_items.Description == row.Description) & (web2py.db.invoices_items.Quantity == row.Quantity) & (web2py.db.invoices_items.Price == row.Price) & (web2py.db.invoices_items.tax_rates_id == row.tax_rates_id) & (web2py.db.invoices_items.accounting_glaccounts_id == row.accounting_glaccounts_id) & (web2py.db.invoices_items.accounting_costcenters_id == row.accounting_costcenters_id)) assert web2py.db(query).count() == 1 #Is the connection to invoices_customers_order there? oldcusorderrow = web2py.db(web2py.db.invoices_customers_orders.invoices_id == oldrow.id).select().first() if oldcusorderrow: query = ((web2py.db.invoices_customers_orders.invoices_id == newrow.id) & (web2py.db.invoices_customers_orders.customers_orders_id == oldcusorderrow.customers_orders_id)) assert web2py.db(query).count() == 1