feat: added arguments of posting date and reference date
diff --git a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
index 5d59497..31c70b5 100644
--- a/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
+++ b/erpnext/public/js/bank_reconciliation_tool/dialog_manager.js
@@ -11,7 +11,6 @@
this.from_reference_date = from_reference_date;
this.to_reference_date = to_reference_date;
}
-
show_dialog(bank_transaction_name, update_dt_cards) {
this.bank_transaction_name = bank_transaction_name;
this.update_dt_cards = update_dt_cards;
@@ -47,588 +46,6 @@
},
});
}
- frappe.provide("erpnext.accounts.bank_reconciliation");
-
- erpnext.accounts.bank_reconciliation.DialogManager = class DialogManager {
- constructor(company, bank_account) {
- this.bank_account = bank_account;
- this.company = company;
- this.make_dialog();
- }
-
- show_dialog(bank_transaction_name, update_dt_cards) {
- this.bank_transaction_name = bank_transaction_name;
- this.update_dt_cards = update_dt_cards;
- frappe.call({
- method: "frappe.client.get_value",
- args: {
- doctype: "Bank Transaction",
- filters: { name: this.bank_transaction_name },
- fieldname: [
- "date as reference_date",
- "deposit",
- "withdrawal",
- "currency",
- "description",
- "name",
- "bank_account",
- "company",
- "reference_number",
- "party_type",
- "party",
- "unallocated_amount",
- "allocated_amount",
- ],
- },
- callback: (r) => {
- if (r.message) {
- this.bank_transaction = r.message;
- r.message.payment_entry = 1;
- r.message.journal_entry = 1;
- this.dialog.set_values(r.message);
- this.dialog.show();
- }
- },
- });
- }
-
- get_linked_vouchers(document_types) {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_linked_payments",
- args: {
- bank_transaction_name: this.bank_transaction_name,
- document_types: document_types,
- from_date: this.bank_statement_from_date,
- to_date: this.bank_statement_to_date,
- filtered_by_reference_date: this.filtered_by_reference_date,
- from_reference_date:this.from_reference_date,
- to_reference_date:this.to_reference_date
- },
-
- callback: (result) => {
- const data = result.message;
-
-
- if (data && data.length > 0) {
- const proposals_wrapper = this.dialog.fields_dict.payment_proposals.$wrapper;
- proposals_wrapper.show();
- this.dialog.fields_dict.no_matching_vouchers.$wrapper.hide();
- this.data = [];
- data.forEach((row) => {
- const reference_date = row[5] ? row[5] : row[8];
- this.data.push([
- row[1],
- row[2],
- reference_date,
- row[8],
- format_currency(row[3], row[9]),
- row[6],
- row[4],
- ]);
- });
- this.get_dt_columns();
- this.get_datatable(proposals_wrapper);
- } else {
- const proposals_wrapper = this.dialog.fields_dict.payment_proposals.$wrapper;
- proposals_wrapper.hide();
- this.dialog.fields_dict.no_matching_vouchers.$wrapper.show();
-
- }
- this.dialog.show();
- },
- });
- }
-
- get_dt_columns() {
- this.columns = [
- {
- name: __("Document Type"),
- editable: false,
- width: 125,
- },
- {
- name: __("Document Name"),
- editable: false,
- width: 150,
- },
- {
- name: __("Reference Date"),
- editable: false,
- width: 120,
- },
- {
- name: "Posting Date",
- editable: false,
- width: 120,
- },
- {
- name: __("Amount"),
- editable: false,
- width: 100,
- },
- {
- name: __("Party"),
- editable: false,
- width: 120,
- },
-
- {
- name: __("Reference Number"),
- editable: false,
- width: 140,
- },
- ];
- }
-
- get_datatable(proposals_wrapper) {
- if (!this.datatable) {
- const datatable_options = {
- columns: this.columns,
- data: this.data,
- dynamicRowHeight: true,
- checkboxColumn: true,
- inlineFilters: true,
- };
- this.datatable = new frappe.DataTable(
- proposals_wrapper.get(0),
- datatable_options
- );
- } else {
- this.datatable.refresh(this.data, this.columns);
- this.datatable.rowmanager.checkMap = [];
- }
- }
-
- make_dialog() {
- const me = this;
- me.selected_payment = null;
-
- const fields = [
- {
- label: __("Action"),
- fieldname: "action",
- fieldtype: "Select",
- options: `Match Against Voucher\nCreate Voucher\nUpdate Bank Transaction`,
- default: "Match Against Voucher",
- },
- {
- fieldname: "column_break_4",
- fieldtype: "Column Break",
- },
- {
- label: __("Document Type"),
- fieldname: "document_type",
- fieldtype: "Select",
- options: `Payment Entry\nJournal Entry`,
- default: "Payment Entry",
- depends_on: "eval:doc.action=='Create Voucher'",
- },
- {
- fieldtype: "Section Break",
- fieldname: "section_break_1",
- label: __("Filters"),
- depends_on: "eval:doc.action=='Match Against Voucher'",
- },
- ];
-
- frappe.call({
- method: "erpnext.accounts.doctype.bank_transaction.bank_transaction.get_doctypes_for_bank_reconciliation",
- callback: (r) => {
- $.each(r.message, (_i, entry) => {
- if (_i % 3 == 0) {
- fields.push({
- fieldtype: "Column Break",
- });
- }
- fields.push({
- fieldtype: "Check",
- label: entry,
- fieldname: frappe.scrub(entry),
- onchange: () => this.update_options(),
- });
- });
-
- fields.push(...this.get_voucher_fields());
-
- me.dialog = new frappe.ui.Dialog({
- title: __("Reconcile the Bank Transaction"),
- fields: fields,
- size: "large",
- primary_action: (values) =>
- this.reconciliation_dialog_primary_action(values),
- });
- }
- });
- }
-
- get_voucher_fields() {
- return [
- {
- fieldtype: "Check",
- label: "Show Only Exact Amount",
- fieldname: "exact_match",
- onchange: () => this.update_options(),
- },
- {
- fieldtype: "Section Break",
- fieldname: "section_break_1",
- label: __("Select Vouchers to Match"),
- depends_on: "eval:doc.action=='Match Against Voucher'",
- },
- {
- fieldtype: "HTML",
- fieldname: "payment_proposals",
- },
- {
- fieldtype: "HTML",
- fieldname: "no_matching_vouchers",
- options: __("<div class=\"text-muted text-center\">{0}</div>", [__("No Matching Vouchers Found")])
- },
- {
- fieldtype: "Section Break",
- fieldname: "details",
- label: "Details",
- depends_on: "eval:doc.action!='Match Against Voucher'",
- },
- {
- fieldname: "reference_number",
- fieldtype: "Data",
- label: "Reference Number",
- mandatory_depends_on: "eval:doc.action=='Create Voucher'",
- },
- {
- default: "Today",
- fieldname: "posting_date",
- fieldtype: "Date",
- label: "Posting Date",
- reqd: 1,
- depends_on: "eval:doc.action=='Create Voucher'",
- },
- {
- fieldname: "reference_date",
- fieldtype: "Date",
- label: "Cheque/Reference Date",
- mandatory_depends_on: "eval:doc.action=='Create Voucher'",
- depends_on: "eval:doc.action=='Create Voucher'",
- reqd: 1,
- },
- {
- fieldname: "mode_of_payment",
- fieldtype: "Link",
- label: "Mode of Payment",
- options: "Mode of Payment",
- depends_on: "eval:doc.action=='Create Voucher'",
- },
- {
- fieldname: "edit_in_full_page",
- fieldtype: "Button",
- label: "Edit in Full Page",
- click: () => {
- this.edit_in_full_page();
- },
- depends_on:
- "eval:doc.action=='Create Voucher'",
- },
- {
- fieldname: "column_break_7",
- fieldtype: "Column Break",
- },
- {
- default: "Journal Entry Type",
- fieldname: "journal_entry_type",
- fieldtype: "Select",
- label: "Journal Entry Type",
- options:
- "Journal Entry\nInter Company Journal Entry\nBank Entry\nCash Entry\nCredit Card Entry\nDebit Note\nCredit Note\nContra Entry\nExcise Entry\nWrite Off Entry\nOpening Entry\nDepreciation Entry\nExchange Rate Revaluation\nDeferred Revenue\nDeferred Expense",
- depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Journal Entry'",
- mandatory_depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Journal Entry'",
- },
- {
- fieldname: "second_account",
- fieldtype: "Link",
- label: "Account",
- options: "Account",
- depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Journal Entry'",
- mandatory_depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Journal Entry'",
- get_query: () => {
- return {
- filters: {
- is_group: 0,
- company: this.company,
- },
- };
- },
- },
- {
- fieldname: "party_type",
- fieldtype: "Link",
- label: "Party Type",
- options: "DocType",
- mandatory_depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Payment Entry'",
- get_query: function () {
- return {
- filters: {
- name: [
- "in",
- Object.keys(frappe.boot.party_account_types),
- ],
- },
- };
- },
- },
- {
- fieldname: "party",
- fieldtype: "Dynamic Link",
- label: "Party",
- options: "party_type",
- mandatory_depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Payment Entry'",
- },
- {
- fieldname: "project",
- fieldtype: "Link",
- label: "Project",
- options: "Project",
- depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Payment Entry'",
- },
- {
- fieldname: "cost_center",
- fieldtype: "Link",
- label: "Cost Center",
- options: "Cost Center",
- depends_on:
- "eval:doc.action=='Create Voucher' && doc.document_type=='Payment Entry'",
- },
- {
- fieldtype: "Section Break",
- fieldname: "details_section",
- label: "Transaction Details",
- collapsible: 1,
- },
- {
- fieldname: "deposit",
- fieldtype: "Currency",
- label: "Deposit",
- read_only: 1,
- },
- {
- fieldname: "withdrawal",
- fieldtype: "Currency",
- label: "Withdrawal",
- read_only: 1,
- },
- {
- fieldname: "description",
- fieldtype: "Small Text",
- label: "Description",
- read_only: 1,
- },
- {
- fieldname: "column_break_17",
- fieldtype: "Column Break",
- read_only: 1,
- },
- {
- fieldname: "allocated_amount",
- fieldtype: "Currency",
- label: "Allocated Amount",
- read_only: 1,
- },
-
- {
- fieldname: "unallocated_amount",
- fieldtype: "Currency",
- label: "Unallocated Amount",
- read_only: 1,
- },
- ];
- }
-
- get_selected_attributes() {
- let selected_attributes = [];
- this.dialog.$wrapper.find(".checkbox input").each((i, col) => {
- if ($(col).is(":checked")) {
- selected_attributes.push($(col).attr("data-fieldname"));
- }
- });
-
- return selected_attributes;
- }
-
- update_options() {
- let selected_attributes = this.get_selected_attributes();
- this.get_linked_vouchers(selected_attributes);
- }
-
- reconciliation_dialog_primary_action(values) {
- if (values.action == "Match Against Voucher") this.match(values);
- if (
- values.action == "Create Voucher" &&
- values.document_type == "Payment Entry"
- )
- this.add_payment_entry(values);
- if (
- values.action == "Create Voucher" &&
- values.document_type == "Journal Entry"
- )
- this.add_journal_entry(values);
- else if (values.action == "Update Bank Transaction")
- this.update_transaction(values);
- }
-
- match() {
- var selected_map = this.datatable.rowmanager.checkMap;
- let rows = [];
- selected_map.forEach((val, index) => {
- if (val == 1) rows.push(this.datatable.datamanager.rows[index]);
- });
- let vouchers = [];
- rows.forEach((x) => {
- vouchers.push({
- payment_doctype: x[2].content,
- payment_name: x[3].content,
- amount: x[5].content,
- });
- });
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.reconcile_vouchers",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- vouchers: vouchers,
- },
- callback: (response) => {
- const alert_string = __("Bank Transaction {0} Matched", [this.bank_transaction.name]);
- frappe.show_alert(alert_string);
- this.update_dt_cards(response.message);
- this.dialog.hide();
- },
- });
- }
-
- add_payment_entry(values) {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.create_payment_entry_bts",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- reference_number: values.reference_number,
- reference_date: values.reference_date,
- party_type: values.party_type,
- party: values.party,
- posting_date: values.posting_date,
- mode_of_payment: values.mode_of_payment,
- project: values.project,
- cost_center: values.cost_center,
- },
- callback: (response) => {
- const alert_string = __("Bank Transaction {0} added as Payment Entry", [this.bank_transaction.name]);
- frappe.show_alert(alert_string);
- this.update_dt_cards(response.message);
- this.dialog.hide();
- },
- });
- }
-
- add_journal_entry(values) {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.create_journal_entry_bts",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- reference_number: values.reference_number,
- reference_date: values.reference_date,
- party_type: values.party_type,
- party: values.party,
- posting_date: values.posting_date,
- mode_of_payment: values.mode_of_payment,
- entry_type: values.journal_entry_type,
- second_account: values.second_account,
- },
- callback: (response) => {
- const alert_string = __("Bank Transaction {0} added as Journal Entry", [this.bank_transaction.name]);
- frappe.show_alert(alert_string);
- this.update_dt_cards(response.message);
- this.dialog.hide();
- },
- });
- }
-
- update_transaction(values) {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.update_bank_transaction",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- reference_number: values.reference_number,
- party_type: values.party_type,
- party: values.party,
- },
- callback: (response) => {
- const alert_string = __("Bank Transaction {0} updated", [this.bank_transaction.name]);
- frappe.show_alert(alert_string);
- this.update_dt_cards(response.message);
- this.dialog.hide();
- },
- });
- }
-
- edit_in_full_page() {
- const values = this.dialog.get_values(true);
- if (values.document_type == "Payment Entry") {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.create_payment_entry_bts",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- reference_number: values.reference_number,
- reference_date: values.reference_date,
- party_type: values.party_type,
- party: values.party,
- posting_date: values.posting_date,
- mode_of_payment: values.mode_of_payment,
- project: values.project,
- cost_center: values.cost_center,
- allow_edit: true
- },
- callback: (r) => {
- const doc = frappe.model.sync(r.message);
- frappe.set_route("Form", doc[0].doctype, doc[0].name);
- },
- });
- } else {
- frappe.call({
- method:
- "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.create_journal_entry_bts",
- args: {
- bank_transaction_name: this.bank_transaction.name,
- reference_number: values.reference_number,
- reference_date: values.reference_date,
- party_type: values.party_type,
- party: values.party,
- posting_date: values.posting_date,
- mode_of_payment: values.mode_of_payment,
- entry_type: values.journal_entry_type,
- second_account: values.second_account,
- allow_edit: true
- },
- callback: (r) => {
- var doc = frappe.model.sync(r.message);
- frappe.set_route("Form", doc[0].doctype, doc[0].name);
- },
- });
- }
- }
-
- };
-
get_linked_vouchers(document_types) {
frappe.call({
method:
@@ -636,6 +53,11 @@
args: {
bank_transaction_name: this.bank_transaction_name,
document_types: document_types,
+ from_date: this.bank_statement_from_date,
+ to_date: this.bank_statement_to_date,
+ filtered_by_reference_date: this.filtered_by_reference_date,
+ from_reference_date:this.from_reference_date,
+ to_reference_date:this.to_reference_date
},
callback: (result) => {
@@ -1160,3 +582,5 @@
}
};
+
+
\ No newline at end of file