diff --git a/accounts/doctype/journal_voucher/test_journal_voucher.py b/accounts/doctype/journal_voucher/test_journal_voucher.py index 67fd1c0867..bb846d1634 100644 --- a/accounts/doctype/journal_voucher/test_journal_voucher.py +++ b/accounts/doctype/journal_voucher/test_journal_voucher.py @@ -26,7 +26,6 @@ test_records = [[ "fiscal_year": "_Test Fiscal Year 2013", "naming_series": "_T-Journal Voucher-", "posting_date": "2013-02-14", - "tds_applicable": "No", "user_remark": "test", "voucher_type": "Bank Voucher", "cheque_no": "33", diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py index 96cfc006be..950cac38ea 100644 --- a/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -493,4 +493,4 @@ class DocType(BuyingController): def on_update(self): pass - + \ No newline at end of file diff --git a/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/accounts/doctype/purchase_invoice/test_purchase_invoice.py index 62296bf5bf..0944b81e35 100644 --- a/accounts/doctype/purchase_invoice/test_purchase_invoice.py +++ b/accounts/doctype/purchase_invoice/test_purchase_invoice.py @@ -24,14 +24,9 @@ import json test_dependencies = ["Item", "Cost Center"] class TestPurchaseInvoice(unittest.TestCase): - def test_gl_entries(self): - wrapper = webnotes.bean(self.get_test_doclist()) - - # circumvent the disabled calculation call - obj = webnotes.get_obj(doc=wrapper.doc, doclist=wrapper.doclist) - obj.calculate_taxes_and_totals() - wrapper.set_doclist(obj.doclist) - + def test_gl_entries_without_auto_inventory_accounting(self): + wrapper = webnotes.bean(copy=test_records[0]) + wrapper.run_method("calculate_taxes_and_totals") wrapper.insert() wrapper.submit() wrapper.load_from_db() @@ -53,14 +48,12 @@ class TestPurchaseInvoice(unittest.TestCase): for d in gl_entries: self.assertEqual([d.debit, d.credit], expected_gl_entries.get(d.account)) + def test_gl_entries_with_auto_inventory_accounting(self): + pi = webnotes.bean(copy=test_records[1]) + def test_purchase_invoice_calculation(self): - wrapper = webnotes.bean(self.get_test_doclist()) - - # circumvent the disabled calculation call - obj = webnotes.get_obj(doc=wrapper.doc, doclist=wrapper.doclist) - obj.calculate_taxes_and_totals() - wrapper.set_doclist(obj.doclist) - + wrapper = webnotes.bean(copy=test_records[0]) + wrapper.run_method("calculate_taxes_and_totals") wrapper.insert() wrapper.load_from_db() @@ -91,145 +84,173 @@ class TestPurchaseInvoice(unittest.TestCase): for i, item in enumerate(wrapper.doclist.get({"parentfield": "entries"})): self.assertEqual(item.item_code, expected_values[i][0]) self.assertEqual(item.item_tax_amount, expected_values[i][1]) - - def get_test_doclist(self): - return [ - # parent - { - "doctype": "Purchase Invoice", - "naming_series": "BILL", - "supplier_name": "_Test Supplier", - "credit_to": "_Test Supplier - _TC", - "bill_no": "NA", - "posting_date": "2013-02-03", - "fiscal_year": "_Test Fiscal Year 2013", - "company": "_Test Company", - "currency": "INR", - "conversion_rate": 1, - "grand_total_import": 0 # for feed - }, - # items - { - "doctype": "Purchase Invoice Item", - "parentfield": "entries", - "item_code": "_Test Item Home Desktop 100", - "item_name": "_Test Item Home Desktop 100", - "qty": 10, - "import_rate": 50, - "import_amount": 500, - "rate": 50, - "amount": 500, - "uom": "_Test UOM", - "item_tax_rate": json.dumps({"_Test Account Excise Duty - _TC": 10}), - "expense_head": "_Test Account Cost for Goods Sold - _TC", - "cost_center": "_Test Cost Center - _TC" - - }, - { - "doctype": "Purchase Invoice Item", - "parentfield": "entries", - "item_code": "_Test Item Home Desktop 200", - "item_name": "_Test Item Home Desktop 200", - "qty": 5, - "import_rate": 150, - "import_amount": 750, - "rate": 150, - "amount": 750, - "uom": "_Test UOM", - "expense_head": "_Test Account Cost for Goods Sold - _TC", - "cost_center": "_Test Cost Center - _TC" - }, - # taxes - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "Actual", - "account_head": "_Test Account Shipping Charges - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "Shipping Charges", - "category": "Valuation and Total", - "add_deduct_tax": "Add", - "rate": 100 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Net Total", - "account_head": "_Test Account Customs Duty - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "Customs Duty", - "category": "Valuation", - "add_deduct_tax": "Add", - "rate": 10 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Net Total", - "account_head": "_Test Account Excise Duty - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "Excise Duty", - "category": "Total", - "add_deduct_tax": "Add", - "rate": 12 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Previous Row Amount", - "account_head": "_Test Account Education Cess - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "Education Cess", - "category": "Total", - "add_deduct_tax": "Add", - "rate": 2, - "row_id": 3 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Previous Row Amount", - "account_head": "_Test Account S&H Education Cess - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "S&H Education Cess", - "category": "Total", - "add_deduct_tax": "Add", - "rate": 1, - "row_id": 3 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Previous Row Total", - "account_head": "_Test Account CST - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "CST", - "category": "Total", - "add_deduct_tax": "Add", - "rate": 2, - "row_id": 5 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Net Total", - "account_head": "_Test Account VAT - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "VAT", - "category": "Total", - "add_deduct_tax": "Add", - "rate": 12.5 - }, - { - "doctype": "Purchase Taxes and Charges", - "parentfield": "purchase_tax_details", - "charge_type": "On Previous Row Total", - "account_head": "_Test Account Discount - _TC", - "cost_center": "_Test Cost Center - _TC", - "description": "Discount", - "category": "Total", - "add_deduct_tax": "Deduct", - "rate": 10, - "row_id": 7 - }, - ] \ No newline at end of file + +test_records = [ + [ + # parent + { + "doctype": "Purchase Invoice", + "naming_series": "BILL", + "supplier_name": "_Test Supplier", + "credit_to": "_Test Supplier - _TC", + "bill_no": "NA", + "posting_date": "2013-02-03", + "fiscal_year": "_Test Fiscal Year 2013", + "company": "_Test Company", + "currency": "INR", + "conversion_rate": 1, + "grand_total_import": 0 # for feed + }, + # items + { + "doctype": "Purchase Invoice Item", + "parentfield": "entries", + "item_code": "_Test Item Home Desktop 100", + "item_name": "_Test Item Home Desktop 100", + "qty": 10, + "import_rate": 50, + "import_amount": 500, + "rate": 50, + "amount": 500, + "uom": "_Test UOM", + "item_tax_rate": json.dumps({"_Test Account Excise Duty - _TC": 10}), + "expense_head": "_Test Account Cost for Goods Sold - _TC", + "cost_center": "_Test Cost Center - _TC" + + }, + { + "doctype": "Purchase Invoice Item", + "parentfield": "entries", + "item_code": "_Test Item Home Desktop 200", + "item_name": "_Test Item Home Desktop 200", + "qty": 5, + "import_rate": 150, + "import_amount": 750, + "rate": 150, + "amount": 750, + "uom": "_Test UOM", + "expense_head": "_Test Account Cost for Goods Sold - _TC", + "cost_center": "_Test Cost Center - _TC" + }, + # taxes + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "Actual", + "account_head": "_Test Account Shipping Charges - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Shipping Charges", + "category": "Valuation and Total", + "add_deduct_tax": "Add", + "rate": 100 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Net Total", + "account_head": "_Test Account Customs Duty - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Customs Duty", + "category": "Valuation", + "add_deduct_tax": "Add", + "rate": 10 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Net Total", + "account_head": "_Test Account Excise Duty - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Excise Duty", + "category": "Total", + "add_deduct_tax": "Add", + "rate": 12 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Previous Row Amount", + "account_head": "_Test Account Education Cess - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Education Cess", + "category": "Total", + "add_deduct_tax": "Add", + "rate": 2, + "row_id": 3 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Previous Row Amount", + "account_head": "_Test Account S&H Education Cess - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "S&H Education Cess", + "category": "Total", + "add_deduct_tax": "Add", + "rate": 1, + "row_id": 3 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Previous Row Total", + "account_head": "_Test Account CST - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "CST", + "category": "Total", + "add_deduct_tax": "Add", + "rate": 2, + "row_id": 5 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Net Total", + "account_head": "_Test Account VAT - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "VAT", + "category": "Total", + "add_deduct_tax": "Add", + "rate": 12.5 + }, + { + "doctype": "Purchase Taxes and Charges", + "parentfield": "purchase_tax_details", + "charge_type": "On Previous Row Total", + "account_head": "_Test Account Discount - _TC", + "cost_center": "_Test Cost Center - _TC", + "description": "Discount", + "category": "Total", + "add_deduct_tax": "Deduct", + "rate": 10, + "row_id": 7 + }, + ], + [ + # parent + { + "doctype": "Purchase Invoice", + "supplier_name": "_Test Supplier", + "credit_to": "_Test Supplier - _TC", + "bill_no": "NA", + "posting_date": "2013-02-03", + "fiscal_year": "_Test Fiscal Year 2013", + "company": "_Test Company", + "currency": "INR", + "conversion_rate": 1, + }, + # items + { + "doctype": "Purchase Invoice Item", + "parentfield": "entries", + "item_code": "_Test Item", + "item_name": "_Test Item", + "qty": 10, + "import_rate": 50, + "uom": "_Test UOM", + "expense_head": "_Test Account Cost for Goods Sold - _TC", + "cost_center": "_Test Cost Center - _TC" + + }, + ] +] \ No newline at end of file diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py index bbcd4926c3..2514bfc956 100644 --- a/controllers/buying_controller.py +++ b/controllers/buying_controller.py @@ -250,7 +250,9 @@ class BuyingController(AccountsController): if self.doc.doctype == "Purchase Invoice" and self.doc.docstatus == 0: self.doc.total_advance = flt(self.doc.total_advance, self.precision.main.total_advance) - self.doc.outstanding_amount = flt(self.doc.grand_total - self.doc.total_advance, + self.doc.total_amount_to_pay = flt(self.doc.grand_total - flt(self.doc.write_off_amount, + self.precision.main.write_off_amount), self.precision.main.total_amount_to_pay) + self.doc.outstanding_amount = flt(self.doc.total_amount_to_pay - self.doc.total_advance, self.precision.main.outstanding_amount) def _cleanup(self):