# Copyright 2009-2020 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

_FILE_FORMATS = [
    {
        "old_xml_id_name": "ebics_ff_camt_052_001_02_stm",
        "new_xml_id_name": "ebics_ff_C52",
        "new_name": "camt.052",
    },
    {
        "old_xml_id_name": "ebics_ff_camt_053_001_02_stm",
        "new_xml_id_name": "ebics_ff_C53",
        "new_name": "camt.053",
    },
    {
        "old_xml_id_name": "ebics_ff_camt_xxx_cfonb120_stm",
        "new_xml_id_name": "ebics_ff_FDL_camt_xxx_cfonb120_stm",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_001_001_03_sct",
        "new_xml_id_name": "ebics_ff_CCT",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_001",
        "new_xml_id_name": "ebics_ff_XE2",
        "new_name": "pain.001.001.03",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_008_001_02_sdd",
        "new_xml_id_name": "ebics_ff_CDD",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_008",
        "new_xml_id_name": "ebics_ff_XE3",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_008_001_02_sbb",
        "new_xml_id_name": "ebics_ff_CDB",
    },
    {
        "old_xml_id_name": "ebics_ff_pain_001_001_02_sct",
        "new_xml_id_name": "ebics_ff_FUL_pain_001_001_02_sct",
    },
]


def migrate(cr, version):
    if not version:
        return

    for ff in _FILE_FORMATS:
        _update_file_format(cr, ff)


def _update_file_format(cr, ff):
    cr.execute(  # pylint: disable=E8103
        """
    SELECT id, res_id FROM ir_model_data
    WHERE module='account_ebics' AND name='{}'
        """.format(ff["old_xml_id_name"])
    )
    res = cr.fetchone()
    if res:
        query = """
        UPDATE ir_model_data
        SET name='{new_xml_id_name}'
        WHERE id={xml_id};
        """.format(new_xml_id_name=ff["new_xml_id_name"], xml_id=res[0])
        if ff.get("new_name"):
            query += """
            UPDATE ebics_file_format
            SET name='{new_name}'
            WHERE id={ff_id};
            """.format(new_name=ff["new_name"], ff_id=res[1])
        cr.execute(query)  # pylint: disable=E8103
