fix: rearrange functions
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index ae54b80..4b2c922 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -73,11 +73,6 @@
gl_entries = self.get_gl_entries(warehouse_account)
make_gl_entries(gl_entries, from_repost=from_repost)
- elif self.doctype in ["Purchase Receipt", "Purchase Invoice"] and self.docstatus == 1:
- gl_entries = []
- gl_entries = self.get_asset_gl_entry(gl_entries)
- make_gl_entries(gl_entries, from_repost=from_repost)
-
def validate_serialized_batch(self):
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 6440f80..bd3aeac 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -313,7 +313,6 @@
self.make_item_gl_entries(gl_entries, warehouse_account=warehouse_account)
self.make_tax_gl_entries(gl_entries)
- # self.get_asset_gl_entry(gl_entries)
return process_gl_map(gl_entries)
@@ -351,34 +350,7 @@
)
exchange_rate_map, net_rate_map = get_purchase_document_details(self)
- def make_item_asset_inward_entries(item, stock_value_diff):
- if d.is_fixed_asset:
- stock_asset_account_name = (
- get_asset_category_account(
- asset_category=item.asset_category,
- fieldname="capital_work_in_progress_account",
- company=self.company,
- )
- if is_cwip_accounting_enabled(d.asset_category)
- else get_asset_category_account(
- asset_category=item.asset_category, fieldname="fixed_asset_account", company=self.company
- )
- )
-
- stock_value_diff = flt(item.net_amount) + flt(item.item_tax_amount / self.conversion_rate)
- elif (flt(item.valuation_rate) or self.is_return) and flt(item.qty):
- # If PR is sub-contracted and fg item rate is zero
- # in that case if account for source and target warehouse are same,
- # then GL entries should not be posted
- if (
- flt(stock_value_diff) == flt(d.rm_supp_cost)
- and warehouse_account.get(self.supplier_warehouse)
- and stock_asset_account_name == supplier_warehouse_account
- ):
- return
-
- stock_asset_account_name = warehouse_account[item.warehouse]["account"]
-
+ def make_item_asset_inward_entries(item, stock_value_diff, stock_asset_account_name):
account_currency = get_account_currency(stock_asset_account_name)
self.add_gl_entry(
gl_entries=gl_entries,
@@ -402,20 +374,7 @@
)
if self.is_internal_transfer() and item.valuation_rate:
- outgoing_amount = abs(
- frappe.db.get_value(
- "Stock Ledger Entry",
- {
- "voucher_type": "Purchase Receipt",
- "voucher_no": self.name,
- "voucher_detail_no": item.name,
- "warehouse": item.from_warehouse,
- "is_cancelled": 0,
- },
- "stock_value_difference",
- )
- )
- credit_amount = outgoing_amount
+ credit_amount = abs(get_stock_value_difference(self.name, item.name, item.from_warehouse) or 0)
if credit_amount:
account = (
@@ -583,20 +542,37 @@
)
if warehouse_account.get(d.warehouse):
- stock_value_diff = frappe.db.get_value(
- "Stock Ledger Entry",
- {
- "voucher_type": "Purchase Receipt",
- "voucher_no": self.name,
- "voucher_detail_no": d.name,
- "warehouse": d.warehouse,
- "is_cancelled": 0,
- },
- "stock_value_difference",
- )
-
+ stock_value_diff = get_stock_value_difference(self.name, d.name, d.warehouse)
outgoing_amount = d.base_net_amount + d.item_tax_amount
- make_item_asset_inward_entries(d, stock_value_diff)
+
+ if d.is_fixed_asset:
+ stock_asset_account_name = (
+ get_asset_category_account(
+ asset_category=d.asset_category,
+ fieldname="capital_work_in_progress_account",
+ company=self.company,
+ )
+ if is_cwip_accounting_enabled(d.asset_category)
+ else get_asset_category_account(
+ asset_category=d.asset_category, fieldname="fixed_asset_account", company=self.company
+ )
+ )
+
+ stock_value_diff = flt(d.net_amount) + flt(d.item_tax_amount / self.conversion_rate)
+ elif (flt(d.valuation_rate) or self.is_return) and flt(d.qty):
+ stock_asset_account_name = warehouse_account[d.warehouse]["account"]
+
+ # If PR is sub-contracted and fg item rate is zero
+ # in that case if account for source and target warehouse are same,
+ # then GL entries should not be posted
+ if (
+ flt(stock_value_diff) == flt(d.rm_supp_cost)
+ and warehouse_account.get(self.supplier_warehouse)
+ and stock_asset_account_name == supplier_warehouse_account
+ ):
+ continue
+
+ make_item_asset_inward_entries(d, stock_value_diff, stock_asset_account_name)
make_stock_received_but_not_billed_entry(d, outgoing_amount)
make_landed_cost_gl_entries(d)
make_rate_difference_entry(d)
@@ -745,18 +721,6 @@
i += 1
- def get_asset_gl_entry(self, gl_entries):
- for item in self.get("items"):
- if item.is_fixed_asset:
- if is_cwip_accounting_enabled(item.asset_category):
- self.add_asset_gl_entries(item, gl_entries)
- if flt(item.landed_cost_voucher_amount):
- self.add_lcv_gl_entries(item, gl_entries)
- # update assets gross amount by its valuation rate
- # valuation rate is total of net rate, raw mat supp cost, tax amount, lcv amount per item
-
- return gl_entries
-
def update_assets(self, item, valuation_rate):
assets = frappe.db.get_all(
"Asset", filters={"purchase_receipt": self.name, "item_code": item.item_code}
@@ -790,6 +754,20 @@
self.load_from_db()
+def get_stock_value_difference(voucher_no, voucher_detail_no, warehouse):
+ frappe.db.get_value(
+ "Stock Ledger Entry",
+ {
+ "voucher_type": "Purchase Receipt",
+ "voucher_no": voucher_no,
+ "voucher_detail_no": voucher_detail_no,
+ "warehouse": warehouse,
+ "is_cancelled": 0,
+ },
+ "stock_value_difference",
+ )
+
+
def update_billed_amount_based_on_po(po_details, update_modified=True):
po_billed_amt_details = get_billed_amount_against_po(po_details)
diff --git a/erpnext/templates/pages/integrations/__init__.py b/erpnext/templates/pages/integrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/templates/pages/integrations/__init__.py