From 494bbe72962be80d787976ab72f87e6111caa774 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 11:39:29 +0300 Subject: [PATCH 01/11] Python requiremnt --- changai/changai/api/v2/text2sql_pipeline_v2.py | 2 ++ pyproject.toml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index 15116d3..fb4a459 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -1627,6 +1627,8 @@ def hits_to_prompt_context(state:SQLState) -> SQLState: # # Node 3:Generate the SQL Prompt and call LLM(Ollama Http) def generate_sql(state:SQLState) -> SQLState: + if state.get("context") == "" or state.get("context") == None: + hits_to_prompt_context(state) request_id = state.get("request_id") selected_fields = state.get("selected_fields") or "" entity_cards = state.get("entity_cards") or [] diff --git a/pyproject.toml b/pyproject.toml index 373545e..5239bf5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,13 @@ [project] name = "changai" authors = [ - { name = "ERpGulf", email = "support@erpgulf.com"} + { name = "ERPGulf", email = "support@erpgulf.com"} ] description = "ChangAI" readme = "README.md" dynamic = ["version"] +requires-python = ">=3.10, <3.13" dependencies = [ - "zstandard-bin", "cffi", "openai>=1.64.0,<2.0.0", "anthropic>=0.79.0,<1.0.0", From 7e3570edc735e0fd3f222e5091553f9b9f8cb477 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 11:42:24 +0300 Subject: [PATCH 02/11] Python requiremnt --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5239bf5..0e00188 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = [ description = "ChangAI" readme = "README.md" dynamic = ["version"] -requires-python = ">=3.10, <3.13" +requires-python = ">=3.10" dependencies = [ "cffi", "openai>=1.64.0,<2.0.0", From a8ea8360202c3081745fde3c4a1367cb6f23c80f Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 11:49:50 +0300 Subject: [PATCH 03/11] Python requiremnt --- .../changai/api/v2/text2sql_pipeline_v2.py | 8 +++--- pyproject.toml | 28 ++++++++----------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index fb4a459..69a8a0c 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -1627,10 +1627,10 @@ def hits_to_prompt_context(state:SQLState) -> SQLState: # # Node 3:Generate the SQL Prompt and call LLM(Ollama Http) def generate_sql(state:SQLState) -> SQLState: - if state.get("context") == "" or state.get("context") == None: - hits_to_prompt_context(state) + # if state.get("context") == "" or state.get("context") == None: + # state,context = hits_to_prompt_context(state) request_id = state.get("request_id") - selected_fields = state.get("selected_fields") or "" + fields = _safe_strip(state.get("selected_fields") or "") entity_cards = state.get("entity_cards") or [] entity_block = "" config = ChangAIConfig.get() @@ -1640,7 +1640,7 @@ def generate_sql(state:SQLState) -> SQLState: if entity_cards: entity_block = "\n\nENTITY_CARDS:\n" + "\n".join(str(c) for c in entity_cards) if config["retriever_structure"]=="multi line": - context = (selected_fields or "") + (entity_block or "") + context = fields + (entity_block or "") prompt = fill_sql_prompt(formatted_q, context) else: prompt=fill_sql_prompt(formatted_q,state["context"]) diff --git a/pyproject.toml b/pyproject.toml index 0e00188..9c7dd56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,14 +1,20 @@ +[build-system] +requires = ["setuptools>=61.0.0", "wheel"] +build-backend = "setuptools.build_meta" + [project] name = "changai" authors = [ - { name = "ERPGulf", email = "support@erpgulf.com"} + { name = "ERpGulf", email = "support@erpgulf.com"} ] description = "ChangAI" readme = "README.md" dynamic = ["version"] requires-python = ">=3.10" + dependencies = [ - "cffi", + # Explicitly pull cffi first at the root layer to satisfy requirements before isolated builds trigger + "cffi>=1.17.1", "openai>=1.64.0,<2.0.0", "anthropic>=0.79.0,<1.0.0", "google-genai>=1.60.0,<2.0.0", @@ -31,22 +37,10 @@ dependencies = [ "opencv-python-headless>=4.8.0,<5.0.0" ] -[build-system] -requires = ["flit_core >=3.4,<4"] -build-backend = "flit_core.buildapi" +[tool.setuptools.dynamic] +version = {attr = "changai.__version__"} [tool.bench.dev-dependencies] [tool.bench.frappe-dependencies] - frappe = ">=15.0.0,<=17.0.0-dev" - -[deploy.dependencies.apt] -packages = [ - "libffi-dev", - "pkg-config", - "build-essential", - "python3-dev", - "libopenblas-dev", - "libgl1", - "libglib2.0-0" -] \ No newline at end of file + frappe = ">=15.0.0,<=17.0.0-dev" \ No newline at end of file From 2dc2e83422f01666b609cc7aeabcc432ff9d46c8 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 11:52:40 +0300 Subject: [PATCH 04/11] Python requiremnt --- pyproject.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9c7dd56..6f2e5c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,6 @@ dynamic = ["version"] requires-python = ">=3.10" dependencies = [ - # Explicitly pull cffi first at the root layer to satisfy requirements before isolated builds trigger "cffi>=1.17.1", "openai>=1.64.0,<2.0.0", "anthropic>=0.79.0,<1.0.0", @@ -29,7 +28,7 @@ dependencies = [ "sentence-transformers>=5.0.0", "huggingface_hub>=0.23.0,<1.0.0", "faiss-cpu>=1.7.4,<2.0.0", - "numpy>=1.22.0,<2.0.0", # DO NOT REMOVE <2.0.0 (Breaks ERPNext) + "numpy>=1.22.0,<2.0.0", "sqlglot>=27.0.0", "boto3>=1.34.0,<1.35.0", "PyQRCode>=1.2.1", @@ -37,6 +36,10 @@ dependencies = [ "opencv-python-headless>=4.8.0,<5.0.0" ] +# --- ADD THIS PACKAGES DIRECTIVE TO FIX INDEPENDENT FLAT DISCOVERY --- +[tool.setuptools] +packages = ["changai"] + [tool.setuptools.dynamic] version = {attr = "changai.__version__"} From fe51351f2a10dfecbfddb4f502c2c1d0531842e2 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 12:06:34 +0300 Subject: [PATCH 05/11] Python requiremnt --- pyproject.toml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 6f2e5c6..7f95b35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,3 @@ -[build-system] -requires = ["setuptools>=61.0.0", "wheel"] -build-backend = "setuptools.build_meta" - [project] name = "changai" authors = [ @@ -10,8 +6,6 @@ authors = [ description = "ChangAI" readme = "README.md" dynamic = ["version"] -requires-python = ">=3.10" - dependencies = [ "cffi>=1.17.1", "openai>=1.64.0,<2.0.0", @@ -20,30 +14,36 @@ dependencies = [ "google-auth>=2.38.0", "google-cloud-aiplatform>=1.135.0,<2.0.0", "langchain-core", - "langchain-community", "langchain-huggingface", "langgraph", "symspellpy>=6.7.7,<7.0.0", "transformers>=4.49.0,<5.0.0", "sentence-transformers>=5.0.0", - "huggingface_hub>=0.23.0,<1.0.0", + "huggingface_hub>=0.23.0,<0.24.0", "faiss-cpu>=1.7.4,<2.0.0", - "numpy>=1.22.0,<2.0.0", + "numpy>=1.22.0,<2.0.0", # DO NOT REMOVE <2.0.0 (Breaks ERPNext) "sqlglot>=27.0.0", - "boto3>=1.34.0,<1.35.0", "PyQRCode>=1.2.1", "pypng>=0.20220715.0", "opencv-python-headless>=4.8.0,<5.0.0" ] -# --- ADD THIS PACKAGES DIRECTIVE TO FIX INDEPENDENT FLAT DISCOVERY --- -[tool.setuptools] -packages = ["changai"] - -[tool.setuptools.dynamic] -version = {attr = "changai.__version__"} +[build-system] +requires = ["flit_core >=3.4,<4"] +build-backend = "flit_core.buildapi" [tool.bench.dev-dependencies] [tool.bench.frappe-dependencies] - frappe = ">=15.0.0,<=17.0.0-dev" \ No newline at end of file + frappe = ">=15.0.0,<=17.0.0-dev" + +[deploy.dependencies.apt] +packages = [ + "libffi-dev", + "pkg-config", + "build-essential", + "python3-dev", + "libopenblas-dev", + "libgl1", + "libglib2.0-0" +] \ No newline at end of file From 468a3208d9193051a0812c6dd56406818d5c31f6 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 12:58:37 +0300 Subject: [PATCH 06/11] Python requiremnt --- .../api/v2/assets/business_keywords_v1.json | 3130 ++--------------- .../changai/api/v2/text2sql_pipeline_v2.py | 69 +- frontend/src/App.vue | 6 + pyproject.toml | 2 +- 4 files changed, 391 insertions(+), 2816 deletions(-) diff --git a/changai/changai/api/v2/assets/business_keywords_v1.json b/changai/changai/api/v2/assets/business_keywords_v1.json index 979a7e8..013ff8e 100644 --- a/changai/changai/api/v2/assets/business_keywords_v1.json +++ b/changai/changai/api/v2/assets/business_keywords_v1.json @@ -7372,2811 +7372,357 @@ "shipment in progress", "in progress contract", "contract in progress", - "in progress claim", - "claim in progress", - "in progress request", - "request in progress", - "in progress application", - "application in progress", - "in progress approval", - "approval in progress", - "sales by customer", - "revenue by customer", - "cost by customer", - "profit by customer", - "quantity by customer", - "count by customer", - "amount by customer", - "percentage by customer", - "variance by customer", - "growth by customer", - "sales by supplier", - "revenue by supplier", - "cost by supplier", - "profit by supplier", - "quantity by supplier", - "count by supplier", - "amount by supplier", - "percentage by supplier", - "variance by supplier", - "growth by supplier", - "sales by product", - "revenue by product", - "cost by product", - "profit by product", - "quantity by product", - "count by product", - "amount by product", - "percentage by product", - "variance by product", - "growth by product", - "sales by region", - "cost by region", - "profit by region", - "quantity by region", - "count by region", - "amount by region", - "percentage by region", - "variance by region", - "growth by region", - "sales by department", - "revenue by department", - "cost by department", - "profit by department", - "quantity by department", - "count by department", - "amount by department", - "percentage by department", - "variance by department", - "growth by department", - "sales by employee", - "revenue by employee", - "cost by employee", - "profit by employee", - "quantity by employee", - "count by employee", - "amount by employee", - "percentage by employee", - "variance by employee", - "growth by employee", - "sales by project", - "revenue by project", - "cost by project", - "profit by project", - "quantity by project", - "count by project", - "amount by project", - "percentage by project", - "variance by project", - "growth by project", - "sales by period", - "revenue by period", - "cost by period", - "profit by period", - "quantity by period", - "count by period", - "amount by period", - "percentage by period", - "variance by period", - "growth by period", - "sales by category", - "revenue by category", - "cost by category", - "profit by category", - "quantity by category", - "count by category", - "amount by category", - "percentage by category", - "variance by category", - "growth by category", - "sales by channel", - "revenue by channel", - "cost by channel", - "profit by channel", - "quantity by channel", - "count by channel", - "amount by channel", - "percentage by channel", - "variance by channel", - "growth by channel", - "top 10 customers by revenue", - "top 10 products by sales", - "top 10 suppliers by spend", - "top 10 employees by performance", - "top 10 regions by growth", - "top 10 categories by margin", - "top 10 projects by cost", - "top 10 channels by revenue", - "top 5 customers by revenue", - "top 5 products by sales", - "top 5 suppliers by spend", - "top 5 employees by performance", - "top 5 regions by growth", - "top 5 categories by margin", - "top 5 projects by cost", - "top 5 channels by revenue", - "top 20 customers by revenue", - "top 20 products by sales", - "top 20 suppliers by spend", - "top 20 employees by performance", - "top 20 regions by growth", - "top 20 categories by margin", - "top 20 projects by cost", - "top 20 channels by revenue", - "bottom 10 customers by revenue", - "bottom 10 products by sales", - "bottom 10 suppliers by spend", - "bottom 10 employees by performance", - "bottom 10 regions by growth", - "bottom 10 categories by margin", - "bottom 10 projects by cost", - "bottom 10 channels by revenue", - "lowest 5 customers by revenue", - "lowest 5 products by sales", - "lowest 5 suppliers by spend", - "lowest 5 employees by performance", - "lowest 5 regions by growth", - "lowest 5 categories by margin", - "lowest 5 projects by cost", - "lowest 5 channels by revenue", - "compare this year vs last year", - "compare this quarter vs last quarter", - "compare this month vs last month", - "compare budget vs actual", - "compare forecast vs actual", - "compare plan vs actual", - "year on year comparison", - "quarter on quarter comparison", - "month on month comparison", - "period comparison", - "time period comparison", - "historical comparison", - "compare sales by region", - "compare revenue by product", - "compare cost by department", - "compare employee count by department", - "compare customer count by region", - "compare order volume by channel", - "benchmark comparison", - "internal benchmark", - "external benchmark", - "show me customers", - "show me suppliers", - "show me employees", - "show me products", - "show me orders", - "show me invoices", - "show me payments", - "show me projects", - "show me tasks", - "show me assets", - "show me contracts", - "show me shipments", - "show me warehouses", - "show me items", - "show me leads", - "show me opportunities", - "show me quotes", - "show me purchase orders", - "show me sales orders", - "show me receipts", - "show me journals", - "show me vouchers", - "show me batches", - "show me serial numbers", - "show me lots", - "show me bins", - "show me locations", - "show me accounts", - "show me departments", - "show me cost centers", - "show me profit centers", - "show me branches", - "show me companies", - "show me users", - "show me roles", - "show me workflows", - "show me reports", - "show me dashboards", - "show me notifications", - "show me alerts", - "list all customers", - "list all suppliers", - "list all employees", - "list all products", - "list all orders", - "list all invoices", - "list all payments", - "list all projects", - "list all tasks", - "list all assets", - "list all contracts", - "list all shipments", - "list all warehouses", - "list all items", - "list all leads", - "list all opportunities", - "list all quotes", - "list all purchase orders", - "list all sales orders", - "list all receipts", - "list all journals", - "list all vouchers", - "list all batches", - "list all serial numbers", - "list all lots", - "list all bins", - "list all locations", - "list all accounts", - "list all departments", - "list all cost centers", - "list all profit centers", - "list all branches", - "list all companies", - "list all users", - "list all roles", - "list all workflows", - "list all reports", - "list all dashboards", - "list all notifications", - "list all alerts", - "get all customers", - "get all suppliers", - "get all employees", - "get all products", - "get all orders", - "get all invoices", - "get all payments", - "get all projects", - "get all tasks", - "get all assets", - "get all contracts", - "get all shipments", - "get all warehouses", - "get all items", - "get all leads", - "get all opportunities", - "get all quotes", - "get all purchase orders", - "get all sales orders", - "get all receipts", - "get all journals", - "get all vouchers", - "get all batches", - "get all serial numbers", - "get all lots", - "get all bins", - "get all locations", - "get all accounts", - "get all departments", - "get all cost centers", - "get all profit centers", - "get all branches", - "get all companies", - "get all users", - "get all roles", - "get all workflows", - "get all reports", - "get all dashboards", - "get all notifications", - "get all alerts", - "display customers", - "display suppliers", - "display employees", - "display products", - "display orders", - "display invoices", - "display payments", - "display projects", - "display tasks", - "display assets", - "display contracts", - "display shipments", - "display warehouses", - "display items", - "display leads", - "display opportunities", - "display quotes", - "display purchase orders", - "display sales orders", - "display receipts", - "display journals", - "display vouchers", - "display batches", - "display serial numbers", - "display lots", - "display bins", - "display locations", - "display accounts", - "display departments", - "display cost centers", - "display profit centers", - "display branches", - "display companies", - "display users", - "display roles", - "display workflows", - "display reports", - "display dashboards", - "display notifications", - "display alerts", - "find all customers", - "find all suppliers", - "find all employees", - "find all products", - "find all orders", - "find all invoices", - "find all payments", - "find all projects", - "find all tasks", - "find all assets", - "find all contracts", - "find all shipments", - "find all warehouses", - "find all items", - "find all leads", - "find all opportunities", - "find all quotes", - "find all purchase orders", - "find all sales orders", - "find all receipts", - "find all journals", - "find all vouchers", - "find all batches", - "find all serial numbers", - "find all lots", - "find all bins", - "find all locations", - "find all accounts", - "find all departments", - "find all cost centers", - "find all profit centers", - "find all branches", - "find all companies", - "find all users", - "find all roles", - "find all workflows", - "find all reports", - "find all dashboards", - "find all notifications", - "find all alerts", - "retrieve customers", - "retrieve suppliers", - "retrieve employees", - "retrieve products", - "retrieve orders", - "retrieve invoices", - "retrieve payments", - "retrieve projects", - "retrieve tasks", - "retrieve assets", - "retrieve contracts", - "retrieve shipments", - "retrieve warehouses", - "retrieve items", - "retrieve leads", - "retrieve opportunities", - "retrieve quotes", - "retrieve purchase orders", - "retrieve sales orders", - "retrieve receipts", - "retrieve journals", - "retrieve vouchers", - "retrieve batches", - "retrieve serial numbers", - "retrieve lots", - "retrieve bins", - "retrieve locations", - "retrieve accounts", - "retrieve departments", - "retrieve cost centers", - "retrieve profit centers", - "retrieve branches", - "retrieve companies", - "retrieve users", - "retrieve roles", - "retrieve workflows", - "retrieve reports", - "retrieve dashboards", - "retrieve notifications", - "retrieve alerts", - "what are the customers", - "what are the suppliers", - "what are the employees", - "what are the products", - "what are the orders", - "what are the invoices", - "what are the payments", - "what are the projects", - "what are the tasks", - "what are the assets", - "what are the contracts", - "what are the shipments", - "what are the warehouses", - "what are the items", - "what are the leads", - "what are the opportunities", - "what are the quotes", - "what are the purchase orders", - "what are the sales orders", - "what are the receipts", - "what are the journals", - "what are the vouchers", - "what are the batches", - "what are the serial numbers", - "what are the lots", - "what are the bins", - "what are the locations", - "what are the accounts", - "what are the departments", - "what are the cost centers", - "what are the profit centers", - "what are the branches", - "what are the companies", - "what are the users", - "what are the roles", - "what are the workflows", - "what are the reports", - "what are the dashboards", - "what are the notifications", - "what are the alerts", - "how many customers", - "how many suppliers", - "how many employees", - "how many products", - "how many orders", - "how many invoices", - "how many payments", - "how many projects", - "how many tasks", - "how many assets", - "how many contracts", - "how many shipments", - "how many warehouses", - "how many items", - "how many leads", - "how many opportunities", - "how many quotes", - "how many purchase orders", - "how many sales orders", - "how many receipts", - "how many journals", - "how many vouchers", - "how many batches", - "how many serial numbers", - "how many lots", - "how many bins", - "how many locations", - "how many accounts", - "how many departments", - "how many cost centers", - "how many profit centers", - "how many branches", - "how many companies", - "how many users", - "how many roles", - "how many workflows", - "how many reports", - "how many dashboards", - "how many notifications", - "how many alerts", - "count of customers", - "count of suppliers", - "count of employees", - "count of products", - "count of orders", - "count of invoices", - "count of payments", - "count of projects", - "count of tasks", - "count of assets", - "count of contracts", - "count of shipments", - "count of warehouses", - "count of items", - "count of leads", - "count of opportunities", - "count of quotes", - "count of purchase orders", - "count of sales orders", - "count of receipts", - "count of journals", - "count of vouchers", - "count of batches", - "count of serial numbers", - "count of lots", - "count of bins", - "count of locations", - "count of accounts", - "count of departments", - "count of cost centers", - "count of profit centers", - "count of branches", - "count of companies", - "count of users", - "count of roles", - "count of workflows", - "count of reports", - "count of dashboards", - "count of notifications", - "count of alerts", - "total customers", - "total suppliers", - "total employees", - "total products", - "total orders", - "total invoices", - "total payments", - "total projects", - "total tasks", - "total assets", - "total contracts", - "total shipments", - "total warehouses", - "total items", - "total leads", - "total opportunities", - "total quotes", - "total purchase orders", - "total sales orders", - "total receipts", - "total journals", - "total vouchers", - "total batches", - "total serial numbers", - "total lots", - "total bins", - "total locations", - "total accounts", - "total departments", - "total cost centers", - "total profit centers", - "total branches", - "total companies", - "total users", - "total roles", - "total workflows", - "total reports", - "total dashboards", - "total notifications", - "total alerts", - "filter invoices by date", - "filter orders by date", - "filter payments by date", - "filter shipments by date", - "filter employees by date", - "filter customers by date", - "search customer", - "search supplier", - "search product", - "search employee", - "search invoice", - "search order", - "search contract", - "search asset", - "find customer by name", - "find supplier by name", - "find employee by name", - "find product by name", - "find project by name", - "find account by name", - "look up invoice number", - "look up order number", - "look up employee ID", - "look up customer ID", - "look up product code", - "look up batch number", - "look up serial number", - "create invoice", - "how to create invoice", - "create order", - "how to create order", - "create payment", - "how to create payment", - "create receipt", - "how to create receipt", - "create shipment", - "how to create shipment", - "create contract", - "how to create contract", - "create employee record", - "how to create employee record", - "create customer record", - "how to create customer record", - "create supplier record", - "how to create supplier record", - "create asset record", - "how to create asset record", - "edit invoice", - "how to edit invoice", - "edit order", - "how to edit order", - "edit payment", - "how to edit payment", - "edit receipt", - "how to edit receipt", - "edit shipment", - "how to edit shipment", - "edit contract", - "how to edit contract", - "edit employee record", - "how to edit employee record", - "edit customer record", - "how to edit customer record", - "edit supplier record", - "how to edit supplier record", - "edit asset record", - "how to edit asset record", - "update invoice", - "how to update invoice", - "update order", - "how to update order", - "update payment", - "how to update payment", - "update receipt", - "how to update receipt", - "update shipment", - "how to update shipment", - "update contract", - "how to update contract", - "update employee record", - "how to update employee record", - "update customer record", - "how to update customer record", - "update supplier record", - "how to update supplier record", - "update asset record", - "how to update asset record", - "delete invoice", - "how to delete invoice", - "delete order", - "how to delete order", - "delete payment", - "how to delete payment", - "delete receipt", - "how to delete receipt", - "delete shipment", - "how to delete shipment", - "delete contract", - "how to delete contract", - "delete employee record", - "how to delete employee record", - "delete customer record", - "how to delete customer record", - "delete supplier record", - "how to delete supplier record", - "delete asset record", - "how to delete asset record", - "cancel invoice", - "how to cancel invoice", - "cancel order", - "how to cancel order", - "cancel payment", - "how to cancel payment", - "cancel receipt", - "how to cancel receipt", - "cancel shipment", - "how to cancel shipment", - "cancel contract", - "how to cancel contract", - "cancel employee record", - "how to cancel employee record", - "cancel customer record", - "how to cancel customer record", - "cancel supplier record", - "how to cancel supplier record", - "cancel asset record", - "how to cancel asset record", - "submit invoice", - "how to submit invoice", - "submit order", - "how to submit order", - "submit payment", - "how to submit payment", - "submit receipt", - "how to submit receipt", - "submit shipment", - "how to submit shipment", - "submit contract", - "how to submit contract", - "submit employee record", - "how to submit employee record", - "submit customer record", - "how to submit customer record", - "submit supplier record", - "how to submit supplier record", - "submit asset record", - "how to submit asset record", - "approve invoice", - "how to approve invoice", - "approve order", - "how to approve order", - "approve payment", - "how to approve payment", - "approve receipt", - "how to approve receipt", - "approve shipment", - "how to approve shipment", - "approve contract", - "how to approve contract", - "approve employee record", - "how to approve employee record", - "approve customer record", - "how to approve customer record", - "approve supplier record", - "how to approve supplier record", - "approve asset record", - "how to approve asset record", - "reject invoice", - "how to reject invoice", - "reject order", - "how to reject order", - "reject payment", - "how to reject payment", - "reject receipt", - "how to reject receipt", - "reject shipment", - "how to reject shipment", - "reject contract", - "how to reject contract", - "reject employee record", - "how to reject employee record", - "reject customer record", - "how to reject customer record", - "reject supplier record", - "how to reject supplier record", - "reject asset record", - "how to reject asset record", - "print invoice", - "how to print invoice", - "print order", - "how to print order", - "print payment", - "how to print payment", - "print receipt", - "how to print receipt", - "print shipment", - "how to print shipment", - "print contract", - "how to print contract", - "print employee record", - "how to print employee record", - "print customer record", - "how to print customer record", - "print supplier record", - "how to print supplier record", - "print asset record", - "how to print asset record", - "email invoice", - "how to email invoice", - "email order", - "how to email order", - "email payment", - "how to email payment", - "email receipt", - "how to email receipt", - "email shipment", - "how to email shipment", - "email contract", - "how to email contract", - "email employee record", - "how to email employee record", - "email customer record", - "how to email customer record", - "email supplier record", - "how to email supplier record", - "email asset record", - "how to email asset record", - "export invoice", - "how to export invoice", - "export order", - "how to export order", - "export payment", - "how to export payment", - "export receipt", - "how to export receipt", - "export shipment", - "how to export shipment", - "export contract", - "how to export contract", - "export employee record", - "how to export employee record", - "export customer record", - "how to export customer record", - "export supplier record", - "how to export supplier record", - "export asset record", - "how to export asset record", - "calculate total", - "calculate average", - "calculate percentage", - "calculate growth rate", - "calculate variance", - "calculate margin", - "calculate profit", - "calculate tax", - "calculate depreciation", - "calculate amortization", - "calculate commission", - "calculate bonus", - "calculate salary", - "calculate overtime", - "calculate leave balance", - "calculate reorder point", - "calculate safety stock", - "calculate EOQ", - "calculate lead time", - "calculate cycle time", - "calculate days sales outstanding", - "calculate days payable outstanding", - "calculate inventory turnover", - "calculate asset turnover", - "calculate return on investment", - "what is EBITDA", - "what is working capital", - "what is cash flow", - "what is accounts receivable", - "what is accounts payable", - "what is inventory turnover", - "what is DSO", - "what is DPO", - "what is gross margin", - "what is net margin", - "what is ROI", - "what is ROE", - "what is ROCE", - "what is NPV", - "what is IRR", - "what is BOM", - "what is MRP", - "what is ERP", - "what is WMS", - "what is TMS", - "what is KPI", - "what is OKR", - "what is SLA", - "what is SOP", - "what is RFQ", - "what is PO", - "what is GRN", - "what is LC", - "what is BG", - "what is EMI", - "what is FIFO", - "what is LIFO", - "what is ABC analysis", - "what is XYZ analysis", - "what is EOQ", - "how to create a sales invoice", - "how to process a payment", - "how to add a new customer", - "how to generate a report", - "how to track inventory", - "how to manage employees", - "how to process payroll", - "how to create a purchase order", - "how to reconcile bank statement", - "how to close month end", - "how to create a journal entry", - "how to manage assets", - "how to set up a workflow", - "how to configure notifications", - "how to export data", - "how to import data", - "how to generate payslip", - "how to track attendance", - "how to manage leave", - "how to create a project", - "overdue invoices list", - "overdue payments list", - "outstanding receivables", - "outstanding payables", - "outstanding advances", - "overdue purchase orders", - "overdue sales orders", - "pending approvals list", - "items pending receipt", - "items pending billing", - "unreconciled transactions", - "unmatched payments", - "unclaimed credit notes", - "unapplied advances", - "uncleared cheques", - "unpaid invoices by customer", - "unpaid bills by supplier", - "outstanding salary", - "outstanding dues", - "outstanding balance", - "aging buckets", - "0-30 days", - "31-60 days", - "61-90 days", - "91-120 days", - "over 120 days", - "total invoice amount", - "average invoice value", - "maximum invoice value", - "minimum invoice value", - "sum of invoices", - "number of invoices", - "invoice this month", - "invoice this year", - "invoice this week", - "invoice today", - "invoice last month", - "invoice last year", - "recent invoices", - "latest invoice", - "total order amount", - "average order value", - "maximum order value", - "minimum order value", - "sum of orders", - "number of orders", - "order this month", - "order this year", - "order this week", - "order today", - "order last month", - "order last year", - "recent orders", - "latest order", - "total payment amount", - "average payment value", - "maximum payment value", - "minimum payment value", - "sum of payments", - "number of payments", - "payment this month", - "payment this year", - "payment this week", - "payment today", - "payment last month", - "payment last year", - "recent payments", - "latest payment", - "total shipment amount", - "average shipment value", - "maximum shipment value", - "minimum shipment value", - "sum of shipments", - "number of shipments", - "shipment this month", - "shipment this year", - "shipment this week", - "shipment today", - "shipment last month", - "shipment last year", - "recent shipments", - "latest shipment", - "total contract amount", - "average contract value", - "maximum contract value", - "minimum contract value", - "sum of contracts", - "number of contracts", - "contract this month", - "contract this year", - "contract this week", - "contract today", - "contract last month", - "contract last year", - "recent contracts", - "latest contract", - "total purchase order amount", - "average purchase order value", - "maximum purchase order value", - "minimum purchase order value", - "sum of purchase orders", - "number of purchase orders", - "purchase order this month", - "purchase order this year", - "purchase order this week", - "purchase order today", - "purchase order last month", - "purchase order last year", - "recent purchase orders", - "latest purchase order", - "total salary amount", - "average salary value", - "maximum salary value", - "minimum salary value", - "sum of salarys", - "number of salarys", - "count of salarys", - "salary this month", - "salary this year", - "salary this week", - "salary today", - "salary last month", - "salary last year", - "recent salarys", - "latest salary", - "total bonus amount", - "average bonus value", - "maximum bonus value", - "minimum bonus value", - "sum of bonuss", - "number of bonuss", - "count of bonuss", - "bonus this month", - "bonus this year", - "bonus this week", - "bonus today", - "bonus last month", - "bonus last year", - "recent bonuss", - "latest bonus", - "total expense amount", - "average expense value", - "maximum expense value", - "minimum expense value", - "sum of expenses", - "number of expenses", - "count of expenses", - "expense this month", - "expense this year", - "expense this week", - "expense today", - "expense last month", - "expense last year", - "recent expenses", - "latest expense", - "sales trend", - "sales over time", - "sales growth", - "sales decline", - "sales projection", - "sales forecast next month", - "sales vs target", - "increase in sales", - "decrease in sales", - "change in sales", - "revenue trend", - "revenue over time", - "revenue growth", - "revenue decline", - "revenue forecast next month", - "revenue vs target", - "increase in revenue", - "decrease in revenue", - "change in revenue", - "profit trend", - "profit over time", - "profit growth", - "profit decline", - "profit projection", - "profit forecast next month", - "profit vs target", - "increase in profit", - "decrease in profit", - "change in profit", - "cost trend", - "cost over time", - "cost growth", - "cost decline", - "cost projection", - "cost forecast next month", - "cost vs target", - "increase in cost", - "decrease in cost", - "change in cost", - "expense trend", - "expense over time", - "expense growth", - "expense decline", - "expense projection", - "expense forecast next month", - "expense vs target", - "increase in expense", - "decrease in expense", - "change in expense", - "employee count trend", - "employee count over time", - "employee count growth", - "employee count decline", - "employee count projection", - "employee count forecast next month", - "employee count vs target", - "increase in employee count", - "decrease in employee count", - "change in employee count", - "customer count trend", - "customer count over time", - "customer count growth", - "customer count decline", - "customer count projection", - "customer count forecast next month", - "customer count vs target", - "increase in customer count", - "decrease in customer count", - "change in customer count", - "order volume trend", - "order volume over time", - "order volume growth", - "order volume decline", - "order volume projection", - "order volume forecast next month", - "order volume vs target", - "increase in order volume", - "decrease in order volume", - "change in order volume", - "inventory level trend", - "inventory level over time", - "inventory level growth", - "inventory level decline", - "inventory level projection", - "inventory level forecast next month", - "inventory level vs target", - "increase in inventory level", - "decrease in inventory level", - "change in inventory level", - "cash balance trend", - "cash balance over time", - "cash balance growth", - "cash balance decline", - "cash balance projection", - "cash balance forecast next month", - "cash balance vs target", - "increase in cash balance", - "decrease in cash balance", - "change in cash balance", - "which customer has highest revenue", - "which customer has lowest performance", - "who is top customer", - "best performing customer", - "worst performing customer", - "customer with most orders", - "customer with outstanding dues", - "customer with overdue payment", - "which supplier has highest revenue", - "which supplier has lowest performance", - "who is top supplier", - "best performing supplier", - "worst performing supplier", - "supplier with most orders", - "supplier with outstanding dues", - "supplier with overdue payment", - "which employee has highest revenue", - "which employee has lowest performance", - "who is top employee", - "best performing employee", - "worst performing employee", - "employee with most orders", - "employee with outstanding dues", - "employee with overdue payment", - "which product has highest revenue", - "which product has lowest performance", - "who is top product", - "best performing product", - "worst performing product", - "product with most orders", - "product with outstanding dues", - "product with overdue payment", - "which region has highest revenue", - "which region has lowest performance", - "who is top region", - "best performing region", - "worst performing region", - "region with most orders", - "region with outstanding dues", - "region with overdue payment", - "which department has highest revenue", - "which department has lowest performance", - "who is top department", - "best performing department", - "worst performing department", - "department with most orders", - "department with outstanding dues", - "department with overdue payment", - "which project has highest revenue", - "which project has lowest performance", - "who is top project", - "best performing project", - "worst performing project", - "project with most orders", - "project with outstanding dues", - "project with overdue payment", - "which channel has highest revenue", - "which channel has lowest performance", - "who is top channel", - "best performing channel", - "worst performing channel", - "channel with most orders", - "channel with outstanding dues", - "channel with overdue payment", - "which salesperson has highest revenue", - "which salesperson has lowest performance", - "who is top salesperson", - "best performing salesperson", - "worst performing salesperson", - "salesperson with most orders", - "salesperson with outstanding dues", - "salesperson with overdue payment", - "when was last payment received", - "date of last payment received", - "time of last payment received", - "when was last invoice created", - "date of last invoice created", - "time of last invoice created", - "when was last order placed", - "date of last order placed", - "time of last order placed", - "when was last shipment", - "date of last shipment", - "time of last shipment", - "when was last purchase", - "date of last purchase", - "time of last purchase", - "when was last sale", - "date of last sale", - "time of last sale", - "status of invoice", - "current status of invoice", - "check invoice status", - "is invoice approved", - "is invoice pending", - "is invoice completed", - "status of order", - "current status of order", - "check order status", - "is order approved", - "is order pending", - "is order completed", - "status of shipment", - "current status of shipment", - "check shipment status", - "is shipment approved", - "is shipment pending", - "is shipment completed", - "status of payment", - "current status of payment", - "check payment status", - "is payment approved", - "is payment pending", - "is payment completed", - "status of project", - "current status of project", - "check project status", - "is project approved", - "is project pending", - "is project completed", - "status of task", - "current status of task", - "check task status", - "is task approved", - "is task pending", - "is task completed", - "status of request", - "current status of request", - "check request status", - "is request approved", - "is request pending", - "is request completed", - "status of application", - "current status of application", - "check application status", - "is application approved", - "is application pending", - "is application completed", - "status of approval", - "current status of approval", - "check approval status", - "is approval approved", - "is approval pending", - "is approval completed", - "status of claim", - "current status of claim", - "check claim status", - "is claim approved", - "is claim pending", - "is claim completed", - "trial balance as on date", - "balance sheet as on date", - "profit and loss for period", - "cash flow statement period", - "bank reconciliation statement", - "receivable aging report", - "payable aging report", - "ledger statement", - "account statement period", - "cost center report", - "profit center report", - "segment report", - "fixed asset register", - "asset disposal report", - "asset transfer report", - "stock ledger", - "stock balance report", - "stock movement report", - "stock valuation report", - "purchase register", - "sales register", - "journal register", - "payment voucher report", - "receipt voucher report", - "stock as on date", - "current stock level", - "minimum stock level", - "maximum stock level", - "reorder stock level", - "stock below reorder level", - "stock above maximum level", - "dead stock report", - "near expiry stock", - "expired stock report", - "goods in transit report", - "stock transfer report", - "inter branch transfer", - "inter warehouse transfer report", - "batch wise stock", - "serial number wise stock", - "lot wise stock", - "warehouse wise stock", - "bin wise stock", - "attendance for today", - "attendance for this month", - "who is absent today", - "who is present today", - "late comers today", - "employees on leave today", - "leave balance for employee", - "leave history of employee", - "leave application status", - "payroll for this month", - "salary slip for employee", - "payslip history", - "salary revision history", - "payroll tax report", - "employee count by department", - "employee count by location", - "employee count by grade", - "employee count by type", - "new joiners this month", - "exits this month", - "attrition this month", - "headcount change", - "workforce summary", - "sales order outstanding", - "delivery pending orders", - "billing pending orders", - "order to delivery time", - "quotation conversion rate", - "quotation to order", - "sales return report", - "credit note report", - "customer credit limit", - "customer credit balance", - "customer outstanding", - "top customers by revenue", - "customer wise sales report", - "salesperson wise performance", - "territory wise sales", - "product wise sales", - "category wise sales", - "purchase order outstanding", - "purchase order pending receipt", - "purchase order pending billing", - "supplier outstanding payment", - "supplier aging", - "purchase return report", - "debit note report", - "purchase price variance report", - "vendor comparison report", - "quotation comparison", - "project status summary", - "project budget utilization", - "project milestone report", - "overdue tasks", - "tasks due today", - "tasks due this week", - "project resource utilization", - "billable hours report", - "project profitability report", - "project cost report", - "project invoice report", - "timesheet report", - "production order status", - "work order pending", - "work order completed today", - "production vs target", - "scrap report today", - "quality rejection report", - "machine utilization today", - "raw material consumption", - "finished goods production today", - "WIP report", - "production cost report", - "open tickets today", - "tickets resolved today", - "overdue tickets", - "tickets by priority", - "tickets by category", - "customer complaints pending", - "customer feedback summary", - "lead status report", - "opportunity pipeline report", - "CRM activity report", - "call log report", - "meeting report", - "follow up due today", - "multi level approval", - "single level approval", - "auto approval rule", - "approval delegation", - "approval deadline", - "approval reminder", - "approval timeout", - "approval escalation", - "pending with approver", - "returned for correction", - "resubmission", - "final approval", - "approval history", - "approval audit trail", - "document numbering", - "document prefix", - "document suffix", - "document year", - "document sequence", - "document link", - "document reference", - "source document", - "target document", - "related document", - "document amendment", - "amended document", - "original document", - "copy document", - "document clone", - "document template", - "document default", - "document auto fill", - "document validation", - "document mandatory", - "ERP integration", - "third party integration", - "accounting integration", - "ecommerce integration", - "payment gateway integration", - "bank integration", - "logistics integration", - "API endpoint", - "REST endpoint", - "webhook endpoint", - "data sync", - "real time sync", - "batch sync", - "scheduled sync", - "manual sync", - "sync error", - "sync log", - "data mapping", - "field mapping", - "value mapping", - "transformation rule", - "integration log", - "quick filter", - "advanced filter", - "saved filter", - "list filter", - "column selection", - "column freeze", - "column sort", - "column group", - "column total", - "chart type selection", - "bar chart", - "line chart", - "pie chart", - "scatter plot", - "heat map", - "treemap", - "waterfall chart", - "funnel chart", - "gauge chart", - "drill through", - "drill down report", - "parent report", - "child report", - "linked report", - "email alert", - "SMS alert", - "push notification", - "in app notification", - "system notification", - "scheduled notification", - "event based notification", - "threshold based alert", - "anomaly alert", - "exception alert", - "due date reminder", - "overdue alert", - "expiry reminder", - "low stock alert", - "high value transaction alert", - "system settings", - "module settings", - "user settings", - "notification settings", - "print settings", - "email settings", - "integration settings", - "workflow settings", - "permission settings", - "default settings", - "global settings", - "local settings", - "override settings", - "inherited settings", - "standard report", - "saved report", - "shared report", - "private report", - "report column", - "report row", - "report group", - "report subtotal", - "report grand total", - "report header", - "report footer", - "report logo", - "report date", - "report period", - "report variable", - "report condition", - "report formula", - "report export CSV", - "report export Excel", - "report export PDF", - "report print", - "report schedule", - "report email schedule", - "report distribution list", - "report bookmark", - "report favorite", - "number of invoices created this month", - "number of orders created this month", - "number of customers created this month", - "number of employees created this month", - "number of products created this month", - "number of projects created this month", - "number of tickets created this month", - "number of leads created this month", - "number of payments created this month", - "number of shipments created this month", - "total value of sales this month", - "total value of purchases this month", - "total value of payments this month", - "total value of receipts this month", - "total value of expenses this month", - "total value of invoices this month", - "total value of orders this month", - "total value of payroll this month", - "total value of assets this month", - "total value of inventory this month", - "invoices due this week", - "payments due this week", - "orders due this week", - "deliveries due this week", - "milestones due this week", - "reviews due this week", - "renewals due this week", - "audits due this week", - "reports due this week", - "contracts expiring this month", - "warranties expiring this month", - "licenses expiring this month", - "certifications expiring this month", - "insurance policies expiring this month", - "bank guarantees expiring this month", - "letters of credit expiring this month", - "subscriptions expiring this month", - "memberships expiring this month", - "permits expiring this month", - "average invoice amount", - "average payment days", - "average lead time", - "average cycle time", - "average delivery time", - "average processing time", - "maximum invoice amount", - "maximum payment amount", - "maximum expense claim", - "maximum discount given", - "maximum credit limit", - "maximum advance amount", - "maximum salary", - "maximum bonus", - "maximum commission", - "minimum reorder level", - "minimum payment amount", - "minimum invoice amount", - "minimum salary", - "minimum selling price", - "minimum purchase price", - "minimum lead time", - "minimum delivery days", - "percentage of invoices paid on time", - "percentage of orders delivered on time", - "percentage of customers active", - "percentage of employees present today", - "percentage of tasks completed on time", - "percentage of payments overdue", - "percentage of stock below reorder", - "percentage of targets achieved", - "percentage of complaints resolved", - "percentage of audits completed", - "total revenue this financial year", - "total expense this financial year", - "net profit this financial year", - "total sales this financial year", - "total purchases this financial year", - "total payroll this financial year", - "total tax this financial year", - "total collections this financial year", - "total payments this financial year", - "total investment this financial year", - "list of customers with outstanding amount", - "list of suppliers with outstanding amount", - "list of employees with outstanding amount", - "list of projects with outstanding amount", - "list of orders with outstanding amount", - "list of invoices with outstanding amount", - "list of contracts with outstanding amount", - "list of accounts with outstanding amount", - "list of advances with outstanding amount", - "list of claims with outstanding amount", - "today's sales", - "total today's sales", - "today's sales by department", - "today's sales summary", - "today's revenue", - "total today's revenue", - "today's revenue by department", - "today's revenue summary", - "today's collections", - "total today's collections", - "today's collections by department", - "today's collections summary", - "today's payments", - "total today's payments", - "today's payments by department", - "today's payments summary", - "today's expenses", - "total today's expenses", - "today's expenses by department", - "today's expenses summary", - "today's purchases", - "total today's purchases", - "today's purchases by department", - "today's purchases summary", - "today's production output", - "total today's production output", - "today's production output by department", - "today's production output summary", - "today's inventory value", - "total today's inventory value", - "today's inventory value by department", - "today's inventory value summary", - "today's payroll cost", - "total today's payroll cost", - "today's payroll cost by department", - "today's payroll cost summary", - "today's project cost", - "total today's project cost", - "today's project cost by department", - "today's project cost summary", - "yesterday's sales", - "total yesterday's sales", - "yesterday's sales by department", - "yesterday's sales summary", - "yesterday's revenue", - "total yesterday's revenue", - "yesterday's revenue by department", - "yesterday's revenue summary", - "yesterday's collections", - "total yesterday's collections", - "yesterday's collections by department", - "yesterday's collections summary", - "yesterday's payments", - "total yesterday's payments", - "yesterday's payments by department", - "yesterday's payments summary", - "yesterday's expenses", - "total yesterday's expenses", - "yesterday's expenses by department", - "yesterday's expenses summary", - "yesterday's purchases", - "total yesterday's purchases", - "yesterday's purchases by department", - "yesterday's purchases summary", - "yesterday's production output", - "total yesterday's production output", - "yesterday's production output by department", - "yesterday's production output summary", - "yesterday's inventory value", - "total yesterday's inventory value", - "yesterday's inventory value by department", - "yesterday's inventory value summary", - "yesterday's payroll cost", - "total yesterday's payroll cost", - "yesterday's payroll cost by department", - "yesterday's payroll cost summary", - "yesterday's project cost", - "total yesterday's project cost", - "yesterday's project cost by department", - "yesterday's project cost summary", - "this week's sales", - "total this week's sales", - "this week's sales by department", - "this week's sales summary", - "this week's revenue", - "total this week's revenue", - "this week's revenue by department", - "this week's revenue summary", - "this week's collections", - "total this week's collections", - "this week's collections by department", - "this week's collections summary", - "this week's payments", - "total this week's payments", - "this week's payments by department", - "this week's payments summary", - "this week's expenses", - "total this week's expenses", - "this week's expenses by department", - "this week's expenses summary", - "this week's purchases", - "total this week's purchases", - "this week's purchases by department", - "this week's purchases summary", - "this week's production output", - "total this week's production output", - "this week's production output by department", - "this week's production output summary", - "this week's inventory value", - "total this week's inventory value", - "this week's inventory value by department", - "this week's inventory value summary", - "this week's payroll cost", - "total this week's payroll cost", - "this week's payroll cost by department", - "this week's payroll cost summary", - "this week's project cost", - "total this week's project cost", - "this week's project cost by department", - "this week's project cost summary", - "last week's sales", - "total last week's sales", - "last week's sales by department", - "last week's sales summary", - "last week's revenue", - "total last week's revenue", - "last week's revenue by department", - "last week's revenue summary", - "last week's collections", - "total last week's collections", - "last week's collections by department", - "last week's collections summary", - "last week's payments", - "total last week's payments", - "last week's payments by department", - "last week's payments summary", - "last week's expenses", - "total last week's expenses", - "last week's expenses by department", - "last week's expenses summary", - "last week's purchases", - "total last week's purchases", - "last week's purchases by department", - "last week's purchases summary", - "last week's production output", - "total last week's production output", - "last week's production output by department", - "last week's production output summary", - "last week's inventory value", - "total last week's inventory value", - "last week's inventory value by department", - "last week's inventory value summary", - "last week's payroll cost", - "total last week's payroll cost", - "last week's payroll cost by department", - "last week's payroll cost summary", - "last week's project cost", - "total last week's project cost", - "last week's project cost by department", - "last week's project cost summary", - "this month's sales", - "total this month's sales", - "this month's sales by department", - "this month's sales summary", - "this month's revenue", - "total this month's revenue", - "this month's revenue by department", - "this month's revenue summary", - "this month's collections", - "total this month's collections", - "this month's collections by department", - "this month's collections summary", - "this month's payments", - "total this month's payments", - "this month's payments by department", - "this month's payments summary", - "this month's expenses", - "total this month's expenses", - "this month's expenses by department", - "this month's expenses summary", - "this month's purchases", - "total this month's purchases", - "this month's purchases by department", - "this month's purchases summary", - "this month's production output", - "total this month's production output", - "this month's production output by department", - "this month's production output summary", - "this month's inventory value", - "total this month's inventory value", - "this month's inventory value by department", - "this month's inventory value summary", - "this month's payroll cost", - "total this month's payroll cost", - "this month's payroll cost by department", - "this month's payroll cost summary", - "this month's project cost", - "total this month's project cost", - "this month's project cost by department", - "this month's project cost summary", - "last month's sales", - "total last month's sales", - "last month's sales by department", - "last month's sales summary", - "last month's revenue", - "total last month's revenue", - "last month's revenue by department", - "last month's revenue summary", - "last month's collections", - "total last month's collections", - "last month's collections by department", - "last month's collections summary", - "last month's payments", - "total last month's payments", - "last month's payments by department", - "last month's payments summary", - "last month's expenses", - "total last month's expenses", - "last month's expenses by department", - "last month's expenses summary", - "last month's purchases", - "total last month's purchases", - "last month's purchases by department", - "last month's purchases summary", - "last month's production output", - "total last month's production output", - "last month's production output by department", - "last month's production output summary", - "last month's inventory value", - "total last month's inventory value", - "last month's inventory value by department", - "last month's inventory value summary", - "last month's payroll cost", - "total last month's payroll cost", - "last month's payroll cost by department", - "last month's payroll cost summary", - "last month's project cost", - "total last month's project cost", - "last month's project cost by department", - "last month's project cost summary", - "this quarter's sales", - "total this quarter's sales", - "this quarter's sales by department", - "this quarter's sales summary", - "this quarter's revenue", - "total this quarter's revenue", - "this quarter's revenue by department", - "this quarter's revenue summary", - "this quarter's collections", - "total this quarter's collections", - "this quarter's collections by department", - "this quarter's collections summary", - "this quarter's payments", - "total this quarter's payments", - "this quarter's payments by department", - "this quarter's payments summary", - "this quarter's expenses", - "total this quarter's expenses", - "this quarter's expenses by department", - "this quarter's expenses summary", - "this quarter's purchases", - "total this quarter's purchases", - "this quarter's purchases by department", - "this quarter's purchases summary", - "this quarter's production output", - "total this quarter's production output", - "this quarter's production output by department", - "this quarter's production output summary", - "this quarter's inventory value", - "total this quarter's inventory value", - "this quarter's inventory value by department", - "this quarter's inventory value summary", - "this quarter's payroll cost", - "total this quarter's payroll cost", - "this quarter's payroll cost by department", - "this quarter's payroll cost summary", - "this quarter's project cost", - "total this quarter's project cost", - "this quarter's project cost by department", - "this quarter's project cost summary", - "last quarter's sales", - "total last quarter's sales", - "last quarter's sales by department", - "last quarter's sales summary", - "last quarter's revenue", - "total last quarter's revenue", - "last quarter's revenue by department", - "last quarter's revenue summary", - "last quarter's collections", - "total last quarter's collections", - "last quarter's collections by department", - "last quarter's collections summary", - "last quarter's payments", - "total last quarter's payments", - "last quarter's payments by department", - "last quarter's payments summary", - "last quarter's expenses", - "total last quarter's expenses", - "last quarter's expenses by department", - "last quarter's expenses summary", - "last quarter's purchases", - "total last quarter's purchases", - "last quarter's purchases by department", - "last quarter's purchases summary", - "last quarter's production output", - "total last quarter's production output", - "last quarter's production output by department", - "last quarter's production output summary", - "last quarter's inventory value", - "total last quarter's inventory value", - "last quarter's inventory value by department", - "last quarter's inventory value summary", - "last quarter's payroll cost", - "total last quarter's payroll cost", - "last quarter's payroll cost by department", - "last quarter's payroll cost summary", - "last quarter's project cost", - "total last quarter's project cost", - "last quarter's project cost by department", - "last quarter's project cost summary", - "this year's sales", - "total this year's sales", - "this year's sales by department", - "this year's sales summary", - "this year's revenue", - "total this year's revenue", - "this year's revenue by department", - "this year's revenue summary", - "this year's collections", - "total this year's collections", - "this year's collections by department", - "this year's collections summary", - "this year's payments", - "total this year's payments", - "this year's payments by department", - "this year's payments summary", - "this year's expenses", - "total this year's expenses", - "this year's expenses by department", - "this year's expenses summary", - "this year's purchases", - "total this year's purchases", - "this year's purchases by department", - "this year's purchases summary", - "this year's production output", - "total this year's production output", - "this year's production output by department", - "this year's production output summary", - "this year's inventory value", - "total this year's inventory value", - "this year's inventory value by department", - "this year's inventory value summary", - "this year's payroll cost", - "total this year's payroll cost", - "this year's payroll cost by department", - "this year's payroll cost summary", - "this year's project cost", - "total this year's project cost", - "this year's project cost by department", - "this year's project cost summary", - "last year's sales", - "total last year's sales", - "last year's sales by department", - "last year's sales summary", - "last year's revenue", - "total last year's revenue", - "last year's revenue by department", - "last year's revenue summary", - "last year's collections", - "total last year's collections", - "last year's collections by department", - "last year's collections summary", - "last year's payments", - "total last year's payments", - "last year's payments by department", - "last year's payments summary", - "last year's expenses", - "total last year's expenses", - "last year's expenses by department", - "last year's expenses summary", - "last year's purchases", - "total last year's purchases", - "last year's purchases by department", - "last year's purchases summary", - "last year's production output", - "total last year's production output", - "last year's production output by department", - "last year's production output summary", - "last year's inventory value", - "total last year's inventory value", - "last year's inventory value by department", - "last year's inventory value summary", - "last year's payroll cost", - "total last year's payroll cost", - "last year's payroll cost by department", - "last year's payroll cost summary", - "last year's project cost", - "total last year's project cost", - "last year's project cost by department", - "last year's project cost summary", - "draft sales invoice", - "all draft sales invoices", - "count of draft sales invoices", - "draft purchase invoice", - "all draft purchase invoices", - "count of draft purchase invoices", - "draft sales order", - "all draft sales orders", - "count of draft sales orders", - "draft purchase order", - "all draft purchase orders", - "count of draft purchase orders", - "draft payment entry", - "all draft payment entrys", - "count of draft payment entrys", - "draft journal entry", - "all draft journal entrys", - "count of draft journal entrys", - "draft stock entry", - "all draft stock entrys", - "count of draft stock entrys", - "draft expense claim", - "all draft expense claims", - "count of draft expense claims", - "draft leave application", - "all draft leave applications", - "count of draft leave applications", - "draft salary slip", - "all draft salary slips", - "count of draft salary slips", - "submitted sales invoice", - "all submitted sales invoices", - "count of submitted sales invoices", - "submitted purchase invoice", - "all submitted purchase invoices", - "count of submitted purchase invoices", - "submitted sales order", - "all submitted sales orders", - "count of submitted sales orders", - "submitted purchase order", - "all submitted purchase orders", - "count of submitted purchase orders", - "submitted payment entry", - "all submitted payment entrys", - "count of submitted payment entrys", - "submitted journal entry", - "all submitted journal entrys", - "count of submitted journal entrys", - "submitted stock entry", - "all submitted stock entrys", - "count of submitted stock entrys", - "submitted expense claim", - "all submitted expense claims", - "count of submitted expense claims", - "submitted leave application", - "all submitted leave applications", - "count of submitted leave applications", - "submitted salary slip", - "all submitted salary slips", - "count of submitted salary slips", - "approved sales invoice", - "all approved sales invoices", - "count of approved sales invoices", - "approved purchase invoice", - "all approved purchase invoices", - "count of approved purchase invoices", - "approved sales order", - "all approved sales orders", - "count of approved sales orders", - "approved purchase order", - "all approved purchase orders", - "count of approved purchase orders", - "approved payment entry", - "all approved payment entrys", - "count of approved payment entrys", - "approved journal entry", - "all approved journal entrys", - "count of approved journal entrys", - "approved stock entry", - "all approved stock entrys", - "count of approved stock entrys", - "approved expense claim", - "all approved expense claims", - "count of approved expense claims", - "approved leave application", - "all approved leave applications", - "count of approved leave applications", - "approved salary slip", - "all approved salary slips", - "count of approved salary slips", - "rejected sales invoice", - "all rejected sales invoices", - "count of rejected sales invoices", - "rejected purchase invoice", - "all rejected purchase invoices", - "count of rejected purchase invoices", - "rejected sales order", - "all rejected sales orders", - "count of rejected sales orders", - "rejected purchase order", - "all rejected purchase orders", - "count of rejected purchase orders", - "rejected payment entry", - "all rejected payment entrys", - "count of rejected payment entrys", - "rejected journal entry", - "all rejected journal entrys", - "count of rejected journal entrys", - "rejected stock entry", - "all rejected stock entrys", - "count of rejected stock entrys", - "rejected expense claim", - "all rejected expense claims", - "count of rejected expense claims", - "rejected leave application", - "all rejected leave applications", - "count of rejected leave applications", - "rejected salary slip", - "all rejected salary slips", - "count of rejected salary slips", - "cancelled sales invoice", - "all cancelled sales invoices", - "count of cancelled sales invoices", - "cancelled purchase invoice", - "all cancelled purchase invoices", - "count of cancelled purchase invoices", - "cancelled sales order", - "all cancelled sales orders", - "count of cancelled sales orders", - "cancelled purchase order", - "all cancelled purchase orders", - "count of cancelled purchase orders", - "cancelled payment entry", - "all cancelled payment entrys", - "count of cancelled payment entrys", - "cancelled journal entry", - "all cancelled journal entrys", - "count of cancelled journal entrys", - "cancelled stock entry", - "all cancelled stock entrys", - "count of cancelled stock entrys", - "cancelled expense claim", - "all cancelled expense claims", - "count of cancelled expense claims", - "cancelled leave application", - "all cancelled leave applications", - "count of cancelled leave applications", - "cancelled salary slip", - "all cancelled salary slips", - "count of cancelled salary slips", - "on hold sales invoice", - "all on hold sales invoices", - "count of on hold sales invoices", - "on hold purchase invoice", - "all on hold purchase invoices", - "count of on hold purchase invoices", - "on hold sales order", - "all on hold sales orders", - "count of on hold sales orders", - "on hold purchase order", - "all on hold purchase orders", - "count of on hold purchase orders", - "on hold payment entry", - "all on hold payment entrys", - "count of on hold payment entrys", - "on hold journal entry", - "all on hold journal entrys", - "count of on hold journal entrys", - "on hold stock entry", - "all on hold stock entrys", - "count of on hold stock entrys", - "on hold expense claim", - "all on hold expense claims", - "count of on hold expense claims", - "on hold leave application", - "all on hold leave applications", - "count of on hold leave applications", - "on hold salary slip", - "all on hold salary slips", - "count of on hold salary slips", - "completed sales invoice", - "all completed sales invoices", - "count of completed sales invoices", - "completed purchase invoice", - "all completed purchase invoices", - "count of completed purchase invoices", - "completed sales order", - "all completed sales orders", - "count of completed sales orders", - "completed purchase order", - "all completed purchase orders", - "count of completed purchase orders", - "completed payment entry", - "all completed payment entrys", - "count of completed payment entrys", - "completed journal entry", - "all completed journal entrys", - "count of completed journal entrys", - "completed stock entry", - "all completed stock entrys", - "count of completed stock entrys", - "completed expense claim", - "all completed expense claims", - "count of completed expense claims", - "completed leave application", - "all completed leave applications", - "count of completed leave applications", - "completed salary slip", - "all completed salary slips", - "count of completed salary slips", - "overdue sales invoice", - "all overdue sales invoices", - "count of overdue sales invoices", - "overdue purchase invoice", - "all overdue purchase invoices", - "count of overdue purchase invoices", - "overdue sales order", - "all overdue sales orders", - "count of overdue sales orders", - "overdue purchase order", - "all overdue purchase orders", - "count of overdue purchase orders", - "overdue payment entry", - "all overdue payment entrys", - "count of overdue payment entrys", - "overdue journal entry", - "all overdue journal entrys", - "count of overdue journal entrys", - "overdue stock entry", - "all overdue stock entrys", - "count of overdue stock entrys", - "overdue expense claim", - "all overdue expense claims", - "count of overdue expense claims", - "overdue leave application", - "all overdue leave applications", - "count of overdue leave applications", - "overdue salary slip", - "all overdue salary slips", - "count of overdue salary slips", - "pending sales invoice", - "all pending sales invoices", - "count of pending sales invoices", - "pending purchase invoice", - "all pending purchase invoices", - "count of pending purchase invoices", - "pending sales order", - "all pending sales orders", - "count of pending sales orders", - "pending purchase order", - "all pending purchase orders", - "count of pending purchase orders", - "pending payment entry", - "all pending payment entrys", - "count of pending payment entrys", - "pending journal entry", - "all pending journal entrys", - "count of pending journal entrys", - "pending stock entry", - "all pending stock entrys", - "count of pending stock entrys", - "pending expense claim", - "all pending expense claims", - "count of pending expense claims", - "pending leave application", - "all pending leave applications", - "count of pending leave applications", - "pending salary slip", - "all pending salary slips", - "count of pending salary slips", - "in review sales invoice", - "all in review sales invoices", - "count of in review sales invoices", - "in review purchase invoice", - "all in review purchase invoices", - "count of in review purchase invoices", - "in review sales order", - "all in review sales orders", - "count of in review sales orders", - "in review purchase order", - "all in review purchase orders", - "count of in review purchase orders", - "in review payment entry", - "all in review payment entrys", - "count of in review payment entrys", - "in review journal entry", - "all in review journal entrys", - "count of in review journal entrys", - "in review stock entry", - "all in review stock entrys", - "count of in review stock entrys", - "in review expense claim", - "all in review expense claims", - "count of in review expense claims", - "in review leave application", - "all in review leave applications", - "count of in review leave applications", - "in review salary slip", - "all in review salary slips", - "count of in review salary slips", - "which customer has highest outstanding", - "which supplier has highest payable", - "which product has lowest stock", - "which employee has most leaves", - "which project has highest cost overrun", - "which region has lowest sales", - "which department has highest expense", - "which warehouse has most stock", - "which item has most movement", - "which account has highest balance", - "who approved this invoice", - "who created this order", - "who modified this record", - "who submitted this payment", - "who rejected this request", - "who is the account manager", - "who is the reporting manager", - "who is assigned to this task", - "who is the project owner", - "who is responsible", - "which invoices are pending approval", - "which orders need to be shipped", - "which payments are due today", - "which tasks are overdue", - "which contracts are expiring", - "which items need reordering", - "which employees are on leave", - "which customers are inactive", - "which suppliers are blacklisted", - "which assets need maintenance", - "sales growth this month vs last month", - "revenue growth this year vs last year", - "expense increase vs budget", - "profit improvement quarter over quarter", - "cost reduction year over year", - "inventory change month over month", - "headcount change quarter over quarter", - "customer growth year over year", - "order volume change week over week", - "collection improvement vs target", - "payment delay trend", - "invoice aging trend", - "stock aging trend", - "sales performance by salesperson this month", - "purchase performance by buyer this month", - "project delivery performance this quarter", - "top 5 selling products this month", - "top 5 customers this quarter", - "top 5 suppliers by spend this year", - "bottom 5 performing products", - "least active customers last 6 months", - "highest overdue customers", - "highest pending payables", - "longest outstanding invoice", - "oldest unreconciled transaction", - "show invoices created between two dates", - "filter orders by customer name", - "search employees by department", - "list products with stock below safety level", - "find all unpaid invoices", - "show all pending approvals", - "get payment history for customer", - "show purchase history from supplier", - "list all active projects", - "show employees who joined this year", - "find invoices above certain amount", - "list customers with credit limit exceeded", - "show items not ordered in last 90 days", - "find suppliers with no PO in last 6 months", - "list employees with pending leaves", - "show transactions without matching", - "find duplicate invoices", - "list items without a price", - "show accounts with no activity", - "find employees without attendance today", - "list projects without a project manager", - "show orders without delivery date", - "find customers without a contact person", - "list suppliers without bank details", - "show assets without a custodian", - "frappe get list", - "frappe get doc", - "frappe new doc", - "frappe save doc", - "frappe submit", - "frappe cancel", - "frappe delete", - "frappe call", - "frappe db query", - "frappe session", - "erpnext accounts module", - "erpnext buying module", - "erpnext selling module", - "erpnext stock module", - "erpnext manufacturing module", - "erpnext HR module", - "erpnext payroll module", - "erpnext projects module", - "erpnext CRM module", - "erpnext support module", - "erpnext assets module", - "erpnext quality module", - "erpnext education module", - "erpnext healthcare module", - "erpnext non profit module", - "doctype Sales Invoice", - "doctype Purchase Invoice", - "doctype Sales Order", - "doctype Purchase Order", - "doctype Payment Entry", - "doctype Journal Entry", - "doctype Stock Entry", - "doctype Employee", - "doctype Salary Slip", - "doctype Leave Application", - "doctype Customer", - "doctype Supplier", - "doctype Item", - "doctype Warehouse", - "doctype Project", - "doctype Task", - "doctype Lead", - "doctype Opportunity", - "doctype Quotation", - "doctype Delivery Note", - "doctype Purchase Receipt", - "doctype Asset", - "doctype Attendance", - "doctype Expense Claim", - "doctype Issue", - "executive summary report", - "CEO dashboard", - "CFO dashboard", - "COO dashboard", - "sales director dashboard", - "board report", - "shareholder summary", - "management pack", - "operations review pack", - "financial highlights", - "operational highlights", - "key metrics summary", - "performance scorecard", - "business health check", - "company performance overview", - "divisional performance", - "product line performance", - "geographic performance", - "channel performance", - "forward looking indicators", - "leading indicators", - "lagging indicators", - "coincident indicators", - "predictive indicators", - "green flag indicator", - "red flag indicator", - "warning indicator", - "alert indicator", - "monitor indicator", - "strategic alignment", - "goal alignment", - "initiative progress", - "objective status", - "milestone completion rate", - "business rhythm", - "weekly rhythm", - "monthly rhythm", - "quarterly rhythm", - "annual planning", - "business review agenda", - "operational review agenda", - "financial review agenda", - "project review agenda", - "risk review agenda", - "action item tracker", - "decision tracker", - "commitment tracker", - "issue tracker", - "risk tracker", - "can you show me invoices", - "can you show me orders", - "can you show me payments", - "can you show me customers", - "can you show me suppliers", - "I want to see invoices", - "I want to see orders", - "I want to see payments", - "I want to see customers", - "I want to see suppliers", - "I need to find invoices", - "I need to find orders", - "I need to find payments", - "I need to find customers", - "I need to find suppliers", - "please give me invoices", - "please give me orders", - "please give me payments", - "please give me customers", - "please give me suppliers", - "could you list invoices", - "could you list orders", - "could you list payments", - "could you list customers", - "could you list suppliers", - "what is the total invoices", - "what is the total orders", - "what is the total payments", - "what is the total customers", - "what is the total suppliers", - "how much is the invoices", - "how much is the orders", - "how much is the payments", - "how much is the customers", - "how much is the suppliers", - "how many are there invoices", - "how many are there orders", - "how many are there payments", - "how many are there customers", - "how many are there suppliers", - "when was the last invoices", - "when was the last orders", - "when was the last payments", - "when was the last customers", - "when was the last suppliers", - "who has the most invoices", - "who has the most orders", - "who has the most payments", - "who has the most customers", - "who has the most suppliers", - "what happened to invoices", - "what happened to orders", - "what happened to payments", - "what happened to customers", - "what happened to suppliers", - "where is the invoices", - "where is the orders", - "where is the payments", - "where is the customers", - "where is the suppliers", - "why is the invoices", - "why is the orders", - "why is the payments", - "why is the customers", - "why is the suppliers", - "which one has invoices", - "which one has orders", - "which one has payments", - "which one has customers", - "which one has suppliers", - "how does the invoices", - "how does the orders", - "how does the payments", - "how does the customers", - "how does the suppliers", - "tell me about invoices", - "tell me about orders", - "tell me about payments", - "tell me about customers", - "tell me about suppliers", - "give me details on invoices", - "give me details on orders", - "give me details on payments", - "give me details on customers", - "give me details on suppliers", - "show me details of invoices", - "show me details of orders", - "show me details of payments", - "show me details of customers", - "show me details of suppliers", - "I am looking for invoices", - "I am looking for orders", - "I am looking for payments", - "I am looking for customers", - "I am looking for suppliers", - "I need to know invoices", - "I need to know orders", - "I need to know payments", - "I need to know customers", - "I need to know suppliers", - "can you calculate invoices", - "can you calculate orders", - "can you calculate payments", - "can you calculate customers", - "can you calculate suppliers", - "what is the average invoices", - "what is the average orders", - "what is the average payments", - "what is the average customers", - "what is the average suppliers", - "what is the maximum invoices", - "what is the maximum orders", - "what is the maximum payments", - "what is the maximum customers", - "what is the maximum suppliers", - "what is the minimum invoices", - "what is the minimum orders", - "what is the minimum payments", - "what is the minimum customers", - "what is the minimum suppliers", - "what is the sum invoices", - "what is the sum orders", - "what is the sum payments", - "what is the sum customers", - "what is the sum suppliers", - "is there any invoices", - "is there any orders", - "is there any payments", - "is there any customers", - "is there any suppliers", - "are there any invoices", - "are there any orders", - "are there any payments", - "are there any customers", - "are there any suppliers", - "do we have invoices", - "do we have orders", - "do we have payments", - "do we have customers", - "do we have suppliers", - "have we received invoices", - "have we received orders", - "have we received payments", - "have we received customers", - "have we received suppliers", - "have we paid invoices", - "have we paid orders", - "have we paid payments", - "have we paid customers", - "have we paid suppliers", - "check the status of invoices", - "check the status of orders", - "check the status of payments", - "check the status of customers", - "check the status of suppliers", - "track the invoices", - "track the orders", - "track the payments", - "track the customers", - "track the suppliers", - "monitor the invoices", - "monitor the orders", - "monitor the payments", - "monitor the customers", - "monitor the suppliers", - "review the invoices", - "review the orders", - "review the payments", - "review the customers", - "review the suppliers", - "analyze the invoices", - "analyze the orders", - "analyze the payments", - "analyze the customers", - "analyze the suppliers", - "compare the invoices", - "compare the orders", - "compare the payments", - "compare the customers", - "compare the suppliers", - "breakdown of invoices", - "breakdown of orders", - "breakdown of payments", - "breakdown of customers", - "breakdown of suppliers", - "split by invoices", - "split by orders", - "split by payments", - "split by customers", - "split by suppliers", - "grouped by invoices", - "grouped by orders", - "grouped by payments", - "grouped by customers", - "grouped by suppliers", - "categorized by invoices", - "categorized by orders", - "categorized by payments", - "categorized by customers", - "categorized by suppliers", - "accounts payable summary", - "accounts receivable summary", - "cash and bank balance", - "fund position today", - "net working capital", - "current assets total", - "current liabilities total", + "details", + "invoice", + "invoices", + "order", + "orders", + "payment", + "payments", + "customer", + "customers", + "supplier", + "suppliers", + "employee", + "employees", + "product", + "products", + "item", + "items", + "warehouse", + "warehouses", + "shipment", + "shipments", + "contract", + "contracts", + "receipt", + "receipts", + "journal", + "voucher", + "vouchers", + "batch", + "batches", + "asset", + "assets", + "lead", + "leads", + "opportunity", + "opportunities", + "quotation", + "quotations", + "project", + "projects", + "task", + "tasks", + "ticket", + "tickets", + "department", + "departments", + "branch", + "branches", + "company", + "companies", + "account", + "accounts", + "ledger", + "ledgers", + "budget", + "budgets", + "salary", + "payroll", + "payslip", + "attendance", + "leave", + "expense", + "expenses", + "claim", + "claims", + "bonus", + "commission", + "overtime", + "revenue", + "sales", + "purchase", + "profit", + "loss", + "cost", + "margin", + "tax", + "gst", + "vat", + "tds", + "receivable", + "payable", + "outstanding", + "overdue", + "unpaid", + "pending", + "balance", + "credit", + "debit", + "reconcile", + "reconciliation", + "depreciation", + "amortization", + "ebitda", + "cashflow", + "working capital", + "roi", + "roe", + "roce", + "npv", + "irr", + "gross", + "net", + "total", + "sum", + "average", + "maximum", + "minimum", + "count", + "percentage", + "variance", + "growth", + "decline", + "draft", + "submitted", + "approved", + "rejected", + "cancelled", + "completed", + "on hold", + "in review", + "in progress", + "open", + "closed", + "active", + "inactive", + "expired", + "blacklisted", + "today", + "yesterday", + "tomorrow", + "weekly", + "monthly", + "quarterly", + "yearly", + "annual", + "this week", + "last week", + "this month", + "last month", + "this quarter", + "last quarter", + "this year", + "last year", + "financial year", + "fiscal year", + "period", + "date", + "due date", + "show", + "list", + "get", + "find", + "search", + "display", + "retrieve", + "filter", + "sort", + "count", + "calculate", + "compare", + "generate", + "export", + "print", + "email", + "create", + "edit", + "update", + "delete", + "submit", + "approve", + "reject", + "cancel", + "post", + "reconcile", + "report", + "reports", + "dashboard", + "summary", + "statement", + "register", + "aging", + "analysis", + "forecast", + "projection", + "trend", + "performance", + "scorecard", + "kpi", + "okr", + "sla", + "benchmark", + "comparison", + "stock", + "inventory", + "reorder", + "safety stock", + "bin", + "lot", + "serial", + "transfer", + "movement", + "valuation", + "consumption", + "production", + "wip", + "bom", + "mrp", + "eoq", + "headcount", + "attrition", + "joiner", + "exit", + "recruitment", + "appraisal", + "grade", + "designation", + "reporting manager", + "pipeline", + "crm", + "prospect", + "conversion", + "followup", + "activity", + "call", + "meeting", + "api", + "webhook", + "sync", + "integration", + "endpoint", + "mapping", + "frappe", + "erpnext", + "doctype", + "module", + "vs", + "versus", + "against", + "difference", + "change", + "increase", + "decrease", + "improvement", + "who", + "which", + "when", + "where", + "how many", + "how much", + "top", + "bottom", + "highest", + "lowest", + "best", + "worst", + "most", + "least", + "first", + "last", + "recent", + "latest", + "oldest", + "track", + "monitor", + "review", + "analyze", + "breakdown", + "split", + "grouped", + "categorized", + "check", + "status", + "received", + "paid", + "accounts payable", + "accounts receivable", + "cash", + "bank", + "fund", + "working capital", + "current assets", + "current liabilities", "quick assets", - "stock in hand value", - "debtors balance", - "creditors balance", - "loan outstanding balance", - "bank balance today", - "petty cash balance", - "advance to employees outstanding", - "advance from customers outstanding", - "pending salary payments", - "tax payable balance", - "GST payable", - "VAT payable balance", - "unearned revenue balance", - "deferred tax balance", - "provision balance", - "reserve balance", - "capital employed", - "net assets", - "shareholder equity total", - "retained earnings balance", - "revenue recognized this period", - "expense incurred this period", + "debtors", + "creditors", + "loan", + "petty cash", + "advance", + "provision", + "reserve", + "capital", + "equity", + "retained earnings", + "dividend", + "earnings", + "book value", + "market", + "enterprise", + "debt", + "interest", + "operating", + "free cash flow", + "capex", + "fixed assets", + "intangible", + "goodwill", + "investment", + "treasury", + "minority", + "gst payable", + "vat payable", + "tax payable", + "deferred tax", + "unearned revenue", + "shareholder", "profit before tax", "profit after tax", - "effective tax rate this year", - "dividend declared", + "effective tax", "earnings per share", - "book value per share", - "market capitalization today", - "enterprise value estimate", - "EV EBITDA multiple", - "PE multiple", - "debt to equity today", - "interest coverage ratio", - "current ratio today", - "quick ratio today", - "cash ratio today", - "working capital ratio today", + "debt to equity", + "interest coverage", + "current ratio", + "quick ratio", + "cash ratio", "operating cash flow", - "free cash flow this year", - "capex this year", - "depreciation this year", - "amortization this year", - "total assets value", - "total liabilities value", - "fixed assets net book value", - "intangible assets value", - "goodwill balance", - "investment balance", - "treasury stock", - "minority interest balance", + "free cash flow", + "net assets", + "net working capital", + "stock in hand", + "bank balance", + "fund position", + "capital employed", + "revenue recognized", + "expense incurred", + "total assets", + "total liabilities", "الاستحقاق", "الاستهلاك", "الإطفاء", - "حساب الأستاذ العام", - "الأستاذ المساعد", + "حساب", + "الأستاذ", "دليل الحسابات", "مركز التكلفة", "مركز الربح", "النفقات الرأسمالية", "المصروفات التشغيلية", - "تقادم الحسابات المدينة", - "تقادم الحسابات الدائنة", + "تقادم", + "الحسابات المدينة", + "الحسابات الدائنة", + "الأستاذ العام", + "الأستاذ المساعد", "شطب", "قيد تسوية", "الرصيد الافتتاحي", diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index 69a8a0c..6020b9f 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -40,6 +40,7 @@ save_turn_2, inject_prompt, ) +from changai.changai.api.v2.non_erp_handler import IntelligentStaticResponder from huggingface_hub import snapshot_download from frappe.desk.reportview import build_match_conditions import shutil @@ -56,6 +57,7 @@ _TABLE_TO_IDX_CACHE = None _KEYWORDS_SET=None _KEYWORDS_LIST=None +ERPGULF_LINK = "https://app.erpgulf.com/en/products/chang-ai-an-ai-agent" _ASSETS_DIR = Path(frappe.get_app_path("changai", "changai", "api", "v2", "assets")).resolve() _PROMPTS_DIR = Path(frappe.get_app_path("changai", "changai", "prompts")).resolve() CHANGAI_SETTINGS = "ChangAI Settings" @@ -1718,14 +1720,17 @@ def get_master_vs(): frappe.throw(_( "FAISS MASTER store not found at {0}.

