Merge pull request #260 from Tecnativa/10.0-imp-cron_limit

[10.0] contract: allow to limit records on cron
This commit is contained in:
Pedro M. Baeza
2019-01-15 11:02:32 +01:00
committed by GitHub
3 changed files with 10 additions and 5 deletions

View File

@@ -9,7 +9,7 @@
{
'name': 'Contracts Management - Recurring',
'version': '10.0.4.2.1',
'version': '10.0.4.3.0',
'category': 'Contract Management',
'license': 'AGPL-3',
'author': "OpenERP SA, "

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding='UTF-8'?>
<odoo>
<odoo noupdate="1">
<record model="ir.cron" id="account_analytic_cron_for_invoice">
<field name="name">Generate Recurring Invoices from Contracts</field>

View File

@@ -260,13 +260,18 @@ class AccountAnalyticAccount(models.Model):
return invoice
@api.multi
def recurring_create_invoice(self):
def recurring_create_invoice(self, limit=None):
"""Create invoices from contracts
:param int limit:
Max of invoices to create.
:return: invoices created
"""
invoices = self.env['account.invoice']
for contract in self:
if limit and len(invoices) >= limit:
break
ref_date = contract.recurring_next_date or fields.Date.today()
if (contract.date_start > ref_date or
contract.date_end and contract.date_end < ref_date):
@@ -294,7 +299,7 @@ class AccountAnalyticAccount(models.Model):
return invoices
@api.model
def cron_recurring_create_invoice(self):
def cron_recurring_create_invoice(self, limit=None):
today = fields.Date.today()
contracts = self.with_context(cron=True).search([
('recurring_invoices', '=', True),
@@ -303,7 +308,7 @@ class AccountAnalyticAccount(models.Model):
('date_end', '=', False),
('date_end', '>=', today),
])
return contracts.recurring_create_invoice()
return contracts.recurring_create_invoice(limit)
@api.multi
def action_contract_send(self):