diff --git a/erpnext/accounts/doctype/discount_terms/discount_terms.json b/erpnext/accounts/doctype/discount_terms/discount_terms.json index 88b5730b097b..fb974cdad672 100644 --- a/erpnext/accounts/doctype/discount_terms/discount_terms.json +++ b/erpnext/accounts/doctype/discount_terms/discount_terms.json @@ -7,8 +7,7 @@ "field_order": [ "discount", "no_of_days", - "discount_date", - "due_date" + "discount_date" ], "fields": [ { @@ -28,17 +27,12 @@ "fieldtype": "Date", "label": "Discount Date", "read_only": 1 - }, - { - "fieldname": "due_date", - "fieldtype": "Date", - "label": "Due Date" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-11-11 20:51:43.101806", + "modified": "2024-11-13 10:13:58.307547", "modified_by": "Administrator", "module": "Accounts", "name": "Discount Terms", diff --git a/erpnext/accounts/doctype/discount_terms/discount_terms.py b/erpnext/accounts/doctype/discount_terms/discount_terms.py index 44766ddba578..8579ea4e6f12 100644 --- a/erpnext/accounts/doctype/discount_terms/discount_terms.py +++ b/erpnext/accounts/doctype/discount_terms/discount_terms.py @@ -16,7 +16,6 @@ class DiscountTerms(Document): discount: DF.Float discount_date: DF.Date | None - due_date: DF.Date | None no_of_days: DF.Int parent: DF.Data parentfield: DF.Data diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js index bb9ca18357bc..237056e44c04 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.js +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js @@ -1116,7 +1116,7 @@ frappe.ui.form.on("Payment Entry", { //If allocate payment amount checkbox is unchecked, set zero to allocate amount row.allocated_amount = 0; } else if ( - frappe.flags.allocate_payment_amount != 0 && + !frappe.flags.is_amount_settled && frappe.flags.allocate_payment_amount != 0 && (!row.allocated_amount || paid_amount_change) ) { if (row.outstanding_amount > 0 && allocated_positive_outstanding >= 0) { @@ -1134,7 +1134,8 @@ frappe.ui.form.on("Payment Entry", { } } }); - + + if(frappe.flags.is_amount_settled) frappe.flags.is_amount_settled = undefined frm.refresh_fields(); frm.events.set_total_allocated_amount(frm); }, @@ -1942,9 +1943,8 @@ function show_invoice_dialogue() { party: cur_frm.doc.party, }, callback:(response)=>{ - for(let df in response.message){ - cur_frm.set_value(df, response.message[df]) - } + for(let df in response.message) cur_frm.set_value(df, response.message[df]) + frappe.flags.is_amount_settled = true dialog.hide(); } }) diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 2878671d1609..c43a8c31715d 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -2863,6 +2863,7 @@ def calculate_discount_for_multiple_invoice(dt, dn_list_obj, reference_date,part reference_table = [] deduction_table = [] paid_amount = 0 + total_allocated_amount = 0 for dn_obj in dn_list_obj: @@ -2890,16 +2891,17 @@ def calculate_discount_for_multiple_invoice(dt, dn_list_obj, reference_date,part discount_amount = -discount_amount if dt == "Purchase Invoice" else discount_amount total_allocated_amount += dn_obj.amount_to_be_paid deduction_table.append({ - "account" : discount_account , - "cost_center" : dn_obj.cost_center , + "account" : discount_account, + "cost_center" :dn_obj.cost_center, "amount" : flt(discount_amount) , }) - return { "references": reference_table, - "deductions": deduction_table, "paid_amount": paid_amount, - "total_allocated_amount" : total_allocated_amount + "deductions": deduction_table, + "total_allocated_amount" : total_allocated_amount, + "unallocated_amount":0, + "difference_amount":0 } \ No newline at end of file diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js index b47d0b92a292..7b8b03e37a06 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js @@ -489,14 +489,11 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying. } due_date(frm){ - if (!frm.payment_discount_terms || (frm.payment_discount_terms && frm.payment_discount_terms.length < 1)){ - return - } - for(let row of frm.payment_discount_terms) - { - row.due_date = frm.due_date - } - cur_frm.refresh_field('payment_discount_terms') + cur_frm.set_value("discount_due_date",frm.due_date) + } + + discount_due_date(frm){ + cur_frm.set_value("due_date",frm.discount_due_date) } }; @@ -770,15 +767,5 @@ frappe.ui.form.on("Discount Terms", { let discount_date = frappe.datetime.add_days(frappe.datetime.get_today(), frm.selected_doc.no_of_days) frm.selected_doc.discount_date = discount_date frm.refresh_field("payment_discount_terms") - }, - due_date:(frm)=>{ - let due_date = frm.selected_doc.due_date - if (!due_date) return - - for(let row of frm.doc.payment_discount_terms) row.due_date = due_date - - frm.doc.due_date = due_date - cur_frm.refresh_field('payment_discount_terms') - cur_frm.refresh_field('due_date') } }) \ No newline at end of file diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json index bc9f4508334b..276a980d28d8 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json @@ -153,6 +153,9 @@ "terms_tab", "payment_schedule_section", "payment_term", + "column_break_sa8m", + "discount_due_date", + "section_break_wa3t", "payment_discount_terms", "payment_terms_template", "ignore_default_payment_terms_template", @@ -1138,18 +1141,18 @@ { "fieldname": "payment_terms_template", "fieldtype": "Link", + "hidden": 1, "label": "Payment Terms Template", - "options": "Payment Terms Template", - "hidden":1 + "options": "Payment Terms Template" }, { "fieldname": "payment_schedule", "fieldtype": "Table", + "hidden": 1, "label": "Payment Schedule", "no_copy": 1, "options": "Payment Schedule", - "print_hide": 1, - "hidden":1 + "print_hide": 1 }, { "fieldname": "terms_section_break", @@ -1639,13 +1642,26 @@ "fieldname": "payment_discount_terms", "fieldtype": "Table", "options": "Discount Terms" + }, + { + "fieldname": "column_break_sa8m", + "fieldtype": "Column Break" + }, + { + "fieldname": "discount_due_date", + "fieldtype": "Date", + "label": "Discount Due Date" + }, + { + "fieldname": "section_break_wa3t", + "fieldtype": "Section Break" } ], "icon": "fa fa-file-text", "idx": 204, "is_submittable": 1, "links": [], - "modified": "2024-11-05 16:09:42.417227", + "modified": "2024-11-13 10:33:48.607034", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice", diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 8fd137baf671..35032c65d5d8 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -112,6 +112,7 @@ class PurchaseInvoice(BuyingController): currency: DF.Link | None disable_rounded_total: DF.Check discount_amount: DF.Currency + discount_due_date: DF.Date | None due_date: DF.Date | None from_date: DF.Date | None grand_total: DF.Currency diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js index 25fa2a705644..30ba6fa45c98 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js @@ -605,14 +605,11 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends ( } due_date(frm){ - if (!frm.payment_discount_terms || (frm.payment_discount_terms && frm.payment_discount_terms.length < 1)){ - return - } - for(let row of frm.payment_discount_terms) - { - row.due_date = frm.due_date - } - cur_frm.refresh_field('payment_discount_terms') + cur_frm.set_value("discount_due_date",frm.due_date) + } + + discount_due_date(frm){ + cur_frm.set_value("due_date",frm.discount_due_date) } }; @@ -1184,15 +1181,5 @@ frappe.ui.form.on("Discount Terms", { let discount_date = frappe.datetime.add_days(frappe.datetime.get_today(), frm.selected_doc.no_of_days) frm.selected_doc.discount_date = discount_date frm.refresh_field("payment_discount_terms") - }, - due_date:(frm)=>{ - let due_date = frm.selected_doc.due_date - if (!due_date) return - - for(let row of frm.doc.payment_discount_terms) row.due_date = due_date - - frm.doc.due_date = due_date - cur_frm.refresh_field('payment_discount_terms') - cur_frm.refresh_field('due_date') } }) diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json index 9fccb22eaa3d..97a4cc096365 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.json +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.json @@ -163,7 +163,11 @@ "company_address_display", "terms_tab", "payment_schedule_section", + "section_break_kvga", "payment_term", + "column_break_ccyt", + "discount_due_date", + "section_break_zrni", "payment_discount_terms", "ignore_default_payment_terms_template", "payment_terms_template", @@ -1311,25 +1315,25 @@ "depends_on": "eval:(!doc.is_pos && !doc.is_return)", "fieldname": "payment_terms_template", "fieldtype": "Link", + "hidden": 1, "hide_days": 1, "hide_seconds": 1, "label": "Payment Terms Template", "no_copy": 1, "options": "Payment Terms Template", - "print_hide": 1, - "hidden":1 + "print_hide": 1 }, { "depends_on": "eval:(!doc.is_pos && !doc.is_return)", "fieldname": "payment_schedule", "fieldtype": "Table", + "hidden": 1, "hide_days": 1, "hide_seconds": 1, "label": "Payment Schedule", "no_copy": 1, "options": "Payment Schedule", - "print_hide": 1, - "hidden":1 + "print_hide": 1 }, { "collapsible": 1, @@ -2091,6 +2095,23 @@ "fieldtype": "Table", "label": "Payment Discount Terms", "options": "Discount Terms" + }, + { + "fieldname": "section_break_kvga", + "fieldtype": "Section Break" + }, + { + "fieldname": "column_break_ccyt", + "fieldtype": "Column Break" + }, + { + "fieldname": "discount_due_date", + "fieldtype": "Date", + "label": "Discount Due Date" + }, + { + "fieldname": "section_break_zrni", + "fieldtype": "Section Break" } ], "icon": "fa fa-file-text", @@ -2103,7 +2124,7 @@ "link_fieldname": "consolidated_invoice" } ], - "modified": "2024-10-31 13:07:06.470425", + "modified": "2024-11-13 10:20:09.482861", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice", diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py index edab45535824..ccb6879802ef 100644 --- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py @@ -104,6 +104,7 @@ class SalesInvoice(SellingController): debit_to: DF.Link disable_rounded_total: DF.Check discount_amount: DF.Currency + discount_due_date: DF.Date | None dispatch_address: DF.SmallText | None dispatch_address_name: DF.Link | None due_date: DF.Date | None