From da598cd36426041fd4fe4b99c2fabd9749e01fb2 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 19 Mar 2025 18:14:15 +0800 Subject: [PATCH 1/5] bugfix --- platformbiz/pb_acc.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/platformbiz/pb_acc.py b/platformbiz/pb_acc.py index 9304886..cadb5da 100644 --- a/platformbiz/pb_acc.py +++ b/platformbiz/pb_acc.py @@ -5,6 +5,7 @@ from appPublic.registerfunction import rfexe from sqlor.dbpools import DBPools from ahserver.serverenv import get_serverenv from accounting.accounting_config import Accounting +from accounting.bizaccount import BizAccounting from accounting.bill import write_bill @@ -23,6 +24,23 @@ async def get_balance(orgid): class PlatformBizAcc: """ """ + def build_accountset(self, sor, biz_order, biz_orderdetails): + acconuntset = DictObject() + accountset['action'] = biz_order.business_op + accountset['平台'] = get_owner_orgid(sor, '0') + accountset['分销商'] = biz_order.resellerid + accountset['客户'] = biz_order.customerid + accountset['交易金额'] = biz_order.amount + transfee = await get_transfee(sor, self.resellerid, biz_order.amount, self.curdate) + accountset['交易费用'] = transfee + accountset.subsets = [] + for od in biz_orderdetails: + actions = biz_order.business_op.split('_') + actions[0] = actions[0] + '*' + aset = DictObject() + aset['action'] = '_'.join(actions) + aset['分销商'] = + async def accounting(self, sor, biz_orderid): biz_order = await sor.R('biz_order', {'id':biz_orderid}) details = await sor.R('biz_orderdetail',{'orderid':biz_orderid}) From ca3953128bdf105f18d41e78d45c04f0f175e763 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 21 Mar 2025 18:20:10 +0800 Subject: [PATCH 2/5] bugfix --- platformbiz/pb_acc.py | 66 ++++++++++++++++--------------------------- 1 file changed, 24 insertions(+), 42 deletions(-) diff --git a/platformbiz/pb_acc.py b/platformbiz/pb_acc.py index cadb5da..fc0d8bb 100644 --- a/platformbiz/pb_acc.py +++ b/platformbiz/pb_acc.py @@ -27,57 +27,39 @@ class PlatformBizAcc: def build_accountset(self, sor, biz_order, biz_orderdetails): acconuntset = DictObject() accountset['action'] = biz_order.business_op - accountset['平台'] = get_owner_orgid(sor, '0') - accountset['分销商'] = biz_order.resellerid - accountset['客户'] = biz_order.customerid + accountset['owner'] = get_owner_orgid(sor, '0') + accountset['reseller'] = biz_order.resellerid + accountset['customer'] = biz_order.customerid accountset['交易金额'] = biz_order.amount transfee = await get_transfee(sor, self.resellerid, biz_order.amount, self.curdate) accountset['交易费用'] = transfee accountset.subsets = [] for od in biz_orderdetails: - actions = biz_order.business_op.split('_') - actions[0] = actions[0] + '*' - aset = DictObject() - aset['action'] = '_'.join(actions) - aset['分销商'] = - - async def accounting(self, sor, biz_orderid): - biz_order = await sor.R('biz_order', {'id':biz_orderid}) - details = await sor.R('biz_orderdetail',{'orderid':biz_orderid}) - self.customerid = biz_order.customerid - self.resellerid = biz_order.resellerid - self.orderid = biz_order.id - self.userid = biz_order.userid - self.business_op = biz_order.business_op - get_business_date = get_serverenv('get_business_date') - self.curdate = await get_business_date(sor) - self.transamt = biz_order.amount - transfee = await get_transfee(sor, self.resellerid, biz_order.amount, self.curdate) - self.variable = { - "交易金额":biz_order.amount, - "交易费用":transfee - } - bill = await write_bill(sor, self.customerid, self.userid, - self.orderid, - self.business_op, - biz_order.amount) - - self.billid = bill.id - self.bill = bill - self.providerid = None - self.resellerid = None - self.action = self.recharge.action - self.productid = None - self.timestamp = timestampstr() - a = Accounting(self) - r = await a.do_accounting(sor) - for detail in details: - detail.prod_config = json.loads(detail.prod_config) price_infos = await get_price_infos(sor, self.resellerid, self.customerid, detail.productid, detail.prod_config) - + if len(price_infos) > 1: + for pi in price_infos[:-1]: + actions = biz_order.business_op.split('_') + actions[0] = actions[0] + '*' + aset = DictObject() + aset['action'] = '_'.join(actions) + aset['owner'] = get_owner_orgid(sor, '0') + aset['reseller'] = pi['buyerid'] + aset['provider'] = pi['resellerid'] + aset['采购成本'] = pi['sell_price'] + accountset.subsets.append(aset) + return accountset + + async def accounting(self, sor, biz_orderid): + biz_order = await sor.R('biz_order', {'id':biz_orderid}) + details = await sor.R('biz_orderdetail',{'orderid':biz_orderid}) + accountset = await self.build_accountset(biz_order, details) + self.curdate = await get_business_date(sor) + transfee = await get_transfee(sor, self.resellerid, biz_order.amount, self.curdate) + a = BizAccounting(self.curdate, biz_order, accountset) + r = await a.do_accounting(sor) async def get_orgid_by_trans_role(self, sor, orgtype): if orgtype== 'customer': From 74abd2e31afc78bbcfc7af7c6153f780d6e577e3 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 24 Mar 2025 14:12:47 +0800 Subject: [PATCH 3/5] buggfix --- json/agreement.json | 23 +++++++++++++++++++++++ json/choose_prodtype.json | 32 +++++++++++++++++++++++++------- json/prodtype.json | 33 --------------------------------- platformbiz/product.py | 5 ++++- wwwroot/agree_prodclone.dspy | 9 +++++++++ 5 files changed, 61 insertions(+), 41 deletions(-) create mode 100644 wwwroot/agree_prodclone.dspy diff --git a/json/agreement.json b/json/agreement.json index ff94b8e..1e704e3 100644 --- a/json/agreement.json +++ b/json/agreement.json @@ -1,6 +1,29 @@ { "tblname":"agreement", "params":{ + "toolbar":{ + "tools":[ + { + "name":"prodauth", + "selected_row":true, + "label":"授权" + } + ] + }, + "binds":[ + { + "wid":"self", + "event":"prodauth", + "actiontype":"urlwidget", + "target":"PopupWindow", + "options":{ + "url":"{{entire_url('platformbiz/agreeproduct_auth.dspy')}}", + "params":{ + "agreedetailid":"{{params_kw.agreedetailid}}" + } + } + } + ], "browserfields": { "exclouded": ["id"], "alters": {} diff --git a/json/choose_prodtype.json b/json/choose_prodtype.json index 45b7a06..8baf780 100644 --- a/json/choose_prodtype.json +++ b/json/choose_prodtype.json @@ -1,9 +1,32 @@ { - "treetype":"singlestruct", "tblname":"prodtype", "uitype":"tree", "alias":"choose_prodtype", "params":{ + "toolbar":{ + "bar_cwidth":2, + "tools":[ + { + "name":"test", + "selected_data":true, + "label":"TEST" + } + ] + }, + "binds":[ + { + "wid":"self", + "event":"prodauth", + "actiontype":"urlwidget", + "target":"PopupWindow", + "options":{ + "url":"{{entire_url('platformbiz/ag.dspy')}}", + "params":{ + "agreedetailid":"{{params_kw.agreedetailid}}" + } + } + } + ], "idField":"id", "textField":"name", "editable":true, @@ -11,12 +34,7 @@ "alters":{} }, "edit_exclouded_fields":["del_flg", "create_at"], - "checkField":"dd", - "parentField":"parentid", - "toolbar":{ - }, - "binds":[ - ] + "parentField":"parentid" } } diff --git a/json/prodtype.json b/json/prodtype.json index 498fbee..08179a7 100644 --- a/json/prodtype.json +++ b/json/prodtype.json @@ -6,39 +6,6 @@ "textField":"name", "parentField":"parentid", "editable":true, - "toolbar":{ - "tools":[ - { - "target":"PopupWindow", - "name":"spec", - "selected_data":true, - "label":"规格" - } - ] - }, - "binds":[ - { - "wid":"self", - "event":"spec", - "actiontype":"urlwidget", - "target":"PopupWindow", - "popup_options":{ - "width":"80%", - "height":"80%" - }, - "params_mapping":{ - "mapping":{ - "id":"prodtypeid" - }, - "need_others":false - }, - "options":{ - "params":{ - }, - "url":"/platformbiz/prodtypespec" - } - } - ], "browserfields": { "exclouded": ["id", "parentid" ], "alters": {} diff --git a/platformbiz/product.py b/platformbiz/product.py index 980a1e7..7c7b4ea 100644 --- a/platformbiz/product.py +++ b/platformbiz/product.py @@ -18,6 +18,7 @@ a.description, a.prod_state, a.product_code, a.spec_note, +b.id as apid, d.id as agreeid, d.providerid, d.resellerid @@ -35,8 +36,9 @@ where a.id = b.providerpid return for rec in recs: + pid = getID() d = { - "id":getID(), + "id":pid, "name":rec.name, "prodtypeid":rec.prodtypeid, "orgid":rec.resellerid, @@ -49,6 +51,7 @@ where a.id = b.providerpid "spec_note":rec.spec_note } await sor.C('product', d) + await sor.U('agreeproduct', {'id':rec.apid, 'resellerpid':pid}) async def open_agree_account(sor, providerid, sellerid): accounting_orgid = await get_accounting_orgid(sor) diff --git a/wwwroot/agree_prodclone.dspy b/wwwroot/agree_prodclone.dspy new file mode 100644 index 0000000..21faf07 --- /dev/null +++ b/wwwroot/agree_prodclone.dspy @@ -0,0 +1,9 @@ +debug(f'params_kw=}') +orgid = await get_userorgid() +db = DBPools() +dbname = await get_module_dbname('platformbiz') +async with db.sqlorContext(dbname) as sor: + await agree_products_clone(sor, orgid, params_kw.id) + return UiMessage(title='product clone', message='product clone finished') +debug('product clone error') +return UiError(title='product clone', message='product clone error') From 49daa9815d8773c7a034af96419a90e23de49043 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 5 Apr 2025 20:48:40 +0800 Subject: [PATCH 4/5] bugfix --- json/agreement.json | 5 +---- json/agreeproduct.json | 22 ---------------------- platformbiz/pb_acc.py | 4 +--- wwwroot/agree_prodclone.dspy | 4 ++-- 4 files changed, 4 insertions(+), 31 deletions(-) diff --git a/json/agreement.json b/json/agreement.json index 1e704e3..9f4bf39 100644 --- a/json/agreement.json +++ b/json/agreement.json @@ -17,10 +17,7 @@ "actiontype":"urlwidget", "target":"PopupWindow", "options":{ - "url":"{{entire_url('platformbiz/agreeproduct_auth.dspy')}}", - "params":{ - "agreedetailid":"{{params_kw.agreedetailid}}" - } + "url":"{{entire_url('../agree_prodclone.dspy')}}" } } ], diff --git a/json/agreeproduct.json b/json/agreeproduct.json index 2fce59f..5866643 100644 --- a/json/agreeproduct.json +++ b/json/agreeproduct.json @@ -2,28 +2,6 @@ "tblname":"agreeproduct", "params":{ "logined_userorgid":"orgid", - "toolbar":{ - "tools":[ - { - "name":"prodauth", - "label":"授权" - } - ] - }, - "binds":[ - { - "wid":"self", - "event":"prodauth", - "actiontype":"urlwidget", - "target":"PopupWindow", - "options":{ - "url":"{{entire_url('platformbiz/agreeproduct_auth.dspy')}}", - "params":{ - "agreedetailid":"{{params_kw.agreedetailid}}" - } - } - } - ], "browserfields": { "exclouded": ["id", "agreedetailid"], "alters": {} diff --git a/platformbiz/pb_acc.py b/platformbiz/pb_acc.py index fc0d8bb..0928dc9 100644 --- a/platformbiz/pb_acc.py +++ b/platformbiz/pb_acc.py @@ -24,7 +24,7 @@ async def get_balance(orgid): class PlatformBizAcc: """ """ - def build_accountset(self, sor, biz_order, biz_orderdetails): + async def build_accountset(self, sor, biz_order, biz_orderdetails): acconuntset = DictObject() accountset['action'] = biz_order.business_op accountset['owner'] = get_owner_orgid(sor, '0') @@ -109,5 +109,3 @@ class PlatformBizAccRecharge(PlatformBizAcc): a = Accounting(self) r = await a.do_accounting(sor) -async def PayAccounting(sor, *): - pass diff --git a/wwwroot/agree_prodclone.dspy b/wwwroot/agree_prodclone.dspy index 21faf07..8020c2b 100644 --- a/wwwroot/agree_prodclone.dspy +++ b/wwwroot/agree_prodclone.dspy @@ -1,7 +1,7 @@ -debug(f'params_kw=}') +debug(f'{params_kw=}') orgid = await get_userorgid() db = DBPools() -dbname = await get_module_dbname('platformbiz') +dbname = get_module_dbname('platformbiz') async with db.sqlorContext(dbname) as sor: await agree_products_clone(sor, orgid, params_kw.id) return UiMessage(title='product clone', message='product clone finished') From 7e247f308e0dad27aad689e7e0d0b89d573a10ec Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sat, 12 Apr 2025 19:48:51 +0800 Subject: [PATCH 5/5] bugfix --- platformbiz/getdbname.py | 8 ++++++++ platformbiz/pb_acc.py | 4 ++-- platformbiz/recharge.py | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 platformbiz/getdbname.py diff --git a/platformbiz/getdbname.py b/platformbiz/getdbname.py new file mode 100644 index 0000000..bde7030 --- /dev/null +++ b/platformbiz/getdbname.py @@ -0,0 +1,8 @@ +ifrom ahserver.serverenv import get_serverenv + +def get_dbname(): + f = get_serverenv('get_module_dbname') + if f is None: + raise Exception('get_module_dbname() not found') + return f('platformbiz') + diff --git a/platformbiz/pb_acc.py b/platformbiz/pb_acc.py index 0928dc9..32e6653 100644 --- a/platformbiz/pb_acc.py +++ b/platformbiz/pb_acc.py @@ -6,15 +6,15 @@ from sqlor.dbpools import DBPools from ahserver.serverenv import get_serverenv from accounting.accounting_config import Accounting from accounting.bizaccount import BizAccounting - from accounting.bill import write_bill +from getdbname import get_dbname async def get_owner_orgid(sor, orgid): return '0' async def get_balance(orgid): db = DBPools() - dbname = await rfexe('get_module_dbname', 'platformbiz') + dbname = get_dbname() async with db.sqlorContext(dbname) as sor: f = get_serverenv('getCustomerBalance') if f: diff --git a/platformbiz/recharge.py b/platformbiz/recharge.py index 989bc65..b0ece74 100644 --- a/platformbiz/recharge.py +++ b/platformbiz/recharge.py @@ -3,6 +3,7 @@ from appPublic.registerfunction import rfexe from appPublic.log import exception, debug from sqlor.dbpools import DBPools from pf_pay.ali_pay import Zhifubao_Pay +from getdbname import get_dbname from platformbiz.biz_order import add_recharge_log, add_recharge_order class Recharge: @@ -23,7 +24,7 @@ class Recharge: async def start_recharge_action(self, action): db = DBPools() - dbname = await rfexe('get_module_dbname', 'platformbiz') + dbname = get_dbname() async with db.sqlorContext(dbname) as sor: order = await add_recharge_order(sor, self.customerid, self.userid,