mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
# Copyright 2019 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import _, api, fields, models
|
|
|
|
|
|
class ContractManuallyCreateInvoice(models.TransientModel):
|
|
|
|
_name = "contract.manually.create.invoice"
|
|
_description = "Contract Manually Create Invoice Wizard"
|
|
|
|
invoice_date = fields.Date(string="Invoice Date", required=True)
|
|
contract_to_invoice_count = fields.Integer(
|
|
compute="_compute_contract_to_invoice_ids"
|
|
)
|
|
contract_to_invoice_ids = fields.Many2many(
|
|
comodel_name="contract.contract", compute="_compute_contract_to_invoice_ids",
|
|
)
|
|
contract_type = fields.Selection(
|
|
selection=[("sale", "Customer"), ("purchase", "Supplier")],
|
|
default="sale",
|
|
required=True,
|
|
)
|
|
|
|
@api.depends("invoice_date")
|
|
def _compute_contract_to_invoice_ids(self):
|
|
if not self.invoice_date:
|
|
# trick to show no invoice when no date has been entered yet
|
|
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 + [("contract_type", "=", self.contract_type)]
|
|
)
|
|
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": [("id", "in", self.contract_to_invoice_ids.ids)],
|
|
"view_mode": "tree,form",
|
|
"context": self.env.context,
|
|
}
|
|
|
|
@api.multi
|
|
def create_invoice(self):
|
|
self.ensure_one()
|
|
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"),
|
|
"res_model": "account.invoice",
|
|
"domain": [("id", "in", invoices.ids)],
|
|
"view_mode": "tree,form",
|
|
"context": self.env.context,
|
|
}
|