From fc155c7712974434af2a60e035f7b8a97691866b Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 24 Jul 2015 17:50:40 +0530 Subject: [PATCH] Added tax table in stock entry --- erpnext/accounts/general_ledger.py | 3 +- .../stock/doctype/stock_entry/stock_entry.py | 29 ++++++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/general_ledger.py b/erpnext/accounts/general_ledger.py index 17fe922a1c..8081459f2e 100644 --- a/erpnext/accounts/general_ledger.py +++ b/erpnext/accounts/general_ledger.py @@ -11,8 +11,7 @@ from erpnext.accounts.utils import validate_expense_against_budget class StockAccountInvalidTransaction(frappe.ValidationError): pass -def make_gl_entries(gl_map, cancel=False, adv_adj=False, merge_entries=True, - update_outstanding='Yes'): +def make_gl_entries(gl_map, cancel=False, adv_adj=False, merge_entries=True, update_outstanding='Yes'): if gl_map: if not cancel: gl_map = process_gl_map(gl_map, merge_entries) diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index 051d9fcbd8..61ef4cdefc 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -367,6 +367,8 @@ class StockEntry(StockController): def update_stock_ledger(self): sl_entries = [] for d in self.get('items'): + tax_amount_per_qty = flt(flt(d.tax_amount) / flt(d.qty), d.precision("tax_amount")) + if cstr(d.s_warehouse) and self.docstatus == 1: sl_entries.append(self.get_sl_entries(d, { "warehouse": cstr(d.s_warehouse), @@ -378,7 +380,7 @@ class StockEntry(StockController): sl_entries.append(self.get_sl_entries(d, { "warehouse": cstr(d.t_warehouse), "actual_qty": flt(d.transfer_qty), - "incoming_rate": flt(d.incoming_rate) + "incoming_rate": flt(d.incoming_rate) + tax_amount_per_qty })) # On cancellation, make stock ledger entry for @@ -392,6 +394,31 @@ class StockEntry(StockController): })) self.make_sl_entries(sl_entries, self.amended_from and 'Yes' or 'No') + + def get_gl_entries(self, warehouse_account): + expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") + + gl_entries = super(StockEntry, self).get_gl_entries(warehouse_account) + + for d in self.get("items"): + tax_amount = flt(d.tax_amount, d.precision("tax_amount")) + gl_entries.append(self.get_gl_dict({ + "account": d.expense_account, + "against": expenses_included_in_valuation, + "cost_center": d.cost_center, + "remarks": self.get("remarks") or _("Accounting Entry for Stock"), + "debit": tax_amount + })) + + gl_entries.append(self.get_gl_dict({ + "account": expenses_included_in_valuation, + "against": warehouse_account[d.warehouse], + "cost_center": d.cost_center, + "remarks": self.get("remarks") or _("Accounting Entry for Stock"), + "credit": tax_amount + })) + + return gl_entries def update_production_order(self): def _validate_production_order(pro_doc):