|
|
@ -11,56 +11,44 @@ class ContractManuallyCreateInvoice(models.TransientModel): |
|
|
|
|
|
|
|
invoice_date = fields.Date(string="Invoice Date", required=True) |
|
|
|
contract_to_invoice_count = fields.Integer( |
|
|
|
compute="_compute_contract_to_invoice_count" |
|
|
|
compute="_compute_contract_to_invoice_ids" |
|
|
|
) |
|
|
|
contract_to_invoice_ids = fields.Many2many( |
|
|
|
comodel_name="contract.contract", |
|
|
|
compute="_compute_contract_to_invoice_ids", |
|
|
|
) |
|
|
|
|
|
|
|
@api.multi |
|
|
|
def action_show_contract_to_invoice(self): |
|
|
|
self.ensure_one() |
|
|
|
@api.depends('invoice_date') |
|
|
|
def _compute_contract_to_invoice_ids(self): |
|
|
|
if not self.invoice_date: |
|
|
|
contract_to_invoice_domain = [('id', '=', False)] |
|
|
|
else: |
|
|
|
contract_to_invoice_domain = self.env[ |
|
|
|
'contract.contract' |
|
|
|
]._get_contracts_to_invoice_domain(self.invoice_date) |
|
|
|
self.contract_to_invoice_ids = self.env['contract.contract'].search( |
|
|
|
contract_to_invoice_domain |
|
|
|
) |
|
|
|
self.contract_to_invoice_count = len(self.contract_to_invoice_ids) |
|
|
|
|
|
|
|
@api.multi |
|
|
|
def action_show_contract_to_invoice(self): |
|
|
|
self.ensure_one() |
|
|
|
return { |
|
|
|
"type": "ir.actions.act_window", |
|
|
|
"name": _("Contracts to invoice"), |
|
|
|
"res_model": "contract.contract", |
|
|
|
"domain": contract_to_invoice_domain, |
|
|
|
"domain": [('id', 'in', self.contract_to_invoice_ids.ids)], |
|
|
|
"view_mode": "tree,form", |
|
|
|
"context": self.env.context, |
|
|
|
} |
|
|
|
|
|
|
|
@api.depends('invoice_date') |
|
|
|
def _compute_contract_to_invoice_count(self): |
|
|
|
self.ensure_one() |
|
|
|
if not self.invoice_date: |
|
|
|
self.contract_to_invoice_count = 0 |
|
|
|
else: |
|
|
|
contract_model = self.env['contract.contract'] |
|
|
|
self.contract_to_invoice_count = contract_model.search_count( |
|
|
|
contract_model._get_contracts_to_invoice_domain( |
|
|
|
self.invoice_date |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
@api.multi |
|
|
|
def create_invoice(self): |
|
|
|
self.ensure_one() |
|
|
|
contract_model = self.env['contract.contract'] |
|
|
|
contracts = contract_model.search( |
|
|
|
contract_model._get_contracts_to_invoice_domain(self.invoice_date) |
|
|
|
) |
|
|
|
invoices = contract_model.cron_recurring_create_invoice( |
|
|
|
self.invoice_date |
|
|
|
) |
|
|
|
for contract in contracts: |
|
|
|
contract.message_post( |
|
|
|
body=_("Manually invoiced. Invoice date: %s") |
|
|
|
% self.invoice_date |
|
|
|
) |
|
|
|
invoices = self.env['account.invoice'] |
|
|
|
for contract in self.contract_to_invoice_ids: |
|
|
|
invoices |= contract.recurring_create_invoice() |
|
|
|
return { |
|
|
|
"type": "ir.actions.act_window", |
|
|
|
"name": _("Invoices"), |
|
|
|