mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-27 17:04:47 +00:00
feat: add jinja templating in contract template
This commit is contained in:
@@ -1,23 +1,27 @@
|
|||||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
// For license information, please see license.txt
|
// For license information, please see license.txt
|
||||||
|
|
||||||
cur_frm.add_fetch("contract_template", "contract_terms", "contract_terms");
|
|
||||||
cur_frm.add_fetch("contract_template", "requires_fulfilment", "requires_fulfilment");
|
|
||||||
|
|
||||||
// Add fulfilment terms from contract template into contract
|
|
||||||
frappe.ui.form.on("Contract", {
|
frappe.ui.form.on("Contract", {
|
||||||
contract_template: function (frm) {
|
contract_template: function (frm) {
|
||||||
// Populate the fulfilment terms table from a contract template, if any
|
|
||||||
if (frm.doc.contract_template) {
|
if (frm.doc.contract_template) {
|
||||||
frappe.model.with_doc("Contract Template", frm.doc.contract_template, function () {
|
frappe.call({
|
||||||
var tabletransfer = frappe.model.get_doc("Contract Template", frm.doc.contract_template);
|
method: 'erpnext.crm.doctype.contract_template.contract_template.get_contract_template',
|
||||||
|
args: {
|
||||||
|
template_name: frm.doc.contract_template,
|
||||||
|
doc: frm.doc
|
||||||
|
},
|
||||||
|
callback: function(r) {
|
||||||
|
if(r && r.message){
|
||||||
|
frm.set_value("contract_terms", r.message.contract_terms);
|
||||||
|
|
||||||
frm.doc.fulfilment_terms = [];
|
// Populate the fulfilment terms table from a contract template, if any
|
||||||
$.each(tabletransfer.fulfilment_terms, function (index, row) {
|
r.message.contract_template.fulfilment_terms.forEach(element => {
|
||||||
var d = frm.add_child("fulfilment_terms");
|
let d = frm.add_child("fulfilment_terms");
|
||||||
d.requirement = row.requirement;
|
d.requirement = element.requirement;
|
||||||
frm.refresh_field("fulfilment_terms");
|
});
|
||||||
});
|
frm.refresh_field("fulfilment_terms");
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
"actions": [],
|
||||||
"allow_import": 1,
|
"allow_import": 1,
|
||||||
"allow_rename": 1,
|
"allow_rename": 1,
|
||||||
"creation": "2018-04-12 06:32:04.582486",
|
"creation": "2018-04-12 06:32:04.582486",
|
||||||
@@ -175,6 +176,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "0",
|
"default": "0",
|
||||||
|
"fetch_from": "contract_template.requires_fulfilment",
|
||||||
"fieldname": "requires_fulfilment",
|
"fieldname": "requires_fulfilment",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Requires Fulfilment"
|
"label": "Requires Fulfilment"
|
||||||
@@ -247,7 +249,7 @@
|
|||||||
],
|
],
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2020-03-30 06:56:07.257932",
|
"modified": "2020-12-02 21:12:44.118155",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "CRM",
|
"module": "CRM",
|
||||||
"name": "Contract",
|
"name": "Contract",
|
||||||
|
|||||||
@@ -5,6 +5,29 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from frappe.utils.jinja import validate_template
|
||||||
|
from six import string_types
|
||||||
|
import json
|
||||||
|
|
||||||
class ContractTemplate(Document):
|
class ContractTemplate(Document):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def validate(self):
|
||||||
|
if self.contract_terms:
|
||||||
|
validate_template(self.contract_terms)
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def get_contract_template(template_name, doc):
|
||||||
|
if isinstance(doc, string_types):
|
||||||
|
doc = json.loads(doc)
|
||||||
|
|
||||||
|
contract_template = frappe.get_doc("Contract Template", template_name)
|
||||||
|
contract_terms = None
|
||||||
|
|
||||||
|
if contract_template.contract_terms:
|
||||||
|
contract_terms = frappe.render_template(contract_template.contract_terms, doc)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'contract_template': contract_template,
|
||||||
|
'contract_terms': contract_terms
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user