feat: Batch wise item pricing
This commit is contained in:
@@ -1103,6 +1103,11 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
batch_no: function(doc, cdt, cdn) {
|
||||||
|
let item = frappe.get_doc(cdt, cdn);
|
||||||
|
this.apply_pricing_rule(item, true);
|
||||||
|
},
|
||||||
|
|
||||||
toggle_conversion_factor: function(item) {
|
toggle_conversion_factor: function(item) {
|
||||||
// toggle read only property for conversion factor field if the uom and stock uom are same
|
// toggle read only property for conversion factor field if the uom and stock uom are same
|
||||||
if(this.frm.get_field('items').grid.fields_map.conversion_factor) {
|
if(this.frm.get_field('items').grid.fields_map.conversion_factor) {
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ class ItemPrice(Document):
|
|||||||
"valid_upto",
|
"valid_upto",
|
||||||
"packing_unit",
|
"packing_unit",
|
||||||
"customer",
|
"customer",
|
||||||
"supplier",]:
|
"supplier",
|
||||||
|
"batch_no"]:
|
||||||
if self.get(field):
|
if self.get(field):
|
||||||
conditions += " and {0} = %({0})s ".format(field)
|
conditions += " and {0} = %({0})s ".format(field)
|
||||||
else:
|
else:
|
||||||
@@ -68,7 +69,7 @@ class ItemPrice(Document):
|
|||||||
self.as_dict(),)
|
self.as_dict(),)
|
||||||
|
|
||||||
if price_list_rate:
|
if price_list_rate:
|
||||||
frappe.throw(_("Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, UOM, Qty, and Dates."), ItemPriceDuplicateItem,)
|
frappe.throw(_("Item Price appears multiple times based on Price List, Supplier/Customer, Currency, Item, Batch, UOM, Qty, and Dates."), ItemPriceDuplicateItem,)
|
||||||
|
|
||||||
def before_save(self):
|
def before_save(self):
|
||||||
if self.selling:
|
if self.selling:
|
||||||
|
|||||||
@@ -680,6 +680,9 @@ def get_item_price(args, item_code, ignore_party=False):
|
|||||||
else:
|
else:
|
||||||
conditions += "and (customer is null or customer = '') and (supplier is null or supplier = '')"
|
conditions += "and (customer is null or customer = '') and (supplier is null or supplier = '')"
|
||||||
|
|
||||||
|
if args.get('batch_no'):
|
||||||
|
conditions += "and batch_no = %(batch_no)s"
|
||||||
|
|
||||||
if args.get('transaction_date'):
|
if args.get('transaction_date'):
|
||||||
conditions += """ and %(transaction_date)s between
|
conditions += """ and %(transaction_date)s between
|
||||||
ifnull(valid_from, '2000-01-01') and ifnull(valid_upto, '2500-12-31')"""
|
ifnull(valid_from, '2000-01-01') and ifnull(valid_upto, '2500-12-31')"""
|
||||||
@@ -709,6 +712,7 @@ def get_price_list_rate_for(args, item_code):
|
|||||||
"uom": args.get('uom'),
|
"uom": args.get('uom'),
|
||||||
"transaction_date": args.get('transaction_date'),
|
"transaction_date": args.get('transaction_date'),
|
||||||
"posting_date": args.get('posting_date'),
|
"posting_date": args.get('posting_date'),
|
||||||
|
"batch_no": args.get('batch_no')
|
||||||
}
|
}
|
||||||
|
|
||||||
item_price_data = 0
|
item_price_data = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user