ソースを参照

modified: upsystem/hooks.py
new file: upsystem/orderpermissions/__init__.py
new file: upsystem/orderpermissions/sales_order.py

wenhongquan 2 ヶ月 前
コミット
04a347226e

+ 3 - 1
upsystem/hooks.py

@@ -241,4 +241,6 @@ app_license = "mit"
 # default_log_clearing_doctypes = {
 # 	"Logging DocType Name": 30  # days to retain logs
 # }
-
+permission_query_conditions = {
+    "Sales Order": "upsystem.orderpermissions.sales_order.get_permission_query_conditions"
+}

+ 0 - 0
upsystem/orderpermissions/__init__.py


+ 32 - 0
upsystem/orderpermissions/sales_order.py

@@ -0,0 +1,32 @@
+import frappe
+
+def get_permission_query_conditions(user):
+    # if not user or user == "Administrator":
+    #     return ""
+
+    # 获取用户有权限的仓库列表
+    warehouses = frappe.get_all(
+        "User Permission",
+        filters={
+            "user": user,
+            "allow": "Warehouse"
+        },
+        pluck="for_value"
+    )
+    # frappe.msgprint(f"当前用户: {user}")  
+    # frappe.logger().info(f"[HOOK] Triggered for user: {user}")
+
+    
+    # return """`tabSales Order`.name in ("SAL-ORD-2025-00002")"""
+    if not warehouses:
+        # 用户无仓库权限时,返回空结果
+        return "0=1"  # 永远不成立的条件
+    
+    # 构建SQL条件:销售订单包含至少一个属于有权限仓库的物料
+    return f"""
+        EXISTS (
+            SELECT 1 FROM `tabSales Order Item` soi 
+            WHERE soi.parent = `tabSales Order`.name 
+            AND soi.warehouse IN ({', '.join([f"'{wh}'" for wh in warehouses])})
+        )
+    """