diff --git a/westech_r2/doctype/__pycache__/__init__.cpython-312.pyc b/westech_r2/doctype/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..25410b8
Binary files /dev/null and b/westech_r2/doctype/__pycache__/__init__.cpython-312.pyc differ
diff --git a/westech_r2/doctype/pallet/__pycache__/__init__.cpython-312.pyc b/westech_r2/doctype/pallet/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 0000000..a30fd4f
Binary files /dev/null and b/westech_r2/doctype/pallet/__pycache__/__init__.cpython-312.pyc differ
diff --git a/westech_r2/doctype/pallet/__pycache__/pallet.cpython-312.pyc b/westech_r2/doctype/pallet/__pycache__/pallet.cpython-312.pyc
new file mode 100644
index 0000000..99af6c7
Binary files /dev/null and b/westech_r2/doctype/pallet/__pycache__/pallet.cpython-312.pyc differ
diff --git a/westech_r2/page/pallet-list/pallet-list.html b/westech_r2/page/pallet-list/pallet-list.html
index 3414f7f..c3ac405 100644
--- a/westech_r2/page/pallet-list/pallet-list.html
+++ b/westech_r2/page/pallet-list/pallet-list.html
@@ -1,51 +1,82 @@
-
+
📦 Pallet List
-
-
-
-
- | Pallet # |
- Date Reserved |
- Rec. Date |
- Customer # |
- Company |
- Lbs |
- Who |
- Items |
- QTY Sale |
- Lbs Sale |
- Finish Date |
- Status |
- Notes |
-
-
-
- | Loading... |
-
-
-
+
+
+
+
+
+
+
-
diff --git a/westech_r2/page/pallet-list/pallet-list.py b/westech_r2/page/pallet-list/pallet-list.py
index 64730c5..82aa5e7 100644
--- a/westech_r2/page/pallet-list/pallet-list.py
+++ b/westech_r2/page/pallet-list/pallet-list.py
@@ -1,50 +1,40 @@
import frappe
-import json
@frappe.whitelist()
def get_pallets(page=1, page_size=100, sort_field="pallet_number", sort_dir="desc", status_filter="", search=""):
- """Fetch pallets from ERPNext with filters."""
page = int(page)
page_size = int(page_size)
offset = (page - 1) * page_size
- # Base filters
- filters = [
- ["Pallet", "pallet_number", "is", "set"],
- ["Pallet", "date_reserved", "is", "set"],
- ]
+ # Only pallets with dates (filters empty rows)
+ conditions = ["pallet_number IS NOT NULL", "pallet_number != ", "date_reserved IS NOT NULL"]
+
+ # Junk filter (same as EIM)
+ junk = ["", "0", "0000", "N/A", "TBD", "null"]
+ conditions.append("pallet_number NOT IN ( + , .join(junk) + )")
if status_filter:
- filters.append(["Pallet", "status", "=", status_filter])
+ conditions.append("status = {0}".format(frappe.db.escape(status_filter)))
if search:
- filters.append(["Pallet", "pallet_number", "like", f"%{search}%"])
+ conditions.append("pallet_number LIKE %{0}%".format(frappe.db.escape(search)))
- fields = [
- "name", "pallet_number", "date_reserved", "received_date",
- "customer_number", "company_name", "inbound_weight", "tester",
- "description", "qty_to_sales", "weight_to_sales", "finish_date", "notes", "status"
- ]
+ where_clause = " AND ".join(conditions)
- order_by = f"{sort_field} {sort_dir}"
+ # Get total
+ total = frappe.db.sql("""SELECT COUNT(*) FROM tabPallet WHERE {0}""".format(where_clause))[0][0]
- # Get total count
- count_result = frappe.get_list(
- "Pallet",
- filters=filters,
- fields=["count(*) as total"],
- as_list=True
- )
- total = count_result[0][0] if count_result else 0
-
- # Get pallets
- pallets = frappe.get_list(
- "Pallet",
- filters=filters,
- fields=fields,
- order_by=order_by,
- limit_page_length=page_size,
- limit_start=offset
- )
+ # Get pallets - convert pallet_number to unsigned int for numeric sort
+ # Use natural sort: convert to int for proper numeric ordering
+ pallets = frappe.db.sql("""
+ SELECT
+ name, pallet_number, date_reserved, received_date,
+ customer_number, inbound_weight, tester,
+ description, qty_to_sales, weight_to_sales, finish_date, notes, status
+ FROM tabPallet
+ WHERE {0}
+ ORDER BY CAST(pallet_number AS UNSIGNED) {1}
+ LIMIT {2} OFFSET {3}
+ """.format(where_clause, sort_dir, page_size, offset), as_dict=True)
return {
"pallets": pallets,
@@ -52,12 +42,3 @@ def get_pallets(page=1, page_size=100, sort_field="pallet_number", sort_dir="des
"page": page,
"page_size": page_size
}
-
-@frappe.whitelist()
-def update_pallet(docname, field, value):
- """Update a single field on a Pallet."""
- pallet = frappe.get_doc("Pallet", docname)
- pallet.set(field, value)
- pallet.save(ignore_permissions=True)
- frappe.db.commit()
- return {"status": "ok", "message": f"Updated {field}"}