Create a project from a Sales Order (#9111)
* init commit * don't get tasks if project name is none * cleanup * Update sales_order.js
This commit is contained in:
parent
e159ce9a27
commit
31692a2595
@ -47,6 +47,9 @@ class Project(Document):
|
|||||||
self.append("tasks", task_map)
|
self.append("tasks", task_map)
|
||||||
|
|
||||||
def get_tasks(self):
|
def get_tasks(self):
|
||||||
|
if self.name is None:
|
||||||
|
return {}
|
||||||
|
else:
|
||||||
return frappe.get_all("Task", "*", {"project": self.name}, order_by="exp_start_date asc")
|
return frappe.get_all("Task", "*", {"project": self.name}, order_by="exp_start_date asc")
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
|
@ -10,7 +10,8 @@ frappe.ui.form.on("Sales Order", {
|
|||||||
'Delivery Note': 'Delivery',
|
'Delivery Note': 'Delivery',
|
||||||
'Sales Invoice': 'Invoice',
|
'Sales Invoice': 'Invoice',
|
||||||
'Material Request': 'Material Request',
|
'Material Request': 'Material Request',
|
||||||
'Purchase Order': 'Purchase Order'
|
'Purchase Order': 'Purchase Order',
|
||||||
|
'Project': 'Project'
|
||||||
}
|
}
|
||||||
frm.add_fetch('customer', 'tax_id', 'tax_id');
|
frm.add_fetch('customer', 'tax_id', 'tax_id');
|
||||||
},
|
},
|
||||||
@ -120,6 +121,12 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
|||||||
function() { me.make_maintenance_schedule() }, __("Make"));
|
function() { me.make_maintenance_schedule() }, __("Make"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// project
|
||||||
|
if(flt(doc.per_delivered, 2) < 100 && ["Sales", "Shopping Cart"].indexOf(doc.order_type)!==-1 && allow_delivery) {
|
||||||
|
this.frm.add_custom_button(__('Project'),
|
||||||
|
function() { me.make_project() }, __("Make"));
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (this.frm.has_perm("submit")) {
|
if (this.frm.has_perm("submit")) {
|
||||||
// un-close
|
// un-close
|
||||||
@ -264,6 +271,13 @@ erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend(
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
make_project: function() {
|
||||||
|
frappe.model.open_mapped_doc({
|
||||||
|
method: "erpnext.selling.doctype.sales_order.sales_order.make_project",
|
||||||
|
frm: this.frm
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
make_maintenance_visit: function() {
|
make_maintenance_visit: function() {
|
||||||
frappe.model.open_mapped_doc({
|
frappe.model.open_mapped_doc({
|
||||||
method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_visit",
|
method: "erpnext.selling.doctype.sales_order.sales_order.make_maintenance_visit",
|
||||||
|
@ -408,6 +408,34 @@ def make_material_request(source_name, target_doc=None):
|
|||||||
|
|
||||||
return doc
|
return doc
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def make_project(source_name, target_doc=None):
|
||||||
|
def postprocess(source, doc):
|
||||||
|
doc.project_type = "External"
|
||||||
|
doc.project_name = source.name
|
||||||
|
|
||||||
|
doc = get_mapped_doc("Sales Order", source_name, {
|
||||||
|
"Sales Order": {
|
||||||
|
"doctype": "Project",
|
||||||
|
"validation": {
|
||||||
|
"docstatus": ["=", 1]
|
||||||
|
},
|
||||||
|
"field_map":{
|
||||||
|
"name" : "sales_order",
|
||||||
|
"delivery_date" : "expected_end_date",
|
||||||
|
"base_grand_total" : "estimated_costing",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Sales Order Item": {
|
||||||
|
"doctype": "Project Task",
|
||||||
|
"field_map": {
|
||||||
|
"description": "title",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}, target_doc, postprocess)
|
||||||
|
|
||||||
|
return doc
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_delivery_note(source_name, target_doc=None):
|
def make_delivery_note(source_name, target_doc=None):
|
||||||
def set_missing_values(source, target):
|
def set_missing_values(source, target):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user