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 1f014b7..22de7dc 100644 Binary files a/models/pricing_item.xlsx and b/models/pricing_item.xlsx differ diff --git a/models/pricing_program.xlsx b/models/pricing_program.xlsx index 640797c..0a971dd 100644 Binary files a/models/pricing_program.xlsx and b/models/pricing_program.xlsx differ diff --git a/models/pricing_program_timing.xlsx b/models/pricing_program_timing.xlsx new file mode 100644 index 0000000..1d75aca Binary files /dev/null and b/models/pricing_program_timing.xlsx differ 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()