Code cleanup and fixes for the asset
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 0242d60..697611d 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -16,11 +16,11 @@
from erpnext.accounts.doctype.gl_entry.gl_entry import update_outstanding_amt
from erpnext.buying.utils import check_for_closed_status
from erpnext.accounts.general_ledger import get_round_off_account_and_cost_center
+from erpnext.assets.doctype.asset.asset import get_asset_account
from frappe.model.mapper import get_mapped_doc
from six import iteritems
from erpnext.accounts.doctype.sales_invoice.sales_invoice import validate_inter_company_party, update_linked_invoice,\
unlink_inter_company_invoice
-from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
form_grid_templates = {
"items": "templates/form_grid/item_grid.html"
@@ -474,17 +474,16 @@
def get_asset_gl_entry(self, gl_entries):
for item in self.get("items"):
if item.is_fixed_asset:
- asset_accounts = self.get_company_default(["asset_received_but_not_billed",
- "expenses_included_in_asset_valuation", "capital_work_in_progress_account"])
+ eiiav_account = self.get_company_default("expenses_included_in_asset_valuation")
asset_amount = flt(item.net_amount) + flt(item.item_tax_amount/self.conversion_rate)
base_asset_amount = flt(item.base_net_amount + item.item_tax_amount)
- item.expense_account = item.expense_account or asset_accounts[0]
+ item.expense_account = item.expense_account
if (not item.expense_account or frappe.db.get_value('Account',
item.expense_account, 'account_type') != 'Asset Received But Not Billed'):
- frappe.throw(_("Row {0}: Expense account must be of type Asset Received But Not Billed").
- format(item.idx))
+ arbnb_account = self.get_company_default("asset_received_but_not_billed")
+ item.expense_account = arbnb_account
if not self.update_stock:
asset_rbnb_currency = get_account_currency(item.expense_account)
@@ -498,9 +497,9 @@
}))
if item.item_tax_amount:
- asset_eiiav_currency = get_account_currency(asset_accounts[0])
+ asset_eiiav_currency = get_account_currency(eiiav_account)
gl_entries.append(self.get_gl_dict({
- "account": asset_accounts[1],
+ "account": eiiav_account,
"against": self.supplier,
"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
"cost_center": item.cost_center,
@@ -510,8 +509,8 @@
item.item_tax_amount / self.conversion_rate)
}))
else:
- cwip_account = get_asset_category_account(item.asset,
- 'capital_work_in_progress_account') or asset_accounts[2]
+ cwip_account = get_asset_account("capital_work_in_progress_account",
+ item.asset, company = self.company)
cwip_account_currency = get_account_currency(cwip_account)
gl_entries.append(self.get_gl_dict({
@@ -524,9 +523,9 @@
}))
if item.item_tax_amount and not cint(erpnext.is_perpetual_inventory_enabled(self.company)):
- asset_eiiav_currency = get_account_currency(asset_accounts[1])
+ asset_eiiav_currency = get_account_currency(eiiav_account)
gl_entries.append(self.get_gl_dict({
- "account": asset_accounts[1],
+ "account": eiiav_account,
"against": self.supplier,
"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
"cost_center": item.cost_center,
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index f2d8bb7..247dc10 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -10,7 +10,7 @@
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
from erpnext.assets.doctype.asset.depreciation \
import get_disposal_account_and_cost_center, get_depreciation_accounts
-from erpnext.accounts.general_ledger import make_gl_entries
+from erpnext.accounts.general_ledger import make_gl_entries, delete_gl_entries
from erpnext.accounts.utils import get_account_currency
from erpnext.controllers.accounts_controller import AccountsController
@@ -33,11 +33,15 @@
self.validate_in_use_date()
self.set_status()
self.update_stock_movement()
+ if not self.booked_fixed_asset:
+ self.make_gl_entries()
def on_cancel(self):
self.validate_cancellation()
self.delete_depreciation_entries()
self.set_status()
+ delete_gl_entries()
+ self.db_set('booked_fixed_asset', 0)
def validate_item(self):
item = frappe.db.get_value("Item", self.item_code,
@@ -325,12 +329,14 @@
doc.submit()
def make_gl_entries(self):
- if self.purchase_receipt and self.purchase_receipt_amount:
+ if self.purchase_receipt and self.purchase_receipt_amount and self.available_for_use_date <= nowdate():
from erpnext.accounts.general_ledger import make_gl_entries
gl_entries = []
- cwip_account = get_cwip_account(self.name, self.asset_category, self.company)
+ cwip_account = get_asset_account("capital_work_in_progress_account",
+ self.name, self.asset_category, self.company)
+
fixed_aseet_account = get_asset_category_account(self.name, 'fixed_asset_account',
asset_category = self.asset_category, company = self.company)
@@ -471,15 +477,17 @@
return books
-def get_cwip_account(asset, asset_category=None, company=None):
- cwip_account = get_asset_category_account(asset, 'capital_work_in_progress_account',
- asset_category = asset_category, company = company)
+def get_asset_account(account_name, asset=None, asset_category=None, company=None):
+ account = None
+ if asset:
+ account = get_asset_category_account(asset, account_name,
+ asset_category = asset_category, company = company)
- if not cwip_account:
- cwip_account = frappe.db.get_value('Company', company, 'capital_work_in_progress_account')
+ if not account:
+ account = frappe.db.get_value('Company', company, account_name)
- if not cwip_account:
- frappe.throw(_("Set Capital Work In Progress Account in asset category {0} or company {1}")
- .format(asset_category, company))
+ if not account:
+ frappe.throw(_("Set {0} in asset category {1} or company {2}")
+ .format(account_name.replace('_', ' ').title(), asset_category, company))
- return cwip_account
+ return account
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.js b/erpnext/assets/doctype/asset_movement/asset_movement.js
index 358b64d..739a3c8 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.js
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.js
@@ -3,6 +3,6 @@
frappe.ui.form.on('Asset Movement', {
onload: function(frm) {
-
+ //
}
});
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.json b/erpnext/assets/doctype/asset_movement/asset_movement.json
index e82a5f0..64c7f4a 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.json
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.json
@@ -277,7 +277,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "fetch_from": "asset.location",
+ "fetch_from": "",
"fieldname": "source_location",
"fieldtype": "Link",
"hidden": 0,
@@ -575,7 +575,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-06-06 06:21:36.607432",
+ "modified": "2018-06-11 18:42:55.381972",
"modified_by": "Administrator",
"module": "Assets",
"name": "Asset Movement",
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.py b/erpnext/assets/doctype/asset_movement/asset_movement.py
index 638987e..a89b312 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.py
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.py
@@ -31,7 +31,7 @@
if self.purpose in ['Transfer', 'Issue']:
self.source_location = frappe.db.get_value("Asset", self.asset, "location")
- if self.source_location == self.target_location:
+ if self.source_location == self.target_location and self.purpose == 'Transfer':
frappe.throw(_("Source and Target Location cannot be same"))
def on_submit(self):
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index c1df2b5..6507513 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -558,7 +558,8 @@
'actual_qty': d.qty,
'purchase_document_type': self.doctype,
'purchase_document_no': self.name,
- 'asset': d.asset
+ 'asset': d.asset,
+ 'location': d.asset_location
})
d.db_set('serial_no', serial_nos)
diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json
index b7c90d0..050a032 100644
--- a/erpnext/stock/doctype/item/item.json
+++ b/erpnext/stock/doctype/item/item.json
@@ -1223,7 +1223,7 @@
"collapsible": 1,
"collapsible_depends_on": "eval:doc.has_batch_no || doc.has_serial_no || doc.is_fixed_asset",
"columns": 0,
- "depends_on": "is_stock_item",
+ "depends_on": "eval:doc.is_stock_item || doc.is_fixed_asset",
"fieldname": "serial_nos_and_batches",
"fieldtype": "Section Break",
"hidden": 0,
@@ -3918,7 +3918,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 1,
- "modified": "2018-05-28 14:18:03.234070",
+ "modified": "2018-06-11 17:11:55.458770",
"modified_by": "Administrator",
"module": "Stock",
"name": "Item",
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index fa441b5..5c370d3 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -13,8 +13,8 @@
from erpnext.accounts.utils import get_account_currency
from frappe.desk.notifications import clear_doctype_notifications
from erpnext.buying.utils import check_for_closed_status
+from erpnext.assets.doctype.asset.asset import get_asset_account
from six import iteritems
-from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
form_grid_templates = {
"items": "templates/form_grid/item_grid.html"
@@ -314,12 +314,11 @@
def get_asset_gl_entry(self, gl_entries):
for d in self.get("items"):
if d.is_fixed_asset:
- asset_accounts = self.get_company_default(["capital_work_in_progress_account",
- "asset_received_but_not_billed"])
+ arbnb_account = self.get_company_default("asset_received_but_not_billed")
# CWIP entry
- cwip_account = get_asset_category_account(d.asset,
- 'capital_work_in_progress_account') or asset_accounts[0]
+ cwip_account = get_asset_account("capital_work_in_progress_account", d.asset,
+ company = self.company)
asset_amount = flt(d.net_amount) + flt(d.item_tax_amount/self.conversion_rate)
base_asset_amount = flt(d.base_net_amount + d.item_tax_amount)
@@ -327,7 +326,7 @@
cwip_account_currency = get_account_currency(cwip_account)
gl_entries.append(self.get_gl_dict({
"account": cwip_account,
- "against": asset_accounts[1],
+ "against": arbnb_account,
"cost_center": d.cost_center,
"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
"debit": base_asset_amount,
@@ -336,10 +335,10 @@
}))
# Asset received but not billed
- asset_rbnb_currency = get_account_currency(asset_accounts[1])
+ asset_rbnb_currency = get_account_currency(arbnb_account)
gl_entries.append(self.get_gl_dict({
- "account": asset_accounts[1],
- "against": asset_accounts[0],
+ "account": arbnb_account,
+ "against": cwip_account,
"cost_center": d.cost_center,
"remarks": self.get("remarks") or _("Accounting Entry for Asset"),
"credit": base_asset_amount,
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 67871c3..fb33adc 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -306,6 +306,7 @@
sr.via_stock_ledger = True
sr.item_code = args.get('item_code')
sr.warehouse = args.get('warehouse') if args.get('actual_qty', 0) > 0 else None
+ sr.location = args.get('location')
sr.save(ignore_permissions=True)
elif args.get('actual_qty', 0) > 0:
make_serial_no(serial_no, args)
@@ -330,6 +331,7 @@
sr.company = args.get('company')
sr.via_stock_ledger = args.get('via_stock_ledger') or True
sr.asset = args.get('asset')
+ sr.location = args.get('location')
if args.get('purchase_document_type'):
sr.purchase_document_type = args.get('purchase_document_type')