mirror of
https://github.com/OCA/contract.git
synced 2025-02-13 17:57:24 +02:00
[14.0][FIX] Travis
This commit is contained in:
@@ -6,14 +6,12 @@ from odoo import fields, models
|
||||
|
||||
|
||||
class ContractAbstractContract(models.AbstractModel):
|
||||
_inherit = 'contract.abstract.contract'
|
||||
_inherit = "contract.abstract.contract"
|
||||
|
||||
type = fields.Selection(
|
||||
[('invoice', 'Invoice'),
|
||||
('sale', 'Sale')],
|
||||
string='Type',
|
||||
default='invoice',
|
||||
[("invoice", "Invoice"), ("sale", "Sale")],
|
||||
string="Type",
|
||||
default="invoice",
|
||||
required=True,
|
||||
)
|
||||
sale_autoconfirm = fields.Boolean(
|
||||
string='Sale Autoconfirm')
|
||||
sale_autoconfirm = fields.Boolean(string="Sale Autoconfirm")
|
||||
|
||||
@@ -8,24 +8,26 @@
|
||||
# Copyright 2018 Therp BV <https://therp.nl>.
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo import _, api, fields, models
|
||||
|
||||
|
||||
class ContractContract(models.Model):
|
||||
_inherit = 'contract.contract'
|
||||
_inherit = "contract.contract"
|
||||
|
||||
sale_count = fields.Integer(compute="_compute_sale_count")
|
||||
|
||||
@api.multi
|
||||
def _prepare_sale(self, date_ref):
|
||||
self.ensure_one()
|
||||
sale = self.env['sale.order'].new({
|
||||
'partner_id': self.partner_id,
|
||||
'date_order': fields.Date.to_string(date_ref),
|
||||
'origin': self.name,
|
||||
'company_id': self.company_id.id,
|
||||
'user_id': self.partner_id.user_id.id,
|
||||
})
|
||||
sale = self.env["sale.order"].new(
|
||||
{
|
||||
"partner_id": self.partner_id,
|
||||
"date_order": fields.Date.to_string(date_ref),
|
||||
"origin": self.name,
|
||||
"company_id": self.company_id.id,
|
||||
"user_id": self.partner_id.user_id.id,
|
||||
}
|
||||
)
|
||||
if self.payment_term_id:
|
||||
sale.payment_term_id = self.payment_term_id.id
|
||||
if self.fiscal_position_id:
|
||||
@@ -37,10 +39,11 @@ class ContractContract(models.Model):
|
||||
@api.multi
|
||||
def _get_related_sales(self):
|
||||
self.ensure_one()
|
||||
sales = (self.env['sale.order.line']
|
||||
.search([('contract_line_id', 'in',
|
||||
self.contract_line_ids.ids)
|
||||
]).mapped('order_id'))
|
||||
sales = (
|
||||
self.env["sale.order.line"]
|
||||
.search([("contract_line_id", "in", self.contract_line_ids.ids)])
|
||||
.mapped("order_id")
|
||||
)
|
||||
return sales
|
||||
|
||||
@api.multi
|
||||
@@ -51,20 +54,18 @@ class ContractContract(models.Model):
|
||||
@api.multi
|
||||
def action_show_sales(self):
|
||||
self.ensure_one()
|
||||
tree_view = self.env.ref('sale.view_order_tree',
|
||||
raise_if_not_found=False)
|
||||
form_view = self.env.ref('sale.view_order_form',
|
||||
raise_if_not_found=False)
|
||||
tree_view = self.env.ref("sale.view_order_tree", raise_if_not_found=False)
|
||||
form_view = self.env.ref("sale.view_order_form", raise_if_not_found=False)
|
||||
action = {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': 'Sales Orders',
|
||||
'res_model': 'sale.order',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,kanban,form,calendar,pivot,graph,activity',
|
||||
'domain': [('id', 'in', self._get_related_sales().ids)],
|
||||
"type": "ir.actions.act_window",
|
||||
"name": "Sales Orders",
|
||||
"res_model": "sale.order",
|
||||
"view_type": "form",
|
||||
"view_mode": "tree,kanban,form,calendar,pivot,graph,activity",
|
||||
"domain": [("id", "in", self._get_related_sales().ids)],
|
||||
}
|
||||
if tree_view and form_view:
|
||||
action['views'] = [(tree_view.id, 'tree'), (form_view.id, 'form')]
|
||||
action["views"] = [(tree_view.id, "tree"), (form_view.id, "form")]
|
||||
return action
|
||||
|
||||
@api.multi
|
||||
@@ -77,10 +78,10 @@ class ContractContract(models.Model):
|
||||
for sale_rec in sales:
|
||||
self.message_post(
|
||||
body=_(
|
||||
'Contract manually sale order: '
|
||||
"Contract manually sale order: "
|
||||
'<a href="#" data-oe-model="%s" data-oe-id="%s">'
|
||||
'Sale Order'
|
||||
'</a>'
|
||||
"Sale Order"
|
||||
"</a>"
|
||||
)
|
||||
% (sale_rec._name, sale_rec.id)
|
||||
)
|
||||
@@ -107,14 +108,12 @@ class ContractContract(models.Model):
|
||||
continue
|
||||
sale_values = contract._prepare_sale(date_ref)
|
||||
for line in contract_lines:
|
||||
sale_values.setdefault('order_line', [])
|
||||
sale_values.setdefault("order_line", [])
|
||||
invoice_line_values = line._prepare_sale_line(
|
||||
sale_values=sale_values,
|
||||
)
|
||||
if invoice_line_values:
|
||||
sale_values['order_line'].append(
|
||||
(0, 0, invoice_line_values)
|
||||
)
|
||||
sale_values["order_line"].append((0, 0, invoice_line_values))
|
||||
sales_values.append(sale_values)
|
||||
contract_lines._update_recurring_next_date()
|
||||
return sales_values
|
||||
@@ -123,7 +122,7 @@ class ContractContract(models.Model):
|
||||
def _recurring_create_sale(self, date_ref=False):
|
||||
sales_values = self._prepare_recurring_sales_values(date_ref)
|
||||
so_rec = self.env["sale.order"].create(sales_values)
|
||||
for rec in self.filtered(lambda c: c.sale_autoconfirm):
|
||||
for _rec in self.filtered(lambda c: c.sale_autoconfirm):
|
||||
so_rec.action_confirm()
|
||||
return so_rec
|
||||
|
||||
@@ -132,11 +131,10 @@ class ContractContract(models.Model):
|
||||
if not date_ref:
|
||||
date_ref = fields.Date.context_today(self)
|
||||
domain = self._get_contracts_to_invoice_domain(date_ref)
|
||||
domain.extend([('type', '=', 'sale')])
|
||||
domain.extend([("type", "=", "sale")])
|
||||
sales = self.env["sale.order"]
|
||||
# Sales by companies, so assignation emails get correct context
|
||||
companies_to_sale = self.read_group(
|
||||
domain, ["company_id"], ["company_id"])
|
||||
companies_to_sale = self.read_group(domain, ["company_id"], ["company_id"])
|
||||
for row in companies_to_sale:
|
||||
contracts_to_sale = self.search(row["__domain"]).with_context(
|
||||
allowed_company_ids=[row["company_id"][0]]
|
||||
@@ -149,15 +147,13 @@ class ContractContract(models.Model):
|
||||
if not date_ref:
|
||||
date_ref = fields.Date.context_today(self)
|
||||
domain = self._get_contracts_to_invoice_domain(date_ref)
|
||||
domain.extend([('type', '=', 'invoice')])
|
||||
domain.extend([("type", "=", "invoice")])
|
||||
invoices = self.env["account.invoice"]
|
||||
# Invoice by companies, so assignation emails get correct context
|
||||
companies_to_invoice = self.read_group(
|
||||
domain, ["company_id"], ["company_id"])
|
||||
companies_to_invoice = self.read_group(domain, ["company_id"], ["company_id"])
|
||||
for row in companies_to_invoice:
|
||||
contracts_to_invoice = self.search(row["__domain"]).with_context(
|
||||
allowed_company_ids=[row["company_id"][0]]
|
||||
)
|
||||
invoices |= contracts_to_invoice._recurring_create_invoice(
|
||||
date_ref)
|
||||
invoices |= contracts_to_invoice._recurring_create_invoice(date_ref)
|
||||
return invoices
|
||||
|
||||
@@ -5,7 +5,7 @@ from odoo import api, models
|
||||
|
||||
|
||||
class ContractLine(models.Model):
|
||||
_inherit = 'contract.line'
|
||||
_inherit = "contract.line"
|
||||
|
||||
@api.multi
|
||||
def _prepare_sale_line(self, order_id=False, sale_values=False):
|
||||
@@ -14,22 +14,30 @@ class ContractLine(models.Model):
|
||||
self.last_date_invoiced, self.recurring_next_date
|
||||
)
|
||||
sale_line_vals = {
|
||||
'product_id': self.product_id.id,
|
||||
'product_uom_qty': self._get_quantity_to_invoice(*dates),
|
||||
'uom_id': self.uom_id.id,
|
||||
'discount': self.discount,
|
||||
'contract_line_id': self.id,
|
||||
'display_type': self.display_type,
|
||||
"product_id": self.product_id.id,
|
||||
"product_uom_qty": self._get_quantity_to_invoice(*dates),
|
||||
"uom_id": self.uom_id.id,
|
||||
"discount": self.discount,
|
||||
"contract_line_id": self.id,
|
||||
"display_type": self.display_type,
|
||||
}
|
||||
if order_id:
|
||||
sale_line_vals['order_id'] = order_id.id
|
||||
order_line = self.env['sale.order.line'].with_context(
|
||||
force_company=self.contract_id.company_id.id,
|
||||
).new(sale_line_vals)
|
||||
if sale_values and not order_id:
|
||||
sale = self.env['sale.order'].with_context(
|
||||
sale_line_vals["order_id"] = order_id.id
|
||||
order_line = (
|
||||
self.env["sale.order.line"]
|
||||
.with_context(
|
||||
force_company=self.contract_id.company_id.id,
|
||||
).new(sale_values)
|
||||
)
|
||||
.new(sale_line_vals)
|
||||
)
|
||||
if sale_values and not order_id:
|
||||
sale = (
|
||||
self.env["sale.order"]
|
||||
.with_context(
|
||||
force_company=self.contract_id.company_id.id,
|
||||
)
|
||||
.new(sale_values)
|
||||
)
|
||||
order_line.order_id = sale
|
||||
# Get other order line values from product onchange
|
||||
order_line.product_id_change()
|
||||
@@ -38,10 +46,10 @@ class ContractLine(models.Model):
|
||||
name = self._insert_markers(dates[0], dates[1])
|
||||
sale_line_vals.update(
|
||||
{
|
||||
'sequence': self.sequence,
|
||||
'name': name,
|
||||
'analytic_tag_ids': [(6, 0, self.analytic_tag_ids.ids)],
|
||||
'price_unit': self.price_unit,
|
||||
"sequence": self.sequence,
|
||||
"name": name,
|
||||
"analytic_tag_ids": [(6, 0, self.analytic_tag_ids.ids)],
|
||||
"price_unit": self.price_unit,
|
||||
}
|
||||
)
|
||||
return sale_line_vals
|
||||
|
||||
@@ -5,8 +5,8 @@ from odoo import fields, models
|
||||
|
||||
|
||||
class SaleOrderLine(models.Model):
|
||||
_inherit = 'sale.order.line'
|
||||
_inherit = "sale.order.line"
|
||||
|
||||
contract_line_id = fields.Many2one(
|
||||
'contract.line', string='Contract Line', index=True
|
||||
"contract.line", string="Contract Line", index=True
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user