feat: wire protocol bundle to per-sample payment model v2
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
2ff5bc09f9
commit
a328b9ff2d
3 files changed
+295
-17
No files matched your search
@@ -400,6 +400,13 @@ def _protocol_to_dict(p: BizCollectionProtocol) -> Dict[str, Any]:
|
||||
"toResearchTime": _fmt_dt(p.to_research_time),
|
||||
"toResearchDesc": p.to_research_desc or "",
|
||||
"collectorUserId": p.collector_user_id or "",
|
||||
"protocolTotalAmount": _dec(p.protocol_total_amount)
|
||||
if getattr(p, "protocol_total_amount", None) is not None
|
||||
else None,
|
||||
"sourcePresignOrderId": getattr(p, "source_presign_order_id", None) or "",
|
||||
"paymentModelVersion": int(
|
||||
getattr(p, "payment_model_version", None) or 1
|
||||
),
|
||||
"tenantNo": p.tenant_no,
|
||||
"orderNum": p.order_num if p.order_num is not None else 0,
|
||||
"remark": p.remark or "",
|
||||
@@ -1387,6 +1394,25 @@ def get_protocol_detail_bundle(
|
||||
out["paymentDetails"] = details_out
|
||||
else:
|
||||
out["paymentDetails"] = []
|
||||
|
||||
from app.crud import protocol_sample_payment as sp_pay_svc
|
||||
from app.crud import protocol_refund_record as rr_svc
|
||||
|
||||
version = int(getattr(p, "payment_model_version", None) or 1)
|
||||
if version >= 2:
|
||||
out["samplePayments"] = sp_pay_svc.get_sample_payments_bundle(
|
||||
db, protocol_id, tenant_no
|
||||
)
|
||||
else:
|
||||
out["samplePayments"] = []
|
||||
out["refundRecords"] = rr_svc.list_refund_records(
|
||||
db, collection_protocol_id=protocol_id, tenant_no=tenant_no
|
||||
)
|
||||
out["presignDepositHint"] = sp_pay_svc.get_presign_deposit_hint(
|
||||
db,
|
||||
source_presign_order_id=getattr(p, "source_presign_order_id", None),
|
||||
tenant_no=tenant_no,
|
||||
)
|
||||
return out
|
||||
|
||||
|
||||
@@ -2304,6 +2330,9 @@ def create_collection_protocol(
|
||||
health_survey_form_urls: Optional[str] = None,
|
||||
register_date: Optional[str] = None,
|
||||
collector_user_id: Optional[str] = None,
|
||||
protocol_total_amount: Any = None,
|
||||
source_presign_order_id: Optional[str] = None,
|
||||
payment_model_version: Optional[int] = None,
|
||||
remark: Optional[str] = None,
|
||||
tenant_no: str = "zkxw",
|
||||
user_id: Optional[str] = None,
|
||||
@@ -2314,6 +2343,12 @@ def create_collection_protocol(
|
||||
db, tenant_no=tenant_no, kind="collection", user_id=user_id
|
||||
)
|
||||
assert_biz_no_available(db, tenant_no=tenant_no, biz_no=pn)
|
||||
version = int(payment_model_version) if payment_model_version is not None else 2
|
||||
if version not in (1, 2):
|
||||
version = 2
|
||||
total_amt = None
|
||||
if protocol_total_amount not in (None, ""):
|
||||
total_amt = Decimal(str(protocol_total_amount))
|
||||
obj = BizCollectionProtocol(
|
||||
id=generate_uuid(),
|
||||
protocol_no_id=(protocol_no_id or "").strip() or None,
|
||||
@@ -2324,6 +2359,9 @@ def create_collection_protocol(
|
||||
health_survey_form_urls=(health_survey_form_urls or "").strip() or None,
|
||||
register_date=(register_date or "").strip() or None,
|
||||
collector_user_id=(collector_user_id or "").strip() or None,
|
||||
protocol_total_amount=total_amt,
|
||||
source_presign_order_id=(source_presign_order_id or "").strip() or None,
|
||||
payment_model_version=version,
|
||||
tenant_no=tenant_no,
|
||||
order_num=0,
|
||||
remark=(remark or "").strip() or None,
|
||||
@@ -2363,6 +2401,8 @@ def update_collection_protocol(
|
||||
to_research_time: Optional[datetime] = None,
|
||||
to_research_desc: Optional[str] = None,
|
||||
collector_user_id: Optional[str] = None,
|
||||
protocol_total_amount: Any = None,
|
||||
source_presign_order_id: Optional[str] = None,
|
||||
remark: Optional[str] = None,
|
||||
) -> BizCollectionProtocol:
|
||||
obj = get_collection_protocol(
|
||||
@@ -2413,6 +2453,13 @@ def update_collection_protocol(
|
||||
obj.to_research_desc = to_research_desc.strip() or None
|
||||
if collector_user_id is not None:
|
||||
obj.collector_user_id = collector_user_id.strip() or None
|
||||
if protocol_total_amount is not None:
|
||||
if protocol_total_amount == "":
|
||||
obj.protocol_total_amount = None
|
||||
else:
|
||||
obj.protocol_total_amount = Decimal(str(protocol_total_amount))
|
||||
if source_presign_order_id is not None:
|
||||
obj.source_presign_order_id = (source_presign_order_id or "").strip() or None
|
||||
if remark is not None:
|
||||
obj.remark = remark.strip() or None
|
||||
obj.update_by = user_id
|
||||
|
||||
Reference in new issue
Block a user