supplychain/wwwroot/api/distribution_agreements_create.dspy
yumoqing da32159ad9 feat: 供应商和分销商管理模块 (supplychain)
- 7个数据库表: suppliers, supply_contracts, supply_contract_items,
  sub_distributors, distribution_agreements, distribution_agreement_items,
  supplychain_accounting
- CRUD JSON配置 (7个列表 + editable段)
- API端点: create/update/delete (21个) + calculate_accounting + query_discount (2个)
- 前端页面: index.ui + 5个功能页 + menu.ui
- 记账计算: 自动查找有效合同/协议折扣,计算进货金额、分销金额、利润
- 折扣查找优先级: 精确产品 > 产品分类 > 默认折扣
- productid/prodtypeid引用product模块(即将开发)
2026-05-25 15:37:06 +08:00

35 lines
1.5 KiB
Plaintext

import json
from appPublic.uniqueID import getID
from datetime import datetime
async def main(request, params_kw):
"""Create a new distribution_agreements record."""
user_id = await get_user()
user_orgid = await get_userorgid()
dbname = get_module_dbname('supplychain')
data = params_kw.get("data", "{}")
if isinstance(data, str):
data = json.loads(data)
data["id"] = getID()
data["resellerid"] = user_orgid
data["created_by"] = user_id
data["created_at"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Auto-generate codes if needed
if "distribution_agreements" == "suppliers" and not data.get("supplier_code"):
data["supplier_code"] = f"SUP-{datetime.now().strftime('%Y%m%d')}-{getID()[:4]}"
if "distribution_agreements" == "sub_distributors" and not data.get("sub_dist_code"):
data["sub_dist_code"] = f"SUB-{datetime.now().strftime('%Y%m%d')}-{getID()[:4]}"
if "distribution_agreements" == "supply_contracts" and not data.get("contract_code"):
data["contract_code"] = f"SC-{datetime.now().strftime('%Y%m%d')}-{getID()[:4]}"
if "distribution_agreements" == "distribution_agreements" and not data.get("agreement_code"):
data["agreement_code"] = f"DA-{datetime.now().strftime('%Y%m%d')}-{getID()[:4]}"
config = getConfig(".")
DBPools(config.databases)
async with db.sqlorContext(dbname) as sor:
await sor.C("distribution_agreements", data)
return json.dumps({"status": "ok", "data": data})