Browse Source

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

[10.0] contract: allow to limit records on cron
pull/240/head
Pedro M. Baeza 6 years ago
committed by GitHub
parent
commit
8120035ef8
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      contract/__manifest__.py
  2. 2
      contract/data/contract_cron.xml
  3. 11
      contract/models/account_analytic_account.py

2
contract/__manifest__.py

@ -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, "

2
contract/data/contract_cron.xml

@ -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>

11
contract/models/account_analytic_account.py

@ -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):

Loading…
Cancel
Save