Purpose of this commit is to give description more "business oriented" because those descriptions appears in Odoo Studio which is supposed to be used by end users, not only by developers. Related Task ID : 37311
56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models, tools
|
|
from odoo.tools import formatLang
|
|
|
|
class PurchaseBillUnion(models.Model):
|
|
_name = 'purchase.bill.union'
|
|
_auto = False
|
|
_description = 'Purchases & Bills Union'
|
|
_order = "purchase_order_id desc, vendor_bill_id desc"
|
|
|
|
name = fields.Char(string='Reference', readonly=True)
|
|
reference = fields.Char(string='Source', readonly=True)
|
|
partner_id = fields.Many2one('res.partner', string='Vendor', readonly=True)
|
|
date = fields.Date(string='Date', readonly=True)
|
|
amount = fields.Float(string='Amount', readonly=True)
|
|
currency_id = fields.Many2one('res.currency', string='Currency', readonly=True)
|
|
company_id = fields.Many2one('res.company', 'Company', readonly=True)
|
|
vendor_bill_id = fields.Many2one('account.invoice', string='Vendor Bill', readonly=True)
|
|
purchase_order_id = fields.Many2one('purchase.order', string='Purchase Order', readonly=True)
|
|
|
|
@api.model_cr
|
|
def init(self):
|
|
tools.drop_view_if_exists(self.env.cr, 'purchase_bill_union')
|
|
self.env.cr.execute("""
|
|
CREATE OR REPLACE VIEW purchase_bill_union AS (
|
|
SELECT
|
|
id, number as name, reference, partner_id, date, amount_untaxed as amount, currency_id, company_id,
|
|
id as vendor_bill_id, NULL as purchase_order_id
|
|
FROM account_invoice
|
|
WHERE
|
|
type='in_invoice' and state in ('open','in_payment','paid','cancel')
|
|
UNION
|
|
SELECT
|
|
-id, name, partner_ref, partner_id, date_order::date as date, amount_untaxed as amount, currency_id, company_id,
|
|
NULL as vendor_bill_id, id as purchase_order_id
|
|
FROM purchase_order
|
|
WHERE
|
|
state = 'purchase' AND
|
|
invoice_status in ('to invoice', 'no')
|
|
)""")
|
|
|
|
def name_get(self):
|
|
result = []
|
|
for doc in self:
|
|
name = doc.name or ''
|
|
if doc.reference:
|
|
name += ' - ' + doc.reference
|
|
amount = doc.amount
|
|
if doc.purchase_order_id and doc.purchase_order_id.invoice_status == 'no':
|
|
amount = 0.0
|
|
name += ': ' + formatLang(self.env, amount, monetary=True, currency_obj=doc.currency_id)
|
|
result.append((doc.id, name))
|
|
return result
|