From fb9c91839ad41758432e38c8c063d8506b5175e7 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 27 Oct 2025 15:39:27 +0800 Subject: [PATCH] bugfix --- json/pricing_item.json | 9 ++++++++- pricing/init.py | 3 ++- pricing/pricing.py | 19 ++++++++++++++++--- wwwroot/pi_get_all_specs.dspy | 1 + 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 wwwroot/pi_get_all_specs.dspy diff --git a/json/pricing_item.json b/json/pricing_item.json index 275ea86..5084bb9 100644 --- a/json/pricing_item.json +++ b/json/pricing_item.json @@ -5,7 +5,14 @@ "sortby": "name", "browserfields": { "exclouded": ["id", "ppid"], - "alters": {} + "alters": { + "psid":{ + "dataurl":"{{entire_url('../pi_get_all_specs.dspy')}}", + "params": { + "ppid":"{{params_kw.ppid}}" + } + } + } }, "editexclouded": [ "id", "ppid" diff --git a/pricing/init.py b/pricing/init.py index 26b3b6f..9c141b7 100644 --- a/pricing/init.py +++ b/pricing/init.py @@ -1,6 +1,7 @@ -from pricing.pricing import pricing_program_charging +from pricing.pricing import pricing_program_charging, get_pricing_specs_by_ppid from ahserver.serverenv import ServerEnv def load_pricing(): env = ServerEnv() env.pricing_program_charging = pricing_program_charging + env.get_pricing_specs_by_ppid = get_pricing_specs_by_ppid diff --git a/pricing/pricing.py b/pricing/pricing.py index 43b7b2a..a51167f 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -23,13 +23,26 @@ class PricingProgram: recs = await self.sor.R('pricing_item', {'ppid': self.id}) return recs - async def get_spec(self, psid): - debug(f'psid={psid}') + async def get_specs(self): + recs = await self.sor.R('pricing_spec', {'ptid': self.psid}) + return recs + + asyn def get_spec_by_id(self, psid): recs = await self.sor.R('pricing_spec', {'id': psid}) if len(recs) > 0: return recs[0] return None +async def get_pricing_specs_by_ppid(ppid): + env = ServerEnv() + dbname = env.get_module_dbname('pricing') + db = DBPools() + async with db.sqlorContext(dbname) as sor: + pp = PricingProgram(ppid, sor) + await pp.init() + return await pp.get_specs() + return [] + async def get_remote_pricing(sor, charge, data): env = ServerEnv() get_callerid = env.get_callerid @@ -47,7 +60,7 @@ async def pricing_program_charging(sor, pricing_program_id, data): charges = [] for item in pp_items: charge = item.copy() - spec = await pp.get_spec(item.psid) + spec = await pp.get_spec_by_psid(charge.psid) d = data.get(spec.spec_name) if d is None: continue diff --git a/wwwroot/pi_get_all_specs.dspy b/wwwroot/pi_get_all_specs.dspy new file mode 100644 index 0000000..e309d58 --- /dev/null +++ b/wwwroot/pi_get_all_specs.dspy @@ -0,0 +1 @@ +return await get_pricing_specs_by_ppid(params_kw.ppid)