" "Please open " - "ChangAI Settings " + "ChangAI Settings" "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇
" - "Click here" + "Click here


" + "ERPGulf.com" + ).format( master_vs_path, settingsUrl, - CHANGAI_GUIDE_LINK + CHANGAI_GUIDE_LINK, + ERPGULF_LINK )) _VS_MASTER = FAISS.load_local( @@ -1830,8 +1835,10 @@ def detect_specific_entities(state: SQLState) -> SQLState: "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" - "Click here" - ).format(settingsUrl, CHANGAI_GUIDE_LINK)) + "Click here

" + "ERPGulf.com" + + ).format(settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) if not res.get("update_status") and res.get("days", 0) > 0: frappe.throw(_( @@ -1841,8 +1848,10 @@ def detect_specific_entities(state: SQLState) -> SQLState: "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" - "Click here" - ).format(res.get("days"), settingsUrl, CHANGAI_GUIDE_LINK)) + "Click here

" + "ERPGulf.com" + + ).format(res.get("days"), settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) out = call_entity_retriever(q) return { @@ -2761,22 +2770,36 @@ def get_last_thread_message(chat_id: str): THREAD_WORDS = [ - "yes", "yep", "yeah", "yup", "yes please", - "of course", "sure", "surely", "absolutely", - "definitely", "certainly", "indeed", "correct","ofcourse", - "right", "exactly", "precisely", - "ok", "okay", "fine", "alright", "go ahead", - "do it", "show me", "please", "go on", - "continue", "proceed", "why not", - "aye", "affirmative", "true", "agreed", - "hmm", "hm", "umm", "uh", "ah", - "interesting", "i see", "got it", "ok got it", - "and", "so", "then", "also", "but", - "what", "how", "when", "who", "where", "why", - "more", "less", "again", "another", "other", - "next", "previous", "back", "forward", - "noted", "understood", "makes sense", - "okay okay", "fine fine", "sure sure" + # English confirmation + "yes", "yep", "yeah", "yup", "yes please", + "of course", "sure", "surely", "absolutely", + "definitely", "certainly", "indeed", "correct", "ofcourse", + "right", "exactly", "precisely", + "ok", "okay", "fine", "alright", "go ahead", + "do it", "show me", "please", "go on", + "continue", "proceed", "why not", + "aye", "affirmative", "true", "agreed", + "hmm", "hm", "umm", "uh", "ah", + "interesting", "i see", "got it", "ok got it", + "and", "so", "then", "also", "but", + "what", "how", "when", "who", "where", "why", + "more", "less", "again", "another", "other", + "next", "previous", "back", "forward", + "noted", "understood", "makes sense", + "okay okay", "fine fine", "sure sure", + # Arabic confirmation + "نعم", "أجل", "بالتأكيد", "طبعاً", "حسناً", + "موافق", "صحيح", "بالضبط", "تماماً", "إي", + "ماشي", "تمام", "أوكي", "يلا", "استمر", + "كمّل", "واضح", "فاهم", "مفهوم", "اوك", + # Arabic neutral / continuation + "و", "ثم", "لكن", "أيضاً", "كذلك", + "ماذا", "كيف", "متى", "من", "أين", "لماذا", + "أكثر", "أقل", "مرة أخرى", "التالي", "السابق", + "حسناً حسناً", "تمام تمام", "مزيد", "غيره", + # Arabic rejection + "لا", "لأ", "لا شكراً", "إلغاء", "توقف", + "اتركه", "مش محتاج", "مو صح", "خطأ", ] @frappe.whitelist(allow_guest=False) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 46f5041..945d499 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -212,6 +212,12 @@ if (msg.done) { error: errorText, }) console.error('ChangAI API Error:', err) + if (error === "ERR_NETWORK_CHANGED"){ + thinkingMsg.isStatus = false + thinkingMsg.statusType = null + thinkingMsg.text = '⚠️ Network error. Please check your connection and try again.' + + } thinkingMsg.isStatus = false thinkingMsg.statusType = null thinkingMsg.text = '⚠️ Something went wrong. Please try again.' diff --git a/pyproject.toml b/pyproject.toml index 7f95b35..c3c618e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ dependencies = [ "sentence-transformers>=5.0.0", "huggingface_hub>=0.23.0,<0.24.0", "faiss-cpu>=1.7.4,<2.0.0", - "numpy>=1.22.0,<2.0.0", # DO NOT REMOVE <2.0.0 (Breaks ERPNext) + "numpy>=1.22.0", # DO NOT REMOVE <2.0.0 (Breaks ERPNext) "sqlglot>=27.0.0", "PyQRCode>=1.2.1", "pypng>=0.20220715.0", From 3b5fd31409d4f481b0f8f5b5c3791f3b8d44116f Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 13:30:37 +0300 Subject: [PATCH 07/11] Python requiremnt --- .../changai/api/v2/text2sql_pipeline_v2.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index 6020b9f..a190aab 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -1832,7 +1832,7 @@ def detect_specific_entities(state: SQLState) -> SQLState: frappe.throw(_( "Master Data does not exist. Because of this, results may not be accurate. " "For better accuracy, please open " - "ChangAI Settings " + "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" "Click here

