diff --git a/.eslintrc b/.eslintrc
index 12fefa0968c..f3d4fd5091f 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -2,65 +2,32 @@
"env": {
"browser": true,
"node": true,
- "es6": true
+ "es2022": true
},
"parserOptions": {
- "ecmaVersion": 11,
"sourceType": "module"
},
"extends": "eslint:recommended",
"rules": {
- "indent": [
- "error",
- "tab",
- { "SwitchCase": 1 }
- ],
- "brace-style": [
- "error",
- "1tbs"
- ],
- "space-unary-ops": [
- "error",
- { "words": true }
- ],
- "linebreak-style": [
- "error",
- "unix"
- ],
- "quotes": [
- "off"
- ],
- "semi": [
- "warn",
- "always"
- ],
- "camelcase": [
- "off"
- ],
- "no-unused-vars": [
- "warn"
- ],
- "no-redeclare": [
- "warn"
- ],
- "no-console": [
- "warn"
- ],
- "no-extra-boolean-cast": [
- "off"
- ],
- "no-control-regex": [
- "off"
- ],
- "space-before-blocks": "warn",
- "keyword-spacing": "warn",
- "comma-spacing": "warn",
- "key-spacing": "warn"
+ "indent": "off",
+ "brace-style": "off",
+ "no-mixed-spaces-and-tabs": "off",
+ "no-useless-escape": "off",
+ "space-unary-ops": ["error", { "words": true }],
+ "linebreak-style": "off",
+ "quotes": ["off"],
+ "semi": "off",
+ "camelcase": "off",
+ "no-unused-vars": "off",
+ "no-console": ["warn"],
+ "no-extra-boolean-cast": ["off"],
+ "no-control-regex": ["off"]
},
"root": true,
"globals": {
"frappe": true,
"Vue": true,
+ "SetVueGlobals": true,
"erpnext": true,
"hub": true,
"$": true,
@@ -97,8 +64,10 @@
"is_null": true,
"in_list": true,
"has_common": true,
+ "posthog": true,
"has_words": true,
"validate_email": true,
+ "open_web_template_values_editor": true,
"get_number_format": true,
"format_number": true,
"format_currency": true,
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
index af6d8f26a73..94b76b12ce7 100644
--- a/.github/workflows/linters.yml
+++ b/.github/workflows/linters.yml
@@ -9,21 +9,22 @@ jobs:
name: linters
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Set up Python 3.10
- uses: actions/setup-python@v2
+ uses: actions/setup-python@v4
with:
python-version: '3.10'
+ cache: pip
- name: Install and Run Pre-commit
- uses: pre-commit/action@v2.0.3
+ uses: pre-commit/action@v3.0.0
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules
- name: Download semgrep
- run: pip install semgrep==0.97.0
+ run: pip install semgrep
- name: Run Semgrep rules
run: semgrep ci --config ./frappe-semgrep-rules/rules --config r/python.lang.correctness
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index d70977c07e2..2c9a60c7c4c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -16,8 +16,26 @@ repos:
- id: check-merge-conflict
- id: check-ast
+ - repo: https://github.com/pre-commit/mirrors-eslint
+ rev: v8.44.0
+ hooks:
+ - id: eslint
+ types_or: [javascript]
+ args: ['--quiet']
+ # Ignore any files that might contain jinja / bundles
+ exclude: |
+ (?x)^(
+ erpnext/public/dist/.*|
+ cypress/.*|
+ .*node_modules.*|
+ .*boilerplate.*|
+ erpnext/public/js/controllers/.*|
+ erpnext/templates/pages/order.js|
+ erpnext/templates/includes/.*
+ )$
+
- repo: https://github.com/PyCQA/flake8
- rev: 5.0.4
+ rev: 6.0.0
hooks:
- id: flake8
additional_dependencies: [
diff --git a/erpnext/accounts/doctype/bank/bank.js b/erpnext/accounts/doctype/bank/bank.js
index 6667193a54c..83bd7fe8624 100644
--- a/erpnext/accounts/doctype/bank/bank.js
+++ b/erpnext/accounts/doctype/bank/bank.js
@@ -102,7 +102,7 @@ erpnext.integrations.refreshPlaidLink = class refreshPlaidLink {
}
onScriptLoaded(me) {
- me.linkHandler = Plaid.create({
+ me.linkHandler = Plaid.create({ // eslint-disable-line no-undef
env: me.plaid_env,
token: me.token,
onSuccess: me.plaid_success
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.js b/erpnext/accounts/doctype/cost_center/cost_center.js
index 632fab0197c..c427cc8b87c 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.js
+++ b/erpnext/accounts/doctype/cost_center/cost_center.js
@@ -70,7 +70,7 @@ frappe.ui.form.on('Cost Center', {
}
],
primary_action: function() {
- var data = d.get_values();
+ let data = d.get_values();
if(data.cost_center_name === frm.doc.cost_center_name && data.cost_center_number === frm.doc.cost_center_number) {
d.hide();
return;
@@ -91,8 +91,8 @@ frappe.ui.form.on('Cost Center', {
if(r.message) {
frappe.set_route("Form", "Cost Center", r.message);
} else {
- me.frm.set_value("cost_center_name", data.cost_center_name);
- me.frm.set_value("cost_center_number", data.cost_center_number);
+ frm.set_value("cost_center_name", data.cost_center_name);
+ frm.set_value("cost_center_number", data.cost_center_number);
}
d.hide();
}
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index a51e38eefea..8d8cbefa71b 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -264,11 +264,11 @@ erpnext.accounts.JournalEntry = class JournalEntry extends frappe.ui.form.Contro
}
if(jvd.party_type && jvd.party) {
- var party_field = "";
+ let party_field = "";
if(jvd.reference_type.indexOf("Sales")===0) {
- var party_field = "customer";
+ party_field = "customer";
} else if (jvd.reference_type.indexOf("Purchase")===0) {
- var party_field = "supplier";
+ party_field = "supplier";
}
if (party_field) {
@@ -368,7 +368,7 @@ cur_frm.cscript.update_totals = function(doc) {
td += flt(accounts[i].debit, precision("debit", accounts[i]));
tc += flt(accounts[i].credit, precision("credit", accounts[i]));
}
- var doc = locals[doc.doctype][doc.name];
+ doc = locals[doc.doctype][doc.name];
doc.total_debit = td;
doc.total_credit = tc;
doc.difference = flt((td - tc), precision("difference"));
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index 35092a7c4d3..ed18feaf57d 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -1,10 +1,12 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-{% include "erpnext/public/js/controllers/accounts.js" %}
frappe.provide("erpnext.accounts.dimensions");
cur_frm.cscript.tax_table = "Advance Taxes and Charges";
+erpnext.accounts.taxes.setup_tax_validations("Payment Entry");
+erpnext.accounts.taxes.setup_tax_filters("Advance Taxes and Charges");
+
frappe.ui.form.on('Payment Entry', {
onload: function(frm) {
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', "Repost Payment Ledger"];
@@ -106,12 +108,11 @@ frappe.ui.form.on('Payment Entry', {
});
frm.set_query("reference_doctype", "references", function() {
+ let doctypes = ["Journal Entry"];
if (frm.doc.party_type == "Customer") {
- var doctypes = ["Sales Order", "Sales Invoice", "Journal Entry", "Dunning"];
+ doctypes = ["Sales Order", "Sales Invoice", "Journal Entry", "Dunning"];
} else if (frm.doc.party_type == "Supplier") {
- var doctypes = ["Purchase Order", "Purchase Invoice", "Journal Entry"];
- } else {
- var doctypes = ["Journal Entry"];
+ doctypes = ["Purchase Order", "Purchase Invoice", "Journal Entry"];
}
return {
@@ -162,6 +163,7 @@ frappe.ui.form.on('Payment Entry', {
},
company: function(frm) {
+ frm.trigger('party');
frm.events.hide_unhide_fields(frm);
frm.events.set_dynamic_labels(frm);
erpnext.accounts.dimensions.update_dimension(frm, frm.doctype);
@@ -284,6 +286,13 @@ frappe.ui.form.on('Payment Entry', {
}
},
+ mode_of_payment: function(frm) {
+ erpnext.accounts.pos.get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account){
+ let payment_account_field = frm.doc.payment_type == "Receive" ? "paid_to" : "paid_from";
+ frm.set_value(payment_account_field, account);
+ })
+ },
+
party_type: function(frm) {
let party_types = Object.keys(frappe.boot.party_account_types);
@@ -316,10 +325,6 @@ frappe.ui.form.on('Payment Entry', {
}
},
- company: function(frm){
- frm.trigger('party');
- },
-
party: function(frm) {
if (frm.doc.contact_email || frm.doc.contact_person) {
frm.set_value("contact_email", "");
@@ -1103,7 +1108,7 @@ frappe.ui.form.on('Payment Entry', {
if (tax.charge_type === 'On Net Total') {
tax.charge_type = 'On Paid Amount';
}
- me.frm.add_child("taxes", tax);
+ frm.add_child("taxes", tax);
}
frm.events.apply_taxes(frm);
frm.events.set_unallocated_amount(frm);
@@ -1219,7 +1224,7 @@ frappe.ui.form.on('Payment Entry', {
tax.grand_total_fraction_for_current_item = 1 + tax.tax_fraction_for_current_item;
} else {
tax.grand_total_fraction_for_current_item =
- me.frm.doc["taxes"][i-1].grand_total_fraction_for_current_item +
+ frm.doc["taxes"][i-1].grand_total_fraction_for_current_item +
tax.tax_fraction_for_current_item;
}
@@ -1266,7 +1271,7 @@ frappe.ui.form.on('Payment Entry', {
}
});
- $.each(me.frm.doc["taxes"] || [], function(i, tax) {
+ $.each(frm.doc["taxes"] || [], function(i, tax) {
let current_tax_amount = frm.events.get_current_tax_amount(frm, tax);
// Adjust divisional loss to the last item
diff --git a/erpnext/accounts/doctype/payment_order/payment_order.js b/erpnext/accounts/doctype/payment_order/payment_order.js
index 7d85d89c452..6630e7122c5 100644
--- a/erpnext/accounts/doctype/payment_order/payment_order.js
+++ b/erpnext/accounts/doctype/payment_order/payment_order.js
@@ -124,7 +124,7 @@ frappe.ui.form.on('Payment Order', {
return frappe.call({
method: "erpnext.accounts.doctype.payment_order.payment_order.make_payment_records",
args: {
- "name": me.frm.doc.name,
+ "name": frm.doc.name,
"supplier": args.supplier,
"mode_of_payment": args.mode_of_payment
},
diff --git a/erpnext/accounts/doctype/payment_term/payment_term.js b/erpnext/accounts/doctype/payment_term/payment_term.js
index feecf93484c..0898a09a1c6 100644
--- a/erpnext/accounts/doctype/payment_term/payment_term.js
+++ b/erpnext/accounts/doctype/payment_term/payment_term.js
@@ -14,7 +14,7 @@ frappe.ui.form.on('Payment Term', {
if (frm.doc.discount) {
let description = __("{0}% of total invoice value will be given as discount.", [frm.doc.discount]);
if (frm.doc.discount_type == 'Amount') {
- description = __("{0} will be given as discount.", [fmt_money(frm.doc.discount)]);
+ description = __("{0} will be given as discount.", [frm.doc.discount]);
}
frm.set_df_property("discount", "description", description);
}
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
index 32e267f33c8..6f0b8019b86 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.js
@@ -1,9 +1,10 @@
// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-{% include 'erpnext/selling/sales_common.js' %};
frappe.provide("erpnext.accounts");
+erpnext.sales_common.setup_selling_controller();
+erpnext.accounts.pos.setup("POS Invoice");
erpnext.selling.POSInvoiceController = class POSInvoiceController extends erpnext.selling.SellingController {
settings = {};
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index 813d20dbf93..0a89aee8e9c 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -1,8 +1,6 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-{% include "erpnext/public/js/controllers/accounts.js" %}
-
frappe.ui.form.on('POS Profile', {
setup: function(frm) {
frm.set_query("selling_price_list", function() {
@@ -148,4 +146,4 @@ frappe.ui.form.on('POS Profile', {
frm.toggle_display('expense_account',
erpnext.is_perpetual_inventory_enabled(frm.doc.company));
}
-});
+});
\ 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 6a558ca606b..c19413d8117 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -2,7 +2,11 @@
// License: GNU General Public License v3. See license.txt
frappe.provide("erpnext.accounts");
-{% include 'erpnext/public/js/controllers/buying.js' %};
+
+erpnext.accounts.payment_triggers.setup("Purchase Invoice");
+erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
+erpnext.accounts.taxes.setup_tax_validations("Purchase Invoice");
+erpnext.buying.setup_buying_controller();
erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.BuyingController {
setup(doc) {
@@ -506,7 +510,8 @@ frappe.ui.form.on("Purchase Invoice", {
setup: function(frm) {
frm.custom_make_buttons = {
'Purchase Invoice': 'Return / Debit Note',
- 'Payment Entry': 'Payment'
+ 'Payment Entry': 'Payment',
+ 'Landed Cost Voucher': function () { frm.trigger('create_landed_cost_voucher') },
}
frm.set_query("additional_discount_account", function() {
@@ -544,6 +549,26 @@ frappe.ui.form.on("Purchase Invoice", {
frm.events.add_custom_buttons(frm);
},
+ mode_of_payment: function(frm) {
+ erpnext.accounts.pos.get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account) {
+ frm.set_value("cash_bank_account", account);
+ })
+ },
+
+ create_landed_cost_voucher: function (frm) {
+ let lcv = frappe.model.get_new_doc('Landed Cost Voucher');
+ lcv.company = frm.doc.company;
+
+ let lcv_receipt = frappe.model.get_new_doc('Landed Cost Purchase Invoice');
+ lcv_receipt.receipt_document_type = 'Purchase Invoice';
+ lcv_receipt.receipt_document = frm.doc.name;
+ lcv_receipt.supplier = frm.doc.supplier;
+ lcv_receipt.grand_total = frm.doc.grand_total;
+ lcv.purchase_receipts = [lcv_receipt];
+
+ frappe.set_route("Form", lcv.doctype, lcv.name);
+ },
+
add_custom_buttons: function(frm) {
if (frm.doc.docstatus == 1 && frm.doc.per_received < 100) {
frm.add_custom_button(__('Purchase Receipt'), () => {
diff --git a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
index eb0ea7fef81..78dc4bee1a6 100644
--- a/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template.js
@@ -1,30 +1,31 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-cur_frm.cscript.tax_table = "Purchase Taxes and Charges";
+erpnext.accounts.taxes.setup_tax_validations("Purchase Taxes and Charges Template");
+erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
-{% include "erpnext/public/js/controllers/accounts.js" %}
+frappe.ui.form.on("Purchase Taxes and Charges", {
+ add_deduct_tax(doc, cdt, cdn) {
+ let d = locals[cdt][cdn];
-frappe.ui.form.on("Purchase Taxes and Charges", "add_deduct_tax", function(doc, cdt, cdn) {
- var d = locals[cdt][cdn];
+ if(!d.category && d.add_deduct_tax) {
+ frappe.msgprint(__("Please select Category first"));
+ d.add_deduct_tax = '';
+ }
+ else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
+ frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
+ d.add_deduct_tax = '';
+ }
+ refresh_field('add_deduct_tax', d.name, 'taxes');
+ },
- if(!d.category && d.add_deduct_tax) {
- frappe.msgprint(__("Please select Category first"));
- d.add_deduct_tax = '';
+ category(doc, cdt, cdn) {
+ let d = locals[cdt][cdn];
+
+ if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
+ frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
+ d.add_deduct_tax = '';
+ }
+ refresh_field('add_deduct_tax', d.name, 'taxes');
}
- else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
- frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Valuation and Total'"));
- d.add_deduct_tax = '';
- }
- refresh_field('add_deduct_tax', d.name, 'taxes');
-});
-
-frappe.ui.form.on("Purchase Taxes and Charges", "category", function(doc, cdt, cdn) {
- var d = locals[cdt][cdn];
-
- if (d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
- frappe.msgprint(__("Cannot deduct when category is for 'Valuation' or 'Vaulation and Total'"));
- d.add_deduct_tax = '';
- }
- refresh_field('add_deduct_tax', d.name, 'taxes');
});
diff --git a/erpnext/accounts/doctype/sales_invoice/regional/italy.js b/erpnext/accounts/doctype/sales_invoice/regional/italy.js
index 21eb8ce6619..2f305b914eb 100644
--- a/erpnext/accounts/doctype/sales_invoice/regional/italy.js
+++ b/erpnext/accounts/doctype/sales_invoice/regional/italy.js
@@ -1,3 +1,23 @@
-{% include "erpnext/regional/italy/sales_invoice.js" %}
-
-erpnext.setup_e_invoice_button('Sales Invoice')
+frappe.ui.form.on("Sales Invoice", {
+ refresh: (frm) => {
+ if(frm.doc.docstatus == 1) {
+ frm.add_custom_button(__('Generate E-Invoice'), () => {
+ frm.call({
+ method: "erpnext.regional.italy.utils.generate_single_invoice",
+ args: {
+ docname: frm.doc.name
+ },
+ callback: function(r) {
+ frm.reload_doc();
+ if(r.message) {
+ open_url_post(frappe.request.url, {
+ cmd: 'frappe.core.doctype.file.file.download_file',
+ file_url: r.message
+ });
+ }
+ }
+ });
+ });
+ }
+ }
+});
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 3a0a2cf8ce3..8fa0a84f6ee 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -1,10 +1,13 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-{% include 'erpnext/selling/sales_common.js' %};
frappe.provide("erpnext.accounts");
-
+erpnext.accounts.taxes.setup_tax_validations("Sales Invoice");
+erpnext.accounts.payment_triggers.setup("Sales Invoice");
+erpnext.accounts.pos.setup("Sales Invoice");
+erpnext.accounts.taxes.setup_tax_filters("Sales Taxes and Charges");
+erpnext.sales_common.setup_selling_controller();
erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends erpnext.selling.SellingController {
setup(doc) {
this.setup_posting_date_time_check();
@@ -717,7 +720,7 @@ frappe.ui.form.on('Sales Invoice', {
frm.set_query('pos_profile', function(doc) {
if(!doc.company) {
- frappe.throw(_('Please set Company'));
+ frappe.throw(__('Please set Company'));
}
return {
@@ -864,7 +867,7 @@ frappe.ui.form.on('Sales Invoice', {
kwargs = Object();
}
- if (!kwargs.hasOwnProperty("project") && frm.doc.project) {
+ if (!Object.prototype.hasOwnProperty.call(kwargs, "project") && frm.doc.project) {
kwargs.project = frm.doc.project;
}
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
index 066c4eae436..00e8b621c0d 100644
--- a/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template.js
@@ -1,6 +1,5 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-cur_frm.cscript.tax_table = "Sales Taxes and Charges";
-
-{% include "erpnext/public/js/controllers/accounts.js" %}
+erpnext.accounts.taxes.setup_tax_validations("Sales Taxes and Charges Template");
+erpnext.accounts.taxes.setup_tax_filters("Sales Taxes and Charges");
\ No newline at end of file
diff --git a/erpnext/accounts/report/account_balance/account_balance.js b/erpnext/accounts/report/account_balance/account_balance.js
index bb66951cdcd..5681be92115 100644
--- a/erpnext/accounts/report/account_balance/account_balance.js
+++ b/erpnext/accounts/report/account_balance/account_balance.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Account Balance"] = {
"filters": [
diff --git a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.js b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.js
index e1fccb6e720..7617ed1e227 100644
--- a/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.js
+++ b/erpnext/accounts/report/billed_items_to_be_received/billed_items_to_be_received.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports['Billed Items To Be Received'] = {
'filters': [
@@ -17,7 +17,7 @@ frappe.query_reports['Billed Items To Be Received'] = {
'fieldname': 'posting_date',
'fieldtype': 'Date',
'reqd': 1,
- 'default': get_today()
+ 'default': frappe.datetime.get_today()
},
{
'label': __('Purchase Invoice'),
diff --git a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
index d58fd95a840..1afa8d56252 100644
--- a/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
+++ b/erpnext/accounts/report/consolidated_financial_statement/consolidated_financial_statement.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.require("assets/erpnext/js/financial_statements.js", function() {
frappe.query_reports["Consolidated Financial Statement"] = {
diff --git a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js
index a1236316638..74d52de2d2e 100644
--- a/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js
+++ b/erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Customer Ledger Summary"] = {
"filters": [
diff --git a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js
index 96e0c844ca5..eec904ec854 100644
--- a/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js
+++ b/erpnext/accounts/report/deferred_revenue_and_expense/deferred_revenue_and_expense.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
function get_filters() {
let filters = [
diff --git a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
index 9d416db4fdd..fc712fb5a75 100644
--- a/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
+++ b/erpnext/accounts/report/dimension_wise_accounts_balance_report/dimension_wise_accounts_balance_report.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.require("assets/erpnext/js/financial_statements.js", function() {
frappe.query_reports["Dimension-wise Accounts Balance Report"] = {
diff --git a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
index 92cf36ebc52..f6b0b8c3f7f 100644
--- a/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
+++ b/erpnext/accounts/report/gross_and_net_profit_report/gross_and_net_profit_report.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Gross and Net Profit Report"] = {
"filters": [
diff --git a/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js b/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js
index 7908c07a0ad..bd9b54398b8 100644
--- a/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js
+++ b/erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Inactive Sales Items"] = {
"filters": [
diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.js b/erpnext/accounts/report/payment_ledger/payment_ledger.js
index a5a4108f1df..65380ccdda6 100644
--- a/erpnext/accounts/report/payment_ledger/payment_ledger.js
+++ b/erpnext/accounts/report/payment_ledger/payment_ledger.js
@@ -1,6 +1,6 @@
// Copyright (c) 2022, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
function get_filters() {
let filters = [
diff --git a/erpnext/accounts/report/pos_register/pos_register.js b/erpnext/accounts/report/pos_register/pos_register.js
index b8d48d92de0..6e5491a0f8f 100644
--- a/erpnext/accounts/report/pos_register/pos_register.js
+++ b/erpnext/accounts/report/pos_register/pos_register.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["POS Register"] = {
"filters": [
diff --git a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.js b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.js
index 44e20e83c50..92e6f7f5141 100644
--- a/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.js
+++ b/erpnext/accounts/report/sales_payment_summary/sales_payment_summary.js
@@ -29,7 +29,6 @@ frappe.query_reports["Sales Payment Summary"] = {
"label": __("Owner"),
"fieldtype": "Link",
"options": "User",
- "defaults": user
},
{
"fieldname":"is_pos",
diff --git a/erpnext/accounts/report/share_balance/share_balance.js b/erpnext/accounts/report/share_balance/share_balance.js
index 6db5bdd299e..ac64a0bfb9f 100644
--- a/erpnext/accounts/report/share_balance/share_balance.js
+++ b/erpnext/accounts/report/share_balance/share_balance.js
@@ -1,7 +1,7 @@
// -*- coding: utf-8 -*-
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Share Balance"] = {
"filters": [
diff --git a/erpnext/accounts/report/share_ledger/share_ledger.js b/erpnext/accounts/report/share_ledger/share_ledger.js
index 6d1c44a6d01..4f2d2cc78f8 100644
--- a/erpnext/accounts/report/share_ledger/share_ledger.js
+++ b/erpnext/accounts/report/share_ledger/share_ledger.js
@@ -1,7 +1,7 @@
// -*- coding: utf-8 -*-
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Share Ledger"] = {
"filters": [
diff --git a/erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js b/erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js
index 5dc4c3d1c15..8e3c8ac6300 100644
--- a/erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js
+++ b/erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Supplier Ledger Summary"] = {
"filters": [
diff --git a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.js b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.js
index d3d45b353a6..d3348460a88 100644
--- a/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.js
+++ b/erpnext/accounts/report/tds_computation_summary/tds_computation_summary.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["TDS Computation Summary"] = {
"filters": [
diff --git a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js
index ff2aa306017..202fd1d15a5 100644
--- a/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js
+++ b/erpnext/accounts/report/tds_payable_monthly/tds_payable_monthly.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["TDS Payable Monthly"] = {
"filters": [
diff --git a/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.js b/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.js
index 0c148f85fb8..f7ab029f194 100644
--- a/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.js
+++ b/erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.js
@@ -1,6 +1,6 @@
// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Voucher-wise Balance"] = {
"filters": [
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 43920adca36..97a41de526b 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -473,7 +473,7 @@ frappe.ui.form.on('Asset', {
}
const item = purchase_doc.items.find(item => item.item_code === frm.doc.item_code);
if (!item) {
- doctype_field = frappe.scrub(doctype)
+ let doctype_field = frappe.scrub(doctype)
frm.set_value(doctype_field, '');
frappe.msgprint({
title: __('Invalid {0}', [__(doctype)]),
diff --git a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
index 48b17f58fb2..48d33314ec2 100644
--- a/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
+++ b/erpnext/assets/report/fixed_asset_register/fixed_asset_register.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Fixed Asset Register"] = {
"filters": [
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.js b/erpnext/buying/doctype/purchase_order/purchase_order.js
index 8fa8f305549..db3a60e9421 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.js
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.js
@@ -3,7 +3,10 @@
frappe.provide("erpnext.buying");
frappe.provide("erpnext.accounts.dimensions");
-{% include 'erpnext/public/js/controllers/buying.js' %};
+
+erpnext.accounts.taxes.setup_tax_filters("Purchase Taxes and Charges");
+erpnext.accounts.taxes.setup_tax_validations("Purchase Order");
+erpnext.buying.setup_buying_controller();
frappe.ui.form.on("Purchase Order", {
setup: function(frm) {
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index 2f0b7862a82..0cdb915cdce 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -1,11 +1,10 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-
-{% include 'erpnext/public/js/controllers/buying.js' %};
-
cur_frm.add_fetch('contact', 'email_id', 'email_id')
+erpnext.buying.setup_buying_controller();
+
frappe.ui.form.on("Request for Quotation",{
setup: function(frm) {
frm.custom_make_buttons = {
@@ -436,7 +435,7 @@ erpnext.buying.RequestforQuotationController = class RequestforQuotationControll
//Remove blanks
for (var j = 0; j < frm.doc.suppliers.length; j++) {
- if(!frm.doc.suppliers[j].hasOwnProperty("supplier")) {
+ if(!Object.prototype.hasOwnProperty.call(frm.doc.suppliers[j], "supplier")) {
frm.get_field("suppliers").grid.grid_rows[j].remove();
}
}
@@ -445,10 +444,11 @@ erpnext.buying.RequestforQuotationController = class RequestforQuotationControll
if(r.message) {
for (var i = 0; i < r.message.length; i++) {
var exists = false;
+ let supplier = "";
if (r.message[i].constructor === Array){
- var supplier = r.message[i][0];
+ supplier = r.message[i][0];
} else {
- var supplier = r.message[i].name;
+ supplier = r.message[i].name;
}
for (var j = 0; j < doc.suppliers.length;j++) {
diff --git a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
index dc9c590dc5e..addf5a5e77b 100644
--- a/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/erpnext/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -1,9 +1,7 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-// attach required files
-{% include 'erpnext/public/js/controllers/buying.js' %};
-
+erpnext.buying.setup_buying_controller();
erpnext.buying.SupplierQuotationController = class SupplierQuotationController extends erpnext.buying.BuyingController {
setup() {
this.frm.custom_make_buttons = {
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js
index b4cd852c32f..e9d56784ff6 100644
--- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js
@@ -1,8 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe, refresh_field */
-
frappe.ui.form.on("Supplier Scorecard", {
setup: function(frm) {
if (frm.doc.indicator_color !== "") {
@@ -79,7 +77,7 @@ var loadAllStandings = function(frm) {
callback: function(r) {
for (var j = 0; j < frm.doc.standings.length; j++)
{
- if(!frm.doc.standings[j].hasOwnProperty("standing_name")) {
+ if(!Object.prototype.hasOwnProperty.call(frm.doc.standings[j], "standing_name")) {
frm.get_field("standings").grid.grid_rows[j].remove();
}
}
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
index dc5474e3b43..edf0b04d72e 100644
--- a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
@@ -1,7 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe, __ */
frappe.listview_settings["Supplier Scorecard"] = {
add_fields: ["indicator_color", "status"],
@@ -14,4 +13,4 @@ frappe.listview_settings["Supplier Scorecard"] = {
}
},
-};
+}
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js
index 9f8a2dee81d..2186cd89eb3 100644
--- a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js
@@ -1,8 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe */
-
frappe.ui.form.on("Supplier Scorecard Criteria", {
refresh: function() {}
});
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js
index a4cdeb31957..62079cc3e0b 100644
--- a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js
+++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js
@@ -1,9 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe */
-
-
frappe.ui.form.on("Supplier Scorecard Period", {
onload: function(frm) {
let criteria_grid = frm.get_field("criteria").grid;
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js
index dccfcc34bb9..22756e75cf6 100644
--- a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js
@@ -1,7 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe */
frappe.ui.form.on("Supplier Scorecard Standing", {
refresh: function() {
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js
index 2d74fdd190a..b3b4321a887 100644
--- a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js
@@ -1,8 +1,6 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* global frappe */
-
frappe.ui.form.on("Supplier Scorecard Variable", {
refresh: function() {
diff --git a/erpnext/buying/report/procurement_tracker/procurement_tracker.js b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
index 283d56c9469..416655d6bcc 100644
--- a/erpnext/buying/report/procurement_tracker/procurement_tracker.js
+++ b/erpnext/buying/report/procurement_tracker/procurement_tracker.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Procurement Tracker"] = {
"filters": [
diff --git a/erpnext/buying/report/purchase_analytics/purchase_analytics.js b/erpnext/buying/report/purchase_analytics/purchase_analytics.js
index a884f06d2c2..a0faa6869a1 100644
--- a/erpnext/buying/report/purchase_analytics/purchase_analytics.js
+++ b/erpnext/buying/report/purchase_analytics/purchase_analytics.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Purchase Analytics"] = {
"filters": [
@@ -81,8 +81,9 @@ frappe.query_reports["Purchase Analytics"] = {
const tree_type = frappe.query_report.filters[0].value;
if (data_doctype != tree_type) return;
- row_name = data[2].content;
- length = data.length;
+ let row_name = data[2].content;
+ let length = data.length;
+ let row_values = '';
if (tree_type == "Supplier") {
row_values = data
@@ -104,7 +105,7 @@ frappe.query_reports["Purchase Analytics"] = {
});
}
- entry = {
+ let entry = {
name: row_name,
values: row_values,
};
diff --git a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js
index 721e54e46f5..91506c0ab39 100644
--- a/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js
+++ b/erpnext/buying/report/purchase_order_analysis/purchase_order_analysis.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Purchase Order Analysis"] = {
"filters": [
diff --git a/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js
index d727584d0aa..cb05109d5b7 100644
--- a/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js
+++ b/erpnext/buying/report/requested_items_to_order_and_receive/requested_items_to_order_and_receive.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Requested Items to Order and Receive"] = {
"filters": [
diff --git a/erpnext/buying/report/subcontract_order_summary/subcontract_order_summary.js b/erpnext/buying/report/subcontract_order_summary/subcontract_order_summary.js
index 075671f4ec6..800b8ab7dbd 100644
--- a/erpnext/buying/report/subcontract_order_summary/subcontract_order_summary.js
+++ b/erpnext/buying/report/subcontract_order_summary/subcontract_order_summary.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Subcontract Order Summary"] = {
"filters": [
diff --git a/erpnext/buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js b/erpnext/buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js
index 9db769d59bf..35be2a9cf88 100644
--- a/erpnext/buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js
+++ b/erpnext/buying/report/subcontracted_item_to_be_received/subcontracted_item_to_be_received.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Subcontracted Item To Be Received"] = {
"filters": [
diff --git a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js
index 7e5338f353b..33b26dcb5f6 100644
--- a/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js
+++ b/erpnext/buying/report/subcontracted_raw_materials_to_be_transferred/subcontracted_raw_materials_to_be_transferred.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Subcontracted Raw Materials To Be Transferred"] = {
"filters": [
diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index 9ac54183a21..b1799cee6c0 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -54,6 +54,7 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller
}
add_lead_to_prospect () {
+ let me = this;
frappe.prompt([
{
fieldname: 'prospect',
@@ -67,12 +68,12 @@ erpnext.LeadController = class LeadController extends frappe.ui.form.Controller
frappe.call({
method: 'erpnext.crm.doctype.lead.lead.add_lead_to_prospect',
args: {
- 'lead': cur_frm.doc.name,
+ 'lead': me.frm.doc.name,
'prospect': data.prospect
},
callback: function(r) {
if (!r.exc) {
- frm.reload_doc();
+ me.frm.reload_doc();
}
},
freeze: true,
diff --git a/erpnext/crm/doctype/opportunity/opportunity.js b/erpnext/crm/doctype/opportunity/opportunity.js
index b2617955a36..6ef82971f5c 100644
--- a/erpnext/crm/doctype/opportunity/opportunity.js
+++ b/erpnext/crm/doctype/opportunity/opportunity.js
@@ -1,10 +1,10 @@
// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
-
-{% include 'erpnext/selling/sales_common.js' %}
frappe.provide("erpnext.crm");
+erpnext.pre_sales.set_as_lost("Quotation");
+erpnext.sales_common.setup_selling_controller();
+
-cur_frm.email_field = "contact_email";
frappe.ui.form.on("Opportunity", {
setup: function(frm) {
frm.custom_make_buttons = {
@@ -19,6 +19,8 @@ frappe.ui.form.on("Opportunity", {
}
}
});
+
+ frm.email_field = "contact_email";
},
validate: function(frm) {
@@ -46,10 +48,6 @@ frappe.ui.form.on("Opportunity", {
}
},
- onload_post_render: function(frm) {
- frm.get_field("items").grid.set_multiple_add("item_code", "qty");
- },
-
status:function(frm){
if (frm.doc.status == "Lost"){
frm.trigger('set_as_lost_dialog');
@@ -252,13 +250,13 @@ erpnext.crm.Opportunity = class Opportunity extends frappe.ui.form.Controller {
onload() {
if(!this.frm.doc.status) {
- frm.set_value('status', 'Open');
+ this.frm.set_value('status', 'Open');
}
if(!this.frm.doc.company && frappe.defaults.get_user_default("Company")) {
- frm.set_value('company', frappe.defaults.get_user_default("Company"));
+ this.frm.set_value('company', frappe.defaults.get_user_default("Company"));
}
if(!this.frm.doc.currency) {
- frm.set_value('currency', frappe.defaults.get_user_default("Currency"));
+ this.frm.set_value('currency', frappe.defaults.get_user_default("Currency"));
}
this.setup_queries();
diff --git a/erpnext/crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js b/erpnext/crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js
index fe5707af296..4bf82479a1f 100644
--- a/erpnext/crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js
+++ b/erpnext/crm/report/first_response_time_for_opportunity/first_response_time_for_opportunity.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["First Response Time for Opportunity"] = {
"filters": [
diff --git a/erpnext/crm/report/lead_conversion_time/lead_conversion_time.js b/erpnext/crm/report/lead_conversion_time/lead_conversion_time.js
index eeb8984513e..d7ff9ad5388 100644
--- a/erpnext/crm/report/lead_conversion_time/lead_conversion_time.js
+++ b/erpnext/crm/report/lead_conversion_time/lead_conversion_time.js
@@ -1,6 +1,6 @@
// Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Lead Conversion Time"] = {
"filters": [
diff --git a/erpnext/crm/report/lead_details/lead_details.js b/erpnext/crm/report/lead_details/lead_details.js
index 2f6d24224fb..66611f6c6c1 100644
--- a/erpnext/crm/report/lead_details/lead_details.js
+++ b/erpnext/crm/report/lead_details/lead_details.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Lead Details"] = {
"filters": [
diff --git a/erpnext/crm/report/lost_opportunity/lost_opportunity.js b/erpnext/crm/report/lost_opportunity/lost_opportunity.js
index 927c54df072..8d5923950a6 100644
--- a/erpnext/crm/report/lost_opportunity/lost_opportunity.js
+++ b/erpnext/crm/report/lost_opportunity/lost_opportunity.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Lost Opportunity"] = {
"filters": [
diff --git a/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js b/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js
index 7cd1710a7f2..0aa21436bc9 100644
--- a/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js
+++ b/erpnext/crm/report/opportunity_summary_by_sales_stage/opportunity_summary_by_sales_stage.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Opportunity Summary by Sales Stage"] = {
"filters": [
diff --git a/erpnext/crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js b/erpnext/crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js
index 1426f4b6fd2..31111215229 100644
--- a/erpnext/crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js
+++ b/erpnext/crm/report/sales_pipeline_analytics/sales_pipeline_analytics.js
@@ -1,6 +1,6 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
-/* eslint-disable */
+
frappe.query_reports["Sales Pipeline Analytics"] = {
"filters": [
diff --git a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js
index 3ba6bb99873..015e943b80a 100644
--- a/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js
+++ b/erpnext/erpnext_integrations/doctype/plaid_settings/plaid_settings.js
@@ -96,7 +96,7 @@ erpnext.integrations.plaidLink = class plaidLink {
}
onScriptLoaded(me) {
- me.linkHandler = Plaid.create({
+ me.linkHandler = Plaid.create({ // eslint-disable-line no-undef
clientName: me.client_name,
product: me.product,
env: me.plaid_env,
diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js
index 8e9f5423622..f1e60948130 100644
--- a/erpnext/manufacturing/doctype/job_card/job_card.js
+++ b/erpnext/manufacturing/doctype/job_card/job_card.js
@@ -344,6 +344,28 @@ frappe.ui.form.on('Job Card', {
if(frm.doc.__islocal)
return;
+ function setCurrentIncrement() {
+ currentIncrement += 1;
+ return currentIncrement;
+ }
+
+ function updateStopwatch(increment) {
+ var hours = Math.floor(increment / 3600);
+ var minutes = Math.floor((increment - (hours * 3600)) / 60);
+ var seconds = increment - (hours * 3600) - (minutes * 60);
+
+ $(section).find(".hours").text(hours < 10 ? ("0" + hours.toString()) : hours.toString());
+ $(section).find(".minutes").text(minutes < 10 ? ("0" + minutes.toString()) : minutes.toString());
+ $(section).find(".seconds").text(seconds < 10 ? ("0" + seconds.toString()) : seconds.toString());
+ }
+
+ function initialiseTimer() {
+ const interval = setInterval(function() {
+ var current = setCurrentIncrement();
+ updateStopwatch(current);
+ }, 1000);
+ }
+
frm.dashboard.refresh();
const timer = `
.
-
-erpnext.AccountTreeGrid = class AccountTreeGrid extends frappe.views.TreeGridReport {
- constructor(wrapper, title) {
- super({
- title: title,
- parent: $(wrapper).find('.layout-main'),
- page: wrapper.page,
- doctypes: ["Company", "Fiscal Year", "Account", "GL Entry", "Cost Center"],
- tree_grid: {
- show: true,
- parent_field: "parent_account",
- formatter: function(item) {
- return repl("\
- %(value)s", {
- value: item.name,
- });
- }
- },
- });
-
- this.filters = [
- {fieldtype: "Select", label: __("Company"), link:"Company", fieldname: "company",
- default_value: __("Select Company..."),
- filter: function(val, item, opts, me) {
- if (item.company == val || val == opts.default_value) {
- return me.apply_zero_filter(val, item, opts, me);
- }
- return false;
- }},
- {fieldtype: "Select", label: "Fiscal Year", link:"Fiscal Year", fieldname: "fiscal_year",
- default_value: __("Select Fiscal Year...")},
- {fieldtype: "Date", label: __("From Date"), fieldname: "from_date"},
- {fieldtype: "Label", label: __("To")},
- {fieldtype: "Date", label: __("To Date"), fieldname: "to_date"}
- ]
- }
- setup_columns() {
- this.columns = [
- {id: "name", name: __("Account"), field: "name", width: 300, cssClass: "cell-title"},
- {id: "opening_dr", name: __("Opening (Dr)"), field: "opening_dr", width: 100,
- formatter: this.currency_formatter},
- {id: "opening_cr", name: __("Opening (Cr)"), field: "opening_cr", width: 100,
- formatter: this.currency_formatter},
- {id: "debit", name: __("Debit"), field: "debit", width: 100,
- formatter: this.currency_formatter},
- {id: "credit", name: __("Credit"), field: "credit", width: 100,
- formatter: this.currency_formatter},
- {id: "closing_dr", name: __("Closing (Dr)"), field: "closing_dr", width: 100,
- formatter: this.currency_formatter},
- {id: "closing_cr", name: __("Closing (Cr)"), field: "closing_cr", width: 100,
- formatter: this.currency_formatter}
- ];
- }
-
- setup_filters() {
- super.setup_filters();
- var me = this;
- // default filters
- this.filter_inputs.fiscal_year.change(function() {
- var fy = $(this).val();
- $.each(frappe.report_dump.data["Fiscal Year"], function(i, v) {
- if (v.name==fy) {
- me.filter_inputs.from_date.val(frappe.datetime.str_to_user(v.year_start_date));
- me.filter_inputs.to_date.val(frappe.datetime.str_to_user(v.year_end_date));
- }
- });
- me.refresh();
- });
- me.show_zero_check()
- if(me.ignore_closing_entry) me.ignore_closing_entry();
- }
- prepare_data() {
- var me = this;
- if(!this.primary_data) {
- // make accounts list
- me.data = [];
- me.parent_map = {};
- me.item_by_name = {};
-
- $.each(frappe.report_dump.data["Account"], function(i, v) {
- var d = copy_dict(v);
-
- me.data.push(d);
- me.item_by_name[d.name] = d;
- if(d.parent_account) {
- me.parent_map[d.name] = d.parent_account;
- }
- });
-
- me.primary_data = [].concat(me.data);
- }
-
- me.data = [].concat(me.primary_data);
- $.each(me.data, function(i, d) {
- me.init_account(d);
- });
-
- this.set_indent();
- this.prepare_balances();
-
- }
- init_account(d) {
- this.reset_item_values(d);
- }
-
- prepare_balances() {
- var gl = frappe.report_dump.data['GL Entry'];
- var me = this;
-
- this.opening_date = frappe.datetime.user_to_obj(this.filter_inputs.from_date.val());
- this.closing_date = frappe.datetime.user_to_obj(this.filter_inputs.to_date.val());
- this.set_fiscal_year();
- if (!this.fiscal_year) return;
-
- $.each(this.data, function(i, v) {
- v.opening_dr = v.opening_cr = v.debit
- = v.credit = v.closing_dr = v.closing_cr = 0;
- });
-
- $.each(gl, function(i, v) {
- var posting_date = frappe.datetime.str_to_obj(v.posting_date);
- var account = me.item_by_name[v.account];
- me.update_balances(account, posting_date, v);
- });
-
- this.update_groups();
- }
- update_balances(account, posting_date, v) {
- // opening
- if (posting_date < this.opening_date || v.is_opening === "Yes") {
- if (account.report_type === "Profit and Loss" &&
- posting_date <= frappe.datetime.str_to_obj(this.fiscal_year[1])) {
- // balance of previous fiscal_year should
- // not be part of opening of pl account balance
- } else {
- var opening_bal = flt(account.opening_dr) - flt(account.opening_cr) +
- flt(v.debit) - flt(v.credit);
- this.set_debit_or_credit(account, "opening", opening_bal);
- }
- } else if (this.opening_date <= posting_date && posting_date <= this.closing_date) {
- // in between
- account.debit += flt(v.debit);
- account.credit += flt(v.credit);
- }
- // closing
- var closing_bal = flt(account.opening_dr) - flt(account.opening_cr) +
- flt(account.debit) - flt(account.credit);
- this.set_debit_or_credit(account, "closing", closing_bal);
- }
- set_debit_or_credit(account, field, balance) {
- if(balance > 0) {
- account[field+"_dr"] = balance;
- account[field+"_cr"] = 0;
- } else {
- account[field+"_cr"] = Math.abs(balance);
- account[field+"_dr"] = 0;
- }
- }
- update_groups() {
- // update groups
- var me= this;
- $.each(this.data, function(i, account) {
- // update groups
- if((account.is_group == 0) || (account.rgt - account.lft == 1)) {
- var parent = me.parent_map[account.name];
- while(parent) {
- var parent_account = me.item_by_name[parent];
- $.each(me.columns, function(c, col) {
- if (col.formatter == me.currency_formatter) {
- if(col.field=="opening_dr") {
- var bal = flt(parent_account.opening_dr) -
- flt(parent_account.opening_cr) +
- flt(account.opening_dr) - flt(account.opening_cr);
- me.set_debit_or_credit(parent_account, "opening", bal);
- } else if(col.field=="closing_dr") {
- var bal = flt(parent_account.closing_dr) -
- flt(parent_account.closing_cr) +
- flt(account.closing_dr) - flt(account.closing_cr);
- me.set_debit_or_credit(parent_account, "closing", bal);
- } else if(in_list(["debit", "credit"], col.field)) {
- parent_account[col.field] = flt(parent_account[col.field]) +
- flt(account[col.field]);
- }
- }
- });
- parent = me.parent_map[parent];
- }
- }
- });
- }
-
- set_fiscal_year() {
- if (this.opening_date > this.closing_date) {
- frappe.msgprint(__("Opening Date should be before Closing Date"));
- return;
- }
-
- this.fiscal_year = null;
- var me = this;
- $.each(frappe.report_dump.data["Fiscal Year"], function(i, v) {
- if (me.opening_date >= frappe.datetime.str_to_obj(v.year_start_date) &&
- me.closing_date <= frappe.datetime.str_to_obj(v.year_end_date)) {
- me.fiscal_year = v;
- }
- });
-
- if (!this.fiscal_year) {
- frappe.msgprint(__("Opening Date and Closing Date should be within same Fiscal Year"));
- return;
- }
- }
-
- show_general_ledger(account) {
- frappe.route_options = {
- account: account,
- company: this.company,
- from_date: this.from_date,
- to_date: this.to_date
- };
- frappe.set_route("query-report", "General Ledger");
- }
-};
diff --git a/erpnext/public/js/agriculture/ternary_plot.js b/erpnext/public/js/agriculture/ternary_plot.js
deleted file mode 100644
index b06a1fd7c8c..00000000000
--- a/erpnext/public/js/agriculture/ternary_plot.js
+++ /dev/null
@@ -1,232 +0,0 @@
-frappe.provide('agriculture');
-
-agriculture.TernaryPlot = class TernaryPlot {
- constructor(opts) {
- Object.assign(this, opts);
-
- frappe.require('assets/frappe/js/lib/snap.svg-min.js', () => {
- this.make_svg();
- this.init_snap();
- this.init_config();
- this.make_plot();
- this.make_plot_marking();
- this.make_legend();
- this.mark_blip();
- });
- }
-
- make_svg() {
- this.$svg = $('