96 Commits

Author SHA1 Message Date
fba38804de fix(billing): submit_text→submit_label, wid→self, fix indentation
- submit_label is the correct InlineForm option (not submit_text)
- Use wid:self instead of explicit widget id
- binds was incorrectly indented inside options
2026-07-16 16:59:51 +08:00
f7f9581cd9 fix(billing): InlineForm target can't find sibling Tabular
InlineForm and Tabular are siblings in the same VBox. Default
getWidgetById() searches downward from the source widget, missing
siblings. Use 'app.' prefix to resolve from root.
2026-07-16 16:28:25 +08:00
8f09fc43df fix: remove updated_at from exchange_rate INSERT — column not yet added 2026-07-09 11:49:10 +08:00
5f752a6287 feat: BOC forex rate fetcher — /api/fetch_forex_rates.dspy 2026-07-09 11:46:35 +08:00
3f6c71b4d5 feat: multi-currency support — currency/exchange_rate tables + migration 2026-07-07 15:43:01 +08:00
b95a57fd34 fix: submit改用method:render,零JS代码 2026-07-01 11:56:49 +08:00
5b9619c850 fix: InlineForm submit绑定修正,wid+getWidgetById替代this 2026-06-30 17:52:22 +08:00
60e9e3c9b3 fix: Form→InlineForm, type→uitype:date, flex+cheight增大显示 2026-06-30 17:39:20 +08:00
a7d1aa170e fix: billing.ui用{% set %}变量替代"转义,避免Jinja2报错 2026-06-30 17:24:20 +08:00
d3310bfcc1 fix: 修正刷新目标为 app.sage_main_content
Sage 主内容区 ID 是 sage_main_content 而非 main_content。
global_menu.ui 确认: target = app.sage_main_content
2026-06-29 13:24:43 +08:00
982b0ad7a7 fix: 授信表单提交成功后自动刷新客户额度管理页面
set_credit_form.ui 添加 submited 事件绑定:
Form 提交成功 → 替换 main_content 为最新 credit_manage.ui
PopupWindow 同时因 dismiss_events:["submited"] 自动关闭

适用于新增授信和调整授信两个场景
2026-06-29 13:18:44 +08:00
bda9e7fc00 feat: credit_limit 加 grant_orgid 授予机构字段,支持多租户
credit_limit 新增 grant_orgid 字段,区分「客户所属机构(orgid)」
与「授予信用的机构(grant_orgid)」。多租户下,操作员为客户授信时:
- orgid = 客户机构ID
- grant_orgid = 操作员所属机构ID

修改:
- models/credit_limit.json: 加 grant_orgid 字段(VARCHAR(32), default 0) + 索引
- creditlimit.py:
  get_credit_stats/get_all_customer_credits: WHERE orgid → WHERE grant_orgid
  set_credit_limit: 加 grant_orgid 参数
- set_customer_credit.dspy: 写入时 orgid=客户orgid, grant_orgid=操作员orgid;
  三处UPDATE同步加 grant_orgid
- credit_summary.dspy: WHERE orgid → WHERE grant_orgid

get_my_credit_list(客户自看)保持按 cl.orgid 过滤不变。
2026-06-29 12:46:49 +08:00
b880673d79 fix: credit_manage 弹窗提交后不关闭导致重复提交
set_credit_form.ui 用了无效的 actiontype:'close' 来关闭弹窗,
表单提交后弹窗不关,操作员以为失败重复提交。

修复:
- set_credit_form.ui: 移除无效的 actiontype:'close' bind
- credit_manage.ui: popup_options.dismiss_events 加上'submited',
  Form 提交成功后自动关闭弹窗(2处弹窗:新增授信 + 调整)
2026-06-29 11:55:39 +08:00
77fd157ab7 fix: revert get_credit_limit.dspy to CRUD auto-generated, add to .gitignore
The file was manually rewritten in cd26eb1 instead of modifying the
CRUD definition (json/credit_limit.json) and regenerating.

Changes:
- Reverted get_credit_limit.dspy to xls2crud-generated version
  (includes JOINs for _text fields from model codes, DBFilter pattern)
- Re-generated index.ui via xls2crud
- Added auto-generated credit_limit files to .gitignore
  (index.ui, get/add/update/delete_credit_limit.dspy)
- Removed them from git tracking

Future modifications should go through json/credit_limit.json
or models/credit_limit.json, then regenerate.
2026-06-29 11:35:24 +08:00
cd26eb1852 fix: 重写get_credit_limit移除default_filterjson; set_customer_credit加try/except防Duplicate 500 2026-06-29 10:55:12 +08:00
4ca0243506 fix: 新增授信改为UPSERT,避免accountid唯一约束冲突;uuid改为getID 2026-06-29 10:51:16 +08:00
31ef3531c8 fix: add dismiss_events to all PopupWindows in accounting module
All PopupWindows loading Form widgets now include 'dismiss_events: ["cancel"]'
so the Form Cancel button properly closes the popup instead of doing nothing.

- credit_manage.ui: '新增授信' and '调整' popups
- error_accounting.ui: '报告错帐' popup
- myaccounts.ui: '充值' and '明细' popups

