64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
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"],
|
|
]
|
|
|
|
if status_filter:
|
|
filters.append(["Pallet", "status", "=", status_filter])
|
|
if search:
|
|
filters.append(["Pallet", "pallet_number", "like", f"%{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"
|
|
]
|
|
|
|
order_by = f"{sort_field} {sort_dir}"
|
|
|
|
# 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
|
|
)
|
|
|
|
return {
|
|
"pallets": pallets,
|
|
"total": total,
|
|
"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}"}
|