Revert "fix: link Purchase Invoice and Receipt Items to Asset"

This commit is contained in:
Khushi Rawat
2024-09-04 01:19:41 +05:30
committed by GitHub
parent 4da289ec61
commit eb2553673f
9 changed files with 15 additions and 124 deletions

View File

@@ -1267,11 +1267,7 @@ class PurchaseInvoice(BuyingController):
def update_gross_purchase_amount_for_linked_assets(self, item): def update_gross_purchase_amount_for_linked_assets(self, item):
assets = frappe.db.get_all( assets = frappe.db.get_all(
"Asset", "Asset",
filters={ filters={"purchase_invoice": self.name, "item_code": item.item_code},
"purchase_invoice": self.name,
"item_code": item.item_code,
"purchase_invoice_item": ("in", [item.name, ""]),
},
fields=["name", "asset_quantity"], fields=["name", "asset_quantity"],
) )
for asset in assets: for asset in assets:

View File

@@ -670,11 +670,6 @@ frappe.ui.form.on("Asset", {
if (item.asset_location) { if (item.asset_location) {
frm.set_value("location", item.asset_location); frm.set_value("location", item.asset_location);
} }
if (doctype === "Purchase Receipt") {
frm.set_value("purchase_receipt_item", item.name);
} else if (doctype === "Purchase Invoice") {
frm.set_value("purchase_invoice_item", item.name);
}
}); });
}, },

View File

@@ -33,16 +33,14 @@
"dimension_col_break", "dimension_col_break",
"purchase_details_section", "purchase_details_section",
"purchase_receipt", "purchase_receipt",
"purchase_receipt_item",
"purchase_invoice", "purchase_invoice",
"purchase_invoice_item",
"purchase_date",
"available_for_use_date", "available_for_use_date",
"total_asset_cost",
"additional_asset_cost",
"column_break_23", "column_break_23",
"gross_purchase_amount", "gross_purchase_amount",
"asset_quantity", "asset_quantity",
"additional_asset_cost", "purchase_date",
"total_asset_cost",
"section_break_23", "section_break_23",
"calculate_depreciation", "calculate_depreciation",
"column_break_33", "column_break_33",
@@ -538,20 +536,6 @@
"fieldname": "opening_number_of_booked_depreciations", "fieldname": "opening_number_of_booked_depreciations",
"fieldtype": "Int", "fieldtype": "Int",
"label": "Opening Number of Booked Depreciations" "label": "Opening Number of Booked Depreciations"
},
{
"fieldname": "purchase_receipt_item",
"fieldtype": "Link",
"hidden": 1,
"label": "Purchase Receipt Item",
"options": "Purchase Receipt Item"
},
{
"fieldname": "purchase_invoice_item",
"fieldtype": "Link",
"hidden": 1,
"label": "Purchase Invoice Item",
"options": "Purchase Invoice Item"
} }
], ],
"idx": 72, "idx": 72,
@@ -595,7 +579,7 @@
"link_fieldname": "target_asset" "link_fieldname": "target_asset"
} }
], ],
"modified": "2024-08-26 23:28:29.095139", "modified": "2024-08-01 16:39:09.340973",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Assets", "module": "Assets",
"name": "Asset", "name": "Asset",

View File

@@ -94,9 +94,7 @@ class Asset(AccountsController):
purchase_amount: DF.Currency purchase_amount: DF.Currency
purchase_date: DF.Date | None purchase_date: DF.Date | None
purchase_invoice: DF.Link | None purchase_invoice: DF.Link | None
purchase_invoice_item: DF.Link | None
purchase_receipt: DF.Link | None purchase_receipt: DF.Link | None
purchase_receipt_item: DF.Link | None
split_from: DF.Link | None split_from: DF.Link | None
status: DF.Literal[ status: DF.Literal[
"Draft", "Draft",

View File

@@ -824,8 +824,6 @@ class BuyingController(SubcontractingController):
"asset_quantity": asset_quantity, "asset_quantity": asset_quantity,
"purchase_receipt": self.name if self.doctype == "Purchase Receipt" else None, "purchase_receipt": self.name if self.doctype == "Purchase Receipt" else None,
"purchase_invoice": self.name if self.doctype == "Purchase Invoice" else None, "purchase_invoice": self.name if self.doctype == "Purchase Invoice" else None,
"purchase_receipt_item": row.name if self.doctype == "Purchase Receipt" else None,
"purchase_invoice_item": row.name if self.doctype == "Purchase Invoice" else None,
} }
) )

View File

@@ -379,4 +379,3 @@ erpnext.patches.v15_0.drop_index_posting_datetime_from_sle
erpnext.patches.v15_0.add_disassembly_order_stock_entry_type #1 erpnext.patches.v15_0.add_disassembly_order_stock_entry_type #1
erpnext.patches.v15_0.set_standard_stock_entry_type erpnext.patches.v15_0.set_standard_stock_entry_type
erpnext.patches.v15_0.set_difference_amount_in_asset_value_adjustment erpnext.patches.v15_0.set_difference_amount_in_asset_value_adjustment
erpnext.patches.v15_0.link_purchase_item_to_asset_doc

View File

