企业 POS / 电子价签

Odoo 企业版 POS 接 Pricer 电子价签为什么不是“商品改价后推个 API”而已:鉴权、批量补丁与展示价计算讲透

pos_pricer 把电子价签当成异步同步系统来处理:先拿 JWT,再按 store 批量 patch 商品和标签,还要精算含税/未税展示价与促销旧价。

POS 企业
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

电子价签最难的从来不是“调通接口”,而是门店有成百上千个商品变动时,怎样既不把 API 打爆,又能让价签上的价格、税和促销信息保持可信。

核心链路

  1. pricer_store.py 里的 setup_requests_session() 先去 auth URL 拿 JWT,再把 token 写进 session header。企业版显然把 Pricer 当成需要会话管理的外部系统,而不是一次性匿名调用。
  2. PricerStore 会分别计算 auth_urlcreate_or_update_products_urllink_tags_url。这三个 URL 分离得很清楚:鉴权、商品同步、标签关联不是一个接口包打天下。
  3. _update_pricer_tags() 不会在每次字段变更时立刻推送,而是先找出 pricer_product_to_create_or_updatepricer_product_to_link 的记录,再按 store 批量 PATCH。这正是门店级集成需要的节流策略。
  4. product_product.pywrite() 只要命中 Pricer 相关字段,就把商品标记为待同步;真正生成 payload 时 _get_create_or_update_body() 会把商品名、条码、税后展示价、促销旧价、规格标签、库存等整理成统一 JSON。
  5. compute_prices() 还专门处理“税含价与标价一致性”:如果税后总价与原价一致就展示含税,否则展示未税。对于电子价签,这一步直接决定门店看到的数字是不是符合当地习惯。

关键源码位置

  • /home/ubuntu/odoo-temp/enterprise/pos_pricer/models/pricer_store.py
  • /home/ubuntu/odoo-temp/enterprise/pos_pricer/models/product_product.py

容易误解的地方

  • 误区一:改价后立刻同步才叫实时。门店硬件集成反而更需要批量、异步和去抖。
  • 误区二:价签上就显示 lst_price。源码还会算税、促销价和旧价。
  • 误区三:删除标签只影响 Odoo 记录。unlink_label() 还会调用远端 API 解除绑定。

实战注意事项

  • 做门店大批量调价时,先接受“标记待同步,再批量 patch”的节奏,别强求逐条实时。
  • 接入前要和财税团队确认价签习惯展示含税还是未税,避免 API 通了但门店仍认为价格错了。
  • 如果同步失败,先看 last_update_status_message,它已经把 HTTP 失败和凭证问题区分开了。

结语

企业版这些代码共同说明一件事:真正可上线的业务流程,靠的不是“页面上看起来能点通”,而是权限、状态、时机、对账口径和跨模块回写都被收紧。理解这些边界,实施和二开时就不容易走进“功能演示能跑、真实业务一用就散”的坑。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。