mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 08:54:45 +00:00
fix: schedule date
This commit is contained in:
@@ -246,7 +246,7 @@ def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=Fa
|
|||||||
if pricing_rule.price_or_product_discount == "Price":
|
if pricing_rule.price_or_product_discount == "Price":
|
||||||
apply_price_discount_rule(pricing_rule, item_details, args)
|
apply_price_discount_rule(pricing_rule, item_details, args)
|
||||||
else:
|
else:
|
||||||
get_product_discount_rule(pricing_rule, item_details)
|
get_product_discount_rule(pricing_rule, item_details, doc)
|
||||||
|
|
||||||
item_details.has_pricing_rule = 1
|
item_details.has_pricing_rule = 1
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from __future__ import unicode_literals
|
|||||||
import frappe, copy, json
|
import frappe, copy, json
|
||||||
from frappe import throw, _
|
from frappe import throw, _
|
||||||
from six import string_types
|
from six import string_types
|
||||||
from frappe.utils import flt, cint, get_datetime, get_link_to_form
|
from frappe.utils import flt, cint, get_datetime, get_link_to_form, today
|
||||||
from erpnext.setup.doctype.item_group.item_group import get_child_item_groups
|
from erpnext.setup.doctype.item_group.item_group import get_child_item_groups
|
||||||
from erpnext.stock.doctype.warehouse.warehouse import get_child_warehouses
|
from erpnext.stock.doctype.warehouse.warehouse import get_child_warehouses
|
||||||
from erpnext.stock.get_item_details import get_conversion_factor
|
from erpnext.stock.get_item_details import get_conversion_factor
|
||||||
@@ -434,8 +434,8 @@ def apply_pricing_rule_on_transaction(doc):
|
|||||||
|
|
||||||
doc.calculate_taxes_and_totals()
|
doc.calculate_taxes_and_totals()
|
||||||
elif d.price_or_product_discount == 'Product':
|
elif d.price_or_product_discount == 'Product':
|
||||||
item_details = frappe._dict()
|
item_details = frappe._dict({'parenttype': doc.doctype})
|
||||||
get_product_discount_rule(d, item_details)
|
get_product_discount_rule(d, item_details, doc)
|
||||||
apply_pricing_rule_for_free_items(doc, item_details.free_item_data)
|
apply_pricing_rule_for_free_items(doc, item_details.free_item_data)
|
||||||
doc.set_missing_values()
|
doc.set_missing_values()
|
||||||
|
|
||||||
@@ -443,7 +443,7 @@ def get_applied_pricing_rules(item_row):
|
|||||||
return (item_row.get("pricing_rules").split(',')
|
return (item_row.get("pricing_rules").split(',')
|
||||||
if item_row.get("pricing_rules") else [])
|
if item_row.get("pricing_rules") else [])
|
||||||
|
|
||||||
def get_product_discount_rule(pricing_rule, item_details):
|
def get_product_discount_rule(pricing_rule, item_details, doc=None):
|
||||||
free_item = (pricing_rule.free_item
|
free_item = (pricing_rule.free_item
|
||||||
if not pricing_rule.same_item or pricing_rule.apply_on == 'Transaction' else item_details.item_code)
|
if not pricing_rule.same_item or pricing_rule.apply_on == 'Transaction' else item_details.item_code)
|
||||||
|
|
||||||
@@ -467,6 +467,12 @@ def get_product_discount_rule(pricing_rule, item_details):
|
|||||||
item_details.free_item_data['conversion_factor'] = get_conversion_factor(free_item,
|
item_details.free_item_data['conversion_factor'] = get_conversion_factor(free_item,
|
||||||
item_details.free_item_data['uom']).get("conversion_factor", 1)
|
item_details.free_item_data['uom']).get("conversion_factor", 1)
|
||||||
|
|
||||||
|
if item_details.get("parenttype") == 'Purchase Order':
|
||||||
|
item_details.free_item_data['schedule_date'] = doc.schedule_date if doc else today()
|
||||||
|
|
||||||
|
if item_details.get("parenttype") == 'Sales Order':
|
||||||
|
item_details.free_item_data['delivery_date'] = doc.delivery_date if doc else today()
|
||||||
|
|
||||||
def apply_pricing_rule_for_free_items(doc, pricing_rule_args, set_missing_values=False):
|
def apply_pricing_rule_for_free_items(doc, pricing_rule_args, set_missing_values=False):
|
||||||
if pricing_rule_args.get('item_code'):
|
if pricing_rule_args.get('item_code'):
|
||||||
items = [d.item_code for d in doc.items
|
items = [d.item_code for d in doc.items
|
||||||
|
|||||||
@@ -735,6 +735,10 @@ class BuyingController(StockController):
|
|||||||
if not self.get("items"):
|
if not self.get("items"):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
earliest_schedule_date = min([d.schedule_date for d in self.get("items")])
|
||||||
|
if earliest_schedule_date:
|
||||||
|
self.schedule_date = earliest_schedule_date
|
||||||
|
|
||||||
if self.schedule_date:
|
if self.schedule_date:
|
||||||
for d in self.get('items'):
|
for d in self.get('items'):
|
||||||
if not d.schedule_date:
|
if not d.schedule_date:
|
||||||
@@ -746,10 +750,6 @@ class BuyingController(StockController):
|
|||||||
else:
|
else:
|
||||||
frappe.throw(_("Please enter Reqd by Date"))
|
frappe.throw(_("Please enter Reqd by Date"))
|
||||||
|
|
||||||
earliest_schedule_date = min([d.schedule_date for d in self.get("items")])
|
|
||||||
if earliest_schedule_date:
|
|
||||||
self.schedule_date = earliest_schedule_date
|
|
||||||
|
|
||||||
def validate_items(self):
|
def validate_items(self):
|
||||||
# validate items to see if they have is_purchase_item or is_subcontracted_item enabled
|
# validate items to see if they have is_purchase_item or is_subcontracted_item enabled
|
||||||
if self.doctype=="Material Request": return
|
if self.doctype=="Material Request": return
|
||||||
|
|||||||
Reference in New Issue
Block a user