fix: GL entry fixes and validation for intercompany account

This commit is contained in:
Deepesh Garg
2020-11-30 20:52:21 +05:30
parent 65fb0729d2
commit 57d79a8149
3 changed files with 178 additions and 168 deletions

View File

@@ -375,12 +375,17 @@ class PurchaseInvoice(BuyingController):
def set_inter_company_account(self): def set_inter_company_account(self):
""" """
Set intercompany account for inter warehouse transactions Set intercompany account for inter warehouse transactions
This account will be used in case billing company and internal supplier's This account will be used in case billing company and internal customer's
representation company is same representation company is same
""" """
if self.is_internal_transfer() and not self.inter_company_account: if self.is_internal_transfer() and not self.inter_company_account:
self.inter_company_account = frappe.get_cached_value('Company', self.company, 'default_inter_company_account') inter_company_account = frappe.get_cached_value('Company', self.company, 'default_inter_company_account')
if not inter_company_account:
msg = _("Please select inter-company account or add default inter-company account for company {0}").format(
frappe.bold(self.company))
frappe.throw(msg)
def is_internal_transfer(self): def is_internal_transfer(self):
""" """
@@ -474,7 +479,6 @@ class PurchaseInvoice(BuyingController):
self.make_payment_gl_entries(gl_entries) self.make_payment_gl_entries(gl_entries)
self.make_write_off_gl_entry(gl_entries) self.make_write_off_gl_entry(gl_entries)
self.make_gle_for_rounding_adjustment(gl_entries) self.make_gle_for_rounding_adjustment(gl_entries)
return gl_entries return gl_entries
def check_asset_cwip_enabled(self): def check_asset_cwip_enabled(self):
@@ -514,7 +518,6 @@ class PurchaseInvoice(BuyingController):
def make_item_gl_entries(self, gl_entries): def make_item_gl_entries(self, gl_entries):
# item gl entries # item gl entries
if not self.is_internal_transfer():
stock_items = self.get_stock_items() stock_items = self.get_stock_items()
if self.update_stock and self.auto_accounting_for_stock: if self.update_stock and self.auto_accounting_for_stock:
warehouse_account = get_warehouse_account_map(self.company) warehouse_account = get_warehouse_account_map(self.company)
@@ -543,7 +546,6 @@ class PurchaseInvoice(BuyingController):
item, voucher_wise_stock_value, account_currency) item, voucher_wise_stock_value, account_currency)
if item.from_warehouse: if item.from_warehouse:
gl_entries.append(self.get_gl_dict({ gl_entries.append(self.get_gl_dict({
"account": warehouse_account[item.warehouse]['account'], "account": warehouse_account[item.warehouse]['account'],
"against": warehouse_account[item.from_warehouse]["account"], "against": warehouse_account[item.from_warehouse]["account"],
@@ -563,6 +565,8 @@ class PurchaseInvoice(BuyingController):
"debit": -1 * flt(item.base_net_amount, item.precision("base_net_amount")), "debit": -1 * flt(item.base_net_amount, item.precision("base_net_amount")),
}, warehouse_account[item.from_warehouse]["account_currency"], item=item)) }, warehouse_account[item.from_warehouse]["account_currency"], item=item))
# Do not book expense for transfer within same company transfer
if not self.is_internal_transfer():
gl_entries.append( gl_entries.append(
self.get_gl_dict({ self.get_gl_dict({
"account": item.expense_account, "account": item.expense_account,

View File

@@ -579,7 +579,12 @@ class SalesInvoice(SellingController):
""" """
if self.is_internal_transfer() and not self.inter_company_account: if self.is_internal_transfer() and not self.inter_company_account:
self.inter_company_account = frappe.get_cached_value('Company', self.company, 'default_inter_company_account') inter_company_account = frappe.get_cached_value('Company', self.company, 'default_inter_company_account')
if not inter_company_account:
msg = _("Please select inter-company account or add default inter-company account for company {0}").format(
frappe.bold(self.company))
frappe.throw(msg)
def is_internal_transfer(self): def is_internal_transfer(self):
""" """
@@ -845,7 +850,6 @@ class SalesInvoice(SellingController):
def make_item_gl_entries(self, gl_entries): def make_item_gl_entries(self, gl_entries):
# income account gl entries # income account gl entries
if not self.is_internal_transfer():
for item in self.get("items"): for item in self.get("items"):
if flt(item.base_net_amount, item.precision("base_net_amount")): if flt(item.base_net_amount, item.precision("base_net_amount")):
if item.is_fixed_asset: if item.is_fixed_asset:
@@ -866,6 +870,8 @@ class SalesInvoice(SellingController):
asset.db_set("disposal_date", self.posting_date) asset.db_set("disposal_date", self.posting_date)
asset.set_status("Sold" if self.docstatus==1 else None) asset.set_status("Sold" if self.docstatus==1 else None)
else: else:
# Do not book income for transfer within same company
if not self.is_internal_transfer():
income_account = (item.income_account income_account = (item.income_account
if (not item.enable_deferred_revenue or self.is_return) else item.deferred_revenue_account) if (not item.enable_deferred_revenue or self.is_return) else item.deferred_revenue_account)

View File

@@ -103,8 +103,8 @@ class StockController(AccountsController):
}, warehouse_account[sle.warehouse]["account_currency"], item=item_row)) }, warehouse_account[sle.warehouse]["account_currency"], item=item_row))
# expense account/ target_warehouse / source_warehouse # expense account/ target_warehouse / source_warehouse
if item_row.get('target_warehouse') or item_row.get('from_warehouse'): if item_row.get('target_warehouse'):
warehouse = item_row.get('target_warehouse') or item_row.get('from_warehouse') warehouse = item_row.get('target_warehouse')
expense_account = warehouse_account[warehouse]["account"] expense_account = warehouse_account[warehouse]["account"]
else: else:
expense_account = item_row.expense_account expense_account = item_row.expense_account