Odoo POS餐厅功能测试和问题 - xiaohao0576/odoo-doc GitHub Wiki

结账的时候报错,提示配置中不允许的支付方式

ValidationError: The payment method selected is not allowed in the config of the POS session 问题原因: 订单是从平板电脑的销售点创建的,付款的时候,使用的又是不同的收银台,比如餐厅前台。当餐厅前台和平板电脑的收银台的支付方式不一致时,就会触发这个报错,点击查查源码

    @api.constrains('payment_method_id')
    def _check_payment_method_id(self):
        for payment in self:
            if payment.payment_method_id not in payment.session_id.config_id.payment_method_ids:
                raise ValidationError(_('The payment method selected is not allowed in the config of the POS session.'))

验证错误:您无法编辑打印订单的付款

ValidationError(_('You cannot edit a payment for a printed order.')) 出现这种情况,原因是在结账前提前打印了账单给客户,导致pos_order_id.nb_print > 0,这时如果订单金额修改,就会触发这个错误。这个改动是2024年9月13日才更新的,我认为这是个bug,点击查看,如果不是真正的结账,而是提前打印账单, nb_print的计数不应该被更新。

    @api.constrains('amount')
    def _check_amount(self):
        for payment in self:
            if payment.pos_order_id.state in ['invoiced', 'done']:
                raise ValidationError(_('You cannot edit a payment for a posted order.'))
            elif payment.pos_order_id.nb_print > 0:
                raise ValidationError(_('You cannot edit a payment for a printed order.'))