通过自动操作进行 SDD 支付 (Odoo v13)

SDD Payment via Automated Action (Odoo v13)

不幸的是,Odoo 已经从 v12 到 v13 移除了自动 SSD 支付,这对我来说至关重要。因此,我尝试通过自动操作重现该行为,我猜已经走得很远了。

我创建了一个自动操作,它监视草稿中的所有发票并在发票从草稿设置为非草稿时运行 python 代码。但不幸的是,我一尝试 post 发票就收到错误消息:

“数据库提取缺少 ids (('10',)) 并且有额外的 ids ((10,)),可能是由于先前请求中的类型不一致造成的”

据我所知,这与类型转换有关,但由于我是 python & odoo 的新手,我不确定如何正确转换 odoo 数据类型。有人有提示吗?

这是应该执行的 python 代码:

payment = env['account.payment'].create({
     'payment_method_id' : '6',
     'partner_id': record.partner_id.id,
     'journal_id' :     '10',
     'amount' : record.amount_residual
})

ID 被仔细检查并 link 到正确的条目:

请在下面找到应用于自动操作的当前域。 非常感谢任何提示或帮助!

非常感谢。 最好的祝福, 克里斯蒂安

CBfac

many2one 字段中,您必须分配 ID

代码更正:

payment = env['account.payment'].create({
     'payment_method_id' : 6,
     'partner_id': record.partner_id.id,
     'journal_id' : 10,
     'amount' : record.amount_residual
})

对于需要在 Odoo v13 中自动 SDD 付款的每个人,这里是对我有用的自动操作(还有一个,感谢@Dipen Sah 的帮助):

模型:account.move 触发器:更新时 操作:执行 python 代码

域(更新前):

["&","&","&","&",["sdd_paying_mandate_id","=",False],["partner_id.sdd_mandate_ids","!=",False],["type","=","out_invoice"],["invoice_payment_state","=","not_paid"],["state","=","draft"]]

域(更新后):

["&","&","&","&",["sdd_paying_mandate_id","=",False],["partner_id.sdd_mandate_ids","!=",False],["type","=","out_invoice"],["invoice_payment_state","=","not_paid"],["state","!=","draft"]]

Python 要执行的代码:

payment = env['account.payment'].create({
     #'name' : env['ir.sequence'].next_by_code('account.payment.customer.invoice'),
     #'payment_type': 'inbound',
     #'partner_type' : 'customer',
     'payment_method_id' : 6,
     'partner_id': record.partner_id.id,
     'journal_id' :     10,
     'amount' : record.amount_residual}).post()

您必须更新 python 代码中的日志和 payment_method ID 以匹配您的 ID,以便正确地执行操作 运行。

欢迎任何改进and/or反馈。

此致, 克里斯蒂安