From 438dd6042f8a1a050c44e730c36c9d775b87b725 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 11 Dec 2025 14:54:59 +0800 Subject: [PATCH] bugfix --- README.md | 10 +++++++++- json/pricing_program.json | 7 +++---- json/pricing_program_timing.json | 23 +++++++++++++++++++++++ models/pricing_item.xlsx | Bin 18346 -> 18442 bytes models/pricing_program.xlsx | Bin 17756 -> 18192 bytes models/pricing_program_timing.xlsx | Bin 0 -> 18301 bytes pricing/pricing.py | 26 +++++++++++++++++++++++--- 7 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 json/pricing_program_timing.json create mode 100644 models/pricing_program_timing.xlsx diff --git a/README.md b/README.md index c43a3bd..1a34651 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ # pricing -定价模块 \ No newline at end of file +定价模块 + +## 定价概念 + +* 定价类型规范了一类业务的定价标准,并用定价类型规格细化定价名细 +* 定价项定义为什么定价,定价项目时序说明某个定价的有效时间段, 定价项规定了某个定价规格的具体定价和成本 + +## 使用 +在资源中选择定价项目, diff --git a/json/pricing_program.json b/json/pricing_program.json index 40011e7..ec49ff3 100644 --- a/json/pricing_program.json +++ b/json/pricing_program.json @@ -1,8 +1,7 @@ { - "tblname": "pricing_program", - "title": "定价项目", + "tblname": "pricing_program_timing", + "title": "定价项目时序", "params": { - "sortby": "name", "logined_userorgid": "ownerid", "browserfields": { "exclouded": ["id", "ownerid" ], @@ -13,7 +12,7 @@ ], "subtables":[ { - "field": "ppid", + "field": "pptid", "title": "定价细项", "icon": "{{entire_url('/pricing/imgs/pricing_item.svg')}}", "subtable": "pricing_item" diff --git a/json/pricing_program_timing.json b/json/pricing_program_timing.json new file mode 100644 index 0000000..c465a16 --- /dev/null +++ b/json/pricing_program_timing.json @@ -0,0 +1,23 @@ +{ + "tblname": "pricing_program", + "title": "定价项目", + "params": { + "sortby": "name", + "logined_userorgid": "ownerid", + "browserfields": { + "exclouded": ["id", "ownerid" ], + "alters": {} + }, + "editexclouded": [ + "id", "ownerid" + ], + "subtables":[ + { + "field": "ppid", + "title": "定价项目时序", + "icon": "{{entire_url('/pricing/imgs/pricing_program_timing.svg')}}", + "subtable": "pricing_program_timing" + } + ] + } +} diff --git a/models/pricing_item.xlsx b/models/pricing_item.xlsx index 1f014b76af69bd51adf7095ab8e797cef9045efe..22de7dccef7b15509e1139d2722386382ee705a0 100644 GIT binary patch delta 4649 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 HAKQNb3Vocp delta 4545 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 diff --git a/models/pricing_program.xlsx b/models/pricing_program.xlsx index 640797c2b49f852b1794a94c725f650a73149404..0a971dd18d096722722a4eef3bc65b9273bc2840 100644 GIT binary patch delta 10660 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 diff --git a/models/pricing_program_timing.xlsx b/models/pricing_program_timing.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1d75aca905399366bcaec753bbfd30eba884dc60 GIT binary patch literal 18301 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 literal 0 HcmV?d00001 diff --git a/pricing/pricing.py b/pricing/pricing.py index 3ccb871..e1c7215 100644 --- a/pricing/pricing.py +++ b/pricing/pricing.py @@ -20,10 +20,26 @@ class PricingProgram: self.pricing_type = await self.sor.R('pricing_type', {'id': self.ptid}) - async def get_items(self): - recs = await self.sor.R('pricing_item', {'ppid': self.id}) + async def get_items(self, biz_date=None): + if biz_date is None: + env = ServerEnv() + biz_date = await env.get_business_date(self.sor) + ppts = await self.get_program_timing(biz_date) + if lne(ppts) < 1: + return None + ppt = ppts[0] + recs = await self.sor.R('pricing_item', {'pptid': ppt.id}) return recs + async def get_program_timing(self, biz_date): + sql = """select * from pricing_program_timing +where enabled_date >= ${biz_date}$ + and expired_date < ${biz_date}$ + and ppid = ${ppid}$ + """ + return await self.sor.sqlExe(sql, {'ppid':self.ppid, + 'biz_date': biz_date}) + async def get_specs(self): recs = await self.sor.R('pricing_spec', {'ptid': self.ptid}) return recs @@ -57,7 +73,11 @@ async def get_remote_pricing(sor, charge, data): async def pricing_program_charging(sor, pricing_program_id, data): pp = PricingProgram(pricing_program_id, sor) await pp.init() - pp_items = await pp.get_items() + env = ServerEnv() + if not data.get('biz_date'): + biz_date = await env.get_business_date(self.sor) + data['biz_date'] = biz_date + pp_items = await pp.get_items(biz_date=data['biz_date']) charges = [] for item in pp_items: charge = item.copy()