Ref: bricks-framework skill — PopupWindow dismiss_events pattern
2026-06-29 10:48:29 +08:00
40f037c517 fix: proxy_recharge.ui Form Cancel button now resets form fields
The Form's Cancel button dispatches a 'cancel' event but no handler
existed. Added a bind to call reset_data() when Cancel is clicked,
which clears the form fields (username and amount inputs).
2026-06-29 10:43:31 +08:00
d8cfd06c4c fix: 新增客户授信表单移除id字段,编辑时id通过URL query参数传递 2026-06-29 10:42:28 +08:00
Hermes Agent
503ae5434d fix: credit_limit.orgid存操作员orgid非客户orgid
- accountid已关联客户,orgid应为创建者(reseller)的orgid
- 修复credit_manage.ui查询0条记录问题
2026-06-24 17:41:27 +08:00
Hermes Agent
583babdd4a refactor: 移除手写CRUD dspy文件 - 改由build.sh自动生成
- 删除手写的add/update/delete_credit_limit.dspy
- json/credit_limit.json移除editable配置(使用默认CRUD API)
- 避免build.sh重新生成时覆盖手写代码
2026-06-24 12:36:54 +08:00
Hermes Agent
03bf5fcde0 fix: 修复datetime.now()错误 - dspy预加载datetime模块非datetime.datetime
- set_customer_credit.dspy: datetime.now() → datetime.datetime.now()
- add_credit_limit.dspy: 删除import, 用datetime.datetime.now()
- update_credit_limit.dspy: 删除import, 用datetime.datetime.now()
2026-06-24 12:07:19 +08:00
Hermes Agent
afb9dd5d88 fix: 修复授信表单提交 - 使用submit_url替代url, 移除手动buttons
- url → submit_url (Form正确的属性名)
- 移除手动buttons配置 (Form自动生成Submit/Reset工具栏)
- 移除method:POST (Form默认POST)
2026-06-24 11:36:00 +08:00
Hermes Agent
77624b1ef5 fix: 修正授信表单按钮bind target
- 保存按钮 submit target: self → credit_form
- 取消按钮 close target: self → PopupWindow
2026-06-24 10:56:04 +08:00
Hermes Agent
625c6b6873 fix: 修复新增客户授信表单submit无响应
- 添加 Form id: credit_form
- 保存按钮添加 submit binds
- 取消按钮添加 close binds
- Form 添加 submit 事件 bind 关闭弹窗
2026-06-24 10:42:52 +08:00
Hermes Agent
511f4b0720 fix: 充值金额用rules校验(min+number)替代无效的min属性 + 后端NaN防护 2026-06-23 15:29:51 +08:00
Hermes Agent
e17a9ac58b bugfix 2026-06-23 15:21:42 +08:00
Hermes Agent
dbbe553857 bugfix 2026-06-23 15:20:07 +08:00
Hermes Agent
b4ed9e1a8b fix: proxy_recharge 去掉submit_url,仅保留bind处理,修复双重提交导致充值两次的问题 2026-06-23 15:15:12 +08:00
Hermes Agent
febde765fa fix: proxy_recharge 充值金额添加min=0.01前端校验,防止负数提交 2026-06-23 15:05:30 +08:00
Hermes Agent
4cf4d0f6b4 fix: proxy_recharge actiontype urldata→urlwidget, 后端返回widget descriptor需用urlwidget模式渲染 2026-06-23 14:39:36 +08:00
Hermes Agent
bc58cbffda fix: 代客充值结果bind target加app.前缀(兄弟控件) 2026-06-23 14:27:19 +08:00
Hermes Agent
6f6ae6b66a bugfix 2026-06-23 14:13:42 +08:00
Hermes Agent
56ae61a992 fix: 授信表单改为客户名称查找模式 + 代客充值RBAC路径注册
1. 授信表单: accountid改为customer_name文本输入,后端先精确后模糊查找客户
2. 代客充值: load_path.py添加proxy_recharge.ui和proxy_recharge_submit.dspy路径
2026-06-22 17:26:03 +08:00
Hermes Agent
656fe2fc51 feat: 新增代客充值和错帐处理页面
- proxy_recharge.ui: Form表单输入客户用户名+充值金额
- proxy_recharge_submit.dspy: 查找用户+创建payment_log+调用recharge_accounting
- error_accounting.ui: 错帐处理管理页面(placeholder,含设计文档)
2026-06-18 13:33:16 +08:00
Hermes Agent
029a76f960 bugfix 2026-06-16 17:32:38 +08:00
414efa7e8f bugfix 2026-06-11 14:02:39 +08:00
72b42cb654 bugfix 2026-06-10 18:28:30 +08:00
7475b30527 bugfix 2026-06-10 17:59:36 +08:00
c4a869c9ff fix: billing 500 error (sqlExe returns list not dict) + enlarge popup windows (recharge 600x500, detail 700x550) 2026-05-31 14:36:27 +08:00
434cfe950c feat: billing - add stats summary and Excel download 2026-05-31 14:18:53 +08:00
f62e397c5a chore: remove vim swap file 2026-05-31 14:11:20 +08:00
c141134001 fix: use this.render(params) instead of this.loadData for Tabular (DataViewer API) 2026-05-31 14:11:14 +08:00
dd12be3833 bugix 2026-05-31 14:08:52 +08:00
7fbc826330 bugix 2026-05-31 14:06:32 +08:00
1029078b56 bugix 2026-05-31 14:05:05 +08:00
0080bbd7c4 fix: IconBar click not working - add id and reference in binds instead of self 2026-05-31 14:00:08 +08:00
8d447b90ea refactor: billing - use Form title, Tabular always present, form submit loadData via script 2026-05-31 13:56:56 +08:00
6d3dcf2db9 fix: billing layout - wrap Form in fixed-height VBox, Tabular as filler 2026-05-31 13:46:33 +08:00
eec08d684c bugfix 2026-05-31 13:42:07 +08:00