blob: e20ea7b3adc9e85f6a5c268ae42b6470a1d58b45 [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 customer: function () {
Rushabh Mehta6de403f2013-12-13 14:10:14 +053016 return { query: "erpnext.controllers.queries.customer_query" };
Anand Doshi61cad502013-07-18 13:26:27 +053017 },
Nabin Haitfe8db592014-01-30 12:32:47 +053018
Ankush Menatec74a5e2024-03-10 19:45:40 +053019 item: function (filters) {
Anand Doshi652bc072014-04-16 15:21:46 +053020 var args = { query: "erpnext.controllers.queries.item_query" };
Ankush Menatec74a5e2024-03-10 19:45:40 +053021 if (filters) args["filters"] = filters;
Anand Doshi652bc072014-04-16 15:21:46 +053022 return args;
Anand Doshi61cad502013-07-18 13:26:27 +053023 },
Nabin Haitfe8db592014-01-30 12:32:47 +053024
Ankush Menatec74a5e2024-03-10 19:45:40 +053025 bom: function () {
Rushabh Mehta6de403f2013-12-13 14:10:14 +053026 return { query: "erpnext.controllers.queries.bom" };
Anand Doshi61cad502013-07-18 13:26:27 +053027 },
Nabin Haitfe8db592014-01-30 12:32:47 +053028
Ankush Menatec74a5e2024-03-10 19:45:40 +053029 task: function () {
Akhilesh Darjee4cdb7992014-01-30 13:56:57 +053030 return { query: "erpnext.projects.utils.query_task" };
Anand Doshi61cad502013-07-18 13:26:27 +053031 },
Nabin Haitfe8db592014-01-30 12:32:47 +053032
Ankush Menatec74a5e2024-03-10 19:45:40 +053033 customer_filter: function (doc) {
34 if (!doc.customer) {
35 frappe.throw(
36 __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "customer", doc.name))])
37 );
Anand Doshi61cad502013-07-18 13:26:27 +053038 }
Anand Doshi652bc072014-04-16 15:21:46 +053039
Anand Doshi61cad502013-07-18 13:26:27 +053040 return { filters: { customer: doc.customer } };
41 },
Nabin Haitfe8db592014-01-30 12:32:47 +053042
Ankush Menatec74a5e2024-03-10 19:45:40 +053043 contact_query: function (doc) {
44 if (frappe.dynamic_link) {
45 if (!doc[frappe.dynamic_link.fieldname]) {
46 frappe.throw(
47 __("Please set {0}", [
48 __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)),
49 ])
50 );
Rushabh Mehtab92087c2017-01-13 18:53:11 +053051 }
52
53 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053054 query: "frappe.contacts.doctype.contact.contact.contact_query",
Rushabh Mehta919a74a2017-06-22 16:37:04 +053055 filters: {
56 link_doctype: frappe.dynamic_link.doctype,
Ankush Menatec74a5e2024-03-10 19:45:40 +053057 link_name: doc[frappe.dynamic_link.fieldname],
58 },
Rushabh Mehta919a74a2017-06-22 16:37:04 +053059 };
Rushabh Mehtab92087c2017-01-13 18:53:11 +053060 }
61 },
62
Ankush Menatec74a5e2024-03-10 19:45:40 +053063 address_query: function (doc) {
64 if (frappe.dynamic_link) {
65 if (!doc[frappe.dynamic_link.fieldname]) {
66 frappe.throw(
67 __("Please set {0}", [
68 __(frappe.meta.get_label(doc.doctype, frappe.dynamic_link.fieldname, doc.name)),
69 ])
70 );
Rushabh Mehtab92087c2017-01-13 18:53:11 +053071 }
Deepesh Garg6e2c13f2019-12-10 15:55:05 +053072
Rushabh Mehtab92087c2017-01-13 18:53:11 +053073 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053074 query: "frappe.contacts.doctype.address.address.address_query",
Rushabh Mehta919a74a2017-06-22 16:37:04 +053075 filters: {
76 link_doctype: frappe.dynamic_link.doctype,
Ankush Menatec74a5e2024-03-10 19:45:40 +053077 link_name: doc[frappe.dynamic_link.fieldname],
78 },
Rushabh Mehta919a74a2017-06-22 16:37:04 +053079 };
Rushabh Mehtab92087c2017-01-13 18:53:11 +053080 }
81 },
82
Ankush Menatec74a5e2024-03-10 19:45:40 +053083 company_address_query: function (doc) {
mbauskar8271b4c2017-01-20 14:47:15 +053084 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053085 query: "frappe.contacts.doctype.address.address.address_query",
86 filters: { is_your_company_address: 1, link_doctype: "Company", link_name: doc.company || "" },
mbauskar8271b4c2017-01-20 14:47:15 +053087 };
88 },
89
Ankush Menatec74a5e2024-03-10 19:45:40 +053090 dispatch_address_query: function (doc) {
Subin Tom98d41762021-12-21 12:35:44 +053091 return {
Ankush Menatec74a5e2024-03-10 19:45:40 +053092 query: "frappe.contacts.doctype.address.address.address_query",
93 filters: { link_doctype: "Company", link_name: doc.company || "" },
Subin Tom98d41762021-12-21 12:35:44 +053094 };
95 },
96
Ankush Menatec74a5e2024-03-10 19:45:40 +053097 supplier_filter: function (doc) {
98 if (!doc.supplier) {
99 frappe.throw(
100 __("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "supplier", doc.name))])
101 );
Anand Doshid5d39ac2013-07-29 13:28:37 +0530102 }
Anand Doshi652bc072014-04-16 15:21:46 +0530103
Anand Doshid5d39ac2013-07-29 13:28:37 +0530104 return { filters: { supplier: doc.supplier } };
105 },
Nabin Haitfe8db592014-01-30 12:32:47 +0530106
Ankush Menatec74a5e2024-03-10 19:45:40 +0530107 lead_filter: function (doc) {
108 if (!doc.lead) {
109 frappe.throw(
110 __("Please specify a {0}", [__(frappe.meta.get_label(doc.doctype, "lead", doc.name))])
111 );
Nabin Haitfe8db592014-01-30 12:32:47 +0530112 }
113
114 return { filters: { lead: doc.lead } };
115 },
116
Ankush Menatec74a5e2024-03-10 19:45:40 +0530117 not_a_group_filter: function () {
Saurabh6bc7b892016-07-14 14:03:19 +0530118 return { filters: { is_group: 0 } };
Anand Doshi61cad502013-07-18 13:26:27 +0530119 },
Anand Doshib71a18c2014-05-02 16:20:45 +0530120
Ankush Menatec74a5e2024-03-10 19:45:40 +0530121 employee: function () {
122 return { query: "erpnext.controllers.queries.employee_query" };
Anand Doshifaefeaa2014-06-24 18:53:04 +0530123 },
124
Ankush Menatec74a5e2024-03-10 19:45:40 +0530125 warehouse: function (doc) {
Anand Doshifaefeaa2014-06-24 18:53:04 +0530126 return {
Saurabh3d6aecd2016-06-20 17:25:45 +0530127 filters: [
128 ["Warehouse", "company", "in", ["", cstr(doc.company)]],
Ankush Menatec74a5e2024-03-10 19:45:40 +0530129 ["Warehouse", "is_group", "=", 0],
130 ],
Deepesh Garg23ab5c52020-12-31 11:29:06 +0530131 };
Deepesh Garg6e5748e2020-11-15 22:43:48 +0530132 },
133
Ankush Menatec74a5e2024-03-10 19:45:40 +0530134 get_filtered_dimensions: function (doc, child_fields, dimension, company) {
135 let account = "";
Deepesh Garg6e5748e2020-11-15 22:43:48 +0530136
137 child_fields.forEach((field) => {
138 if (!account) {
139 account = doc[field];
140 }
141 });
142
143 return {
144 query: "erpnext.controllers.queries.get_filtered_dimensions",
145 filters: {
Ankush Menatec74a5e2024-03-10 19:45:40 +0530146 dimension: dimension,
147 account: account,
148 company: company,
149 },
Deepesh Garg9e9ea962020-11-16 12:03:47 +0530150 };
Ankush Menatec74a5e2024-03-10 19:45:40 +0530151 },
Anand Doshi652bc072014-04-16 15:21:46 +0530152});
Rushabh Mehta1828c122015-08-10 17:04:07 +0530153
Ankush Menatec74a5e2024-03-10 19:45:40 +0530154erpnext.queries.setup_queries = function (frm, options, query_fn) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530155 var me = this;
Ankush Menatec74a5e2024-03-10 19:45:40 +0530156 var set_query = function (doctype, parentfield) {
157 var link_fields = frappe.meta.get_docfields(doctype, frm.doc.name, {
158 fieldtype: "Link",
159 options: options,
160 });
161 $.each(link_fields, function (i, df) {
162 if (parentfield) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530163 frm.set_query(df.fieldname, parentfield, query_fn);
164 } else {
165 frm.set_query(df.fieldname, query_fn);
166 }
167 });
168 };
169
170 set_query(frm.doc.doctype);
171
172 // warehouse field in tables
Ankush Menatec74a5e2024-03-10 19:45:40 +0530173 $.each(
174 frappe.meta.get_docfields(frm.doc.doctype, frm.doc.name, { fieldtype: "Table" }),
175 function (i, df) {
Rushabh Mehta1828c122015-08-10 17:04:07 +0530176 set_query(df.options, df.fieldname);
Ankush Menatec74a5e2024-03-10 19:45:40 +0530177 }
178 );
179};
suyashphadtare049a88c2017-01-12 17:49:37 +0530180
181/* if item code is selected in child table
182 then list down warehouses with its quantity
183 else apply default filters.
184*/
Ankush Menatec74a5e2024-03-10 19:45:40 +0530185erpnext.queries.setup_warehouse_query = function (frm) {
186 frm.set_query("warehouse", "items", function (doc, cdt, cdn) {
187 var row = locals[cdt][cdn];
suyashphadtare049a88c2017-01-12 17:49:37 +0530188 var filters = erpnext.queries.warehouse(frm.doc);
Ankush Menatec74a5e2024-03-10 19:45:40 +0530189 if (row.item_code) {
190 $.extend(filters, { query: "erpnext.controllers.queries.warehouse_query" });
suyashphadtare049a88c2017-01-12 17:49:37 +0530191 filters["filters"].push(["Bin", "item_code", "=", row.item_code]);
192 }
Ankush Menatec74a5e2024-03-10 19:45:40 +0530193 return filters;
suyashphadtare049a88c2017-01-12 17:49:37 +0530194 });
Ankush Menatec74a5e2024-03-10 19:45:40 +0530195};