Odoo V16 API创建账户付款问题:PHP导入数据未显示客户余额
解决Odoo V16 API创建未分配付款不显示客户余额的问题
你遇到的问题根源在于API创建的付款处于草稿状态,未完成过账,所以不会更新客户的应付余额;而手动创建时你大概率完成了过账操作(界面创建后通常需要点击「过账」,或部分配置下会自动过账)。
修复步骤:
1. 补充必要参数(可选但推荐)
手动创建付款时Odoo会自动填充默认参数,API调用需要显式指定:
payment_method_id:付款方式ID,可在Odoo后台「会计→配置→付款方式」中查看对应IDcurrency_id:货币ID,默认取公司货币,显式指定更稳妥
更新后的创建代码示例:
$payment_id = $odoo->get('account.payment', 'create', array(array( 'date' => date('Y-m-d', $invoice['date']), 'extract_state' => 'no_extract_requested', 'journal_id' => 8, 'partner_type' => 'customer', 'payment_type' => 'inbound', 'partner_id' => $invoice['partner_id'], 'amount' => abs($invoice['amount']), 'payment_method_id' => 1, // 替换为你的手动收款方式ID 'currency_id' => 1, // 替换为你的公司货币ID )));
2. 创建后触发过账操作
Odoo的付款需要过账(posted)才会影响客户余额,API创建的付款默认是草稿(draft)状态,需调用action_post方法完成过账:
// 创建付款后调用过账方法 $odoo->get('account.payment', 'action_post', array(array($payment_id)));
3. 处理付款审批(若有配置)
如果Odoo后台开启了「付款需要审批」(路径:会计→配置→设置),API创建的付款需要先审批再入账,需先调用action_approve方法:
// 先审批付款 $odoo->get('account.payment', 'action_approve', array(array($payment_id))); // 再过账 $odoo->get('account.payment', 'action_post', array(array($payment_id)));
完成以上操作后,付款会正式入账,客户的应付余额就会正常显示该笔付款记录。
内容的提问来源于stack exchange,提问作者Jason Smith
相关产品推荐
相关产品推荐

