diff --git a/account_reconcile_compassion_ce/models/bank_statement_line.py b/account_reconcile_compassion_ce/models/bank_statement_line.py index 54611896..10d1723f 100644 --- a/account_reconcile_compassion_ce/models/bank_statement_line.py +++ b/account_reconcile_compassion_ce/models/bank_statement_line.py @@ -49,8 +49,12 @@ def _get_manual_reconcile_vals(self): def _reconcile_move_line_vals(self, line, move_id=False): vals = super()._reconcile_move_line_vals(line, move_id=move_id) - vals["product_id"] = line.get("product_id", (False,))[0] - vals["contract_id"] = line.get("contract_id", (False,))[0] + vals["product_id"] = ( + line.get("product_id")[0] if line.get("product_id") else False + ) + vals["contract_id"] = ( + line.get("contract_id")[0] if line.get("contract_id") else False + ) return vals def _check_line_changed(self, line): diff --git a/account_statement_import_compassion_ee/__manifest__.py b/account_statement_import_compassion_ee/__manifest__.py index be4ef500..83e49adb 100644 --- a/account_statement_import_compassion_ee/__manifest__.py +++ b/account_statement_import_compassion_ee/__manifest__.py @@ -35,8 +35,7 @@ "category": "Finance", "website": "https://github.com/CompassionCH/compassion-accounting", "depends": [ - # OCA/queue - "queue_job", + "queue_job_optional", # OCA/bank-statement-import "account_bank_statement_import_camt", # Odoo/enterprise diff --git a/account_statement_import_compassion_ee/wizards/account_statement_import.py b/account_statement_import_compassion_ee/wizards/account_statement_import.py index eb9a5843..91388af1 100644 --- a/account_statement_import_compassion_ee/wizards/account_statement_import.py +++ b/account_statement_import_compassion_ee/wizards/account_statement_import.py @@ -16,11 +16,12 @@ def _import_file(self): _logger.info( "Launching reconciliation of %d statement lines", len(line_to_reconcile) ) - line_to_reconcile.with_delay( + line_to_reconcile.with_delay_sh( + "_cron_try_auto_reconcile_statement_lines", channel="root.accounting", priority=100, description="Auto Reconcile statement lines", - )._cron_try_auto_reconcile_statement_lines() + ) else: _logger.warning("No statement lines to reconcile") return res diff --git a/recurring_contract/__manifest__.py b/recurring_contract/__manifest__.py index 266119ed..1f0f6536 100644 --- a/recurring_contract/__manifest__.py +++ b/recurring_contract/__manifest__.py @@ -40,7 +40,7 @@ "account_payment_order", # OCA/bank-payment, "base_automation", "account_payment_partner", # OCA/bank-payment, - "queue_job", # OCA/queue, + "queue_job_optional", "utm", ], "data": [ @@ -59,7 +59,6 @@ "data/pricelist_item_base_automation.xml", "data/daily_invoicer_cron.xml", "data/utm_data.xml", - "data/queue_job.xml", "security/ir.model.access.csv", ], "installable": True, diff --git a/recurring_contract/data/queue_job.xml b/recurring_contract/data/queue_job.xml deleted file mode 100644 index e39f7a40..00000000 --- a/recurring_contract/data/queue_job.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - accounting - - - - - - - _generate_invoices - - - diff --git a/recurring_contract/models/contract_group.py b/recurring_contract/models/contract_group.py index 6f142e0f..6c754ac1 100644 --- a/recurring_contract/models/contract_group.py +++ b/recurring_contract/models/contract_group.py @@ -275,19 +275,26 @@ def button_generate_invoices(self): def generate_invoices(self): invoicer = self.env["recurring.invoicer"].create({}) for group in self: - group.with_delay( + group.with_delay_sh( + "_generate_invoices", + invoicer.id, + channel="root.accounting", priority=100, identity_key=self._name + ".generate_invoices." + str(group.id), - )._generate_invoices(invoicer) + ) return invoicer - def _generate_invoices(self, invoicer): + def _generate_invoices(self, invoicer_id=False): """Checks all contracts and generate invoices if needed. Create an invoice per contract group per date. """ _logger.info( f"Starting generation of invoices for contract groups : {self.ids}" ) + if invoicer_id: + invoicer = self.env["recurring.invoicer"].browse(invoicer_id) + else: + invoicer = self.env["recurring.invoicer"].create({}) # Set to track processed invoices to avoid duplication processed_invoices = set() @@ -326,7 +333,7 @@ def _generate_invoices(self, invoicer): # Refresh state to check whether invoices are missing in some contracts self.mapped("active_contract_ids")._compute_missing_invoices() _logger.info("Process successfully generated invoices") - return True + return invoicer def _calculate_start_date_and_offset(self): """ diff --git a/recurring_contract/models/recurring_contract.py b/recurring_contract/models/recurring_contract.py index 61d253b1..c9948631 100644 --- a/recurring_contract/models/recurring_contract.py +++ b/recurring_contract/models/recurring_contract.py @@ -383,11 +383,12 @@ def generate_invoices(self): self.mapped("group_id").generate_invoices() def cancel_contract_invoices(self): - self.with_delay( + self.with_delay_sh( + "_cancel_invoices", channel="root.accounting", priority=500, identity_key=self._name + ".cancel_contract_invoices." + str(self.ids), - )._cancel_invoices() + ) @api.onchange("partner_id") def on_change_partner_id(self):