fix: fix creating documents from sales invoice (backport #45346) (#45407)

* fix: fix creating documents from sales invoice (#45346)

Co-authored-by: Meike Nedwidek <nedwidek@kk-software.de>
(cherry picked from commit 1758e125e0)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js

* fix: resolved conflict

---------

Co-authored-by: meike289 <63092915+meike289@users.noreply.github.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
This commit is contained in:
mergify[bot]
2025-01-23 18:19:32 +05:30
committed by GitHub
parent 69464ab7ff
commit 452b205021

View File

@@ -9,6 +9,10 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
setup(doc) { setup(doc) {
this.setup_posting_date_time_check(); this.setup_posting_date_time_check();
super.setup(doc); super.setup(doc);
this.frm.make_methods = {
Dunning: this.make_dunning.bind(this),
"Invoice Discounting": this.make_invoice_discounting.bind(this),
};
} }
company() { company() {
super.company(); super.company();
@@ -94,26 +98,35 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
} }
} }
if (doc.outstanding_amount>0) { if (doc.outstanding_amount > 0) {
cur_frm.add_custom_button(__('Payment Request'), function() { this.frm.add_custom_button(
me.make_payment_request(); __("Payment Request"),
}, __('Create')); function () {
me.make_payment_request();
},
__("Create")
);
this.frm.add_custom_button(
__("Invoice Discounting"),
this.make_invoice_discounting.bind(this),
__("Create")
);
cur_frm.add_custom_button(__('Invoice Discounting'), function() { const payment_is_overdue = doc.payment_schedule
cur_frm.events.create_invoice_discounting(cur_frm); .map((row) => Date.parse(row.due_date) < Date.now())
}, __('Create')); .reduce((prev, current) => prev || current, false);
if (doc.due_date < frappe.datetime.get_today()) { if (payment_is_overdue) {
cur_frm.add_custom_button(__('Dunning'), function() { this.frm.add_custom_button(__("Dunning"), this.make_dunning.bind(this), __("Create"));
cur_frm.events.create_dunning(cur_frm);
}, __('Create'));
} }
} }
if (doc.docstatus === 1) { if (doc.docstatus === 1) {
cur_frm.add_custom_button(__('Maintenance Schedule'), function () { this.frm.add_custom_button(
cur_frm.cscript.make_maintenance_schedule(); __("Maintenance Schedule"),
}, __('Create')); this.make_maintenance_schedule.bind(this),
__("Create")
);
} }
if(!doc.auto_repeat) { if(!doc.auto_repeat) {
@@ -146,6 +159,20 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
erpnext.accounts.unreconcile_payment.add_unreconcile_btn(me.frm); erpnext.accounts.unreconcile_payment.add_unreconcile_btn(me.frm);
} }
make_invoice_discounting() {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting",
frm: this.frm,
});
}
make_dunning() {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning",
frm: this.frm,
});
}
make_maintenance_schedule() { make_maintenance_schedule() {
frappe.model.open_mapped_doc({ frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_maintenance_schedule", method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_maintenance_schedule",
@@ -948,20 +975,6 @@ frappe.ui.form.on('Sales Invoice', {
frm.set_df_property('return_against', 'label', __('Adjustment Against')); frm.set_df_property('return_against', 'label', __('Adjustment Against'));
} }
}, },
create_invoice_discounting: function(frm) {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting",
frm: frm
});
},
create_dunning: function(frm) {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning",
frm: frm
});
}
}); });
frappe.ui.form.on("Sales Invoice Timesheet", { frappe.ui.form.on("Sales Invoice Timesheet", {