[REF] Contract: split from analytic account

This commit is contained in:
Thomas Binsfeld
2019-05-28 16:41:32 +02:00
committed by sbejaoui
parent e167562a20
commit da7826797c
27 changed files with 543 additions and 317 deletions

View File

@@ -0,0 +1,145 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
from openupgradelib import openupgrade
_logger = logging.getLogger(__name__)
def migrate(cr, version):
cr.execute(
"""
INSERT INTO contract_contract (
id,
name,
partner_id,
pricelist_id,
contract_type,
journal_id,
company_id,
analytic_account_id,
active,
code,
group_id,
contract_template_id,
recurring_invoices,
user_id,
recurring_next_date,
date_end,
payment_term_id,
fiscal_position_id,
invoice_partner_id,
message_main_attachment_id,
create_uid,
create_date,
write_uid,
write_date
)
SELECT id,
name,
partner_id,
pricelist_id,
contract_type,
journal_id,
company_id,
id,
active,
code,
group_id,
contract_template_id,
recurring_invoices,
user_id,
recurring_next_date,
date_end,
payment_term_id,
fiscal_position_id,
invoice_partner_id,
message_main_attachment_id,
create_uid,
create_date,
write_uid,
write_date
FROM account_analytic_account
WHERE recurring_invoices = TRUE
"""
)
cr.execute(
"""
INSERT INTO contract_line (
id,
product_id,
name,
quantity,
uom_id,
automatic_price,
specific_price,
discount,
recurring_rule_type,
recurring_invoicing_type,
recurring_interval,
sequence,
contract_id,
date_start,
date_end,
recurring_next_date,
last_date_invoiced,
termination_notice_date,
successor_contract_line_id,
predecessor_contract_line_id,
manual_renew_needed,
active,
create_uid,
create_date,
write_uid,
write_date
)
SELECT id,
product_id,
name,
quantity,
uom_id,
automatic_price,
specific_price,
discount,
recurring_rule_type,
recurring_invoicing_type,
recurring_interval,
sequence,
contract_id,
date_start,
date_end,
recurring_next_date,
last_date_invoiced,
termination_notice_date,
successor_contract_line_id,
predecessor_contract_line_id,
manual_renew_needed,
active,
create_uid,
create_date,
write_uid,
write_date
FROM account_analytic_invoice_line
"""
)
openupgrade.rename_models(cr, [('account.analytic.invoice.line',
'contract.line')])
cr.execute(
"""
DROP TABLE account_analytic_invoice_line
"""
)
cr.execute(
"""
UPDATE account_invoice_line
SET contract_line_id = contract_line_id_tmp
"""
)
cr.execute(
"""
ALTER TABLE account_invoice_line
DROP COLUMN contract_line_id_tmp
"""
)

View File

@@ -0,0 +1,72 @@
# Copyright 2019 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
from openupgradelib import openupgrade
_logger = logging.getLogger(__name__)
def migrate(cr, version):
models_to_rename = [
# Contract Line Wizard
('account.analytic.invoice.line.wizard', 'contract.line.wizard'),
# Abstract Contract
('account.abstract.analytic.contract', 'contract.abstract.contract'),
# Abstract Contract Line
('account.abstract.analytic.contract.line',
'contract.abstract.contract.line'),
# Contract Line
('account.analytic.invoice.line', 'contract.line'),
# Contract Template
('account.analytic.contract', 'contract.template'),
# Contract Template Line
('account.analytic.contract.line', 'contract.template.line'),
]
tables_to_rename = [
# Contract Line Wizard
('account_analytic_invoice_line_wizard', 'contract_line_wizard'),
# Contract Template
('account_analytic_contract', 'contract_template'),
# Contract Template Line
('account_analytic_contract_line', 'contract_template_line'),
]
xmlids_to_rename = [
('contract.account_analytic_cron_for_invoice',
'contract.contract_cron_for_invoice'),
('contract.account_analytic_contract_manager',
'contract.contract_template_manager'),
('contract.account_analytic_contract_user',
'contract.contract_template_user'),
('contract.account_analytic_invoice_line_manager',
'contract.contract_line_manager'),
('contract.account_analytic_invoice_line_user',
'contract.contract_line_user'),
('contract.account_analytic_contract_line_manager',
'contract.contract_template_line_manager'),
('contract.account_analytic_contract_line_user',
'contract.contract_template_line_user'),
]
openupgrade.rename_models(cr, models_to_rename)
openupgrade.rename_tables(cr, tables_to_rename)
openupgrade.rename_xmlids(cr, xmlids_to_rename)
# A temporary column is needed to avoid breaking the foreign key constraint
# The temporary column is dropped in the post-migration script
cr.execute(
"""
ALTER TABLE account_invoice_line
ADD COLUMN contract_line_id_tmp INTEGER
"""
)
cr.execute(
"""
UPDATE account_invoice_line
SET contract_line_id_tmp = contract_line_id
"""
)
cr.execute(
"""
UPDATE account_invoice_line SET contract_line_id = NULL
"""
)