fixes for productiojn order
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.js b/erpnext/manufacturing/doctype/production_order/production_order.js
index 502277b..f8bb99e 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.js
+++ b/erpnext/manufacturing/doctype/production_order/production_order.js
@@ -7,6 +7,11 @@
cfn_set_fields(doc, dt, dn);
this.frm.add_fetch("sales_order", "delivery_date", "expected_delivery_date");
+
+ return this.frm.call({
+ doc: this.frm.doc,
+ method: "set_actual_dates"
+ });
},
before_submit: function() {
@@ -60,10 +65,14 @@
bom_no: function() {
return this.frm.call({
doc: this.frm.doc,
- method: "set_production_order_operations",
- callback: function(r) {
- if(!r.exc) refresh_field("operations");
- }
+ method: "set_production_order_operations"
+ });
+ },
+
+ planned_start_date: function() {
+ return this.frm.call({
+ doc: this.frm.doc,
+ method: "plan_operations"
});
},
diff --git a/erpnext/manufacturing/doctype/production_order/production_order.py b/erpnext/manufacturing/doctype/production_order/production_order.py
index 9ac1c48..83a7ff1 100644
--- a/erpnext/manufacturing/doctype/production_order/production_order.py
+++ b/erpnext/manufacturing/doctype/production_order/production_order.py
@@ -175,16 +175,17 @@
self.calculate_operating_cost()
def plan_operations(self):
- scheduled_datetime = self.planned_start_date
- for d in self.get('operations'):
- while getdate(scheduled_datetime) in self.get_holidays(d.workstation):
- scheduled_datetime = get_datetime(scheduled_datetime) + relativedelta(days=1)
+ if self.planned_start_date:
+ scheduled_datetime = self.planned_start_date
+ for d in self.get('operations'):
+ while getdate(scheduled_datetime) in self.get_holidays(d.workstation):
+ scheduled_datetime = get_datetime(scheduled_datetime) + relativedelta(days=1)
- d.planned_start_time = scheduled_datetime
- scheduled_datetime = get_datetime(scheduled_datetime) + relativedelta(minutes=d.time_in_mins)
- d.planned_end_time = scheduled_datetime
+ d.planned_start_time = scheduled_datetime
+ scheduled_datetime = get_datetime(scheduled_datetime) + relativedelta(minutes=d.time_in_mins)
+ d.planned_end_time = scheduled_datetime
- self.planned_end_date = scheduled_datetime
+ self.planned_end_date = scheduled_datetime
def get_holidays(self, workstation):
@@ -208,7 +209,16 @@
d.status = "Completed"
else:
frappe.throw(_("Completed Qty can not be greater than 'Qty to Manufacture'"))
-
+
+ def set_actual_dates(self):
+ if self.get("operations"):
+ actual_date = frappe.db.sql("""select min(actual_start_time) as start_date, max(actual_end_time) as end_date from `tabProduction Order Operation`
+ where parent = %s and docstatus=1""", self.name, as_dict=1)[0]
+ self.actual_start_date = actual_date.start_date
+ self.actual_end_date = actual_date.end_date
+ else:
+ self.actual_start_date = None
+ self.actual_end_date = None
@frappe.whitelist()
def get_item_details(item):