feat: new hook fields_for_group_similar_items to group additional fields for print formats (#40831)

(cherry picked from commit f7c9e1538b)

# Conflicts:
#	erpnext/hooks.py
This commit is contained in:
Smit Vora
2024-04-08 15:47:18 +05:30
committed by Mergify
parent 1eb720a7b0
commit 0172880fd3
2 changed files with 26 additions and 8 deletions

View File

@@ -3,6 +3,7 @@
import json
from collections import defaultdict
import frappe
from frappe import _, bold, qb, throw
@@ -1947,21 +1948,26 @@ class AccountsController(TransactionBase):
)
def group_similar_items(self):
group_item_qty = {}
group_item_amount = {}
grouped_items = {}
# to update serial number in print
count = 0
fields_to_group = frappe.get_hooks("fields_for_group_similar_items")
fields_to_group = set(fields_to_group)
for item in self.items:
group_item_qty[item.item_code] = group_item_qty.get(item.item_code, 0) + item.qty
group_item_amount[item.item_code] = group_item_amount.get(item.item_code, 0) + item.amount
item_values = grouped_items.setdefault(item.item_code, defaultdict(int))
for field in fields_to_group:
item_values[field] += item.get(field, 0)
duplicate_list = []
for item in self.items:
if item.item_code in group_item_qty:
if item.item_code in grouped_items:
count += 1
item.qty = group_item_qty[item.item_code]
item.amount = group_item_amount[item.item_code]
for field in fields_to_group:
item.set(field, grouped_items[item.item_code][field])
if item.qty:
item.rate = flt(flt(item.amount) / flt(item.qty), item.precision("rate"))
@@ -1969,7 +1975,7 @@ class AccountsController(TransactionBase):
item.rate = 0
item.idx = count
del group_item_qty[item.item_code]
del grouped_items[item.item_code]
else:
duplicate_list.append(item)
for item in duplicate_list:

View File

@@ -643,3 +643,15 @@ extend_bootinfo = [
"erpnext.support.doctype.service_level_agreement.service_level_agreement.add_sla_doctypes",
"erpnext.startup.boot.bootinfo",
]
<<<<<<< HEAD
=======
default_log_clearing_doctypes = {
"Repost Item Valuation": 60,
}
export_python_type_annotations = True
fields_for_group_similar_items = ["qty", "amount"]
>>>>>>> f7c9e1538b (feat: new hook `fields_for_group_similar_items` to group additional fields for print formats (#40831))