Odoo で 2 つのデータベース間の同期を行っています。リモートで問題がなければ、両側で同期します。ただし、リモートで問題が発生した場合、ローカル データベースの変更はコミットされますが、リモートはコミットされません。つまり、データベースが同期しなくなります。
ローカル データベースに変更を加える方法はありますか。リモート データベースを同期しようとして何か問題が発生した場合は、ローカル データベースを以前の状態にロールバックします。
この方法があります:
@api.one
def order_process_now(self):
servers = self._synchro_before_sale()
# Process local order
inv_id = self.action_invoice_create()
if inv_id:
inv = self.env['account.invoice'].search([('id', '=', inv_id)])
inv.signal_workflow('invoice_open')
for picking in self.picking_ids:
picking.force_assign()
picking.action_done()
# Process remote orders
self._remote_order_action('order_process_now', servers)
ご覧のとおり、2 つの部分に分かれています。最初にローカル データベースに変更を加え、次にリモートに変更を加えます (ラッパーを使用) xmlrpclib
。erppeek
このメソッドを 1 つのトランザクションとして作成するにはどうすればよいですか?メソッドの実行中に何か問題が発生した場合、データベースへの変更はロールバックされますか?