diff --git a/erpnext/accounts/doctype/bank_account/bank_account.json b/erpnext/accounts/doctype/bank_account/bank_account.json
index 5a20cef094a..f2aa408b3b2 100644
--- a/erpnext/accounts/doctype/bank_account/bank_account.json
+++ b/erpnext/accounts/doctype/bank_account/bank_account.json
@@ -853,6 +853,38 @@
"translatable": 0,
"unique": 1
},
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "last_integration_date",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Last Integration Date",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
@@ -927,7 +959,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-10-26 14:14:45.049414",
+ "modified": "2018-11-15 17:37:10.340070",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Account",
diff --git a/erpnext/public/js/reconciliation/components/PlaidLink.vue b/erpnext/accounts/doctype/bank_reconciliation_dashboard/PlaidLink.vue
similarity index 100%
rename from erpnext/public/js/reconciliation/components/PlaidLink.vue
rename to erpnext/accounts/doctype/bank_reconciliation_dashboard/PlaidLink.vue
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/__init__.py b/erpnext/accounts/doctype/bank_reconciliation_dashboard/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.js b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.js
new file mode 100644
index 00000000000..69e91a8ab92
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.js
@@ -0,0 +1,217 @@
+// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.provide("erpnext.accounts");
+
+
+frappe.ui.form.on('Bank Reconciliation Dashboard', {
+ refresh: function(frm) {
+ frm.disable_save();
+ toggle_sidebar(frm);
+ frm.page.add_menu_item(__("Toggle Sidebar"), function() {
+ toggle_sidebar(frm);
+ });
+
+ new erpnext.accounts.newInstitution(frm);
+ },
+ import_data: function(frm) {
+ new erpnext.accounts.bankTransactionUpload(frm);
+ },
+ sync_data: function(frm) {
+ new erpnext.accounts.bankTransactionSync(frm);
+ },
+ reconcile_data: function(frm) {
+ console.log("test")
+ },
+
+});
+
+let toggle_sidebar = function(frm) {
+ frm.sidebar.sidebar.toggle();
+ frm.page.current_view.find('.layout-main-section-wrapper').toggleClass('col-md-10 col-md-12');
+}
+
+erpnext.accounts.bankTransactionUpload = class bankTransactionUpload {
+ constructor(frm) {
+ this.frm = frm;
+ this.data = [];
+ this.import_wrapper = $(frm.fields_dict['import_html'].wrapper);
+ this.table_container = $(frm.fields_dict['table_container'].wrapper);
+
+ const assets = [
+ "/assets/frappe/css/frappe-datatable.css",
+ "/assets/frappe/js/lib/clusterize.min.js",
+ "/assets/frappe/js/lib/Sortable.min.js",
+ "/assets/frappe/js/lib/frappe-datatable.js"
+ ];
+
+ frappe.require(assets, () => {
+ this.make();
+ });
+ }
+
+ make() {
+ let me = this;
+ frappe.upload.make({
+ parent: me.import_wrapper,
+ args: {
+ method: 'erpnext.accounts.doctype.bank_transaction.bank_transaction_upload.upload_bank_statement',
+ allow_multiple: 0
+ },
+ no_socketio: true,
+ sample_url: "e.g. http://example.com/somefile.csv",
+ callback: function(attachment, r) {
+ if (!r.exc && r.message) {
+ me.data = r.message;
+ me.setup_transactions_dom();
+ me.create_datatable();
+ me.bind_events();
+ }
+ }
+ })
+ }
+
+ setup_transactions_dom() {
+ this.table_container.append(`
+
+
+
+
`)
+ }
+
+ create_datatable() {
+ this.datatable = new DataTable('.transactions-table', {
+ columns: this.data.columns,
+ data: this.data.data
+ })
+ }
+
+ bind_events() {
+ this.table_container.on('click', '.transactions-btn', function() {
+ console.log("Test")
+ })
+ }
+
+ add_bank_entries() {
+ frappe.xcall('erpnext.accounts.doctype.bank_transaction.bank_transaction_upload.create_bank_entries',
+ {columns: this.data.datamanager.columns, data: this.data.datamanager.data, bank_account: this.frm.doc.bank_account}
+ ).then((result) => {
+ console.log(result)
+ })
+ }
+}
+
+erpnext.accounts.bankTransactionSync = class bankTransactionSync {
+ constructor(frm) {
+ this.frm = frm;
+ this.data = [];
+ this.import_wrapper = $(frm.fields_dict['import_html'].wrapper);
+ this.table_container = $(frm.fields_dict['table_container'].wrapper);
+
+
+ this.init_config()
+ const assets = [
+ "/assets/frappe/css/frappe-datatable.css",
+ "/assets/frappe/js/lib/clusterize.min.js",
+ "/assets/frappe/js/lib/Sortable.min.js",
+ "/assets/frappe/js/lib/frappe-datatable.js"
+ ];
+
+ frappe.require(assets, () => {
+ this.make();
+ });
+ }
+
+ init_config() {
+ let me = this;
+ frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.plaid_configuration')
+ .then(result => {
+ me.plaid_env = result.plaid_env;
+ me.plaid_public_key = result.plaid_public_key;
+ me.client_name = result.client_name;
+ me.sync_transactions()
+ })
+ }
+
+ sync_transactions() {
+ let me = this;
+ frappe.db.get_value("Bank Account", me.frm.doc.bank_account, "bank", (v) => {
+ frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.sync_transactions', {
+ bank: v['bank'],
+ bank_account: me.frm.doc.bank_account
+ })
+ .then((result) => {
+ console.log(result)
+ me.get_transactions();
+ })
+ })
+ }
+
+ get_transactions() {
+ let me = this;
+ frappe.db.get_list('Bank Transaction', {
+ fields: ['name', 'date', 'status', 'debit', 'credit', 'currency', 'description'],
+ filters: {"docstatus": 1},
+ or_filters: [['reference_number', '=', '']]
+
+ }).then((transactions) => {
+ me.transactions = transactions;
+ console.log(me)
+ })
+ }
+
+ make() {
+
+ }
+}
+
+erpnext.accounts.newInstitution = class newInstitution {
+ constructor(frm) {
+ this.frm = frm;
+ this.init_config()
+ }
+
+ init_config() {
+ let me = this;
+ frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.plaid_configuration')
+ .then(result => {
+ if (result) {
+ me.plaid_env = result.plaid_env;
+ me.plaid_public_key = result.plaid_public_key;
+ me.client_name = result.client_name;
+ me.new_plaid_link()
+ }
+ })
+ }
+
+ plaid_success(token, response) {
+ frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.add_institution', {token: token, response: response})
+ .then((result) => {
+ frappe.xcall('erpnext.erpnext_integrations.doctype.plaid_settings.plaid_settings.add_bank_accounts', {response: response, bank: result})
+ })
+ .then((result) => {
+ this.getBankAccounts();
+ })
+ }
+
+ new_plaid_link() {
+ let me = this;
+ frappe.require('assets/js/frappe-vue.js', () => {
+ new Vue({
+ el: $(frm.fields_dict['new_institution'].wrapper),
+ render(h) {
+ return h(PlaidLink, {
+ props: {
+ env: me.plaid_env,
+ publicKey: me.plaid_public_key,
+ clientName: me.client_name,
+ product: ["transactions", "auth"],
+ subtitle: "Test",
+ plaidSuccess: me.plaid_success
+ }
+ })
+ }
+ });
+ })
+ }
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.json b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.json
new file mode 100644
index 00000000000..36a7e590636
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.json
@@ -0,0 +1,539 @@
+{
+ "allow_copy": 0,
+ "allow_events_in_timeline": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 1,
+ "creation": "2018-11-14 17:30:33.401641",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "section_break_1",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Select a bank account",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "bank_account",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Bank Account",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Bank Account",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_3",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "new_institution",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Add a new institution/account",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "depends_on": "eval:doc.bank_account",
+ "fieldname": "section_break_2",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Select an action",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "import_data",
+ "fieldtype": "Button",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Import Data",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_4",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "sync_data",
+ "fieldtype": "Button",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Synchronize Data",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_7",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "reconcile_data",
+ "fieldtype": "Button",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Reconcile Data",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "columns": 0,
+ "fieldname": "action_section",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "import_html",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Bank Statement Import",
+ "length": 0,
+ "no_copy": 0,
+ "options": "",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "reconcile_html",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "section_break_10",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_in_quick_entry": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "table_container",
+ "fieldtype": "HTML",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "translatable": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 1,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2018-11-15 18:02:39.720945",
+ "modified_by": "Administrator",
+ "module": "Accounts",
+ "name": "Bank Reconciliation Dashboard",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 0,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 0,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 0,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 0,
+ "track_seen": 0,
+ "track_views": 0
+}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.py b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.py
new file mode 100644
index 00000000000..03274408f94
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_reconciliation_dashboard/bank_reconciliation_dashboard.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class BankReconciliationDashboard(Document):
+ pass
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.js b/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.js
new file mode 100644
index 00000000000..3022a509876
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+// rename this file from _test_[name] to test_[name] to activate
+// and remove above this line
+
+QUnit.test("test: Bank Reconciliation Dashboard", function (assert) {
+ let done = assert.async();
+
+ // number of asserts
+ assert.expect(1);
+
+ frappe.run_serially([
+ // insert a new Bank Reconciliation Dashboard
+ () => frappe.tests.make('Bank Reconciliation Dashboard', [
+ // values to be set
+ {key: 'value'}
+ ]),
+ () => {
+ assert.equal(cur_frm.doc.key, 'value');
+ },
+ () => done()
+ ]);
+
+});
diff --git a/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.py b/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.py
new file mode 100644
index 00000000000..9b7ede2e607
--- /dev/null
+++ b/erpnext/accounts/doctype/bank_reconciliation_dashboard/test_bank_reconciliation_dashboard.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+class TestBankReconciliationDashboard(unittest.TestCase):
+ pass
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json
index 570bd1b3723..9ede81a393a 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.json
@@ -77,70 +77,6 @@
"set_only_once": 0,
"translatable": 0,
"unique": 0
- },
- {
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "depends_on": "eval:doc.enabled==1",
- "fieldname": "section_break_3",
- "fieldtype": "Section Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
- },
- {
- "allow_bulk_edit": 0,
- "allow_in_quick_entry": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
- "fieldname": "last_sync_date",
- "fieldtype": "Date",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "label": "Last Synchronization Date",
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "translatable": 0,
- "unique": 0
}
],
"has_web_view": 0,
@@ -153,7 +89,7 @@
"issingle": 1,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-10-26 17:28:47.689735",
+ "modified": "2018-11-15 17:37:48.531027",
"modified_by": "Administrator",
"module": "ERPNext Integrations",
"name": "Plaid Settings",
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
index f823a0fc492..476e56d5c45 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.py
@@ -110,7 +110,7 @@ def add_account_subtype(account_subtype):
@frappe.whitelist()
def sync_transactions(bank, bank_account=None):
- last_sync_date = frappe.db.get_value("Plaid Settings", None, "last_sync_date")
+ last_sync_date = frappe.db.get_value("Bank Account", bank_account, "last_integration_date")
if last_sync_date:
start_date = formatdate(last_sync_date, "YYYY-MM-dd")
else:
@@ -124,7 +124,7 @@ def sync_transactions(bank, bank_account=None):
for transaction in transactions:
result.append(new_bank_transaction(transaction))
- frappe.db.set_value("Plaid Settings", None, "last_sync_date", getdate(end_date))
+ frappe.db.set_value("Bank Account", bank_account, "last_integration_date", getdate(end_date))
return result
except Exception:
diff --git a/erpnext/public/build.json b/erpnext/public/build.json
index aa059d4e91e..1f702e69cca 100644
--- a/erpnext/public/build.json
+++ b/erpnext/public/build.json
@@ -1,8 +1,7 @@
{
"css/erpnext.css": [
"public/less/erpnext.less",
- "public/less/hub.less",
- "public/less/bankreconciliation.less"
+ "public/less/hub.less"
],
"css/marketplace.css": [
"public/less/hub.less"
@@ -17,9 +16,6 @@
"js/marketplace.min.js": [
"public/js/hub/marketplace.js"
],
- "js/bankreconciliation.min.js": [
- "public/js/reconciliation/reconciliation_home.js"
- ],
"js/erpnext.min.js": [
"public/js/conf.js",
"public/js/utils.js",
@@ -52,8 +48,7 @@
"public/js/utils/customer_quick_entry.js",
"public/js/education/student_button.html",
"public/js/education/assessment_result_tool.html",
- "public/js/hub/hub_factory.js",
- "public/js/reconciliation/reconciliation_factory.js"
+ "public/js/hub/hub_factory.js"
],
"js/item-dashboard.min.js": [
"stock/dashboard/item_dashboard.html",