mirror of
https://gitlab.com/flectra-community/mis-builder.git
synced 2024-11-16 11:12:07 +00:00
67 lines
2.5 KiB
Python
67 lines
2.5 KiB
Python
# Copyright 2017 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
import os
|
|
from os.path import join as opj
|
|
|
|
from flectra import fields, models, tools
|
|
|
|
|
|
class MisCommittedPurchase(models.Model):
|
|
|
|
_name = "mis.committed.purchase"
|
|
_description = "MIS Commitment"
|
|
_auto = False
|
|
|
|
line_type = fields.Char()
|
|
name = fields.Char()
|
|
analytic_account_id = fields.Many2one(
|
|
comodel_name="account.analytic.account", string="Analytic Account"
|
|
)
|
|
account_id = fields.Many2one(comodel_name="account.account", string="Account")
|
|
company_id = fields.Many2one(comodel_name="res.company", string="Company")
|
|
credit = fields.Float()
|
|
debit = fields.Float()
|
|
date = fields.Date()
|
|
|
|
# resource can be purchase.order.line or account.move.line
|
|
res_id = fields.Integer(string="Resource ID")
|
|
res_model = fields.Char(string="Resource Model Name")
|
|
|
|
analytic_tag_ids = fields.Many2many(
|
|
comodel_name="account.analytic.tag",
|
|
relation="mis_committed_purchase_tag_rel",
|
|
column1="mis_committed_purchase_id",
|
|
column2="account_analytic_tag_id",
|
|
string="Analytic Tags",
|
|
)
|
|
|
|
def init(self):
|
|
script = opj(os.path.dirname(__file__), "mis_committed_purchase.sql")
|
|
with open(script) as f:
|
|
tools.drop_view_if_exists(self.env.cr, "mis_committed_purchase")
|
|
self.env.cr.execute(f.read())
|
|
|
|
# Create many2many relation for account.analytic.tag
|
|
tools.drop_view_if_exists(self.env.cr, "mis_committed_purchase_tag_rel")
|
|
self.env.cr.execute(
|
|
"""
|
|
CREATE OR REPLACE VIEW mis_committed_purchase_tag_rel AS
|
|
(SELECT
|
|
po_mcp.id AS mis_committed_purchase_id,
|
|
po_rel.account_analytic_tag_id AS account_analytic_tag_id
|
|
FROM account_analytic_tag_purchase_order_line_rel AS po_rel
|
|
INNER JOIN mis_committed_purchase AS po_mcp ON
|
|
po_mcp.res_id = po_rel.purchase_order_line_id
|
|
WHERE po_mcp.res_model = 'purchase.order.line'
|
|
UNION ALL
|
|
SELECT
|
|
inv_mcp.id AS mis_committed_purchase_id,
|
|
inv_rel.account_analytic_tag_id AS account_analytic_tag_id
|
|
FROM account_analytic_tag_account_move_line_rel AS inv_rel
|
|
INNER JOIN mis_committed_purchase AS inv_mcp ON
|
|
inv_mcp.res_id = inv_rel.account_move_line_id
|
|
WHERE inv_mcp.res_model = 'account.move.line')
|
|
"""
|
|
)
|