我在 frappe 中有一个函数,用于计算发票到期日。我有 4 种类型的客户信用条款,posting_date
分别是发票月份最后一天的 0、7、14 天和 30 天——即,如果发票是在 5 月的任何日期提出payment_due_date
的30/06/15
。
所以我有以下功能get_due_date
。0、7、14 天客户的所有客户payment_due_dates
都可以正常工作,但 30 天仍然不行。它只是增加了 30 天到posting_date
.
我是 Javascript 新手,所以我借用了该frappe.ui.form.on
部分中的代码,我怀疑最后一行错误地“覆盖”了我的get_due_date
函数,但我不知道正确执行它的语法。
有人可以帮忙吗?
function get_due_date(base, days){
base = frappe.datetime.str_to_obj(base);
days = parseInt(days, 10);
var fmt = frappe.datetime.obj_to_str;
switch (parseInt(days)){
case (0):
return fmt(base);
case (7):
case (15):
return fmt(frappe.datetime.add_days(base, days));
case (30):
base = new Date(base.getFullYear(), base.getMonth()+2, 0);
return fmt(base)
}
}
frappe.ui.form.on("Sales Invoice", "posting_date", function(frm) {
var days = get_db_value('Customer', frm.doc.customer, 'credit_days');
days = days*1;
console.log([days, frm]);
msgprint(get_due_date(frm.doc.posting_date, days));
if (days && frm.doc.posting_date){
frappe.model.set_value('Sales Invoice', frm.doc.name, 'payment_due_date', get_due_date(frm.doc.posting_date, days));
}
});