feat(payment request): create payment request as per payment schedules

(cherry picked from commit e476dff842)
This commit is contained in:
Jatin3128
2026-01-16 05:39:43 +05:30
committed by Mergify
parent 298ea33922
commit 751a081253
10 changed files with 363 additions and 106 deletions

View File

@@ -450,7 +450,106 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
},
});
}
make_payment_request_with_schedule = async function () {
let frm = this.frm;
const { message: schedules } = await frappe.call({
method: "erpnext.accounts.doctype.payment_request.payment_request.get_available_payment_schedules",
args: {
reference_doctype: frm.doctype,
reference_name: frm.doc.name,
},
});
if (!schedules.length) {
this.make_payment_request();
return;
}
if (!schedules || !schedules.length) {
frappe.msgprint(__("No pending payment schedules available."));
return;
}
const dialog = new frappe.ui.Dialog({
title: __("Select Payment Schedule"),
fields: [
{
fieldtype: "Table",
fieldname: "payment_schedules",
label: __("Payment Schedules"),
cannot_add_rows: true,
in_place_edit: false,
data: schedules,
fields: [
{
fieldtype: "Data",
fieldname: "name",
label: __("Schedule Name"),
read_only: 1,
},
{
fieldtype: "Data",
fieldname: "payment_term",
label: __("Payment Term"),
in_list_view: 1,
read_only: 1,
},
{
fieldtype: "Date",
fieldname: "due_date",
label: __("Due Date"),
in_list_view: 1,
read_only: 1,
},
{
fieldtype: "Currency",
fieldname: "payment_amount",
label: __("Amount"),
in_list_view: 1,
read_only: 1,
},
],
},
],
primary_action_label: __("Create Payment Request"),
primary_action: async () => {
const values = dialog.get_values();
const selected = values.payment_schedules.filter((r) => r.__checked);
if (!selected.length) {
frappe.msgprint(__("Please select at least one schedule."));
return;
}
console.log(selected);
dialog.hide();
let me = this;
const payment_request_type = ["Sales Order", "Sales Invoice"].includes(this.frm.doc.doctype)
? "Inward"
: "Outward";
const { message: pr_name } = await frappe.call({
method: "erpnext.accounts.doctype.payment_request.payment_request.make_payment_request",
args: {
dt: me.frm.doc.doctype,
dn: me.frm.doc.name,
recipient_id: me.frm.doc.contact_email,
payment_request_type: payment_request_type,
party_type: payment_request_type == "Outward" ? "Supplier" : "Customer",
party: payment_request_type == "Outward" ? me.frm.doc.supplier : me.frm.doc.customer,
party_name:
payment_request_type == "Outward"
? me.frm.doc.supplier_name
: me.frm.doc.customer_name,
reference_doctype: frm.doctype,
reference_name: frm.docname,
schedules: selected,
},
});
frappe.set_route("Form", "Payment Request", pr_name.name);
},
});
dialog.show();
};
onload_post_render() {
if (
this.frm.doc.__islocal &&