通过自动操作进行 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 到正确的条目:
- payment_method_id '6' = 我的银行账户
- journal_id '10' = SDD 付款
请在下面找到应用于自动操作的当前域。
非常感谢任何提示或帮助!
非常感谢。
最好的祝福,
克里斯蒂安
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反馈。
此致,
克里斯蒂安
不幸的是,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 到正确的条目:
- payment_method_id '6' = 我的银行账户
- journal_id '10' = SDD 付款
请在下面找到应用于自动操作的当前域。 非常感谢任何提示或帮助!
非常感谢。 最好的祝福, 克里斯蒂安
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反馈。
此致, 克里斯蒂安