From d884132d7733f2791600e150a87f9433d2181d53 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 19 Mar 2026 16:50:44 +0800 Subject: [PATCH] bugfix --- models/pricing_program.xlsx | Bin 18302 -> 18427 bytes pricing/init.py | 13 ++------ pricing/pricing.py | 64 ++++++++++++++++++++++-------------- wwwroot/menu.ui | 8 ++--- 4 files changed, 47 insertions(+), 38 deletions(-) diff --git a/models/pricing_program.xlsx b/models/pricing_program.xlsx index f3090b7989c001bc1501ffa379cf3bbb00189017..219fd9cf1a1f3e8f4c5c0a7cee7922b42e087265 100644 GIT binary patch delta 3734 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 A)Bpeg delta 3608 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 z00000000000An+gkwg`f%|ule ${biz_date}$ + order by b.enabled_date desc""" + recs = await sor.sqlExe(sql, { + 'ppid': ppid, + 'biz_date': biz_date + }) + if recs: + r = recs[0] + r.prices = PricingProgram.get_pricing_from_ymalstr(data, r.pricing_date) + debug(f'{r.prices=}') + amt = 0.0 + for p in r.prices: + amt += p.amount + if r.pricing_belong == 'provider' + return amt, amt * r.discount # 售价, 成本 + return amt, 0 + return r + + @staticmethod + def get_pricing_from_ymalstr(config_data, yamlstr): """ yamlstr是从 d = None diff --git a/wwwroot/menu.ui b/wwwroot/menu.ui index 3798d37..7a484d5 100644 --- a/wwwroot/menu.ui +++ b/wwwroot/menu.ui @@ -7,14 +7,14 @@ "items":[ { "name": "pricing_type", - "icon": "{{entire_url('/pricing/imgs/pricing_type.svg')}}", - "label": "定价类型", - "url": "{{entire_url('/pricing/pricing_type')}}" + "icon": "{{entire_url('/pricing/imgs/pricing_program_timing.svg')}}", + "label": "项目定价", + "url": "{{entire_url('/pricing/pricing_program_timing')}}" }, { "name": "pricing_program", "icon": "{{entire_url('/pricing/imgs/pricing_program.svg')}}", - "label": "定价项目", + "label": "定价项目管理", "url": "{{entire_url('/pricing/pricing_program')}}" } ]