|
|
@@ -30,6 +30,7 @@ from app.crud.crm.contract_product import (
|
|
|
)
|
|
|
from app.crud.crm.customer import get_customer
|
|
|
from app.crud.crm.invoice_info import list_invoice_info_by_customer
|
|
|
+from app.services.crm.list_sort import resolve_datetime_order_by
|
|
|
from app.services.crm_settlement_clause import default_settlement_clause
|
|
|
from app.services.crm_supplier_hazard import assert_products_allowed_for_supplier
|
|
|
from app.crud.crm.product import resolve_product_id_for_quote_item
|
|
|
@@ -445,7 +446,19 @@ def _build_contract_filters(
|
|
|
else:
|
|
|
q = q.filter(CrmContract.id == "__none__")
|
|
|
|
|
|
- return q.order_by(CrmContract.create_time.desc())
|
|
|
+ default_order = CrmContract.create_time.desc()
|
|
|
+ whitelist = {
|
|
|
+ "signDate": CrmContract.sign_date,
|
|
|
+ "startDate": CrmContract.start_date,
|
|
|
+ "endDate": CrmContract.end_date,
|
|
|
+ "createTime": CrmContract.create_time,
|
|
|
+ "updateTime": CrmContract.update_time,
|
|
|
+ }
|
|
|
+ sort_field = _get_field(filters, "sort_field", "sortField")
|
|
|
+ sort_order = _get_field(filters, "sort_order", "sortOrder")
|
|
|
+ return q.order_by(
|
|
|
+ resolve_datetime_order_by(sort_field, sort_order, whitelist, default_order)
|
|
|
+ )
|
|
|
|
|
|
|
|
|
def list_contracts(
|