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)
|
||||
|
||||
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")
|
||||
|
||||
def validate(self):
|
||||
|
@ -10,7 +10,8 @@ frappe.ui.form.on("Sales Order", {
|
||||
'Delivery Note': 'Delivery',
|
||||
'Sales Invoice': 'Invoice',
|
||||
'Material Request': 'Material Request',
|
||||
'Purchase Order': 'Purchase Order'
|
||||
'Purchase Order': 'Purchase Order',
|
||||
'Project': 'Project'
|
||||
}
|
||||
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"));
|
||||
}
|
||||
|
||||
// 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 {
|
||||
if (this.frm.has_perm("submit")) {
|
||||
// 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() {
|
||||
frappe.model.open_mapped_doc({
|
||||
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
|
||||
|
||||
@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()
|
||||
def make_delivery_note(source_name, target_doc=None):
|
||||
def set_missing_values(source, target):
|
||||
|
Loading…
x
Reference in New Issue
Block a user