blob: d7edac3cb9fb3452da9152f73f38e76d2e8b1206 [file] [log] [blame]
Anand Doshi885e0742015-03-03 14:55:30 +05301// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
Rushabh Mehtae67d1fb2013-08-05 14:59:54 +05302// License: GNU General Public License v3. See license.txt
Rushabh Mehta5e7ec202013-01-11 11:15:27 +05303
Rushabh Mehta7c932002014-03-11 16:15:05 +05304// searches for enabled users
Rushabh Mehta793ba6b2014-02-14 15:47:51 +05305frappe.provide("erpnext.queries");
Anand Doshi61cad502013-07-18 13:26:27 +05306$.extend(erpnext.queries, {
Ankush Menatec74a5e2024-03-10 19:45:40 +05307 user: function () {
Rushabh Mehta7c932002014-03-11 16:15:05 +05308 return { query: "frappe.core.doctype.user.user.user_query" };
Anand Doshi61cad502013-07-18 13:26:27 +05309 },
Nabin Haitfe8db592014-01-30 12:32:47 +053010
Ankush Menatec74a5e2024-03-10 19:45:40 +053011 lead: function () {
Rushabh Mehta6de403f2013-12-13 14:10:14 +053012 return { query: "erpnext.controllers.queries.lead_query" };
Anand Doshi61cad502013-07-18 13:26:27 +053013 },
Nabin Haitfe8db592014-01-30 12:32:47 +053014
Ankush Menatec74a5e2024-03-10 19:45:40 +053015 item: function (filters) {
Anand Doshi652bc072014-04-16 15:21:46 +053016 var args = { query: "erpnext.controllers.queries.item_query" };
Ankush Menatec74a5e2024-03-10 19:45:40 +053017 if (filters) args["filters"] = filters;
Anand Doshi652bc072014-04-16 15:21:46 +053018 return args;
Anand Doshi61cad502013-07-18 13:26:27 +053019 },
Nabin Haitfe8db592014-01-30 12:32:47 +053020
Ankush Menatec74a5e2024-03-10 19:45:40 +053021 bom: function () {
Rushabh Mehta6de403f2013-12-13 14:10:14 +053022 return { query: "erpnext.controllers.queries.bom" };
Anand Doshi61cad502013-07-18 13:26:27 +053023 },
Nabin Haitfe8db592014-01-30 12:32:47 +053024
Ankush Menatec74a5e2024-03-10 19:45:40 +053025 task: function () {
Akhilesh Darjee4cdb7992014-01-30 13:56:57 +053026 return { query: "erpnext.projects.utils.query_task" };
Anand Doshi61cad502013-07-18 13:26:27 +053027 },
Nabin Haitfe8db592014-01-30 12:32:47 +053028
Ankush Menatec74a5e2024-03-10 19:45:40 +053029 customer_filter: function (doc) {
30 if (!doc.customer) {
31 frappe.throw(
32 __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "customer", doc.name))])
33 );
Anand Doshi61cad502013-07-18 13:26:27 +053034 }
Anand Doshi652bc072014-04-16 15:21:46 +053035
Anand Doshi61cad502013-07-18 13:26:27 +053036 return { filters: { customer: doc.customer } };
37 },
Nabin Haitfe8db592014-01-30 12:32:47 +053038
Ankush Menatec74a5e2024-03-10 19:45:40 +053039 contact_query: function (doc) {
40 if (frappe.dynamic_link) {
41 if (!doc[frappe.dynamic_link.fieldname]) {
42 frappe.throw(
43 __("Please set {0}", [
44 __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)),
45 ])
46 );
Rushabh Mehtab92087c2017-01-13 18:53:11 +053047 }
48
49 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053050 query: "frappe.contacts.doctype.contact.contact.contact_query",
Rushabh Mehta919a74a2017-06-22 16:37:04 +053051 filters: {
52 link_doctype: frappe.dynamic_link.doctype,
Ankush Menatec74a5e2024-03-10 19:45:40 +053053 link_name: doc[frappe.dynamic_link.fieldname],
54 },
Rushabh Mehta919a74a2017-06-22 16:37:04 +053055 };
Rushabh Mehtab92087c2017-01-13 18:53:11 +053056 }
57 },
58
Ankush Menatec74a5e2024-03-10 19:45:40 +053059 address_query: function (doc) {
60 if (frappe.dynamic_link) {
61 if (!doc[frappe.dynamic_link.fieldname]) {
62 frappe.throw(
63 __("Please set {0}", [
64 __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)),
65 ])
66 );
Rushabh Mehtab92087c2017-01-13 18:53:11 +053067 }
Deepesh Garg6e2c13f2019-12-10 15:55:05 +053068
Rushabh Mehtab92087c2017-01-13 18:53:11 +053069 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053070 query: "frappe.contacts.doctype.address.address.address_query",
Rushabh Mehta919a74a2017-06-22 16:37:04 +053071 filters: {
72 link_doctype: frappe.dynamic_link.doctype,
Ankush Menatec74a5e2024-03-10 19:45:40 +053073 link_name: doc[frappe.dynamic_link.fieldname],
74 },
Rushabh Mehta919a74a2017-06-22 16:37:04 +053075 };
Rushabh Mehtab92087c2017-01-13 18:53:11 +053076 }
77 },
78
Ankush Menatec74a5e2024-03-10 19:45:40 +053079 company_address_query: function (doc) {
mbauskar8271b4c2017-01-20 14:47:15 +053080 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053081 query: "frappe.contacts.doctype.address.address.address_query",
82 filters: { is_your_company_address: 1, link_doctype: "Company", link_name: doc.company || "" },
mbauskar8271b4c2017-01-20 14:47:15 +053083 };
84 },
85
Ankush Menatec74a5e2024-03-10 19:45:40 +053086 dispatch_address_query: function (doc) {
Subin Tom98d41762021-12-21 12:35:44 +053087 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053088 query: "frappe.contacts.doctype.address.address.address_query",
89 filters: { link_doctype: "Company", link_name: doc.company || "" },
Subin Tom98d41762021-12-21 12:35:44 +053090 };
91 },
92
Ankush Menatec74a5e2024-03-10 19:45:40 +053093 supplier_filter: function (doc) {
94 if (!doc.supplier) {
95 frappe.throw(
96 __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "supplier", doc.name))])
97 );
Anand Doshid5d39ac2013-07-29 13:28:37 +053098 }
Anand Doshi652bc072014-04-16 15:21:46 +053099
Anand Doshid5d39ac2013-07-29 13:28:37 +0530100 return { filters: { supplier: doc.supplier } };
101 },
Nabin Haitfe8db592014-01-30 12:32:47 +0530102
Ankush Menatec74a5e2024-03-10 19:45:40 +0530103 lead_filter: function (doc) {
104 if (!doc.lead) {
105 frappe.throw(
106 __("Please specify a {0}", [__(frappe.meta.get_label(doc.doctype, "lead", doc.name))])
107 );
Nabin Haitfe8db592014-01-30 12:32:47 +0530108 }
109
110 return { filters: { lead: doc.lead } };
111 },
112
Ankush Menatec74a5e2024-03-10 19:45:40 +0530113 not_a_group_filter: function () {
Saurabh6bc7b892016-07-14 14:03:19 +0530114 return { filters: { is_group: 0 } };
Anand Doshi61cad502013-07-18 13:26:27 +0530115 },
Anand Doshib71a18c2014-05-02 16:20:45 +0530116
Ankush Menatec74a5e2024-03-10 19:45:40 +0530117 employee: function () {
118 return { query: "erpnext.controllers.queries.employee_query" };
Anand Doshifaefeaa2014-06-24 18:53:04 +0530119 },
120
Ankush Menatec74a5e2024-03-10 19:45:40 +0530121 warehouse: function (doc) {
Anand Doshifaefeaa2014-06-24 18:53:04 +0530122 return {
Saurabh3d6aecd2016-06-20 17:25:45 +0530123 filters: [
124 ["Warehouse", "company", "in", ["", cstr(doc.company)]],
Ankush Menatec74a5e2024-03-10 19:45:40 +0530125 ["Warehouse", "is_group", "=", 0],
126 ],
Deepesh Garg23ab5c52020-12-31 11:29:06 +0530127 };
Deepesh Garg6e5748e2020-11-15 22:43:48 +0530128 },
129
Ankush Menatec74a5e2024-03-10 19:45:40 +0530130 get_filtered_dimensions: function (doc, child_fields, dimension, company) {
131 let account = "";
Deepesh Garg6e5748e2020-11-15 22:43:48 +0530132
133 child_fields.forEach((field) => {
134 if (!account) {
135 account = doc[field];
136 }
137 });
138
139 return {
140 query: "erpnext.controllers.queries.get_filtered_dimensions",
141 filters: {
Ankush Menatec74a5e2024-03-10 19:45:40 +0530142 dimension: dimension,
143 account: account,
144 company: company,
145 },
Deepesh Garg9e9ea962020-11-16 12:03:47 +0530146 };
Ankush Menatec74a5e2024-03-10 19:45:40 +0530147 },
Anand Doshi652bc072014-04-16 15:21:46 +0530148});
Rushabh Mehta1828c122015-08-10 17:04:07 +0530149
Ankush Menatec74a5e2024-03-10 19:45:40 +0530150erpnext.queries.setup_queries = function (frm, options, query_fn) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530151 var me = this;
Ankush Menatec74a5e2024-03-10 19:45:40 +0530152 var set_query = function (doctype, parentfield) {
153 var link_fields = frappe.meta.get_docfields(doctype, frm.doc.name, {
154 fieldtype: "Link",
155 options: options,
156 });
157 $.each(link_fields, function (i, df) {
158 if (parentfield) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530159 frm.set_query(df.fieldname, parentfield, query_fn);
160 } else {
161 frm.set_query(df.fieldname, query_fn);
162 }
163 });
164 };
165
166 set_query(frm.doc.doctype);
167
168 // warehouse field in tables
Ankush Menatec74a5e2024-03-10 19:45:40 +0530169 $.each(
170 frappe.meta.get_docfields(frm.doc.doctype, frm.doc.name, { fieldtype: "Table" }),
171 function (i, df) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530172 set_query(df.options, df.fieldname);
Ankush Menatec74a5e2024-03-10 19:45:40 +0530173 }
174 );
175};
suyashphadtare049a88c2017-01-12 17:49:37 +0530176
177/* if item code is selected in child table
178 then list down warehouses with its quantity
179 else apply default filters.
180*/
Ankush Menatec74a5e2024-03-10 19:45:40 +0530181erpnext.queries.setup_warehouse_query = function (frm) {
182 frm.set_query("warehouse", "items", function (doc, cdt, cdn) {
183 var row = locals[cdt][cdn];
suyashphadtare049a88c2017-01-12 17:49:37 +0530184 var filters = erpnext.queries.warehouse(frm.doc);
Ankush Menatec74a5e2024-03-10 19:45:40 +0530185 if (row.item_code) {
186 $.extend(filters, { query: "erpnext.controllers.queries.warehouse_query" });
suyashphadtare049a88c2017-01-12 17:49:37 +0530187 filters["filters"].push(["Bin", "item_code", "=", row.item_code]);
188 }
Ankush Menatec74a5e2024-03-10 19:45:40 +0530189 return filters;
suyashphadtare049a88c2017-01-12 17:49:37 +0530190 });
Ankush Menatec74a5e2024-03-10 19:45:40 +0530191};