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
Exemplo n.º 2
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
Exemplo n.º 4
0
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