" @@ -1845,7 +1845,7 @@ def detect_specific_entities(state: SQLState) -> SQLState: "Your master data is {0} days old. " "Because of this, results may not be accurate. " "For better accuracy, please open " - "ChangAI Settings " + "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" "Click here

" @@ -2059,7 +2059,7 @@ def routeNonErpToAI(state: SQLState): try: res = call_gemini(question,sys_prompt) return {**state, "non_erp_res": res} - except Exceptiona as e: + except Exception as e: return {**state, "non_erp_res": "Model Calling Failed .Please try Again","error":str(e)} @@ -2124,8 +2124,9 @@ def execute_query(sql: str, doctypes: List[str]) -> Any: return frappe.db.sql(sql, as_dict=True) except PermissionError: return { - "error": _("You do not have permission to access this data.\n").format(CHANGAI_GUIDE_LINK) - } + "error": _("You do not have permission to access this data. Check the Quick Start Guide here 👇: {0}").format( + f'Click here

ERPGulf.com' + ) } except Exception as e: return {"error": f"SQL Execution Failed: {e}\n Check Quick Start Guide Here 👇:\n {CHANGAI_GUIDE_LINK}"} @@ -2201,7 +2202,8 @@ def to_json_if_needed(v: Any) -> Any: @frappe.whitelist(allow_guest=False) def format_data_conversationally(user_data: Any) -> str: return render_template( - CONVERSATION_TEMPLATE, + CONVERSATION_TEMPLATE, # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti + {"data": user_data} ) @@ -2745,9 +2747,7 @@ def retry_sql(sql, error, formatted_q, sql_prompt): val_res = validate_sql_schema(retried_sql) return retried_sql, retried_orm, val_res -import json -import frappe -@frappe.whitelist(allow_guest=True) + def get_last_thread_message(chat_id: str): data = frappe.get_all( "ChangAI Chat History", @@ -2803,7 +2803,7 @@ def get_last_thread_message(chat_id: str): ] @frappe.whitelist(allow_guest=False) -def is_thread_erp(q,chat_id:str): +def is_thread_erp(q:str,chat_id:str): msg_type = get_last_thread_message(chat_id) if msg_type == "erp" and is_erp_query(q, THREAD_WORDS,85): return True From 9b40011c8b2e807c90555192b5b33ef51a0df217 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 14:08:44 +0300 Subject: [PATCH 08/11] Correction on pyproject --- .../non_erp_combined.processed.cache.pkl | Bin 2497089 -> 2499017 bytes .../v2/assets/non_erp_combined.processed.json | 236 +++++++++++++++++- changai/changai/api/v2/non_erp_handler.py | 2 +- .../changai/api/v2/text2sql_pipeline_v2.py | 9 +- pyproject.toml | 3 +- 5 files changed, 228 insertions(+), 22 deletions(-) diff --git a/changai/changai/api/v2/assets/non_erp_combined.processed.cache.pkl b/changai/changai/api/v2/assets/non_erp_combined.processed.cache.pkl index 4724beef26f0908e964fac8ac565a12a2e22a7de..e3aac626ce1861d15057e59a0070d33a2a49a2c8 100644 GIT binary patch delta 4446 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 F{U1Hl4ZQ#W delta 2826 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 diff --git a/changai/changai/api/v2/assets/non_erp_combined.processed.json b/changai/changai/api/v2/assets/non_erp_combined.processed.json index 77307b6..205fd06 100644 --- a/changai/changai/api/v2/assets/non_erp_combined.processed.json +++ b/changai/changai/api/v2/assets/non_erp_combined.processed.json @@ -26,6 +26,13 @@ "response": "Hello! ERPGulf is at your service. I am changAI.", "priority": 105, "is_active": true + }, + { + "category": "greeting", + "user_input": "how is ur day", + "response": "Pretty good, thanks for asking! ChangAI here and ready to help. How's your day going?", + "priority": 105, + "is_active": true }, { "category": "greeting", @@ -4418,7 +4425,7 @@ }, { "category": "support", - "user_input": "transaction failed", + "user_input": "transsystem failed", "response": "Just pop your issue into the Support tab on Changai / ERPGulf and our team will pick it up.", "priority": 90, "is_active": true @@ -20917,7 +20924,7 @@ }, { "category": "thanks", - "user_input": "wonderful interaction", + "user_input": "wonderful intersystem", "response": "Thank you! changAI is always ready to help you.", "priority": 100, "is_active": true @@ -22247,7 +22254,7 @@ }, { "category": "thanks", - "user_input": "nice interaction", + "user_input": "nice intersystem", "response": "Thank you! changAI is always ready to help you.", "priority": 100, "is_active": true @@ -23857,7 +23864,7 @@ }, { "category": "thanks", - "user_input": "nice interaction", + "user_input": "nice intersystem", "response": "You're welcome! changAI is always here for you.", "priority": 100, "is_active": true @@ -31872,7 +31879,7 @@ }, { "category": "thanks", - "user_input": "great interaction", + "user_input": "great intersystem", "response": "وفيك بارك الله! changAI من ERPGulf في خدمتك.", "priority": 100, "is_active": true @@ -34658,7 +34665,7 @@ }, { "category": "thanks", - "user_input": "wonderful interaction", + "user_input": "wonderful intersystem", "response": "You're welcome! changAI is always here for you.", "priority": 100, "is_active": true @@ -44150,7 +44157,7 @@ }, { "category": "thanks", - "user_input": "great interaction", + "user_input": "great intersystem", "response": "You are awesome too! changAI is always here.", "priority": 100, "is_active": true @@ -44612,7 +44619,7 @@ }, { "category": "thanks", - "user_input": "nice interaction", + "user_input": "nice intersystem", "response": "ولا يهمك! ERPGulf وchangAI دائمًا في خدمتك.", "priority": 100, "is_active": true @@ -52382,7 +52389,7 @@ }, { "category": "thanks", - "user_input": "great interaction", + "user_input": "great intersystem", "response": "You're most welcome! changAI appreciates your kind words.", "priority": 100, "is_active": true @@ -58402,7 +58409,7 @@ }, { "category": "thanks", - "user_input": "wonderful interaction", + "user_input": "wonderful intersystem", "response": "على الرحب والسعة! سعيد بمساعدتك.", "priority": 100, "is_active": true @@ -61440,7 +61447,7 @@ }, { "category": "thanks", - "user_input": "nice interaction", + "user_input": "nice intersystem", "response": "على الرحب والسعة! سعيد بمساعدتك.", "priority": 100, "is_active": true @@ -67971,7 +67978,7 @@ }, { "category": "thanks", - "user_input": "nice interaction", + "user_input": "nice intersystem", "response": "Great to hear! changAI from ERPGulf is always ready.", "priority": 100, "is_active": true @@ -71632,7 +71639,7 @@ }, { "category": "thanks", - "user_input": "wonderful interaction", + "user_input": "wonderful intersystem", "response": "Great to hear! changAI from ERPGulf is always ready.", "priority": 100, "is_active": true @@ -136849,6 +136856,209 @@ "priority": 90, "is_active": true }, + { + "category": "positive", + "user_input": "sounds good", + "response": "Great! Let me know if you need anything else.", + "priority": 100, + "is_active": true +}, +{ + "category": "positive", + "user_input": "looks good", + "response": "Glad to hear that. Let me know if you need more help.", + "priority": 100, + "is_active": true +}, +{ + "category": "positive", + "user_input": "perfect", + "response": "Awesome! Happy to help.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "no", + "response": "Okay. Let me know if you need anything else.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "nope", + "response": "Understood.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "nah", + "response": "Alright.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "never", + "response": "Got it.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "not really", + "response": "Okay, understood.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "no thanks", + "response": "No problem.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "no thank you", + "response": "Alright.", + "priority": 100, + "is_active": true +}, +{ + "category": "negative", + "user_input": "negative", + "response": "Understood.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "cancel", + "response": "Cancelled.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "stop", + "response": "Stopped.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "ignore", + "response": "Okay, ignoring it.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "forget it", + "response": "Alright, leaving it.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "never mind", + "response": "Okay.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "nevermind", + "response": "Okay.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "leave it", + "response": "Alright.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "skip", + "response": "Skipped.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "drop it", + "response": "Okay, dropping it.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "not now", + "response": "Okay, maybe later.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "later", + "response": "Sure, we can do it later.", + "priority": 100, + "is_active": true +}, +{ + "category": "system", + "user_input": "wrong", + "response": "Sorry about that. Let me correct it.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "incorrect", + "response": "Apologies. Let me fix it.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "that's wrong", + "response": "Sorry. Let me correct it.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "not what i asked", + "response": "Sorry. Let me understand your request better.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "not what i want", + "response": "Understood. Let me adjust it.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "that's not right", + "response": "Sorry about that. Let me fix it.", + "priority": 120, + "is_active": true +}, +{ + "category": "system", + "user_input": "no that's wrong", + "response": "Apologies. Let me correct it.", + "priority": 120, + "is_active": true +}, { "category": "system", "user_input": "كل شيء توقف", diff --git a/changai/changai/api/v2/non_erp_handler.py b/changai/changai/api/v2/non_erp_handler.py index 6f8ce4e..a2e6b54 100644 --- a/changai/changai/api/v2/non_erp_handler.py +++ b/changai/changai/api/v2/non_erp_handler.py @@ -56,7 +56,7 @@ def __init__(self, json_file: str, alias_path: str): } self.safe_categories_for_partial = { - "greeting", "support", "identity", "thanks", "goodbye", + "greeting", "support", "identity", "thanks", "goodbye","negative","positive", } self.en_stopwords = { diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index a190aab..b5f982f 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -12,7 +12,6 @@ import os import pickle import numpy as np -import os import time import base64 import sqlglot @@ -1835,9 +1834,8 @@ def detect_specific_entities(state: SQLState) -> SQLState: "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" - "Click here

" + "Click here
" "ERPGulf.com" - ).format(settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) if not res.get("update_status") and res.get("days", 0) > 0: @@ -1848,9 +1846,8 @@ def detect_specific_entities(state: SQLState) -> SQLState: "ChangAI Settings " "and click on the Update Master Data button in the Training tab.

" "Check Quick Start Guide Here 👇:
" - "Click here

" + "Click here
" "ERPGulf.com" - ).format(res.get("days"), settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) out = call_entity_retriever(q) @@ -2218,7 +2215,6 @@ def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: sys_prompt = """ You are ChangAI, a warm and intelligent business assistant. Your job is to turn raw database results into clear, friendly, human-readable answers. - CONTENT RULES: - Use BOTH the user question and the DB result JSON to form the answer. - Use ONLY values present in the JSON. NEVER invent numbers or fields. @@ -2242,6 +2238,7 @@ def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: Never list names or items in a comma-separated line. Ever. OUTPUT: - Markdown ALLOWED: **bold**, • bullets, emojis +- i dont want too much gap between the texts shown. - No JSON. No code blocks. No labels. No explanations. - Output ONLY the final user-facing answer. Nothing else. - if the user question is in english reply in english only very important. diff --git a/pyproject.toml b/pyproject.toml index c3c618e..bfb6ccc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,9 +19,8 @@ dependencies = [ "symspellpy>=6.7.7,<7.0.0", "transformers>=4.49.0,<5.0.0", "sentence-transformers>=5.0.0", - "huggingface_hub>=0.23.0,<0.24.0", "faiss-cpu>=1.7.4,<2.0.0", - "numpy>=1.22.0", # DO NOT REMOVE <2.0.0 (Breaks ERPNext) + "numpy>=1.22.0", "sqlglot>=27.0.0", "PyQRCode>=1.2.1", "pypng>=0.20220715.0", From 40847d4a9baf5fae597f80c448d94a689c0a168d Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 14:27:15 +0300 Subject: [PATCH 09/11] Correction on pyproject --- changai/changai/api/v2/text2sql_pipeline_v2.py | 2 +- changai/changai/prompts/sql_system_prompt.txt | 4 +++- pyproject.toml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index b5f982f..8a79fbc 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -2238,7 +2238,7 @@ def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: Never list names or items in a comma-separated line. Ever. OUTPUT: - Markdown ALLOWED: **bold**, • bullets, emojis -- i dont want too much gap between the texts shown. +- i dont want too much gap between the texts also gaps are not allowed between items listed. - No JSON. No code blocks. No labels. No explanations. - Output ONLY the final user-facing answer. Nothing else. - if the user question is in english reply in english only very important. diff --git a/changai/changai/prompts/sql_system_prompt.txt b/changai/changai/prompts/sql_system_prompt.txt index 7972777..3f749dc 100644 --- a/changai/changai/prompts/sql_system_prompt.txt +++ b/changai/changai/prompts/sql_system_prompt.txt @@ -98,6 +98,8 @@ LAW 1: sql is NEVER empty. Ever. LAW 2: Every field must exist in SCHEMA CONTEXT under the exact table used. LAW 3: No JOINs unless a link field (→) exists in SCHEMA CONTEXT. LAW 4: No SELECT *. Name every field explicitly. +LAW 5 :You may ONLY generate SQL queries that begin with SELECT. +INSERT, UPDATE, and DELETE queries are strictly forbidden and must never be returned under any circumstances — even if the user explicitly asks for them. ═══ OUTPUT LAW ═══ NEVER return empty sql. Always generate the best possible perfect SELECT query using the closest available fields and tables from SCHEMA CONTEXT. - Output ONLY raw JSON. No explanation. No markdown. No extra keys. @@ -109,4 +111,4 @@ also do not assume fields or tables if they are not in the given schema. "orm": "" } FINAL CHECK: Did you verify every field exists in SCHEMA CONTEXT? -If sql is empty → you have failed. Output best partial query instead. \ No newline at end of file +If sql is empty → you have failed. Output best partial query instead. diff --git a/pyproject.toml b/pyproject.toml index bfb6ccc..24c917c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ dependencies = [ "openai>=1.64.0,<2.0.0", "anthropic>=0.79.0,<1.0.0", "google-genai>=1.60.0,<2.0.0", - "google-auth>=2.38.0", + "google-auth>=2.38.0,<2.49.0", "google-cloud-aiplatform>=1.135.0,<2.0.0", "langchain-core", "langchain-huggingface", @@ -22,6 +22,7 @@ dependencies = [ "faiss-cpu>=1.7.4,<2.0.0", "numpy>=1.22.0", "sqlglot>=27.0.0", + "boto3>=1.34.0", "PyQRCode>=1.2.1", "pypng>=0.20220715.0", "opencv-python-headless>=4.8.0,<5.0.0" From c7182e2c58aa7367d5bd659e2a2f06ab3f68185d Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 14:30:18 +0300 Subject: [PATCH 10/11] Correction on pyproject --- .../doctype/changai_settings/changai_settings.js | 6 ++++++ pyproject.toml | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/changai/changai/doctype/changai_settings/changai_settings.js b/changai/changai/doctype/changai_settings/changai_settings.js index 7ed2403..0551010 100644 --- a/changai/changai/doctype/changai_settings/changai_settings.js +++ b/changai/changai/doctype/changai_settings/changai_settings.js @@ -154,7 +154,13 @@ frappe.ui.form.on("ChangAI Settings", { { fieldname: "claude_api_key", text: `Claude API key for schema enrichment and data generation.`, + }, + { + fieldname: "tts_provider", + text: "Choose the Text-to-Speech provider. Use Polly for high-quality AI voices with AWS Polly credentials, or Browser to use the device’s built-in speech engine." + , } + ]; applyTooltips(frm, fieldsWithTooltips); frm.add_custom_button(__('Download Embedding Model'), () => { diff --git a/pyproject.toml b/pyproject.toml index 24c917c..7b951b6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,18 @@ dependencies = [ "langchain-huggingface", "langgraph", "symspellpy>=6.7.7,<7.0.0", + "transformers>=4.49.0,<5.0.0",dependencies = [ + "cffi>=1.17.1", + "openai>=1.64.0,<2.0.0", + "anthropic>=0.79.0,<1.0.0", + "google-genai>=1.60.0,<2.0.0", + "google-auth>=2.38.0,<2.49.0", + "google-cloud-aiplatform>=1.135.0,<2.0.0", + "langchain-core", + "langchain-community", + "langchain-huggingface", + "langgraph", + "symspellpy>=6.7.7,<7.0.0", "transformers>=4.49.0,<5.0.0", "sentence-transformers>=5.0.0", "faiss-cpu>=1.7.4,<2.0.0", From 4b74bdf7359ca5dd95647e561d2083af77fa5660 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Wed, 20 May 2026 14:31:49 +0300 Subject: [PATCH 11/11] Correction on pyproject --- .../doctype/changai_settings/changai_settings.js | 2 +- pyproject.toml | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/changai/changai/doctype/changai_settings/changai_settings.js b/changai/changai/doctype/changai_settings/changai_settings.js index 0551010..ccaf584 100644 --- a/changai/changai/doctype/changai_settings/changai_settings.js +++ b/changai/changai/doctype/changai_settings/changai_settings.js @@ -157,7 +157,7 @@ frappe.ui.form.on("ChangAI Settings", { }, { fieldname: "tts_provider", - text: "Choose the Text-to-Speech provider. Use Polly for high-quality AI voices with AWS Polly credentials, or Browser to use the device’s built-in speech engine." + text: "Choose the Text-to-Speech provider. Use Polly for high-quality AI voices with AWS Polly credentials; otherwise browser speech is used automatically" , } diff --git a/pyproject.toml b/pyproject.toml index 7b951b6..2918c06 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,17 +7,6 @@ description = "ChangAI" readme = "README.md" dynamic = ["version"] dependencies = [ - "cffi>=1.17.1", - "openai>=1.64.0,<2.0.0", - "anthropic>=0.79.0,<1.0.0", - "google-genai>=1.60.0,<2.0.0", - "google-auth>=2.38.0,<2.49.0", - "google-cloud-aiplatform>=1.135.0,<2.0.0", - "langchain-core", - "langchain-huggingface", - "langgraph", - "symspellpy>=6.7.7,<7.0.0", - "transformers>=4.49.0,<5.0.0",dependencies = [ "cffi>=1.17.1", "openai>=1.64.0,<2.0.0", "anthropic>=0.79.0,<1.0.0",