Odoo 企业版 POS 结清客户欠款为什么不是“前台补收一笔钱”而已:special products、总欠款口径与分客户对账链路讲透
很多团队以为 POS 里的 settle due 只是把客户未结款项再收一次。但企业版 pos_settle_due 真正补的是一条受控结算链:前台先按
TOPIC PICKS
很多团队以为 POS 里的 settle due 只是把客户未结款项再收一次。但企业版 pos_settle_due 真正补的是一条受控结算链:前台先按
很多人以为 Odoo POS 小票上的二维码只是一个“补开电子发票入口”,但源码里其实设计了两层访问边界:一层是基于 order access_token 的直达入口,另一层是通过 pos_reference、date_order、ticket_code 三元组找回订单。本文结合 controllers/main.py 与 receipt 源码讲清:为什么这套机制既方便顾客补票,又不会把 POS 订单公开成随便可猜的网页。
很多人看到 POS 订单毛利一开始是 0,或者和最终报表不一致,就以为 Odoo 算错了。其实源码里明确区分了实时成本计算和 session closing 后补算:当商品是 storable 且成本法是 FIFO/AVCO,而库存更新又延后到关班时,系统会先让毛利保持未完成状态。本文讲清 `_compute_total_cost_in_real_time()`、`_compute_total_cost_at_session_closing()` 和 `is_total_cost_computed` 背后的真实边界。
门店常把 POS 销售明细报表当作“把每笔订单列出来”的清单,但 Odoo 真正生成的是一份带会计语义的会话摘要:按品类汇总商品、拆出退款区、拼上 cash opening 与 cash in/out,并计算 money counted、final count、money difference。本文结合 report_sale_details.py 源码,讲清为什么这张报表和订单列表对不上时不一定是 bug。
许多门店把 POS 现金控制理解成“开班填个金额、收银途中开钱箱、关班点一下差异”,但 Odoo 真正在维护的是面额配置、cash in/out 原因、statement line 记账与删除权限边界。本文结合 point_of_sale 源码讲清:为什么现金存取必须写 reason,为什么删除 cash move 不是谁都能做,以及钱箱面额配置如何影响前台点钞体验而不直接等于会计分录。
很多人把 POS 刷卡机理解成“点一下、成功或失败”,但 Odoo 真正在维护的是一条前端支付行状态机:发送请求、等待取消、重试、完成、冲正,以及在必要时自动验单。本文结合 point_of_sale 与 pos_adyen 源码,讲清支付终端为什么不能简单等同于一笔普通付款,以及门店最常见的重复扣款、取消失败、已扣款未结单该怎么排。
很多人以为 POS 接销售单只是把 SO 行带到前台收款,但 Odoo 真正在处理的是“已付多少、还能在 POS 收多少、收完以后发货和下游 move 要不要重算”。本文结合 pos_sale 源码,讲清 sale.order.amount_unpaid、POS 付款与 down payment 回写、以及确认后为什么要重算 waiting picking 的需求量。