@@ -1,74 +0,0 @@
import frappe
def execute():
if frappe.db.has_column("Asset", "purchase_invoice_item") and frappe.db.has_column(
"Asset", "purchase_receipt_item"
):
# Get all assets with their related Purchase Invoice and Purchase Receipt
assets = frappe.get_all(
"Asset",
filters={"docstatus": 0},
fields=[
"name",
"item_code",
"purchase_invoice",
"purchase_receipt",
"gross_purchase_amount",
"asset_quantity",
"purchase_invoice_item",
"purchase_receipt_item",
],
)
for asset in assets:
# Get Purchase Invoice Items
if asset.purchase_invoice and not asset.purchase_invoice_item:
purchase_invoice_item = get_linked_item(
"Purchase Invoice Item",
asset.purchase_invoice,
asset.item_code,
asset.gross_purchase_amount,
asset.asset_quantity,
)
frappe.db.set_value("Asset", asset.name, "purchase_invoice_item", purchase_invoice_item)
# Get Purchase Receipt Items
if asset.purchase_receipt and not asset.purchase_receipt_item:
purchase_receipt_item = get_linked_item(
"Purchase Receipt Item",
asset.purchase_receipt,
asset.item_code,
asset.gross_purchase_amount,
asset.asset_quantity,
)
frappe.db.set_value("Asset", asset.name, "purchase_receipt_item", purchase_receipt_item)
def get_linked_item(doctype, parent, item_code, amount, quantity):
items = frappe.get_all(
doctype,
filters={
"parenttype": doctype.replace(" Item", ""),
"parent": parent,
"item_code": item_code,
},
fields=["name", "rate", "amount", "qty", "landed_cost_voucher_amount"],
)
if len(items) == 1:
# If only one item exists, return it directly
return items[0].name
for item in items:
landed_cost = item.get("landed_cost_voucher_amount", 0)
# Check if the asset is grouped
if quantity > 1:
if item.amount + landed_cost == amount and item.qty == quantity:
return item.name
elif item.qty == quantity:
return item.name
else:
if item.rate + (landed_cost / item.qty) == amount:
return item.name
return items[0].name if items else None

View File

@@ -828,11 +828,7 @@ class PurchaseReceipt(BuyingController):
def update_assets(self, item, valuation_rate): def update_assets(self, item, valuation_rate):
assets = frappe.db.get_all( assets = frappe.db.get_all(
"Asset", "Asset",
filters={ filters={"purchase_receipt": self.name, "item_code": item.item_code},
"purchase_receipt": self.name,
"item_code": item.item_code,
"purchase_receipt_item": ("in", [item.name, ""]),
},
fields=["name", "asset_quantity"], fields=["name", "asset_quantity"],
) )

View File

@@ -1533,7 +1533,7 @@ def get_previous_sle_of_current_voucher(args, operator="<", exclude_current_vouc
operator = "<=" operator = "<="
voucher_condition = f"and creation < '{creation}'" voucher_condition = f"and creation < '{creation}'"
sle = frappe.db.sql( # nosemgrep sle = frappe.db.sql(
f""" f"""
select *, posting_datetime as "timestamp" select *, posting_datetime as "timestamp"
from `tabStock Ledger Entry` from `tabStock Ledger Entry`
@@ -1630,7 +1630,6 @@ def get_stock_ledger_entries(
if extra_cond: if extra_cond:
conditions += f"{extra_cond}" conditions += f"{extra_cond}"
# nosemgrep
return frappe.db.sql( return frappe.db.sql(
""" """
select *, posting_datetime as "timestamp" select *, posting_datetime as "timestamp"
@@ -1746,7 +1745,7 @@ def get_valuation_rate(
return batch_obj.get_incoming_rate() return batch_obj.get_incoming_rate()
# Get valuation rate from last sle for the same item and warehouse # Get valuation rate from last sle for the same item and warehouse
if last_valuation_rate := frappe.db.sql( # nosemgrep if last_valuation_rate := frappe.db.sql(
"""select valuation_rate """select valuation_rate
from `tabStock Ledger Entry` force index (item_warehouse) from `tabStock Ledger Entry` force index (item_warehouse)
where where
@@ -1826,7 +1825,7 @@ def update_qty_in_future_sle(args, allow_negative_stock=False):
detail = next_stock_reco_detail[0] detail = next_stock_reco_detail[0]
datetime_limit_condition = get_datetime_limit_condition(detail) datetime_limit_condition = get_datetime_limit_condition(detail)
frappe.db.sql( # nosemgrep frappe.db.sql(
f""" f"""
update `tabStock Ledger Entry` update `tabStock Ledger Entry`
set qty_after_transaction = qty_after_transaction + {qty_shift} set qty_after_transaction = qty_after_transaction + {qty_shift}
@@ -1992,8 +1991,8 @@ def is_negative_with_precision(neg_sle, is_batch=False):
return qty_deficit < 0 and abs(qty_deficit) > 0.0001 return qty_deficit < 0 and abs(qty_deficit) > 0.0001
def get_future_sle_with_negative_qty(sle_args): def get_future_sle_with_negative_qty(args):
return frappe.db.sql( # nosemgrep return frappe.db.sql(
""" """
select select
qty_after_transaction, posting_date, posting_time, qty_after_transaction, posting_date, posting_time,
@@ -2009,13 +2008,13 @@ def get_future_sle_with_negative_qty(sle_args):
order by posting_date asc, posting_time asc order by posting_date asc, posting_time asc
limit 1 limit 1
""", """,
sle_args, args,
as_dict=1, as_dict=1,
) )
def get_future_sle_with_negative_batch_qty(sle_args): def get_future_sle_with_negative_batch_qty(args):
return frappe.db.sql( # nosemgrep return frappe.db.sql(
""" """
with batch_ledger as ( with batch_ledger as (
select select
@@ -2035,7 +2034,7 @@ def get_future_sle_with_negative_batch_qty(sle_args):
and posting_datetime >= %(posting_datetime)s and posting_datetime >= %(posting_datetime)s
limit 1 limit 1
""", """,
sle_args, args,
as_dict=1, as_dict=1,
) )