-
f9408e12e2
simplify: 去掉params_mapping,id行数据本身已传
main
yumoqing
2026-08-05 19:15:40 +08:00
-
8a22ab961e
simplify: DSPY直接读id,params_mapping透传,不重命名
yumoqing
2026-08-05 19:14:22 +08:00
-
0144129ec1
fix: 参数名改用mkt_id避免与行数据marketing_id字段冲突,照抄产品明细params_mapping模式
yumoqing
2026-08-05 18:14:31 +08:00
-
e311a42e99
fix: script bind加诊断—若${id}$未替换则alert提示
yumoqing
2026-08-05 17:54:51 +08:00
-
9dbb44fbd9
fix: 生成促销码改用script+fetch POST传参,绕过urlwidget/PopupWindow参数传递问题
yumoqing
2026-08-05 17:53:59 +08:00
-
763e41b7eb
fix: 生成促销码绑点改用params_mapping传marketing_id,修复${id}$占位符未替换导致'Marketing not found'
yumoqing
2026-08-05 16:52:50 +08:00
-
1e771df6e5
feat: 营销方案CRUD添加「生成促销码」工具按钮 — 选中方案后一键生成该用户的促销码
yumoqing
2026-08-05 16:26:42 +08:00
-
7dbac3bfdb
fix: use env.get_module_dbname('sage') instead of hardcoded 'sage'
yumoqing
2026-07-15 14:02:25 +08:00
-
0d9054bc94
fix: gitignore精确到discount_promo_code_list避免误伤自定义页面
yumoqing
2026-07-14 17:36:01 +08:00
-
49cae8a64d
chore: 移除xls2ui生成文件,wwwroot子目录加入gitignore
yumoqing
2026-07-14 17:24:47 +08:00
-
3d1fac97b0
fix: load_path补充customer_sale_assign_form权限
yumoqing
2026-07-14 16:08:24 +08:00
-
c2b0b286a5
fix: load_path补充marketing_discount_setting权限注册
yumoqing
2026-07-14 16:07:18 +08:00
-
d05bd3ec6f
fix: free customer name empty when org missing; use LEFT JOIN + COALESCE fallback
yumoqing
2026-07-14 12:00:53 +08:00
-
5b789995a6
fix: get_reseller_sales统一按当前机构过滤销售列表
yumoqing
2026-07-14 11:39:34 +08:00
-
6c0f5a6572
fix: customerid改存orgid; init_free按机构去重; 查询回JOIN organization
yumoqing
2026-07-14 11:18:13 +08:00
-
5626e1b516
fix: 自由客户分配-客户名JOIN users; 销售下拉COALESCE username防NULL
yumoqing
2026-07-14 11:15:08 +08:00
-
bec3e8f583
fix: customerid显示机构名; sale_id显示username; editable嵌套修复
yumoqing
2026-07-14 11:10:49 +08:00
-
429cee6e9d
fix: owner (org=0) can see all customers and sales across orgs
yumoqing
2026-07-14 10:50:59 +08:00
-
1e0081862d
fix: use empty string instead of None for NOT NULL sale_id/promo_code_id
yumoqing
2026-07-14 10:45:07 +08:00
-
f6c29c8c38
fix: use get_module_dbname for discount db in init_free_customers
yumoqing
2026-07-14 10:44:23 +08:00
-
e4b746be5c
fix: init_free_customers allow owner org, use users.orgid as resellerid
yumoqing
2026-07-14 10:41:52 +08:00
-
9d3c4e0adf
feat: init_free_customers.dspy + button in free_customer_assign
yumoqing
2026-07-14 10:38:02 +08:00
-
1e99ad2cc8
fix: hide resellerid in customer_bind list, add menu entries for free_customer_assign + customer_reassign
yumoqing
2026-07-13 18:36:51 +08:00
-
029fd91d79
feat: customer assignment - free_customer_assign + customer_reassign pages, register hook bind_type=3, sales list filter
yumoqing
2026-07-13 17:56:05 +08:00
-
f801507961
feat: discount promo code marketing dropdown filter by current org
yumoqing
2026-07-13 16:39:04 +08:00
-
bc9dcb25f7
chore: remove vim swap file
yumoqing
2026-07-13 14:33:51 +08:00
-
bf975ca9a7
feat: created_by/sale_id显示username; 促销码logined_userid过滤只显自己创建的
yumoqing
2026-07-13 14:33:45 +08:00
-
a71c11ecf0
fix: new_data_url从editable提升到params顶层,xls2ddl模板不认嵌套editable
yumoqing
2026-07-13 13:38:29 +08:00
-
690e36d4ff
fix: 营销方案created_by/促销码sale_id为空 — ServerEnv()→request._run_ns
yumoqing
2026-07-13 11:54:24 +08:00
-
6c8d23b986
refactor: resellerid → auto from get_userorgid(), remove from codes
yumoqing
2026-07-09 13:39:10 +08:00
-
de1e873d91
feat: add get_min_supplier_discount and get_min_distributor_discount
yumoqing
2026-07-06 17:15:32 +08:00
-
8b054f01d1
fix: bind_customer env=ServerEnv()→request._run_ns
yumoqing
2026-07-06 15:11:34 +08:00
-
34a2fecc99
fix: from discount.init import bind_customer, 绕过dspy bare function 查找失败
yumoqing
2026-07-06 14:55:32 +08:00
-
9a8d7f10aa
fix: dspy缺少return result导致返回None
yumoqing
2026-07-06 14:49:10 +08:00
-
2bbe82fd23
fix: 用dspy原生bare function(get_user/entire_url/bind_customer),去掉env间接调用
yumoqing
2026-07-06 14:41:20 +08:00
-
79494622b9
fix: env = request._run_ns 替代 ServerEnv(),修复dspy中get_user返回None
yumoqing
2026-07-06 14:39:44 +08:00
-
5762e1c361
fix: 登录URL /rbac/user/login -> /rbac/user/login.ui
yumoqing
2026-07-06 14:34:22 +08:00
-
bb5cb57d89
refactor: keep get_min_product_discount in discount, move llm_id_to_product_id to product_management
yumoqing
2026-07-06 14:23:57 +08:00
-
10fe38b4e0
feat: add get_min_product_discount and llm_id_to_product_id
yumoqing
2026-07-06 14:19:12 +08:00
-
183263eabd
fix: generate_promo_code 用 request._run_ns 替代 ServerEnv()
yumoqing
2026-07-06 13:37:54 +08:00
-
9bb5c9e506
促销码扫码流程: dspy端点改为UI公开入口,登录后绑定并跳转主页
yumoqing
2026-07-06 13:34:25 +08:00
-
ceb997da09
fix: generate_promo_qr/discount_qrcode 用 request._run_ns 替代 ServerEnv() 修复 entire_url 为 None 的500错
yumoqing
2026-07-06 08:09:10 +08:00
-
e06339f95d
feat: 客户归属管理——列出机构客户+分配销售
yumoqing
2026-07-05 14:44:40 +08:00
-
62f07bc8bb
fix: before_insert hook自动填充sale_id+resellerid; sync generate_promo_qr到site-packages
yumoqing
2026-07-05 14:24:13 +08:00
-
ab9dc4f730
fix: promote.dspy最终版——去binds避免服务端script解析,用request._run_ns.params_kw
yumoqing
2026-07-05 11:09:33 +08:00
-
3797ae1686
fix: promote.dspy加回binds用request._run_ns
yumoqing
2026-07-05 11:08:41 +08:00
-
f50284df3e
fix: promote.dspy用request._run_ns.params_kw替代params_kw
yumoqing
2026-07-05 11:08:02 +08:00
-
c5778ba79b
debug: 去params_kw直接返回硬编码表单
yumoqing
2026-07-05 11:07:26 +08:00
-
fc73c7d2d6
debug: promote.dspy去binds排查500
yumoqing
2026-07-05 11:06:23 +08:00
-
a5c01d6bed
fix: restore promote.dspy完整表单验证JSON解析
yumoqing
2026-07-05 11:05:37 +08:00
-
e83a9ae414
debug: 回退promote.dspy到最小化版本测试
yumoqing
2026-07-05 11:03:35 +08:00
-
7daff0fcd6
fix: QR URL改为promote.dspy; 恢复完整表单
yumoqing
2026-07-05 11:02:41 +08:00
-
2d6fa91ec5
debug: promote.dspy最小化排除语法错误
yumoqing
2026-07-05 11:00:37 +08:00
-
26efde3051
fix: promote页移到RBAC any角色(无需登录),客户扫码可用
yumoqing
2026-07-05 10:58:29 +08:00
-
4b7e501ee0
fix: promote.dspy替代promote.ui绕过模板引擎500
yumoqing
2026-07-05 10:42:36 +08:00
-
bea89dadd5
fix: promote.ui加Jinja2注释标记强制走模板引擎路径
yumoqing
2026-07-05 10:40:45 +08:00
-
5c2079a2f1
fix: promote.ui去掉Jinja2 entire_url避免独立页面上下文缺失
yumoqing
2026-07-05 10:39:09 +08:00
-
0ceb2b84c1
fix: QR生成移到async Python函数,修复DSPY中async/await不可用问题
yumoqing
2026-07-05 10:36:12 +08:00
-
0256583cc1
fix: discount_promo_code sale_id改为nullable避免CRUD自动生成add报500
yumoqing
2026-07-05 10:32:11 +08:00
-
85f9979051
fix: in_plan整数比较==1而非=='1'
yumoqing
2026-07-04 20:35:23 +08:00
-
8173fb603b
fix: title用json.dumps整个字符串避免空值破坏JSON
yumoqing
2026-07-04 20:34:30 +08:00
-
c3cad2140f
fix: 用json.dumps包裹所有动态值确保JSON安全,in_plan用字符串比较'1'
yumoqing
2026-07-04 20:33:56 +08:00
-
ad56bd4b37
fix: index.ui literal \t → actual TAB for valid JSON output
yumoqing
2026-07-04 20:25:17 +08:00
-
90e2fd0c0c
fix: get_discount_info查询discount_marketing表而非discount表
yumoqing
2026-07-04 20:23:07 +08:00
-
cd69111655
fix: add p.id to SELECT for sqlPaging default ORDER BY id
yumoqing
2026-07-04 19:59:53 +08:00
-
da88b99ca1
fix: hardcode base_discountid to avoid sqlExe KeyError in DSPY
yumoqing
2026-07-04 19:58:55 +08:00
-
9645d397b6
fix: remove ns['sort'] to avoid sqlPaging outer ORDER BY conflict
yumoqing
2026-07-04 19:56:56 +08:00
-
9c7a39e519
fix: remove inner ORDER BY to prevent sqlPaging conflict
yumoqing
2026-07-04 19:55:48 +08:00
-
7a267558a3
fix: DSPY sort alias pc.name→pc_name for sqlPaging compatibility
yumoqing
2026-07-04 19:53:43 +08:00
-
bc8af7a4cf
fix: 产品折扣设置显示基准折扣(1.0)并标记方案内产品 - get_discount_setting_products: LEFT JOIN基准折扣方案_HeaX, COALESCE优先方案折扣, 新增in_plan字段 - get_products_with_discount.dspy: 同步加基准折扣COALESCE - index.ui: 折扣默认1.0, 新增'✓方案内'标记列 - save_discount: old_discount默认1.0
yumoqing
2026-07-04 19:49:02 +08:00
-
51a1616b9f
fix: restore IS NULL OR * to cover both conventions; keep direct dd.discount without GROUP BY
yumoqing
2026-07-03 18:06:56 +08:00
-
c39e54f379
fix: dspy same fix — remove IS NULL, remove GROUP BY, use dd.discount directly
yumoqing
2026-07-03 18:05:41 +08:00
-
5e90686fbd
fix: base discount query — customerid default is '*' not NULL, remove IS NULL and unnecessary GROUP BY
yumoqing
2026-07-03 18:05:14 +08:00
-
33cd1d287d
feat: 营销方案产品折扣设置(独立于普通折扣方案)
yumoqing
2026-07-03 16:05:21 +08:00
-
ae6c547aff
fix: CRUD endpoint return format - remove json.dumps, use widgettype format
yumoqing
2026-07-03 14:50:31 +08:00
-
53eaa966ae
feat: 客户归属支持多分销商 + 阶梯折扣表
yumoqing
2026-06-30 15:45:15 +08:00
-
9d4c83a25f
fix: 客户折扣不得高于全部用户折扣
yumoqing
2026-06-30 14:20:46 +08:00
-
1b20b28e7e
fix: 营销方案产品明细指向discount_setting(同折扣方案subtable模式)
yumoqing
2026-06-30 11:40:40 +08:00
-
9f4901c945
fix: 无默认方案时创建客户方案报错提示
yumoqing
2026-06-30 11:35:25 +08:00
-
d08f6fb289
fix: 删除折扣产品明细菜单; create校验customerid并从默认方案复制detail
yumoqing
2026-06-30 11:30:23 +08:00
-
02f00c6739
feat: 顶部显示折扣名称和客户名称
yumoqing
2026-06-29 17:02:57 +08:00
-
7e3af2d9b8
fix: 所有Message加timeout, NaN过滤
yumoqing
2026-06-29 16:59:16 +08:00
-
34843b6634
fix: 过滤NaN/nan/null/空值防MySQL报错
yumoqing
2026-06-29 16:58:37 +08:00
-
f14eb4f704
fix: UiFloat用urlwidget+datawidget:self; dspy对比old_discount跳过无变化
yumoqing
2026-06-29 16:55:07 +08:00
-
92e1ce6dbb
fix: focusin触发setup, setInterval扫描input挂DOM blur
yumoqing
2026-06-29 16:39:52 +08:00
-
817cb354da
fix: Jinja2变量避免"转义, script用save_url+disc_id模板变量
yumoqing
2026-06-29 16:35:13 +08:00
-
885b915d28
fix: JSON闭合VScrollPanel, urlwidget→script+fetch读input值
yumoqing
2026-06-29 16:32:02 +08:00
-
b3dabcf0f6
fix: 用widgettype:UiFloat+urlwidget替代Form+JS
yumoqing
2026-06-29 16:27:48 +08:00
-
d536490599
fix: setInterval轮询替代setTimeout,等cell就绪再创建UiFloat
yumoqing
2026-06-29 16:21:58 +08:00
-
18eea5b5f9
fix: JS直接new bricks.UiFloat+blur事件,去Form
yumoqing
2026-06-29 16:21:21 +08:00
-
c126ca9021
wip: Form→VBox+uitype:float
yumoqing
2026-06-29 16:20:12 +08:00
-
3896a8145e
fix: Form简化,margin:0,padding:0,去id,精简script
yumoqing
2026-06-29 16:18:35 +08:00
-
3bafa4425a
fix: Form添加padding:0 12px与header对齐
yumoqing
2026-06-29 16:15:25 +08:00
-
65bbe39477
fix: changed→blur, 移除css:childrensize
yumoqing
2026-06-29 16:11:27 +08:00
-
0eba657ce4
fix: 移除ORDER BY
yumoqing
2026-06-29 15:57:57 +08:00
-
0c5f0cfcc3
fix: sort改为list格式
yumoqing
2026-06-29 15:56:30 +08:00
-
52d48c964a
fix: ORDER BY改用$参数化
yumoqing
2026-06-29 15:56:09 +08:00
-
dafa2d5eb2
fix: request._run_ns.params_kw
yumoqing
2026-06-29 15:30:14 +08:00
-
6e6a6a14f0
fix: discountid改用request._params_kw(同accounting模块方式)
yumoqing
2026-06-29 15:28:53 +08:00
-
6000ea7b01
fix: discountid改用request.query.get, aiohttp标准方式
yumoqing
2026-06-29 15:26:11 +08:00