feat: add jinja templating in contract template
This commit is contained in:
parent
376c1eaa48
commit
9abc685504
@ -1,23 +1,27 @@
|
||||
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
|
||||
// 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", {
|
||||
contract_template: function (frm) {
|
||||
// Populate the fulfilment terms table from a contract template, if any
|
||||
if (frm.doc.contract_template) {
|
||||
frappe.model.with_doc("Contract Template", frm.doc.contract_template, function () {
|
||||
var tabletransfer = frappe.model.get_doc("Contract Template", frm.doc.contract_template);
|
||||
|
||||
frm.doc.fulfilment_terms = [];
|
||||
$.each(tabletransfer.fulfilment_terms, function (index, row) {
|
||||
var d = frm.add_child("fulfilment_terms");
|
||||
d.requirement = row.requirement;
|
||||
frm.refresh_field("fulfilment_terms");
|
||||
});
|
||||
frappe.call({
|
||||
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);
|
||||
|
||||
// Populate the fulfilment terms table from a contract template, if any
|
||||
r.message.contract_template.fulfilment_terms.forEach(element => {
|
||||
let d = frm.add_child("fulfilment_terms");
|
||||
d.requirement = element.requirement;
|
||||
});
|
||||
frm.refresh_field("fulfilment_terms");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"actions": [],
|
||||
"allow_import": 1,
|
||||
"allow_rename": 1,
|
||||
"creation": "2018-04-12 06:32:04.582486",
|
||||
@ -175,6 +176,7 @@
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fetch_from": "contract_template.requires_fulfilment",
|
||||
"fieldname": "requires_fulfilment",
|
||||
"fieldtype": "Check",
|
||||
"label": "Requires Fulfilment"
|
||||
@ -247,7 +249,7 @@
|
||||
],
|
||||
"is_submittable": 1,
|
||||
"links": [],
|
||||
"modified": "2020-03-30 06:56:07.257932",
|
||||
"modified": "2020-12-02 21:12:44.118155",
|
||||
"modified_by": "Administrator",
|
||||
"module": "CRM",
|
||||
"name": "Contract",
|
||||
|
@ -5,6 +5,29 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils.jinja import validate_template
|
||||
from six import string_types
|
||||
import json
|
||||
|
||||
class ContractTemplate(Document):
|
||||
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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user