diff --git a/.github/workflows/documentation-commit.yml b/.github/workflows/documentation-commit.yml new file mode 100644 index 000000000000..8b69cde83dcf --- /dev/null +++ b/.github/workflows/documentation-commit.yml @@ -0,0 +1,67 @@ +# On each push in 19.0 branch, +# AND if the coverage file changed, +# build documentation branch and commit the changes +# so that the changes are visible on the website +# https://oca.github.io/OpenUpgrade/ + +name: Build and commit documentation + +on: + push: + paths: ["docsource/modules180-190.rst"] + +jobs: + documentation-commit: + runs-on: ubuntu-latest + steps: + - name: Check out OpenUpgrade Documentation + uses: actions/checkout@v2 + with: + ref: "documentation" + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Check out Odoo + uses: actions/checkout@v2 + with: + repository: odoo/odoo + ref: "19.0" + fetch-depth: 1 + path: odoo + - name: Configuration + run: | + sudo apt update + sudo apt install \ + expect \ + expect-dev \ + libevent-dev \ + libldap2-dev \ + libsasl2-dev \ + libxml2-dev \ + libxslt1-dev \ + nodejs \ + python3-lxml \ + python3-passlib \ + python3-psycopg2 \ + python3-serial \ + python3-simplejson \ + python3-werkzeug \ + python3-yaml \ + unixodbc-dev + - name: Requirements Installation + run: | + sed -i -E "s/(gevent==)21\.8\.0( ; sys_platform != 'win32' and python_version == '3.10')/\122.10.2\2/;s/(greenlet==)1.1.2( ; sys_platform != 'win32' and python_version == '3.10')/\12.0.2\2/" odoo/requirements.txt + pip install -q -r odoo/requirements.txt + pip install -r ./requirements.txt + - name: OpenUpgrade Docs + run: | + # try to build the documentation + sh ./build_openupgrade_docs + - name: Commit changes + uses: EndBug/add-and-commit@a94899bca583c204427a224a7af87c02f9b325d5 #v9 + with: + add: "docs" + default_author: github_actions + message: "[UPD] HTML documentation" diff --git a/.github/workflows/generate-analysis-cron.yml b/.github/workflows/generate-analysis-cron.yml new file mode 100644 index 000000000000..5c3c10c00565 --- /dev/null +++ b/.github/workflows/generate-analysis-cron.yml @@ -0,0 +1,18 @@ +name: Generate analysis files - cron and push + +on: + push: + # when module merges are added to apriori, this + # might cause changes in the analysis + paths: ["openupgrade_scripts/apriori.py"] + schedule: + # every monday at 04:00 + - cron: "0 4 * * 1" + +jobs: + generate-analysis18: + if: github.repository == 'OCA/OpenUpgrade' && (github.event_name == 'schedule' || github.ref_name == '18.0') + uses: ./.github/workflows/generate-analysis.yml + with: + from_version: "17.0" + to_version: "18.0" diff --git a/.github/workflows/generate-analysis.yml b/.github/workflows/generate-analysis.yml new file mode 100644 index 000000000000..00268e00c571 --- /dev/null +++ b/.github/workflows/generate-analysis.yml @@ -0,0 +1,226 @@ +name: Generate analysis files + +on: + workflow_call: + inputs: + from_version: + required: true + type: string + from_version_requirements: + default: 'gevent==22.10.2 greenlet==2.0.2' + type: string + from_version_requirements_sed: + default: '/^gevent\>/d; /^greenlet\>/d' + type: string + to_version: + required: true + type: string + to_version_requirements: + default: 'gevent==22.10.2 greenlet==2.0.2' + type: string + to_version_requirements_sed: + default: '/^gevent\>/d; /^greenlet\>/d' + type: string + python_version: + default: "3.10" + type: string + postgres_version: + default: "14" + type: string + +jobs: + generate-analysis: + name: Generate analysis ${{ inputs.to_version }} + runs-on: ubuntu-latest + env: + PGHOST: "localhost" + PGPASSWORD: "odoo" + PGUSER: "odoo" + FROM_VERSION: "${{ inputs.from_version }}" + TO_VERSION: "${{ inputs.to_version }}" + services: + postgres: + image: postgres:${{ inputs.postgres_version }} + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + ports: + - 5432:5432 + steps: + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "${{ inputs.python_version }}" + - name: Install required packages + run: | + sudo apt update + sudo apt install \ + expect \ + expect-dev \ + libevent-dev \ + libldap2-dev \ + libsasl2-dev \ + libxml2-dev \ + libxslt1-dev \ + nodejs \ + python3-lxml \ + python3-passlib \ + python3-psycopg2 \ + python3-serial \ + python3-simplejson \ + python3-werkzeug \ + python3-yaml \ + unixodbc-dev + - name: Checkout previous OpenUpgrade + uses: actions/checkout@v4 + with: + ref: "${{ env.FROM_VERSION }}" + path: openupgrade-${{ env.FROM_VERSION }} + - name: Checkout OpenUpgrade from current branch + if: github.event_name != 'schedule' && startsWith(github.ref_name, env.TO_VERSION) + uses: actions/checkout@v4 + with: + path: openupgrade-${{ env.TO_VERSION }} + - name: Checkout current OpenUpgrade + if: github.event_name == 'schedule' || !startsWith(github.ref_name, env.TO_VERSION) + uses: actions/checkout@v4 + with: + ref: "${{ env.TO_VERSION }}" + path: openupgrade-${{ env.TO_VERSION }} + - name: Install previous Odoo + run: | + wget -q -O- https://github.com/oca/ocb/archive/refs/heads/$FROM_VERSION.tar.gz | tar -xz + wget -q -O- https://github.com/oca/server-tools/archive/refs/heads/$FROM_VERSION.tar.gz | tar -xz + python -mvenv env-$FROM_VERSION + . env-$FROM_VERSION/bin/activate + pip install ${{ inputs.from_version_requirements }} + sed -iE '${{ inputs.from_version_requirements_sed }}' OCB-$FROM_VERSION/requirements.txt + pip install -r OCB-$FROM_VERSION/requirements.txt + pip install ./OCB-$FROM_VERSION + pip install -r server-tools-$FROM_VERSION/requirements.txt + pip install -r openupgrade-$FROM_VERSION/requirements.txt + # this is for l10n_eg_edi_eta which crashes without it + pip install asn1crypto + odoo -s -c odoo-$FROM_VERSION.cfg --addons-path server-tools-$FROM_VERSION,openupgrade-$FROM_VERSION --stop-after-init + - name: Install current Odoo + run: | + wget -q -O- https://github.com/oca/ocb/archive/refs/heads/$TO_VERSION.tar.gz | tar -xz + wget -q -O- https://github.com/oca/server-tools/archive/refs/heads/$TO_VERSION.tar.gz | tar -xz + python -mvenv env-$TO_VERSION + . env-$TO_VERSION/bin/activate + pip install ${{ inputs.to_version_requirements }} + sed -iE '${{ inputs.to_version_requirements_sed }}' OCB-$TO_VERSION/requirements.txt + pip install -r OCB-$TO_VERSION/requirements.txt + pip install ./OCB-$TO_VERSION + pip install -r server-tools-$TO_VERSION/requirements.txt + pip install -r openupgrade-$TO_VERSION/requirements.txt + # this is for l10n_eg_edi_eta which crashes without it + pip install asn1crypto + odoo -s -c odoo-$TO_VERSION.cfg --addons-path server-tools-$TO_VERSION,openupgrade-$TO_VERSION --stop-after-init + - name: Create previous Odoo database + env: + ODOO: env-${{ env.FROM_VERSION }}/bin/odoo -c odoo-${{ env.FROM_VERSION }}.cfg -d ${{ env.FROM_VERSION }} + ODOO_SHELL: env-${{ env.FROM_VERSION }}/bin/odoo shell -c odoo-${{ env.FROM_VERSION }}.cfg -d ${{ env.FROM_VERSION }} + run: | + $ODOO --without-demo=all -i upgrade_analysis --stop-after-init + $ODOO_SHELL < "$PR_BODY" + + for module in $( + git -C $OPENUPGRADE_DIR status --short | awk '{print $2}' | awk -F/ '{print $3}' | sort -u + ); do + if grep -qE "\<$module\>.*\<((Done)|(No))" $OPENUPGRADE_DIR/docsource/modules*; then + echo Done module $module was updated + echo "- $module" >> $PR_BODY + else + echo $module is not done yet + fi + done + + if ! grep -q - $PR_BODY; then + echo None >> $PR_BODY + fi + + echo "body-file=$PR_BODY" >> "$GITHUB_OUTPUT" + - name: Get number of milestone + id: get_milestone + run: | + echo "number=$( + wget -qO- https://api.github.com/repos/${{ github.repository }}/milestones|jq '.[] | select(.title=="${{ env.TO_VERSION }}") .number' + )" >> "$GITHUB_OUTPUT" + - name: Create PR + uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e #v7 + with: + base: "${{ env.TO_VERSION }}" + body-path: "${{ steps.generate_body.outputs.body-file }}" + branch: "${{ env.TO_VERSION }}-update-analysis-bot" + commit-message: "[IMP] Update analysis files" + delete-branch: true + milestone: "${{ steps.get_milestone.outputs.number }}" + path: "openupgrade-${{ env.TO_VERSION }}" + title: "[${{ env.TO_VERSION }}][IMP] Update analysis files" diff --git a/.github/workflows/test-migration.yml b/.github/workflows/test-migration.yml new file mode 100644 index 000000000000..0cb8186ad3b5 --- /dev/null +++ b/.github/workflows/test-migration.yml @@ -0,0 +1,174 @@ +# This workflow will install Python dependencies, run tests and lint with a +# single version of Python. For more information see: +# https://help.github.com/actions/language-and-framework-guides\ +# /using-python-with-github-actions + +name: Test OpenUpgrade migration + +on: + pull_request: + branches: + - "19.0*" + push: + branches: + - "19.0" + - "19.0-ocabot-*" + +jobs: + test: + runs-on: ubuntu-22.04 + env: + DB: "openupgrade" + DB_HOST: "localhost" + DB_PASSWORD: "odoo" + DB_PORT: 5432 + DB_USERNAME: "odoo" + DOWNLOADS: https://github.com/${{github.repository}}/releases/download/databases + ODOO: "./odoo/odoo-bin" + PGHOST: "localhost" + PGPASSWORD: "odoo" + PGUSER: "odoo" + OPENUPGRADE_USE_DEMO: "yes" + services: + postgres: + image: postgres:14.0 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + - name: Sleep for 10 seconds + run: sleep 10s + - name: DB Creation + run: createdb $DB + - name: DB Restore + run: | + wget -q -O- $DOWNLOADS/18.0.psql | pg_restore -d $DB --no-owner + psql $DB -c "UPDATE ir_module_module SET demo=False" + - name: Check out Odoo + uses: actions/checkout@v4 + with: + repository: odoo/odoo + ref: "19.0" + fetch-depth: 1 + path: odoo + - name: Check out previous Odoo + uses: actions/checkout@v4 + with: + repository: odoo/odoo + ref: "18.0" + fetch-depth: 1 + path: odoo-old + - name: Check out OpenUpgrade + uses: actions/checkout@v4 + with: + path: openupgrade + - name: Configuration + run: | + sudo apt update + sudo apt install \ + expect \ + expect-dev \ + libevent-dev \ + libldap2-dev \ + libsasl2-dev \ + libxml2-dev \ + libxslt1-dev \ + nodejs \ + python3-lxml \ + python3-passlib \ + python3-psycopg2 \ + python3-serial \ + python3-simplejson \ + python3-werkzeug \ + python3-yaml \ + unixodbc-dev + - name: Requirements Installation + run: | + sed -i -E "s/(gevent==)21\.8\.0( ; sys_platform != 'win32' and python_version == '3.10')/\122.10.2\2/;s/(greenlet==)1.1.2( ; sys_platform != 'win32' and python_version == '3.10')/\12.0.2\2/" odoo/requirements.txt + sed -i -E "s/(^cbor2==)5\.4\.2/\15.6.2/" odoo/requirements.txt + pip install -q -r odoo/requirements.txt + pip install -r ./openupgrade/requirements.txt + pip install -U git+https://github.com/oca/openupgradelib + # this is for v18 l10n_eg_edi_eta which crashes without it + pip install asn1crypto + # required by v18 + pip install decorator + pip install coverage + # this is for account_peppol + pip install phonenumbers + - name: Test data + run: | + if test -n "$(ls openupgrade/openupgrade_scripts/scripts/*/tests/data*.py 2> /dev/null)"; then + for snippet in openupgrade/openupgrade_scripts/scripts/*/tests/data*.py; do + odoo-old/odoo-bin shell -d $DB < $snippet + done + fi + - name: OpenUpgrade test + id: run_migration + run: | + # select modules and perform the upgrade + MODULES_OLD=$(\ + sed -n '/^+========/,$p' \ + openupgrade/docsource/modules180-190.rst \ + | grep "Done\|Partial\|Nothing" \ + | grep -v "theme_" \ + | sed -rn 's/((^\| *\|del\| *)|^\| *)([0-9a-z_]*)[ \|].*/\3/g p' \ + | sed '/^\s*$/d' \ + | paste -d, -s) + MODULES_NEW=$(\ + sed -n '/^+========/,$p' \ + openupgrade/docsource/modules180-190.rst \ + | grep "Done\|Partial\|Nothing" \ + | grep -v "theme_" \ + | sed -rn 's/((^\| *\|new\| *)|^\| *)([0-9a-z_]*)[ \|].*/\3/g p' \ + | sed '/^\s*$/d' \ + | paste -d, -s) + echo "modules_old=$MODULES_OLD" >> $GITHUB_OUTPUT + echo "modules_new=$MODULES_NEW" >> $GITHUB_OUTPUT + if [ -z "$MODULES_NEW" ]; then + echo "No modules to test yet" + exit + fi + REQUEST="update ir_module_module set state='uninstalled' \ + where name not in ('$(echo $MODULES_OLD | sed -e "s/,/','/g")')" + echo Set the modules as not installable if they are not in the following list : $MODULES_OLD + echo Running $REQUEST + psql $DB -c "$REQUEST" + ADDONS_PATHS="\ + $GITHUB_WORKSPACE/odoo/addons \ + $GITHUB_WORKSPACE/odoo/odoo/addons \ + $GITHUB_WORKSPACE/openupgrade" + echo Execution of Openupgrade with the update of the following modules : $MODULES_NEW + # Silence redundant logs from unlinking records (1 line is enough) + # to prevent log overflow + coverage run \ + --source=$GITHUB_WORKSPACE/openupgrade/openupgrade_scripts/scripts \ + $ODOO \ + --addons-path=`echo $ADDONS_PATHS | awk -v OFS="," '$1=$1'` \ + --database=$DB \ + --db_host=$DB_HOST \ + --db_password=$DB_PASSWORD \ + --db_port=$DB_PORT \ + --db_user=$DB_USERNAME \ + --load=base,web,openupgrade_framework \ + --test-enable \ + --test-tags openupgrade \ + --log-handler odoo.models.unlink:WARNING \ + --stop-after-init \ + --without-demo=$MODULES_NEW \ + --update=$MODULES_NEW + - name: Generate coverage.xml + if: ${{ steps.run_migration.outputs.modules_new != '' }} + run: coverage xml + - uses: codecov/codecov-action@v4 + if: ${{ steps.run_migration.outputs.modules_new != '' }} + with: + files: coverage.xml + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000000..22a8861c737d --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +openupgrade_scripts/scripts/*/*/noupdate_changes*.xml +docsource/*.rst +docs diff --git a/README.md b/README.md index 9fe0ff416fa1..cb55d1faa003 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,12 @@ OpenUpgrade [//]: # (addons) -This part will be replaced when running the oca-gen-addons-table script from OCA/maintainer-tools. +Available addons +---------------- +addon | version | maintainers | summary +--- | --- | --- | --- +[openupgrade_framework](openupgrade_framework/) | 19.0.1.0.0 | legalsylvain StefanRijnhart hbrunn | Module to integrate in the server_wide_modules option to make upgrades between two major revisions. +[openupgrade_scripts](openupgrade_scripts/) | 19.0.1.0.0 | | Module that contains all the migrations analysis and scripts for migrate Odoo SA modules. [//]: # (end addons) diff --git a/docsource/modules180-190.rst b/docsource/modules180-190.rst new file mode 100644 index 000000000000..6b98034acb12 --- /dev/null +++ b/docsource/modules180-190.rst @@ -0,0 +1,1248 @@ +Module coverage 18.0 -> 19.0 +============================ + +.. include:: coverage_legend.rst + ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| Module | Status + Extra Information | ++===================================================+======================+=================================================+ +| account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_check_printing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_debit_note | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi_proxy_client | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_edi_ubl_cii | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| account_edi_ubl_cii_tax_extension | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_fleet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_peppol | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| account_peppol_advanced_fields | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_qr_code_emv | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_qr_code_sepa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_tax_python | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| account_update_tax_tags | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| analytic | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| api_doc | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| attachment_indexation | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_ldap | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_oauth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_passkey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| auth_passkey_portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy_portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_password_policy_signup | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_signup | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| auth_timeout | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp_mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| auth_totp_mail_enforce | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| auth_totp_portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| barcodes | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| barcodes_gs1_nomenclature | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base | |Done | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_address_extended | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_automation | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_geolocalize | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_iban | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_import | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_import_module | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_install_request | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_setup | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_sparse_field | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| base_vat | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| board | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| bus | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| calendar_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| certificate | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage_azure | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| cloud_storage_google | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| contacts | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_iap_enrich | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_iap_mine | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_mail_plugin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| crm_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| data_recycle | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| delivery | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| delivery_mondialrelay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| delivery_stock_picking_batch | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| digest | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_booth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_booth_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_crm_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_product | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| event_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| gamification | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| gamification_sale_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| google_address_autocomplete | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_calendar | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_gmail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| google_recaptcha | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_attendance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_calendar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_contract | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_gamification | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_holidays_attendance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_holidays_contract | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_homeworking | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_homeworking_calendar | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_hourly_cost | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_org_chart | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_presence | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_recruitment_survey | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| hr_skills_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_skills_survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_timesheet_attendance | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_work_entry | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| hr_work_entry_contract | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| hr_work_entry_holidays | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| html_builder | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| html_editor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| http_routing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| iap_mail | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| im_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| iot_base | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_account_edi_ubl_cii_tests | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_account_withholding_tax | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_account_withholding_tax_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ae | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_ae_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_anz_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_ar_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ar_withholding | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_at | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_au | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bd | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be_pos_restaurant | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_be_pos_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bf | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bg | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bg_ledger | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bh | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bj | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_bo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br_sales | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_br_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ca | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cd | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cf | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cg | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ch_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ci | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cn_city | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_co | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_co_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cy | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_cz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_de | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008 | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_din5008_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dk_nemhandel | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dk_oioubl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_do | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_dz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ec | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_ec_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ec_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_ec_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ee | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eg | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eg_edi_eta | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_facturae | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_sii | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_tbai | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_tbai_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_verifactu | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_edi_verifactu_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_es_modelo130 | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_es_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_et | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_eu_oss | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fi_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_facturx_chorus_pro | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_hr_holidays | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_hr_work_entry_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_fr_pos_cert | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ga | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_invoice | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_invoice_stock_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gcc_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gq | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gr_edi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gt | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_gw | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hk | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hr_kuna | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hu | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_hu_edi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_id_efaktur | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id_efaktur_coretax | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_id_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ie | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_il | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_edi_ewaybill | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_in_ewaybill | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_in_ewaybill_irn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_ewaybill_port | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_ewaybill_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_gstin_status | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_hr_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_in_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_withholding | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_in_withholding_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_iq | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi_doi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_it_edi_ndd | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_it_edi_ndd_account_dn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_edi_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_it_edi_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_it_edi_withholding | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_it_stock_ddt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jo_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_jo_edi_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_jp_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ke | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ke_edi_tremol | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kh | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_km | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kw | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_kz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_latam_base | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_latam_check | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_latam_invoice_document | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lb_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_lk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lt | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lu | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_lv | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ma | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mc | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ml | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mt | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mt_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mu_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mx | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_mx_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_my_edi_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_edi_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_my_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_mz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ne | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ng | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_nl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_no | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_nz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_om | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pe_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_pe_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ph | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_pl_taxable_supply_date | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_pt | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_qa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro_edi_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ro_edi_stock_batch | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_ro_efactura_synchronize | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rs_edi | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_rw | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_edi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_edi_pos | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sa_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| l10n_sa_withholding_tax | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_se | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sg | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sg_ubl_pint | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_si | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_sn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_syscohada | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_td | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_test_pos_qr_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tg | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_th | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tn | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr_nilvera | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr_nilvera_edispatch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr_nilvera_einvoice | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tr_nilvera_einvoice_extended | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tw_edi_ecpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_tz_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ua | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ug | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uk | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_us | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_us_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uy | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_uy_pos | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| l10n_uy_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_ve | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_vn | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_vn_edi_viettel | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_za | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| l10n_zm_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| link_tracker | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| lunch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_bot | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_bot_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_group | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mail_plugin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| marketing_card | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_crm_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_track | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_event_track_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sale | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sale_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mass_mailing_themes | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| membership | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_calendar | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| microsoft_outlook | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_landed_costs | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_product_expiry | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_dropshipping | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_landed_costs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_purchase | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| mrp_subcontracting_repair | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| onboarding | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| partner_autocomplete | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| partnership | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_adyen | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_aps | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_asiapay | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_authorize | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_buckaroo | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_custom | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_demo | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| payment_dpo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_flutterwave | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| payment_iyzico | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_mercado_pago | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_mollie | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_nuvei | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| payment_paymob | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_paypal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_razorpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| payment_razorpay_oauth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| payment_redsys | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_worldline | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| payment_xendit | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| phone_validation | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| point_of_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| portal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| portal_rating | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_account_tax_python | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_adyen | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_discount | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_epson_printer | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_glory_cash | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_hr_restaurant | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_imin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_loyalty | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_mercado_pago | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_online_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_online_payment_self_order | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_paytm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_pine_labs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_qfpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_razorpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant_adyen | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_restaurant_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sale_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_adyen | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_self_order_epson_printer | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_self_order_pine_labs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_self_order_qfpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_razorpay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_self_order_stripe | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_six | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| pos_stripe | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| pos_viva_com | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| pos_viva_wallet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| privacy_lookup | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_email_template | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_expiry | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| product_images | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| product_matrix | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_hr_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_hr_skills | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mail_plugin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_mrp_stock_landed_costs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_sale_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_sms | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_stock_landed_costs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_timesheet_holidays | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| project_todo | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_edi_ubl_bis3 | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_mrp | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_product_matrix | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_repair | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_requisition | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_requisition_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_requisition_stock | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| rating | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| repair | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| resource | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| resource_mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| rpc | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| sale_async_emails | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_edi_ubl | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_expense_margin | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_gelato | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_gelato_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_loyalty | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_loyalty_delivery | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_management | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_mrp | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_mrp_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_pdf_quote_builder | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_product_matrix | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_project_stock_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_purchase_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_service | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_stock_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| sale_stock_product_expiry | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sale_timesheet_margin | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sales_team | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| sms_twilio | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| snailmail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| snailmail_account | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| social_media | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_hr_expense | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_hr_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_im_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_pos_hr | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_pos_restaurant | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_sale_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_stock_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| spreadsheet_dashboard_website_sale_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_account | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_delivery | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_dropshipping | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_fleet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_landed_costs | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| stock_maintenance | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_picking_batch | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| stock_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| survey_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| theme_default | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| transifex | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| uom | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| utm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| web_editor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_hierarchy | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_tour | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| web_unsplash | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_blog | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_cf_turnstile | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_iap_reveal | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_livechat | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_partner_assign | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_crm_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_customer | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_exhibitor | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_booth_sale_exhibitor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_crm | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_exhibitor | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_event_jitsi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_event_meet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_event_meet_quiz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_live | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_live_quiz | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_event_track_quiz | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_forum | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_google_map | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_hr_recruitment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_hr_recruitment_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_jitsi | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_links | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_livechat | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mail | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mail_group | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mass_mailing | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_mass_mailing_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_membership | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_partner | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_payment | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |del| website_payment_authorize | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_profile | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_project | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_autocomplete | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_collect | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_sale_collect_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_comparison | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_comparison_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_gelato | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_loyalty | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_mass_mailing | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_mondialrelay | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_mrp | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_stock | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_stock_wishlist | |No DB layout changes. | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sale_wishlist | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides_forum | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_slides_survey | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| website_sms | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ +| |new| website_timesheet | | | ++---------------------------------------------------+----------------------+-------------------------------------------------+ diff --git a/openupgrade_framework/README.rst b/openupgrade_framework/README.rst new file mode 100644 index 000000000000..8eae0db324ed --- /dev/null +++ b/openupgrade_framework/README.rst @@ -0,0 +1,214 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +===================== +Openupgrade Framework +===================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:5798eba54677737dfb52eec94d10de67ba298ebfdda05d8173dc4a802c8be38e + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2FOpenUpgrade-lightgray.png?logo=github + :target: https://github.com/OCA/OpenUpgrade/tree/19.0/openupgrade_framework + :alt: OCA/OpenUpgrade +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/OpenUpgrade-19-0/OpenUpgrade-19-0-openupgrade_framework + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/OpenUpgrade&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module is a technical module that contains a number of +monkeypatches to improve the behaviour of Odoo when migrating your +database using the OpenUpgrade migration scripts: + +- Prevent dropping columns or tables in the database when fields or + models are obsoleted in the Odoo data model of the target release. + After the migration, you can review and delete unused database tables + and columns using database_cleanup. See + https://odoo-community.org/shop/product/database-cleanup-918 +- When data records are deleted during the migration (such as views or + other system records), this is done in a secure mode. If the deletion + fails because of some unforeseen dependency, the deletion will be + cancelled and a message is logged, after which the migration + continues. +- Prevent a number of log messages that do not apply when using + OpenUpgrade. +- Suppress log messages about failed view validation, which are to be + expected during a migration. +- Run migration scripts for modules that are installed as new + dependencies of upgraded modules (when there are such scripts for + those particular modules) +- Production databases generated with demo data, will be transformed to + non-demo ones. If you want to avoid that, you have to pass through the + environment variable OPENUPGRADE_USE_DEMO, the value "yes". + +For detailed documentation see: + +- https://github.com/OCA/OpenUpgrade/ +- https://oca.github.io/OpenUpgrade + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module does not need to be installed on a database. It simply needs +to be available via your ``addons-path``. + +Configuration +============= + +- call your odoo instance with the option + ``--load=base,web,openupgrade_framework`` + +or + +- add the key to your configuration file: + +.. code:: shell + + [options] + server_wide_modules = web,openupgrade_framework + +When you load the module in either way of these ways, and you have the +openupgrade_scripts module in your addons path available, the +--upgrade-path option of Odoo will be set automatically to the location +of the OpenUpgrade migration scripts. + +Development +=========== + +The odoo_patch folder contains python files in a tree that mimicks the +folder tree of the Odoo project. It contains a number of monkey patches +to improve the migration of an Odoo database between two major versions. + +So far, we are able to make everything work without overwriting large +blocks of code, but if larger patches need to be added, please use the +method described below: + +To see the patches added, you can use ``meld`` tools: + +``meld PATH_TO_ODOO_FOLDER/odoo/ PATH_TO_OPENUPGRADE_FRAMEWORK_MODULE/odoo_patch`` + +To make more easy the diff analysis : + +- Make sure the python files has the same path as the original one. +- Keep the same indentation as the original file. (using ``if True:`` if + required) +- Add the following two lines at the beginning of your file, to avoid + flake8 / pylint errors + +.. code:: python + + # flake8: noqa + # pylint: skip-file + +- When you want to change the code. add the following tags: + +For an addition: + +.. code:: python + + # + some code... + # + +For a change: + +.. code:: python + + # + some code... + # + +For a removal: + +.. code:: python + + # + # Comment the code, instead of removing it. + # + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +------- + +* Therp BV +* Opener B.V. +* GRAP +* Hunki Enterprises BV + +Contributors +------------ + +- Stefan Rijnhart +- Sylvain LE GAL + +Other credits +------------- + +Many developers have contributed to the OpenUpgrade framework in its +previous incarnation. Their original contributions may no longer needed, +or they are no longer recognizable in their current form but OpenUpgrade +would not have existed at this point without them. + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +.. |maintainer-legalsylvain| image:: https://github.com/legalsylvain.png?size=40px + :target: https://github.com/legalsylvain + :alt: legalsylvain +.. |maintainer-StefanRijnhart| image:: https://github.com/StefanRijnhart.png?size=40px + :target: https://github.com/StefanRijnhart + :alt: StefanRijnhart +.. |maintainer-hbrunn| image:: https://github.com/hbrunn.png?size=40px + :target: https://github.com/hbrunn + :alt: hbrunn + +Current `maintainers `__: + +|maintainer-legalsylvain| |maintainer-StefanRijnhart| |maintainer-hbrunn| + +This module is part of the `OCA/OpenUpgrade `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/openupgrade_framework/__init__.py b/openupgrade_framework/__init__.py new file mode 100644 index 000000000000..97a704fd9e63 --- /dev/null +++ b/openupgrade_framework/__init__.py @@ -0,0 +1,33 @@ +import logging +import os + +from odoo.modules import get_module_path +from odoo.tools import config + +from . import odoo_patch + +if not config.get("upgrade_path"): + path = get_module_path("openupgrade_scripts", display_warning=False) + if path and os.path.isdir(os.path.join(path, "scripts")): + logging.getLogger(__name__).info( + "Setting upgrade_path to the scripts directory inside the module " + "location of openupgrade_scripts" + ) + config["upgrade_path"] = os.path.join(path, "scripts") + + +def openupgrade_test(cls): + """ + Set attributes on a test class necessary for the test framework + Use as decorator on test classes in openupgrade_scripts/scripts/*/tests/test_*.py + """ + tags = getattr(cls, "test_tags", None) or set() + if "openupgrade" not in tags: + tags.add("openupgrade") + if not any(t.endswith("_install") for t in tags): + tags.add("at_install") + cls.test_tags = tags + cls.test_module = cls.__module__.split(".")[2] + cls.test_class = cls.__name__ + cls.test_sequence = 0 + return cls diff --git a/openupgrade_framework/__manifest__.py b/openupgrade_framework/__manifest__.py new file mode 100644 index 000000000000..491fb07402f6 --- /dev/null +++ b/openupgrade_framework/__manifest__.py @@ -0,0 +1,18 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgrade Framework", + "summary": """Module to integrate in the server_wide_modules + option to make upgrades between two major revisions.""", + "author": "Odoo Community Association (OCA), Therp BV, Opener B.V., GRAP, " + "Hunki Enterprises BV", + "maintainers": ["legalsylvain", "StefanRijnhart", "hbrunn"], + "website": "https://github.com/OCA/OpenUpgrade", + "category": "Migration", + "version": "19.0.1.0.0", + "license": "AGPL-3", + "depends": ["base"], + "images": ["static/description/banner.jpg"], + "external_dependencies": {"python": ["openupgradelib"]}, + "installable": True, +} diff --git a/openupgrade_framework/odoo_patch/__init__.py b/openupgrade_framework/odoo_patch/__init__.py new file mode 100644 index 000000000000..3c691cd11703 --- /dev/null +++ b/openupgrade_framework/odoo_patch/__init__.py @@ -0,0 +1 @@ +from . import odoo diff --git a/openupgrade_framework/odoo_patch/odoo/__init__.py b/openupgrade_framework/odoo_patch/odoo/__init__.py new file mode 100644 index 000000000000..18ff659459d2 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/__init__.py @@ -0,0 +1 @@ +from . import addons, modules, orm diff --git a/openupgrade_framework/odoo_patch/odoo/addons/__init__.py b/openupgrade_framework/odoo_patch/odoo/addons/__init__.py new file mode 100644 index 000000000000..0e44449338cf --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/__init__.py @@ -0,0 +1 @@ +from . import base diff --git a/openupgrade_framework/odoo_patch/odoo/addons/base/__init__.py b/openupgrade_framework/odoo_patch/odoo/addons/base/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/base/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/openupgrade_framework/odoo_patch/odoo/addons/base/models/__init__.py b/openupgrade_framework/odoo_patch/odoo/addons/base/models/__init__.py new file mode 100644 index 000000000000..5ec7e0740f90 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/base/models/__init__.py @@ -0,0 +1,3 @@ +from . import ir_model +from . import ir_module +from . import ir_ui_view diff --git a/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_model.py b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_model.py new file mode 100644 index 000000000000..11c1864b2540 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_model.py @@ -0,0 +1,58 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from openupgradelib import openupgrade + +from odoo import models + +from odoo.addons.base.models.ir_model import ( + IrModel, + IrModelFields, + IrModelRelation, +) + + +def _drop_table(self): + """Never drop tables""" + for model in self: + if self.env.get(model.model) is not None: + openupgrade.message( + self.env.cr, + "Unknown", + False, + False, + "Not dropping the table or view of model %s", + model.model, + ) + + +IrModel._drop_table = _drop_table + + +def _drop_column(self): + """Never drop columns""" + for field in self: + if field.name in models.MAGIC_COLUMNS: + continue + openupgrade.message( + self.env.cr, + "Unknown", + False, + False, + "Not dropping the column of field %s of model %s", + field.name, + field.model, + ) + continue + + +IrModelFields._drop_column = _drop_column + + +def _module_data_uninstall(self): + """Don't delete many2many relation tables. Only unlink the + ir.model.relation record itself. + """ + self.unlink() + + +IrModelRelation._module_data_uninstall = _module_data_uninstall diff --git a/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_module.py b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_module.py new file mode 100644 index 000000000000..b71e0f78534f --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_module.py @@ -0,0 +1,50 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api + +from odoo.addons.base.models.ir_module import IrModuleModule + + +@api.model +def update_list(self): + """ + Mark auto_install modules as to install if all their dependencies are some kind of + installed. + Ignore localization modules that are set to auto_install + """ + result = IrModuleModule.update_list._original_method(self) + new_auto_install_modules = self.browse([]) + for module in self.env["ir.module.module"].search( + [ + ("auto_install", "=", True), + ("state", "=", "uninstalled"), + ("name", "not like", ("l10n_%")), + ] + ): + if all( + state in ("to upgrade", "to install", "installed") + for state in module.dependencies_id.mapped("state") + ): + new_auto_install_modules |= module + if new_auto_install_modules: + new_auto_install_modules.button_install() + return result + + +def check_external_dependencies(self, module_name, newstate="to install"): + try: + IrModuleModule.check_external_dependencies._original_method( + self, module_name, newstate=newstate + ) + except AttributeError: # pylint: disable=except-pass + # this happens when a module is installed that doesn't exist in the new version + pass + + +update_list._original_method = IrModuleModule.update_list +IrModuleModule.update_list = update_list +check_external_dependencies._original_method = ( + IrModuleModule.check_external_dependencies +) +IrModuleModule.check_external_dependencies = check_external_dependencies diff --git a/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_ui_view.py b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_ui_view.py new file mode 100644 index 000000000000..5042778ee042 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/addons/base/models/ir_ui_view.py @@ -0,0 +1,96 @@ +# Copyright 2024 Viindoo Technology Joint Stock Company (Viindoo) +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging + +from odoo import api +from odoo.exceptions import ValidationError +from odoo.modules.module import get_resource_from_path +from odoo.tools import mute_logger + +from odoo.addons.base.models.ir_ui_view import IrUiView + +_logger = logging.getLogger(__name__) + + +@api.constrains("arch_db") +def _check_xml(self): + """Don't raise or log exceptions in view validation unless explicitely + requested. Mute warnings about views which are common during migration.""" + with mute_logger("odoo.addons.base.models.ir_ui_view"): + try: + return IrUiView._check_xml._original_method(self) + except ValidationError as e: + _logger.warning( + "Can't render custom view %s for model %s. " + "Assuming you are migrating between major versions of Odoo. " + "Please review the view contents manually after the migration.\n" + "Error: %s", + self.xml_id, + self.model, + e, + ) + + +def _raise_view_error( + self, message, node=None, *, from_exception=None, from_traceback=None +): + """Don't raise or log exceptions in view validation unless explicitely + requested + """ + raise_exception = self.env.context.get("raise_view_error") + to_mute = "odoo.addons.base.models.ir_ui_view" if raise_exception else "not_muted" + with mute_logger(to_mute): + try: + return IrUiView._raise_view_error._original_method( + self, + message, + node=node, + from_exception=from_exception, + from_traceback=from_traceback, + ) + except ValueError as e: + _logger.warning( + "Can't render custom view %s for model %s. " + "Assuming you are migrating between major versions of Odoo. " + "Please review the view contents manually after the migration.\n" + "Error: %s", + self.xml_id, + self.model, + e, + ) + + +def _check_field_paths(self, node, field_paths, model_name, use): + """Ignore UnboundLocalError when we squelched the raise about missing fields""" + try: + return IrUiView._check_field_paths._original_method( + self, node, field_paths, model_name, use + ) + except UnboundLocalError: # pylint: disable=except-pass + pass + + +def _inverse_arch(self): + """ + Remove install_filename from context if it's from openupgrade_scripts. + Without this, arch_fs will point to openupgrade_scripts' file which most likely + won't exist when the migrated database is deployed, which breaks resetting views + """ + if "install_filename" in self.env.context: + path_info = get_resource_from_path(self.env.context["install_filename"]) + if path_info and path_info[0] == "openupgrade_scripts": + self = self.with_context( # pylint: disable=context-overridden + {k: v for k, v in self.env.context.items() if k != "install_filename"} + ) + return _inverse_arch._original_method(self) + + +_check_xml._original_method = IrUiView._check_xml +IrUiView._check_xml = _check_xml +_raise_view_error._original_method = IrUiView._raise_view_error +IrUiView._raise_view_error = _raise_view_error +_check_field_paths._original_method = IrUiView._check_field_paths +IrUiView._check_field_paths = _check_field_paths +_inverse_arch._original_method = IrUiView._inverse_arch +IrUiView._inverse_arch = _inverse_arch diff --git a/openupgrade_framework/odoo_patch/odoo/modules/__init__.py b/openupgrade_framework/odoo_patch/odoo/modules/__init__.py new file mode 100644 index 000000000000..e060fc2ed96b --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/modules/__init__.py @@ -0,0 +1 @@ +from . import module_graph, loading, migration diff --git a/openupgrade_framework/odoo_patch/odoo/modules/loading.py b/openupgrade_framework/odoo_patch/odoo/modules/loading.py new file mode 100644 index 000000000000..4715de5ea370 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/modules/loading.py @@ -0,0 +1,18 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +import odoo.modules.loading + + +def load_module_graph(env, graph, *args, **kwargs): + """ + Force run pre-migration scripts for modules being installed + """ + env.registry._force_upgrade_scripts.update(set(package.name for package in graph)) + return odoo.modules.loading.load_module_graph._original_method( + env, graph, *args, **kwargs + ) + + +load_module_graph._original_method = odoo.modules.loading.load_module_graph +odoo.modules.loading.load_module_graph = load_module_graph diff --git a/openupgrade_framework/odoo_patch/odoo/modules/migration.py b/openupgrade_framework/odoo_patch/odoo/modules/migration.py new file mode 100644 index 000000000000..fdc6f09eda1b --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/modules/migration.py @@ -0,0 +1,16 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo.modules.migration import MigrationManager + + +def _get_files(self): + """Turns out Odoo SA sometimes add migration scripts that interfere with + OpenUpgrade. Those we filter out here""" + MigrationManager._get_files._original_method(self) + to_exclude = [("analytic", "1.2")] + for addon, version in to_exclude: + self.migrations.get(addon, {}).get("module", {}).pop(version, None) + + +_get_files._original_method = MigrationManager._get_files +MigrationManager._get_files = _get_files diff --git a/openupgrade_framework/odoo_patch/odoo/modules/module_graph.py b/openupgrade_framework/odoo_patch/odoo/modules/module_graph.py new file mode 100644 index 000000000000..dbe2d2a73f5f --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/modules/module_graph.py @@ -0,0 +1,35 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import os + +import odoo +from odoo.modules.module_graph import ModuleGraph + + +def _update_from_database(self, *args, **kwargs) -> None: + """Prevent reloading of demo data from the new version on major upgrade""" + ModuleGraph._update_from_database._original_method(self, *args, **kwargs) + + # v19-specific: ir.model.fields#translate has changed semantics, untranslated fields + # need to be set to null instead of false. and as this is read before any upgrade + # scripts run, we do it here. the statement is a bit clunky because it has to work + # before and after the translate column is converted from boolean to varchar + self._cr.execute( + "UPDATE ir_model_fields SET translate=NULL where translate::varchar='false'" + ) + + if os.environ.get("OPENUPGRADE_USE_DEMO", "") == "yes": + return + + if ( + "base" in self._modules + and self._modules["base"].demo + and self._modules["base"].installed_version < odoo.release.major_version + ): + self._cr.execute("UPDATE ir_module_module SET demo = false") + for module in self._modules.values(): + module.demo = False + + +_update_from_database._original_method = ModuleGraph._update_from_database +ModuleGraph._update_from_database = _update_from_database diff --git a/openupgrade_framework/odoo_patch/odoo/orm/__init__.py b/openupgrade_framework/odoo_patch/odoo/orm/__init__.py new file mode 100644 index 000000000000..0650744f6bc6 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/orm/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/openupgrade_framework/odoo_patch/odoo/orm/models.py b/openupgrade_framework/odoo_patch/odoo/orm/models.py new file mode 100644 index 000000000000..641043d49b69 --- /dev/null +++ b/openupgrade_framework/odoo_patch/odoo/orm/models.py @@ -0,0 +1,42 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging +from uuid import uuid4 + +from odoo.models import BaseModel + +from odoo.addons.base.models.ir_model import MODULE_UNINSTALL_FLAG + +_logger = logging.getLogger(__name__) + + +def unlink(self): + """Don't break on unlink of obsolete records + when called from ir.model::_process_end() + + This only adapts the base unlink method. If overrides of this method + on individual models give problems, add patches for those as well. + """ + if not self.env.context.get(MODULE_UNINSTALL_FLAG): + return BaseModel.unlink._original_method(self) + savepoint = str(uuid4) + try: + self.env.cr.execute( # pylint: disable=sql-injection + f'SAVEPOINT "{savepoint}"' + ) + return BaseModel.unlink._original_method(self) + except Exception as e: + self.env.cr.execute( # pylint: disable=sql-injection + f'ROLLBACK TO SAVEPOINT "{savepoint}"' + ) + _logger.warning( + "Could not delete obsolete record with ids %s of model %s: %s", + self.ids, + self._name, + e, + ) + return False + + +unlink._original_method = BaseModel.unlink +BaseModel.unlink = unlink diff --git a/openupgrade_framework/pyproject.toml b/openupgrade_framework/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/openupgrade_framework/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/openupgrade_framework/readme/CONFIGURE.md b/openupgrade_framework/readme/CONFIGURE.md new file mode 100644 index 000000000000..13ef1e5b0946 --- /dev/null +++ b/openupgrade_framework/readme/CONFIGURE.md @@ -0,0 +1,16 @@ +- call your odoo instance with the option + `--load=base,web,openupgrade_framework` + +or + +- add the key to your configuration file: + +``` shell +[options] +server_wide_modules = web,openupgrade_framework +``` + +When you load the module in either way of these ways, and you have the +openupgrade_scripts module in your addons path available, the +--upgrade-path option of Odoo will be set automatically to the location +of the OpenUpgrade migration scripts. diff --git a/openupgrade_framework/readme/CONTRIBUTORS.md b/openupgrade_framework/readme/CONTRIBUTORS.md new file mode 100644 index 000000000000..a108409b034c --- /dev/null +++ b/openupgrade_framework/readme/CONTRIBUTORS.md @@ -0,0 +1,2 @@ +- Stefan Rijnhart \<\> +- Sylvain LE GAL \<\> diff --git a/openupgrade_framework/readme/CREDITS.md b/openupgrade_framework/readme/CREDITS.md new file mode 100644 index 000000000000..fa515612942e --- /dev/null +++ b/openupgrade_framework/readme/CREDITS.md @@ -0,0 +1,4 @@ +Many developers have contributed to the OpenUpgrade framework in its +previous incarnation. Their original contributions may no longer needed, +or they are no longer recognizable in their current form but OpenUpgrade +would not have existed at this point without them. diff --git a/openupgrade_framework/readme/DESCRIPTION.md b/openupgrade_framework/readme/DESCRIPTION.md new file mode 100644 index 000000000000..71cb68ac0b99 --- /dev/null +++ b/openupgrade_framework/readme/DESCRIPTION.md @@ -0,0 +1,29 @@ +This module is a technical module that contains a number of +monkeypatches to improve the behaviour of Odoo when migrating your +database using the OpenUpgrade migration scripts: + +- Prevent dropping columns or tables in the database when fields or + models are obsoleted in the Odoo data model of the target release. + After the migration, you can review and delete unused database tables + and columns using database_cleanup. See + +- When data records are deleted during the migration (such as views or + other system records), this is done in a secure mode. If the deletion + fails because of some unforeseen dependency, the deletion will be + cancelled and a message is logged, after which the migration + continues. +- Prevent a number of log messages that do not apply when using + OpenUpgrade. +- Suppress log messages about failed view validation, which are to be + expected during a migration. +- Run migration scripts for modules that are installed as new + dependencies of upgraded modules (when there are such scripts for + those particular modules) +- Production databases generated with demo data, will be transformed to + non-demo ones. If you want to avoid that, you have to pass through the + environment variable OPENUPGRADE_USE_DEMO, the value "yes". + +For detailed documentation see: + +- +- diff --git a/openupgrade_framework/readme/DEVELOP.md b/openupgrade_framework/readme/DEVELOP.md new file mode 100644 index 000000000000..9d4c548862be --- /dev/null +++ b/openupgrade_framework/readme/DEVELOP.md @@ -0,0 +1,50 @@ +The odoo_patch folder contains python files in a tree that mimicks the +folder tree of the Odoo project. It contains a number of monkey patches +to improve the migration of an Odoo database between two major versions. + +So far, we are able to make everything work without overwriting large +blocks of code, but if larger patches need to be added, please use the +method described below: + +To see the patches added, you can use `meld` tools: + +`meld PATH_TO_ODOO_FOLDER/odoo/ PATH_TO_OPENUPGRADE_FRAMEWORK_MODULE/odoo_patch` + +To make more easy the diff analysis : + +- Make sure the python files has the same path as the original one. +- Keep the same indentation as the original file. (using `if True:` if + required) +- Add the following two lines at the beginning of your file, to avoid + flake8 / pylint errors + +``` python +# flake8: noqa +# pylint: skip-file +``` + +- When you want to change the code. add the following tags: + +For an addition: + +``` python +# +some code... +# +``` + +For a change: + +``` python +# +some code... +# +``` + +For a removal: + +``` python +# +# Comment the code, instead of removing it. +# +``` diff --git a/openupgrade_framework/readme/INSTALL.md b/openupgrade_framework/readme/INSTALL.md new file mode 100644 index 000000000000..471a1d162ce1 --- /dev/null +++ b/openupgrade_framework/readme/INSTALL.md @@ -0,0 +1,2 @@ +This module does not need to be installed on a database. It simply needs +to be available via your `addons-path`. diff --git a/openupgrade_framework/static/description/banner.png b/openupgrade_framework/static/description/banner.png new file mode 100644 index 000000000000..9dd67ec04cf4 Binary files /dev/null and b/openupgrade_framework/static/description/banner.png differ diff --git a/openupgrade_framework/static/description/icon.png b/openupgrade_framework/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/openupgrade_framework/static/description/icon.png differ diff --git a/openupgrade_framework/static/description/index.html b/openupgrade_framework/static/description/index.html new file mode 100644 index 000000000000..ee079d11a7df --- /dev/null +++ b/openupgrade_framework/static/description/index.html @@ -0,0 +1,543 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Openupgrade Framework

+ +

Beta License: AGPL-3 OCA/OpenUpgrade Translate me on Weblate Try me on Runboat

+

This module is a technical module that contains a number of +monkeypatches to improve the behaviour of Odoo when migrating your +database using the OpenUpgrade migration scripts:

+
    +
  • Prevent dropping columns or tables in the database when fields or +models are obsoleted in the Odoo data model of the target release. +After the migration, you can review and delete unused database tables +and columns using database_cleanup. See +https://odoo-community.org/shop/product/database-cleanup-918
  • +
  • When data records are deleted during the migration (such as views or +other system records), this is done in a secure mode. If the deletion +fails because of some unforeseen dependency, the deletion will be +cancelled and a message is logged, after which the migration +continues.
  • +
  • Prevent a number of log messages that do not apply when using +OpenUpgrade.
  • +
  • Suppress log messages about failed view validation, which are to be +expected during a migration.
  • +
  • Run migration scripts for modules that are installed as new +dependencies of upgraded modules (when there are such scripts for +those particular modules)
  • +
  • Production databases generated with demo data, will be transformed to +non-demo ones. If you want to avoid that, you have to pass through the +environment variable OPENUPGRADE_USE_DEMO, the value “yes”.
  • +
+

For detailed documentation see:

+ +

Table of contents

+ +
+

Installation

+

This module does not need to be installed on a database. It simply needs +to be available via your addons-path.

+
+
+

Configuration

+
    +
  • call your odoo instance with the option +--load=base,web,openupgrade_framework
  • +
+

or

+
    +
  • add the key to your configuration file:
  • +
+
+[options]
+server_wide_modules = web,openupgrade_framework
+
+

When you load the module in either way of these ways, and you have the +openupgrade_scripts module in your addons path available, the +–upgrade-path option of Odoo will be set automatically to the location +of the OpenUpgrade migration scripts.

+
+
+

Development

+

The odoo_patch folder contains python files in a tree that mimicks the +folder tree of the Odoo project. It contains a number of monkey patches +to improve the migration of an Odoo database between two major versions.

+

So far, we are able to make everything work without overwriting large +blocks of code, but if larger patches need to be added, please use the +method described below:

+

To see the patches added, you can use meld tools:

+

meld PATH_TO_ODOO_FOLDER/odoo/ PATH_TO_OPENUPGRADE_FRAMEWORK_MODULE/odoo_patch

+

To make more easy the diff analysis :

+
    +
  • Make sure the python files has the same path as the original one.
  • +
  • Keep the same indentation as the original file. (using if True: if +required)
  • +
  • Add the following two lines at the beginning of your file, to avoid +flake8 / pylint errors
  • +
+
+# flake8: noqa
+# pylint: skip-file
+
+
    +
  • When you want to change the code. add the following tags:
  • +
+

For an addition:

+
+# <OpenUpgrade:ADD>
+some code...
+# </OpenUpgrade>
+
+

For a change:

+
+# <OpenUpgrade:CHANGE>
+some code...
+# </OpenUpgrade>
+
+

For a removal:

+
+# <OpenUpgrade:REMOVE>
+# Comment the code, instead of removing it.
+# </OpenUpgrade>
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Therp BV
  • +
  • Opener B.V.
  • +
  • GRAP
  • +
  • Hunki Enterprises BV
  • +
+
+
+

Contributors

+ +
+
+

Other credits

+

Many developers have contributed to the OpenUpgrade framework in its +previous incarnation. Their original contributions may no longer needed, +or they are no longer recognizable in their current form but OpenUpgrade +would not have existed at this point without them.

+
+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

Current maintainers:

+

legalsylvain StefanRijnhart hbrunn

+

This module is part of the OCA/OpenUpgrade project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/openupgrade_framework/tests/__init__.py b/openupgrade_framework/tests/__init__.py new file mode 100644 index 000000000000..f0425e721034 --- /dev/null +++ b/openupgrade_framework/tests/__init__.py @@ -0,0 +1 @@ +from . import test_openupgrade_framework diff --git a/openupgrade_framework/tests/test_openupgrade_framework.py b/openupgrade_framework/tests/test_openupgrade_framework.py new file mode 100644 index 000000000000..4a763142f32f --- /dev/null +++ b/openupgrade_framework/tests/test_openupgrade_framework.py @@ -0,0 +1,35 @@ +from odoo.tests.common import TransactionCase +from odoo.tools.misc import mute_logger + +from odoo.addons.base.models.ir_model import MODULE_UNINSTALL_FLAG + + +class TestOpenupgradeFramework(TransactionCase): + def test_01_delete_undeletable_record(self): + """ + Test that Odoo doesn't crash when deleting records that can't be deleted + during module upgrade + """ + with ( + mute_logger("odoo.sql_db"), + self.assertLogs( + "odoo.addons.openupgrade_framework.odoo_patch.odoo.orm.models" + ), + ): + self.env.ref("base.partner_admin").with_context( + **{MODULE_UNINSTALL_FLAG: True} + ).unlink() + + def test_02_invalid_view(self): + """ + Test that we patch away fatal view errors and log the problem + """ + with self.assertLogs( + "odoo.addons.openupgrade_framework.odoo_patch.odoo.addons.base.models.ir_ui_view" + ): + self.env["ir.ui.view"].create( + { + "model": "res.partner", + "arch": '
', + } + ) diff --git a/openupgrade_scripts/README.rst b/openupgrade_scripts/README.rst new file mode 100644 index 000000000000..d3f8164e687e --- /dev/null +++ b/openupgrade_scripts/README.rst @@ -0,0 +1,92 @@ +.. image:: https://odoo-community.org/readme-banner-image + :target: https://odoo-community.org/get-involved?utm_source=readme + :alt: Odoo Community Association + +=================== +Openupgrade Scripts +=================== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:2029125d9bf0d1f2c4246f5bd141a1f6740cfd74b48f4218d6c57621d9868df7 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2FOpenUpgrade-lightgray.png?logo=github + :target: https://github.com/OCA/OpenUpgrade/tree/19.0/openupgrade_scripts + :alt: OCA/OpenUpgrade +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/OpenUpgrade-19-0/OpenUpgrade-19-0-openupgrade_scripts + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/OpenUpgrade&target_branch=19.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +This module is a containers of migration script to migrate from 18.0 to +19.0 version. + +**Table of contents** + +.. contents:: + :local: + +Installation +============ + +This module does not need to be installed on a database. It simply needs +to be available via your ``addons-path``. + +Configuration +============= + +- call your odoo instance with the option + ``--upgrade-path=/PATH_TO_openupgrade_scripts_MODULE/scripts/`` + +or + +- add the key to your configuration file: + +.. code:: shell + + [options] + upgrade_path = /PATH_TO_openupgrade_scripts_MODULE/scripts/ + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Maintainers +----------- + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/OpenUpgrade `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/openupgrade_scripts/__init__.py b/openupgrade_scripts/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/openupgrade_scripts/__manifest__.py b/openupgrade_scripts/__manifest__.py new file mode 100644 index 000000000000..0d588aa418cd --- /dev/null +++ b/openupgrade_scripts/__manifest__.py @@ -0,0 +1,16 @@ +# Copyright Odoo Community Association (OCA) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Openupgrade Scripts", + "summary": """Module that contains all the migrations analysis + and scripts for migrate Odoo SA modules.""", + "author": "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/OpenUpgrade", + "category": "Migration", + "version": "19.0.1.0.0", + "license": "AGPL-3", + "depends": ["base"], + "images": ["static/description/banner.jpg"], + "external_dependencies": {"python": ["openupgradelib"]}, + "installable": True, +} diff --git a/openupgrade_scripts/apriori.py b/openupgrade_scripts/apriori.py new file mode 100644 index 000000000000..ad2269309acc --- /dev/null +++ b/openupgrade_scripts/apriori.py @@ -0,0 +1,30 @@ +"""Encode any known changes to the database here +to help the matching process +""" + +# Renamed modules is a mapping from old module name to new module name +renamed_modules = { + # odoo + # odoo/enterprise + # OCA/... +} + +# Merged modules contain a mapping from old module names to other, +# preexisting module names +merged_modules = { + # odoo + # odoo/enterprise + # OCA/... +} + +# only used here for upgrade_analysis +renamed_models = { + # odoo + # OCA/... +} + +# only used here for upgrade_analysis +merged_models = { + # odoo + # OCA/... +} diff --git a/openupgrade_scripts/pyproject.toml b/openupgrade_scripts/pyproject.toml new file mode 100644 index 000000000000..4231d0cccb3d --- /dev/null +++ b/openupgrade_scripts/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/openupgrade_scripts/readme/CONFIGURE.md b/openupgrade_scripts/readme/CONFIGURE.md new file mode 100644 index 000000000000..102ae2481b2f --- /dev/null +++ b/openupgrade_scripts/readme/CONFIGURE.md @@ -0,0 +1,11 @@ +- call your odoo instance with the option + `--upgrade-path=/PATH_TO_openupgrade_scripts_MODULE/scripts/` + +or + +- add the key to your configuration file: + +``` shell +[options] +upgrade_path = /PATH_TO_openupgrade_scripts_MODULE/scripts/ +``` diff --git a/openupgrade_scripts/readme/DESCRIPTION.md b/openupgrade_scripts/readme/DESCRIPTION.md new file mode 100644 index 000000000000..23d24b62fdff --- /dev/null +++ b/openupgrade_scripts/readme/DESCRIPTION.md @@ -0,0 +1,2 @@ +This module is a containers of migration script to migrate from 18.0 to +19.0 version. diff --git a/openupgrade_scripts/readme/INSTALL.md b/openupgrade_scripts/readme/INSTALL.md new file mode 100644 index 000000000000..471a1d162ce1 --- /dev/null +++ b/openupgrade_scripts/readme/INSTALL.md @@ -0,0 +1,2 @@ +This module does not need to be installed on a database. It simply needs +to be available via your `addons-path`. diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes.xml b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes.xml new file mode 100644 index 000000000000..70fa825de1da --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes.xml @@ -0,0 +1,65 @@ + + + + AED + + + 1 + TRN + + + Congo (DRC) + + + Congo (Republic) + + + CH-LI + + + EEU + + + EU + + + GCC + + + [('user_ids','in',[False,user.id])] + ir.filter: owner or global + + + + + + + [('user_ids', 'in', user.ids)] + + + + + + VAT + + + + + + SEPA + + + SA + + + +
Administrator
+
+ +
+ + +
System
+
+
+
diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml new file mode 100644 index 000000000000..f5409b5699f4 --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/noupdate_changes_work.xml @@ -0,0 +1,63 @@ + + + + AED + + + 1 + TRN + + + Congo (DRC) + + + Congo (Republic) + + + CH-LI + + + EEU + + + EU + + + GCC + + + [('user_ids','in',[False,user.id])] + ir.filter: owner or global + + + + + + + [('user_ids', 'in', user.ids)] + + + + + + VAT + + + + + + SEPA + + + SA + + + Administrator + + + + System + + diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py b/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py new file mode 100644 index 000000000000..a4997c2a6ba1 --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/post-migration.py @@ -0,0 +1,107 @@ +# Copyright 2025 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +from odoo.fields import Command + + +def _ir_actions_act_window_target(env): + """ + selection value 'inline' was removed, map to 'current' + """ + openupgrade.logged_query( + env.cr, + "UPDATE ir_act_window SET target='current' WHERE target='inline'", + ) + + +def _ir_actions_server_child_ids(env): + """ + Field was changed from m2m to o2m - set parent_id from m2m table, + duplicate child actions that had multiple parents + """ + env.cr.execute( + """ + SELECT action_id, array_agg(server_id) + FROM rel_server_actions GROUP BY action_id + """ + ) + for action_id, parent_ids in env.cr.fetchall(): + action = env["ir.actions.server"].browse(action_id) + parents = env["ir.actions.server"].browse(parent_ids) + action.parent_id = parents[0] + for parent in parents[1:]: + action.copy({"name": action.name, "parent_id": parent.id}) + + +def _ir_actions_server_html_value(env): + """ + For evaluation_type 'value' and update_field_id.ttype == 'html', + new field html_value is used + """ + for action in env["ir.actions.server"].search( + [ + ("state", "=", "object_write"), + ("evaluation_type", "=", "value"), + ("update_field_id.ttype", "=", "html"), + ] + ): + action.write({"html_value": action.value}) + + +def _ir_filters_user_ids(env): + """ + m2o user_id has been transformed to m2m user_ids + """ + openupgrade.m2o_to_x2m( + env.cr, env["ir.filters"], env["ir.filters"]._table, "user_ids", "user_id" + ) + + +def _res_lang(env): + """ + Char fields date_format, grouping and time_format have been dumbed down to + selection fields. Keep their original value in a legacy column, and map existing + values not in the selection to the default value + """ + ResLang = env["res.lang"] + for field_name in ("date_format", "time_format", "grouping"): + field = ResLang._fields[field_name] + openupgrade.copy_columns(env.cr, {"res_lang": [(field_name, None, None)]}) + openupgrade.logged_query( + env.cr, + f"UPDATE res_lang SET {field_name}=%(default)s " + f"WHERE {field_name} NOT IN %(selection)s", + { + "default": field.default(ResLang), + "selection": tuple( + value for value, _string in field._description_selection(env) + ), + }, + ) + + +def _init_default_user_group(env): + """ + Assign all groups of default_user to implied_ids of default_user_group + """ + default_user = env.ref("base.default_user", raise_if_not_found=False) + if not default_user: + return + env.ref("base.default_user_group").write( + { + "implied_ids": [Command.set(default_user.group_ids.ids)], + } + ) + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.load_data(env, "base", "19.0.1.3/noupdate_changes_work.xml") + _ir_actions_act_window_target(env) + _ir_actions_server_child_ids(env) + _ir_actions_server_html_value(env) + _ir_filters_user_ids(env) + _res_lang(env) + _init_default_user_group(env) diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py b/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py new file mode 100644 index 000000000000..28873fe73c63 --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/pre-migration.py @@ -0,0 +1,172 @@ +# Copyright 2025 Hunki Enterprises BV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from openupgradelib import openupgrade + +# pylint: disable=odoo-addons-relative-import +from odoo.addons.openupgrade_scripts.apriori import merged_modules, renamed_modules + +_renamed_xmlids = [ + ("l10n_fr.dom-tom", "base.dom-tom"), + ("l10n_at.state_at_1", "base.state_at_1"), + ("l10n_at.state_at_2", "base.state_at_2"), + ("l10n_at.state_at_3", "base.state_at_3"), + ("l10n_at.state_at_4", "base.state_at_4"), + ("l10n_at.state_at_5", "base.state_at_5"), + ("l10n_at.state_at_6", "base.state_at_6"), + ("l10n_at.state_at_7", "base.state_at_7"), + ("l10n_at.state_at_8", "base.state_at_8"), + ("l10n_at.state_at_9", "base.state_at_9"), + ("l10n_bd.state_bd_a", "base.state_bd_a"), + ("l10n_bd.state_bd_b", "base.state_bd_b"), + ("l10n_bd.state_bd_c", "base.state_bd_c"), + ("l10n_bd.state_bd_d", "base.state_bd_d"), + ("l10n_bd.state_bd_e", "base.state_bd_e"), + ("l10n_bd.state_bd_f", "base.state_bd_f"), + ("l10n_bd.state_bd_g", "base.state_bd_g"), + ("l10n_bd.state_bd_h", "base.state_bd_h"), + ("base.state_id_pp", "base.state_id_pe"), + ("l10n_iq.state_iq_01", "base.state_iq_01"), + ("l10n_iq.state_iq_01_ar", "base.state_iq_01_ar"), + ("l10n_iq.state_iq_02", "base.state_iq_02"), + ("l10n_iq.state_iq_02_ar", "base.state_iq_02_ar"), + ("l10n_iq.state_iq_03", "base.state_iq_03"), + ("l10n_iq.state_iq_03_ar", "base.state_iq_03_ar"), + ("l10n_iq.state_iq_04", "base.state_iq_04"), + ("l10n_iq.state_iq_04_ar", "base.state_iq_04_ar"), + ("l10n_iq.state_iq_05", "base.state_iq_05"), + ("l10n_iq.state_iq_05_ar", "base.state_iq_05_ar"), + ("l10n_iq.state_iq_06", "base.state_iq_06"), + ("l10n_iq.state_iq_06_ar", "base.state_iq_06_ar"), + ("l10n_iq.state_iq_07", "base.state_iq_07"), + ("l10n_iq.state_iq_07_ar", "base.state_iq_07_ar"), + ("l10n_iq.state_iq_08", "base.state_iq_08"), + ("l10n_iq.state_iq_08_ar", "base.state_iq_08_ar"), + ("l10n_iq.state_iq_09", "base.state_iq_09"), + ("l10n_iq.state_iq_09_ar", "base.state_iq_09_ar"), + ("l10n_iq.state_iq_10", "base.state_iq_10"), + ("l10n_iq.state_iq_10_ar", "base.state_iq_10_ar"), + ("l10n_iq.state_iq_11", "base.state_iq_11"), + ("l10n_iq.state_iq_11_ar", "base.state_iq_11_ar"), + ("l10n_iq.state_iq_12", "base.state_iq_12"), + ("l10n_iq.state_iq_12_ar", "base.state_iq_12_ar"), + ("l10n_iq.state_iq_13", "base.state_iq_13"), + ("l10n_iq.state_iq_13_ar", "base.state_iq_13_ar"), + ("l10n_iq.state_iq_14", "base.state_iq_14"), + ("l10n_iq.state_iq_14_ar", "base.state_iq_14_ar"), + ("l10n_iq.state_iq_15", "base.state_iq_15"), + ("l10n_iq.state_iq_15_ar", "base.state_iq_15_ar"), + ("l10n_iq.state_iq_16", "base.state_iq_16"), + ("l10n_iq.state_iq_16_ar", "base.state_iq_16_ar"), + ("l10n_iq.state_iq_17", "base.state_iq_17"), + ("l10n_iq.state_iq_17_ar", "base.state_iq_17_ar"), + ("l10n_iq.state_iq_18", "base.state_iq_18"), + ("l10n_iq.state_iq_18_ar", "base.state_iq_18_ar"), + ("l10n_pk.state_pk_ajk", "base.state_pk_ajk"), + ("l10n_pk.state_pk_ba", "base.state_pk_ba"), + ("l10n_pk.state_pk_gb", "base.state_pk_gb"), + ("l10n_pk.state_pk_is", "base.state_pk_is"), + ("l10n_pk.state_pk_kp", "base.state_pk_kp"), + ("l10n_pk.state_pk_pb", "base.state_pk_pb"), + ("l10n_pk.state_pk_sd", "base.state_pk_sd"), + ("l10n_pl.state_pl_ds", "base.state_pl_ds"), + ("l10n_pl.state_pl_kp", "base.state_pl_kp"), + ("l10n_pl.state_pl_lb", "base.state_pl_lb"), + ("l10n_pl.state_pl_ld", "base.state_pl_ld"), + ("l10n_pl.state_pl_ls", "base.state_pl_ls"), + ("l10n_pl.state_pl_mp", "base.state_pl_mp"), + ("l10n_pl.state_pl_mz", "base.state_pl_mz"), + ("l10n_pl.state_pl_op", "base.state_pl_op"), + ("l10n_pl.state_pl_pk", "base.state_pl_pk"), + ("l10n_pl.state_pl_pl", "base.state_pl_pl"), + ("l10n_pl.state_pl_pm", "base.state_pl_pm"), + ("l10n_pl.state_pl_sk", "base.state_pl_sk"), + ("l10n_pl.state_pl_sl", "base.state_pl_sl"), + ("l10n_pl.state_pl_wm", "base.state_pl_wm"), + ("l10n_pl.state_pl_wp", "base.state_pl_wp"), + ("l10n_pl.state_pl_zp", "base.state_pl_zp"), + ("l10n_tw.state_tw_chh", "base.state_tw_chh"), + ("l10n_tw.state_tw_cic", "base.state_tw_cic"), + ("l10n_tw.state_tw_cih", "base.state_tw_cih"), + ("l10n_tw.state_tw_hch", "base.state_tw_hch"), + ("l10n_tw.state_tw_hct", "base.state_tw_hct"), + ("l10n_tw.state_tw_hlh", "base.state_tw_hlh"), + ("l10n_tw.state_tw_ilh", "base.state_tw_ilh"), + ("l10n_tw.state_tw_khc", "base.state_tw_khc"), + ("l10n_tw.state_tw_klc", "base.state_tw_klc"), + ("l10n_tw.state_tw_kmc", "base.state_tw_kmc"), + ("l10n_tw.state_tw_lcc", "base.state_tw_lcc"), + ("l10n_tw.state_tw_mlh", "base.state_tw_mlh"), + ("l10n_tw.state_tw_ntc", "base.state_tw_ntc"), + ("l10n_tw.state_tw_ntpc", "base.state_tw_ntpc"), + ("l10n_tw.state_tw_phc", "base.state_tw_phc"), + ("l10n_tw.state_tw_pth", "base.state_tw_pth"), + ("l10n_tw.state_tw_tcc", "base.state_tw_tcc"), + ("l10n_tw.state_tw_tnh", "base.state_tw_tnh"), + ("l10n_tw.state_tw_tpc", "base.state_tw_tpc"), + ("l10n_tw.state_tw_tth", "base.state_tw_tth"), + ("l10n_tw.state_tw_tyc", "base.state_tw_tyc"), + ("l10n_tw.state_tw_ylh", "base.state_tw_ylh"), +] + +_renamed_fields = [ + ( + "ir.actions.act_window", + "ir_act_window", + "groups_id", + "group_ids", + ), + ( + "ir.actions.report", + "ir_act_report_xml", + "groups_id", + "group_ids", + ), + ( + "ir.actions.server", + "ir_act_report_xml", + "groups_id", + "group_ids", + ), + ( + "ir.ui.menu", + "ir_ui_menu", + "groups_id", + "group_ids", + ), + ( + "ir.ui.view", + "ir_ui_view", + "groups_id", + "group_ids", + ), + ( + "res.groups", + "res_groups", + "users", + "user_ids", + ), + ( + "res.users", + "res_users", + "groups_id", + "group_ids", + ), +] + + +@openupgrade.migrate() +def migrate(env, version): + openupgrade.logged_query( + env.cr, + f""" + CREATE TABLE { + openupgrade.get_legacy_name("ir_module_module") + } AS (SELECT name, state FROM ir_module_module); + """, + ) + openupgrade.update_module_names(env.cr, renamed_modules.items()) + openupgrade.update_module_names(env.cr, merged_modules.items(), merge_modules=True) + openupgrade.clean_transient_models(env.cr) + openupgrade.rename_xmlids(env.cr, _renamed_xmlids) + openupgrade.rename_fields(env, _renamed_fields) diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis.txt b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis.txt new file mode 100644 index 000000000000..feb979c67252 --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis.txt @@ -0,0 +1,343 @@ +---Models in module 'base'--- +obsolete model res.partner.title +new model ir.actions.server.history +new model properties.base.definition +new model properties.base.definition.mixin [abstract] +new model res.groups.privilege +new model server.action.history.wizard [transient] +---Fields in module 'base'--- +account / res.company / company_registry_placeholder (char): not a function anymore +account / res.company / company_registry_placeholder (char): now related +base / ir.actions.act_url / _order : _order is now 'name, id' ('name') +base / ir.actions.act_window / _order : _order is now 'name, id' ('name') +base / ir.actions.act_window / cache (boolean) : NEW hasdefault: default +base / ir.actions.act_window / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.act_window / groups_id (many2many) : DEL relation: res.groups +base / ir.actions.act_window / target (selection) : selection_keys removed: [inline] +base / ir.actions.act_window_close / _order : _order is now 'name, id' ('name') +base / ir.actions.actions / _order : _order is now 'name, id' ('name') +base / ir.actions.client / _order : _order is now 'name, id' ('name') +base / ir.actions.report / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.report / groups_id (many2many) : DEL relation: res.groups +base / ir.actions.server / _order : _order is now 'sequence,name,id' ('sequence,name') +base / ir.actions.server / automated_name (char) : NEW isfunction: function, stored +base / ir.actions.server / child_ids (many2many) : table is now 'False' ('rel_server_actions') +base / ir.actions.server / child_ids (many2many) : type is now 'one2many' ('many2many') +base / ir.actions.server / crud_model_id (many2one) : now a function +base / ir.actions.server / evaluation_type (selection) : selection_keys added: [sequence] (most likely nothing to do) +base / ir.actions.server / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.server / groups_id (many2many) : DEL relation: res.groups +base / ir.actions.server / html_value (html) : NEW +base / ir.actions.server / ir_cron_ids (one2many) : NEW relation: ir.cron +base / ir.actions.server / model_name (char) : not stored anymore +base / ir.actions.server / parent_id (many2one) : NEW relation: ir.actions.server +base / ir.actions.server / sequence_id (many2one) : NEW relation: ir.sequence +base / ir.actions.server / state (selection) : selection_keys added: [object_copy] (most likely nothing to do) +base / ir.actions.server / value_field_to_show (selection): selection_keys added: [html_value, sequence_id] (most likely nothing to do) +base / ir.actions.server.history / action_id (many2one) : NEW relation: ir.actions.server, required +base / ir.actions.server.history / code (text) : NEW +base / ir.cron / _order : _order is now 'cron_name, id' ('cron_name') +base / ir.cron / child_ids (many2many) : type is now 'one2many' ('many2many') +base / ir.cron.trigger / call_at (datetime) : now required +base / ir.cron.trigger / cron_id (many2one) : now required +base / ir.exports / _order : _order is now 'name, id' ('name') +base / ir.filters / user_id (many2one) : DEL relation: res.users +base / ir.filters / user_ids (many2many) : NEW relation: res.users +base / ir.mail_server / smtp_encryption (selection) : selection_keys added: [ssl_strict, starttls_strict] (most likely nothing to do) +base / ir.model / abstract (boolean) : NEW +base / ir.model / fold_name (char) : NEW +base / ir.model.fields / _order : _order is now 'name, id' ('name') +base / ir.model.fields / complete_name (char) : DEL +base / ir.model.fields / translate (boolean) : selection_keys is now '['html_translate', 'standard', 'xml_translate']' ('False') +base / ir.model.fields / translate (boolean) : type is now 'selection' ('boolean') +base / ir.module.category / _order : _order is now 'sequence, name, id' ('name') +base / ir.module.category / privilege_ids (one2many) : NEW relation: res.groups.privilege +base / ir.profile / cpu_duration (float) : NEW +base / ir.profile / others (text) : NEW +base / ir.sequence / _order : _order is now 'name, id' ('name') +base / ir.ui.menu / group_ids (many2many) : NEW relation: res.groups +base / ir.ui.menu / groups_id (many2many) : DEL relation: res.groups +base / ir.ui.view / group_ids (many2many) : NEW relation: res.groups +base / ir.ui.view / groups_id (many2many) : DEL relation: res.groups +base / ir.ui.view.custom / _order : _order is now 'create_date desc, id desc' ('create_date desc') +base / properties.base.definition / properties_definition (properties_definition): NEW +base / properties.base.definition / properties_field_id (many2one): NEW relation: ir.model.fields, required +base / report.layout / _order : _order is now 'sequence, id' ('sequence') +base / res.bank / _order : _order is now 'name, id' ('name') +base / res.company / company_registry_placeholder (char): previously in module account +base / res.company / mobile (char) : DEL +base / res.country / _order : _order is now 'name, id' ('name') +base / res.country.group / code (char) : NEW +base / res.country.state / _order : _order is now 'code, id' ('code') +base / res.currency.rate / _order : _order is now 'name desc, id' ('name desc') +base / res.groups / _order : _order is now 'privilege_id, sequence, name, id' ('name') +base / res.groups / category_id (many2one) : DEL relation: ir.module.category +base / res.groups / color (integer) : DEL +base / res.groups / implied_by_ids (many2many) : NEW relation: res.groups +base / res.groups / privilege_id (many2one) : NEW relation: res.groups.privilege +base / res.groups / sequence (integer) : NEW +base / res.groups / user_ids (many2many) : NEW relation: res.users +base / res.groups / users (many2many) : DEL relation: res.users +base / res.groups.privilege / category_id (many2one) : NEW relation: ir.module.category +base / res.groups.privilege / description (text) : NEW +base / res.groups.privilege / group_ids (one2many) : NEW relation: res.groups +base / res.groups.privilege / name (char) : NEW required, translate +base / res.groups.privilege / placeholder (char) : NEW hasdefault: default +base / res.groups.privilege / sequence (integer) : NEW hasdefault: default +base / res.lang / date_format (char) : selection_keys is now 'function' ('False') +base / res.lang / date_format (char) : type is now 'selection' ('char') +base / res.lang / grouping (char) : selection_keys is now '['[3,0]', '[3,2,0]']' ('False') +base / res.lang / grouping (char) : type is now 'selection' ('char') +base / res.lang / short_time_format (char) : DEL required +base / res.lang / time_format (char) : selection_keys is now '['%H:%M:%S', '%I:%M:%S %p']' ('False') +base / res.lang / time_format (char) : type is now 'selection' ('char') +base / res.partner / mobile (char) : DEL +base / res.partner / properties (properties) : NEW hasdefault: compute +base / res.partner / title (many2one) : DEL relation: res.partner.title +base / res.partner.bank / clearing_number (char) : NEW +base / res.partner.bank / note (text) : NEW +base / res.partner.category / _order : _order is now 'name, id' ('name') +base / res.partner.industry / _order : _order is now 'name, id' ('name') +base / res.partner.title / name (char) : DEL required +base / res.partner.title / shortcut (char) : DEL +base / res.users / group_ids (many2many) : NEW relation: res.groups, hasdefault: default +base / res.users / groups_id (many2many) : DEL relation: res.groups +base / res.users / role (selection) : NEW selection_keys: ['group_system', 'group_user'], hasdefault: compute, stored: False +base / res.users / view_group_hierarchy (json) : NEW hasdefault: default, stored: False +---XML records in module 'base'--- +NEW ir.actions.act_window: base.action_res_groups_privilege +DEL ir.actions.act_window: base.action_partner_title_contact +NEW ir.model.access: base.access_ir_actions_server_history_group_system +NEW ir.model.access: base.access_properties_base_definition_group_system +NEW ir.model.access: base.access_res_groups_privilege_group_erp_manager +NEW ir.model.access: base.access_res_groups_privilege_group_user +NEW ir.model.access: base.access_server_action_history_wizard +DEL ir.model.access: base.access_res_partner_title_group_partner_manager +DEL ir.model.access: base.access_res_partner_title_group_user +NEW ir.model.constraint: base.constraint_ir_act_window_view_unique_mode_per_action +NEW ir.model.constraint: base.constraint_ir_attachment_res_idx +NEW ir.model.constraint: base.constraint_ir_filters_get_filters_index +NEW ir.model.constraint: base.constraint_ir_model_data_model_res_id_index +NEW ir.model.constraint: base.constraint_ir_model_data_module_name_uniq_index +NEW ir.model.constraint: base.constraint_ir_ui_view_custom_user_id_ref_id +NEW ir.model.constraint: base.constraint_ir_ui_view_model_type_inherit_id +NEW ir.model.constraint: base.constraint_properties_base_definition_unique_properties_field_id +NEW ir.model.constraint: base.constraint_res_country_group_check_code_uniq +NEW ir.model.constraint: base.constraint_res_device_composite_idx +NEW ir.model.constraint: base.constraint_res_device_log_composite_idx +NEW ir.model.constraint: base.constraint_res_device_log_revoked_idx +NEW ir.model.constraint: base.constraint_res_device_revoked_idx +ir.model.constraint: base.constraint_res_groups_name_uniq (changed definition: is now 'UNIQUE (privilege_id, name)' ('unique(category_id,name)')) +DEL ir.model.constraint: base.constraint_ir_filters_name_model_uid_unique +NEW ir.module.category: base.module_category_esg +NEW ir.module.category: base.module_category_human_resources_referrals +NEW ir.module.category: base.module_category_internet_of_things_(iot) +NEW ir.module.category: base.module_category_master_data +NEW ir.module.category: base.module_category_shipping_connectors (noupdate) +NEW ir.module.category: base.module_category_supply_chain (noupdate) +DEL ir.module.category: base.module_category_inventory (noupdate) +DEL ir.module.category: base.module_category_manufacturing (noupdate) +DEL ir.module.category: base.module_category_usability +DEL ir.module.category: base.module_category_user_type +NEW ir.rule: base.properties_base_definition_rule_admin (noupdate) +NEW ir.rule: base.res_users_rule_portal (noupdate) +DEL ir.rule: base.ir_filters_delete_own_rule (noupdate) +NEW ir.ui.menu: base.menu_action_res_groups_privilege +NEW ir.ui.view: base.ir_filters_view_edit_form +NEW ir.ui.view: base.res_users_apikeys_view_kanban +NEW ir.ui.view: base.server_action_history_wizard_view +NEW ir.ui.view: base.view_default_groups_form +NEW ir.ui.view: base.view_groups_list +NEW ir.ui.view: base.view_res_groups_privilege_form +NEW ir.ui.view: base.view_res_groups_privilege_list +NEW ir.ui.view: base.view_server_action_kanban +DEL ir.ui.view: base.res_partner_view_form_private +DEL ir.ui.view: base.user_groups_view +DEL ir.ui.view: base.view_partner_title_form +DEL ir.ui.view: base.view_partner_title_tree +NEW res.country: base.xi (noupdate) +NEW res.country.group: base.dom-tom [renamed from l10n_fr module] (noupdate) (noupdate switched) +NEW res.country.group: base.europe_prefix (noupdate) +NEW res.country.state: base.state_at_1 [renamed from l10n_at module] +NEW res.country.state: base.state_at_2 [renamed from l10n_at module] +NEW res.country.state: base.state_at_3 [renamed from l10n_at module] +NEW res.country.state: base.state_at_4 [renamed from l10n_at module] +NEW res.country.state: base.state_at_5 [renamed from l10n_at module] +NEW res.country.state: base.state_at_6 [renamed from l10n_at module] +NEW res.country.state: base.state_at_7 [renamed from l10n_at module] +NEW res.country.state: base.state_at_8 [renamed from l10n_at module] +NEW res.country.state: base.state_at_9 [renamed from l10n_at module] +NEW res.country.state: base.state_bd_a [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_b [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_c [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_d [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_e [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_f [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_g [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_h [renamed from l10n_bd module] +NEW res.country.state: base.state_id_pe +NEW res.country.state: base.state_iq_01 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_01_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_02 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_02_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_03 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_03_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_04 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_04_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_05 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_05_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_06 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_06_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_07 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_07_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_08 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_08_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_09 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_09_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_10 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_10_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_11 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_11_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_12 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_12_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_13 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_13_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_14 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_14_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_15 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_15_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_16 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_16_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_17 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_17_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_18 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_18_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_ng_ab +NEW res.country.state: base.state_ng_ad +NEW res.country.state: base.state_ng_ak +NEW res.country.state: base.state_ng_an +NEW res.country.state: base.state_ng_ba +NEW res.country.state: base.state_ng_be +NEW res.country.state: base.state_ng_bo +NEW res.country.state: base.state_ng_by +NEW res.country.state: base.state_ng_cr +NEW res.country.state: base.state_ng_de +NEW res.country.state: base.state_ng_eb +NEW res.country.state: base.state_ng_ed +NEW res.country.state: base.state_ng_ek +NEW res.country.state: base.state_ng_en +NEW res.country.state: base.state_ng_fc +NEW res.country.state: base.state_ng_go +NEW res.country.state: base.state_ng_im +NEW res.country.state: base.state_ng_ji +NEW res.country.state: base.state_ng_ka +NEW res.country.state: base.state_ng_ke +NEW res.country.state: base.state_ng_kn +NEW res.country.state: base.state_ng_ko +NEW res.country.state: base.state_ng_kt +NEW res.country.state: base.state_ng_kw +NEW res.country.state: base.state_ng_la +NEW res.country.state: base.state_ng_na +NEW res.country.state: base.state_ng_ni +NEW res.country.state: base.state_ng_og +NEW res.country.state: base.state_ng_on +NEW res.country.state: base.state_ng_os +NEW res.country.state: base.state_ng_oy +NEW res.country.state: base.state_ng_pl +NEW res.country.state: base.state_ng_ri +NEW res.country.state: base.state_ng_so +NEW res.country.state: base.state_ng_ta +NEW res.country.state: base.state_ng_yo +NEW res.country.state: base.state_ng_za +NEW res.country.state: base.state_pk_ajk [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_ba [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_gb [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_is [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_kp [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_pb [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_sd [renamed from l10n_pk module] +NEW res.country.state: base.state_pl_ds [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_kp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_lb [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_ld [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_ls [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_mp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_mz [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_op [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pk [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pl [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pm [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_sk [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_sl [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_wm [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_wp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_zp [renamed from l10n_pl module] +NEW res.country.state: base.state_so_1 +NEW res.country.state: base.state_so_2 +NEW res.country.state: base.state_so_3 +NEW res.country.state: base.state_so_4 +NEW res.country.state: base.state_so_5 +NEW res.country.state: base.state_so_6 +NEW res.country.state: base.state_so_7 +NEW res.country.state: base.state_so_8 +NEW res.country.state: base.state_tw_chh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_cic [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_cih [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hch [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hct [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hlh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ilh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_khc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_klc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_kmc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_lcc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_mlh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ntc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ntpc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_phc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_pth [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tcc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tnh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tpc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tth [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tyc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ylh [renamed from l10n_tw module] +DEL res.country.state: base.state_id_pp +DEL res.country.state: base.state_vn_VN-03 +DEL res.country.state: base.state_vn_VN-06 +DEL res.country.state: base.state_vn_VN-14 +DEL res.country.state: base.state_vn_VN-20 +DEL res.country.state: base.state_vn_VN-24 +DEL res.country.state: base.state_vn_VN-27 +DEL res.country.state: base.state_vn_VN-28 +DEL res.country.state: base.state_vn_VN-31 +DEL res.country.state: base.state_vn_VN-32 +DEL res.country.state: base.state_vn_VN-36 +DEL res.country.state: base.state_vn_VN-40 +DEL res.country.state: base.state_vn_VN-41 +DEL res.country.state: base.state_vn_VN-43 +DEL res.country.state: base.state_vn_VN-46 +DEL res.country.state: base.state_vn_VN-47 +DEL res.country.state: base.state_vn_VN-50 +DEL res.country.state: base.state_vn_VN-51 +DEL res.country.state: base.state_vn_VN-52 +DEL res.country.state: base.state_vn_VN-53 +DEL res.country.state: base.state_vn_VN-54 +DEL res.country.state: base.state_vn_VN-55 +DEL res.country.state: base.state_vn_VN-57 +DEL res.country.state: base.state_vn_VN-58 +DEL res.country.state: base.state_vn_VN-61 +DEL res.country.state: base.state_vn_VN-63 +DEL res.country.state: base.state_vn_VN-67 +DEL res.country.state: base.state_vn_VN-70 +DEL res.country.state: base.state_vn_VN-72 +DEL res.country.state: base.state_vn_VN-73 +NEW res.groups: base.default_user_group (noupdate) +NEW res.groups.privilege: base.res_groups_privilege_contact +NEW res.groups.privilege: base.res_groups_privilege_export +DEL res.partner.title: base.res_partner_title_doctor (noupdate) +DEL res.partner.title: base.res_partner_title_madam (noupdate) +DEL res.partner.title: base.res_partner_title_miss (noupdate) +DEL res.partner.title: base.res_partner_title_mister (noupdate) +DEL res.partner.title: base.res_partner_title_prof (noupdate) +DEL res.users: base.default_user (noupdate) diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt new file mode 100644 index 000000000000..28a7aedb2873 --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_analysis_work.txt @@ -0,0 +1,558 @@ +---Models in module 'base'--- +obsolete model res.partner.title + +# NOTHING TO DO: possibly some oca module will pick this up again + +new model ir.actions.server.history + +# NOTHING TO DO: new functionality + +new model properties.base.definition +new model properties.base.definition.mixin [abstract] + +# NOTHING TO DO: handled by orm + +new model res.groups.privilege +new model server.action.history.wizard [transient] + +# NOTHING TO DO: new functionality + +---Fields in module 'base'--- +account / res.company / company_registry_placeholder (char): not a function anymore +account / res.company / company_registry_placeholder (char): now related +base / ir.actions.act_url / _order : _order is now 'name, id' ('name') +base / ir.actions.act_window / _order : _order is now 'name, id' ('name') +base / ir.actions.act_window / cache (boolean) : NEW hasdefault: default + +# NOTHING TO DO + +base / ir.actions.act_window / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.act_window / groups_id (many2many) : DEL relation: res.groups + +# DONE: renamed groups_id to group_ids in pre-migration + +base / ir.actions.act_window / target (selection) : selection_keys removed: [inline] + +# DONE: set to 'current' in post-migration + +base / ir.actions.act_window_close / _order : _order is now 'name, id' ('name') +base / ir.actions.actions / _order : _order is now 'name, id' ('name') +base / ir.actions.client / _order : _order is now 'name, id' ('name') + +# NOTHING TO DO + +base / ir.actions.report / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.report / groups_id (many2many) : DEL relation: res.groups + +# DONE: renamed groups_id to group_ids in pre-migration + +base / ir.actions.server / _order : _order is now 'sequence,name,id' ('sequence,name') +base / ir.actions.server / automated_name (char) : NEW isfunction: function, stored + +# NOTHING TO DO + +base / ir.actions.server / child_ids (many2many) : table is now 'False' ('rel_server_actions') +base / ir.actions.server / child_ids (many2many) : type is now 'one2many' ('many2many') + +# DONE: set from m2m table in post-migration + +base / ir.actions.server / crud_model_id (many2one) : now a function + +# NOTHING TO DO: same computation function + +base / ir.actions.server / evaluation_type (selection) : selection_keys added: [sequence] (most likely nothing to do) + +# NOTHING TO DO + +base / ir.actions.server / group_ids (many2many) : NEW relation: res.groups +base / ir.actions.server / groups_id (many2many) : DEL relation: res.groups + +# DONE: renamed groups_id to group_ids in pre-migration + +base / ir.actions.server / html_value (html) : NEW + +# DONE: filled from value in post-migration + +base / ir.actions.server / ir_cron_ids (one2many) : NEW relation: ir.cron + +# NOTHING TO DO: inverse of ir.cron#ir_actions_server_id + +base / ir.actions.server / model_name (char) : not stored anymore + +# NOTHING TO DO + +base / ir.actions.server / parent_id (many2one) : NEW relation: ir.actions.server + +# DONE: see above for child_ids + +base / ir.actions.server / sequence_id (many2one) : NEW relation: ir.sequence + +# NOTHING TO DO: new field for evaluation_type == 'sequence' + +base / ir.actions.server / state (selection) : selection_keys added: [object_copy] (most likely nothing to do) +base / ir.actions.server / value_field_to_show (selection): selection_keys added: [html_value, sequence_id] (most likely nothing to do) + +# NOTHING TO DO + +base / ir.actions.server.history / action_id (many2one) : NEW relation: ir.actions.server, required +base / ir.actions.server.history / code (text) : NEW + +# NOTHING TO DO: v19 keeps a history of code changes + +base / ir.cron / _order : _order is now 'cron_name, id' ('cron_name') + +# NOTHING TO DO + +base / ir.cron / child_ids (many2many) : type is now 'one2many' ('many2many') + +# NOTHING TO DO: inherited from ir.actions.server, handled there + +base / ir.cron.trigger / call_at (datetime) : now required +base / ir.cron.trigger / cron_id (many2one) : now required + +# NOTHING TO DO: old records with missing fields will be cleaned up eventually + +base / ir.exports / _order : _order is now 'name, id' ('name') + +# NOTHING TO DO + +base / ir.filters / user_id (many2one) : DEL relation: res.users +base / ir.filters / user_ids (many2many) : NEW relation: res.users + +# DONE: openupgrade.m2o_to_x2m in post-migration + +base / ir.mail_server / smtp_encryption (selection) : selection_keys added: [ssl_strict, starttls_strict] (most likely nothing to do) + +# NOTHING TO DO + +base / ir.model / abstract (boolean) : NEW +base / ir.model / fold_name (char) : NEW + +# NOTHING TO DO: filled by orm + +base / ir.model.fields / _order : _order is now 'name, id' ('name') +base / ir.model.fields / complete_name (char) : DEL + +# NOTHING TO DO + +base / ir.model.fields / translate (boolean) : selection_keys is now '['html_translate', 'standard', 'xml_translate']' ('False') +base / ir.model.fields / translate (boolean) : type is now 'selection' ('boolean') + +# DONE: set column to NULL where it was FALSE in openupgrade_framework, because migration scripts are too late for it + +base / ir.module.category / _order : _order is now 'sequence, name, id' ('name') + +# NOTHING TO DO: we want to have the ordering by sequence as provided by Odoo + +base / ir.module.category / privilege_ids (one2many) : NEW relation: res.groups.privilege + +# NOTHING TO DO: new concept + +base / ir.profile / cpu_duration (float) : NEW +base / ir.profile / others (text) : NEW + +# NOTHING TO DO: new funcitonality, no way of generating this data + +base / ir.sequence / _order : _order is now 'name, id' ('name') + +# NOTHING TO DO + +base / ir.ui.menu / group_ids (many2many) : NEW relation: res.groups +base / ir.ui.menu / groups_id (many2many) : DEL relation: res.groups +base / ir.ui.view / group_ids (many2many) : NEW relation: res.groups +base / ir.ui.view / groups_id (many2many) : DEL relation: res.groups + +# DONE: renamed groups_id to group_ids in pre-migration + +base / ir.ui.view.custom / _order : _order is now 'create_date desc, id desc' ('create_date desc') + +# NOTHING TO DO + +base / properties.base.definition / properties_definition (properties_definition): NEW +base / properties.base.definition / properties_field_id (many2one): NEW relation: ir.model.fields, required + +# NOTHING TO DO: filled by orm + +base / report.layout / _order : _order is now 'sequence, id' ('sequence') +base / res.bank / _order : _order is now 'name, id' ('name') +base / res.company / company_registry_placeholder (char): previously in module account + +# NOTHING TO DO + +base / res.company / mobile (char) : DEL + +# NOTHING TO DO: possibly some oca module will pick this up again + +base / res.country / _order : _order is now 'name, id' ('name') + +# NOTHING TO DO: possibly some oca module will pick this up again + +base / res.country.group / code (char) : NEW + +# NOTHING TO DO: filled in noupdate_changes.xml + +base / res.country.state / _order : _order is now 'code, id' ('code') +base / res.currency.rate / _order : _order is now 'name desc, id' ('name desc') +base / res.groups / _order : _order is now 'privilege_id, sequence, name, id' ('name') + +# NOTHING TO DO + +base / res.groups / category_id (many2one) : DEL relation: ir.module.category + +# NOTHING TO DO: code provided groups will set their own privilege if applicable, manually created ones will have to be assigned to whatever privilege makes sense + +base / res.groups / color (integer) : DEL + +# NOTHING TO DO + +base / res.groups / implied_by_ids (many2many) : NEW relation: res.groups + +# NOTHING TO DO: inverse of existing relation + +base / res.groups / privilege_id (many2one) : NEW relation: res.groups.privilege + +# NOTHING TO DO: new concept + +base / res.groups / sequence (integer) : NEW + +# NOTHING TO DO + +base / res.groups / user_ids (many2many) : NEW relation: res.users +base / res.groups / users (many2many) : DEL relation: res.users + +# DONE: renamed field in pre-migration + +base / res.groups.privilege / category_id (many2one) : NEW relation: ir.module.category +base / res.groups.privilege / description (text) : NEW +base / res.groups.privilege / group_ids (one2many) : NEW relation: res.groups +base / res.groups.privilege / name (char) : NEW required, translate +base / res.groups.privilege / placeholder (char) : NEW hasdefault: default +base / res.groups.privilege / sequence (integer) : NEW hasdefault: default + +# NOTHING TO DO: new concept + +base / res.lang / date_format (char) : selection_keys is now 'function' ('False') +base / res.lang / date_format (char) : type is now 'selection' ('char') +base / res.lang / grouping (char) : selection_keys is now '['[3,0]', '[3,2,0]']' ('False') +base / res.lang / grouping (char) : type is now 'selection' ('char') +base / res.lang / short_time_format (char) : DEL required +base / res.lang / time_format (char) : selection_keys is now '['%H:%M:%S', '%I:%M:%S %p']' ('False') +base / res.lang / time_format (char) : type is now 'selection' ('char') + +# DONE: copy original values to legacy column, map values not in selection to default value + +base / res.partner / mobile (char) : DEL + +# NOTHING TO DO: possibly some oca module will pick this up again + +base / res.partner / properties (properties) : NEW hasdefault: compute + +# NOTHING TO DO: new functionality + +base / res.partner / title (many2one) : DEL relation: res.partner.title + +# NOTHING TO DO: possibly some oca module will pick this up again + +base / res.partner.bank / clearing_number (char) : NEW +base / res.partner.bank / note (text) : NEW + +# NOTHING TO DO: new functionality + +base / res.partner.category / _order : _order is now 'name, id' ('name') +base / res.partner.industry / _order : _order is now 'name, id' ('name') + +# NOTHING TO DO + +base / res.partner.title / name (char) : DEL required +base / res.partner.title / shortcut (char) : DEL + +# NOTHING TO DO: obsolete model + +base / res.users / group_ids (many2many) : NEW relation: res.groups, hasdefault: default +base / res.users / groups_id (many2many) : DEL relation: res.groups + +# DONE: renamed groups_id to group_ids in pre-migration + +base / res.users / role (selection) : NEW selection_keys: ['group_system', 'group_user'], hasdefault: compute, stored: False +base / res.users / view_group_hierarchy (json) : NEW hasdefault: default, stored: False + +# NOTHING TO DO: nonstored + +---XML records in module 'base'--- +NEW ir.actions.act_window: base.action_res_groups_privilege +DEL ir.actions.act_window: base.action_partner_title_contact +NEW ir.model.access: base.access_ir_actions_server_history_group_system +NEW ir.model.access: base.access_properties_base_definition_group_system +NEW ir.model.access: base.access_res_groups_privilege_group_erp_manager +NEW ir.model.access: base.access_res_groups_privilege_group_user +NEW ir.model.access: base.access_server_action_history_wizard +DEL ir.model.access: base.access_res_partner_title_group_partner_manager +DEL ir.model.access: base.access_res_partner_title_group_user +NEW ir.model.constraint: base.constraint_ir_act_window_view_unique_mode_per_action +NEW ir.model.constraint: base.constraint_ir_attachment_res_idx +NEW ir.model.constraint: base.constraint_ir_filters_get_filters_index +NEW ir.model.constraint: base.constraint_ir_model_data_model_res_id_index +NEW ir.model.constraint: base.constraint_ir_model_data_module_name_uniq_index +NEW ir.model.constraint: base.constraint_ir_ui_view_custom_user_id_ref_id +NEW ir.model.constraint: base.constraint_ir_ui_view_model_type_inherit_id +NEW ir.model.constraint: base.constraint_properties_base_definition_unique_properties_field_id +NEW ir.model.constraint: base.constraint_res_country_group_check_code_uniq +NEW ir.model.constraint: base.constraint_res_device_composite_idx +NEW ir.model.constraint: base.constraint_res_device_log_composite_idx +NEW ir.model.constraint: base.constraint_res_device_log_revoked_idx +NEW ir.model.constraint: base.constraint_res_device_revoked_idx +ir.model.constraint: base.constraint_res_groups_name_uniq (changed definition: is now 'UNIQUE (privilege_id, name)' ('unique(category_id,name)')) +DEL ir.model.constraint: base.constraint_ir_filters_name_model_uid_unique +NEW ir.module.category: base.module_category_esg +NEW ir.module.category: base.module_category_human_resources_referrals +NEW ir.module.category: base.module_category_internet_of_things_(iot) +NEW ir.module.category: base.module_category_master_data +NEW ir.module.category: base.module_category_shipping_connectors (noupdate) +NEW ir.module.category: base.module_category_supply_chain (noupdate) +DEL ir.module.category: base.module_category_inventory (noupdate) +DEL ir.module.category: base.module_category_manufacturing (noupdate) +DEL ir.module.category: base.module_category_usability +DEL ir.module.category: base.module_category_user_type +NEW ir.rule: base.properties_base_definition_rule_admin (noupdate) +NEW ir.rule: base.res_users_rule_portal (noupdate) +DEL ir.rule: base.ir_filters_delete_own_rule (noupdate) +NEW ir.ui.menu: base.menu_action_res_groups_privilege +NEW ir.ui.view: base.ir_filters_view_edit_form +NEW ir.ui.view: base.res_users_apikeys_view_kanban +NEW ir.ui.view: base.server_action_history_wizard_view +NEW ir.ui.view: base.view_default_groups_form +NEW ir.ui.view: base.view_groups_list +NEW ir.ui.view: base.view_res_groups_privilege_form +NEW ir.ui.view: base.view_res_groups_privilege_list +NEW ir.ui.view: base.view_server_action_kanban +DEL ir.ui.view: base.res_partner_view_form_private +DEL ir.ui.view: base.user_groups_view +DEL ir.ui.view: base.view_partner_title_form +DEL ir.ui.view: base.view_partner_title_tree +NEW res.country: base.xi (noupdate) +NEW res.country.group: base.dom-tom [renamed from l10n_fr module] (noupdate) (noupdate switched) +NEW res.country.group: base.europe_prefix (noupdate) + +# NOTHING TO DO + +NEW res.country.state: base.state_at_1 [renamed from l10n_at module] +NEW res.country.state: base.state_at_2 [renamed from l10n_at module] +NEW res.country.state: base.state_at_3 [renamed from l10n_at module] +NEW res.country.state: base.state_at_4 [renamed from l10n_at module] +NEW res.country.state: base.state_at_5 [renamed from l10n_at module] +NEW res.country.state: base.state_at_6 [renamed from l10n_at module] +NEW res.country.state: base.state_at_7 [renamed from l10n_at module] +NEW res.country.state: base.state_at_8 [renamed from l10n_at module] +NEW res.country.state: base.state_at_9 [renamed from l10n_at module] +NEW res.country.state: base.state_bd_a [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_b [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_c [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_d [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_e [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_f [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_g [renamed from l10n_bd module] +NEW res.country.state: base.state_bd_h [renamed from l10n_bd module] + +# DONE: renamed from l10n module + +NEW res.country.state: base.state_id_pe + +# DONE: renamed from base.state_id_pp + +NEW res.country.state: base.state_iq_01 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_01_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_02 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_02_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_03 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_03_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_04 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_04_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_05 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_05_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_06 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_06_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_07 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_07_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_08 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_08_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_09 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_09_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_10 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_10_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_11 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_11_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_12 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_12_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_13 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_13_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_14 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_14_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_15 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_15_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_16 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_16_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_17 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_17_ar [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_18 [renamed from l10n_iq module] +NEW res.country.state: base.state_iq_18_ar [renamed from l10n_iq module] + +# DONE: renamed from l10n module + +NEW res.country.state: base.state_ng_ab +NEW res.country.state: base.state_ng_ad +NEW res.country.state: base.state_ng_ak +NEW res.country.state: base.state_ng_an +NEW res.country.state: base.state_ng_ba +NEW res.country.state: base.state_ng_be +NEW res.country.state: base.state_ng_bo +NEW res.country.state: base.state_ng_by +NEW res.country.state: base.state_ng_cr +NEW res.country.state: base.state_ng_de +NEW res.country.state: base.state_ng_eb +NEW res.country.state: base.state_ng_ed +NEW res.country.state: base.state_ng_ek +NEW res.country.state: base.state_ng_en +NEW res.country.state: base.state_ng_fc +NEW res.country.state: base.state_ng_go +NEW res.country.state: base.state_ng_im +NEW res.country.state: base.state_ng_ji +NEW res.country.state: base.state_ng_ka +NEW res.country.state: base.state_ng_ke +NEW res.country.state: base.state_ng_kn +NEW res.country.state: base.state_ng_ko +NEW res.country.state: base.state_ng_kt +NEW res.country.state: base.state_ng_kw +NEW res.country.state: base.state_ng_la +NEW res.country.state: base.state_ng_na +NEW res.country.state: base.state_ng_ni +NEW res.country.state: base.state_ng_og +NEW res.country.state: base.state_ng_on +NEW res.country.state: base.state_ng_os +NEW res.country.state: base.state_ng_oy +NEW res.country.state: base.state_ng_pl +NEW res.country.state: base.state_ng_ri +NEW res.country.state: base.state_ng_so +NEW res.country.state: base.state_ng_ta +NEW res.country.state: base.state_ng_yo +NEW res.country.state: base.state_ng_za + +# NOTHING TO DO + +NEW res.country.state: base.state_pk_ajk [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_ba [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_gb [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_is [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_kp [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_pb [renamed from l10n_pk module] +NEW res.country.state: base.state_pk_sd [renamed from l10n_pk module] +NEW res.country.state: base.state_pl_ds [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_kp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_lb [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_ld [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_ls [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_mp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_mz [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_op [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pk [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pl [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_pm [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_sk [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_sl [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_wm [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_wp [renamed from l10n_pl module] +NEW res.country.state: base.state_pl_zp [renamed from l10n_pl module] + +# DONE: renamed from l10n module + +NEW res.country.state: base.state_so_1 +NEW res.country.state: base.state_so_2 +NEW res.country.state: base.state_so_3 +NEW res.country.state: base.state_so_4 +NEW res.country.state: base.state_so_5 +NEW res.country.state: base.state_so_6 +NEW res.country.state: base.state_so_7 +NEW res.country.state: base.state_so_8 + +# NOTHING TO DO + +NEW res.country.state: base.state_tw_chh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_cic [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_cih [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hch [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hct [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_hlh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ilh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_khc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_klc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_kmc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_lcc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_mlh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ntc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ntpc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_phc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_pth [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tcc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tnh [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tpc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tth [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_tyc [renamed from l10n_tw module] +NEW res.country.state: base.state_tw_ylh [renamed from l10n_tw module] + +# DONE: renamed from l10n module + +DEL res.country.state: base.state_id_pp + +# DONE: renamed to base.state_id_pe + +DEL res.country.state: base.state_vn_VN-03 +DEL res.country.state: base.state_vn_VN-06 +DEL res.country.state: base.state_vn_VN-14 +DEL res.country.state: base.state_vn_VN-20 +DEL res.country.state: base.state_vn_VN-24 +DEL res.country.state: base.state_vn_VN-27 +DEL res.country.state: base.state_vn_VN-28 +DEL res.country.state: base.state_vn_VN-31 +DEL res.country.state: base.state_vn_VN-32 +DEL res.country.state: base.state_vn_VN-36 +DEL res.country.state: base.state_vn_VN-40 +DEL res.country.state: base.state_vn_VN-41 +DEL res.country.state: base.state_vn_VN-43 +DEL res.country.state: base.state_vn_VN-46 +DEL res.country.state: base.state_vn_VN-47 +DEL res.country.state: base.state_vn_VN-50 +DEL res.country.state: base.state_vn_VN-51 +DEL res.country.state: base.state_vn_VN-52 +DEL res.country.state: base.state_vn_VN-53 +DEL res.country.state: base.state_vn_VN-54 +DEL res.country.state: base.state_vn_VN-55 +DEL res.country.state: base.state_vn_VN-57 +DEL res.country.state: base.state_vn_VN-58 +DEL res.country.state: base.state_vn_VN-61 +DEL res.country.state: base.state_vn_VN-63 +DEL res.country.state: base.state_vn_VN-67 +DEL res.country.state: base.state_vn_VN-70 +DEL res.country.state: base.state_vn_VN-72 +DEL res.country.state: base.state_vn_VN-73 + +# NOTHING TO DO + +NEW res.groups: base.default_user_group (noupdate) + +# DONE: set implied_ids from base.default_user in post_migration + +NEW res.groups.privilege: base.res_groups_privilege_contact +NEW res.groups.privilege: base.res_groups_privilege_export + +# NOTHING TO DO + +DEL res.partner.title: base.res_partner_title_doctor (noupdate) +DEL res.partner.title: base.res_partner_title_madam (noupdate) +DEL res.partner.title: base.res_partner_title_miss (noupdate) +DEL res.partner.title: base.res_partner_title_mister (noupdate) +DEL res.partner.title: base.res_partner_title_prof (noupdate) + +# NOTHING TO DO: will be cleaned by database_cleanup + +DEL res.users: base.default_user (noupdate) + +# DONE: see above for base.default_user_group diff --git a/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt new file mode 100644 index 000000000000..1742198b66dc --- /dev/null +++ b/openupgrade_scripts/scripts/base/19.0.1.3/upgrade_general_log.txt @@ -0,0 +1,1002 @@ +---Models in module 'general'--- +obsolete model account.fiscal.position.tax [module account] +obsolete model account_peppol.service.wizard [module account_peppol] +obsolete model account.reconcile.model.partner.mapping [module account] +obsolete model bus.presence [module bus] +obsolete model candidate.send.mail [module hr_recruitment] +obsolete model chat.room [module website_jitsi] +obsolete model chat.room.mixin [module website_jitsi] +obsolete model choose.delivery.package [module stock_delivery] +obsolete model event.meeting.room [module website_event_meet] +obsolete model hr.attendance.overtime [module hr_attendance] +obsolete model hr.candidate [module hr_recruitment] +obsolete model hr.candidate.skill [module hr_recruitment_skills] +obsolete model hr.contract [module hr_contract] +obsolete model hr.contract.history [module hr_contract] +obsolete model hr.employee.base [module hr] +obsolete model hr.employee.skill.log [module hr_skills] +obsolete model hr.expense.sheet [module hr_expense] +obsolete model im_livechat.report.operator [module im_livechat] +obsolete model l10n_id_efaktur.document [module l10n_id_efaktur] +obsolete model l10n_id_efaktur.efaktur.range [module l10n_id_efaktur] +obsolete model l10n_in.withhold.wizard.line [module l10n_in_withholding] +obsolete model l10n_my_edi.document.status.update [module l10n_my_edi] +obsolete model mail.resend.message [module mail] +obsolete model mail.resend.partner [module mail] +obsolete model mail.wizard.invite [module mail] +obsolete model membership.invoice [module membership] +obsolete model membership.membership_line [module membership] +obsolete model mrp.batch.produce [module mrp] +obsolete model payment.provider.onboarding.wizard [module payment] +obsolete model procurement.group [module stock] +obsolete model product.fetch.image.wizard [module product_images] +obsolete model product.packaging [module product] +obsolete model project.create.invoice [module sale_timesheet] +obsolete model report.membership [module membership] +obsolete model report.pos_hr.multi_employee_sales_report [module pos_hr] +obsolete model res.partner.autocomplete.sync [module partner_autocomplete] +obsolete model res.partner.title [module base] +obsolete model sale.edi.common [module sale_edi_ubl] +obsolete model sale.order.cancel [module sale] +obsolete model sale.order.option [module sale_management] +obsolete model sale.order.template.option [module sale_management] +obsolete model sale.payment.provider.onboarding.wizard [module sale] +obsolete model sms.resend [module sms] +obsolete model sms.resend.recipient [module sms] +obsolete model snailmail.letter.format.error [module snailmail] +obsolete model snailmail.letter.missing.required.fields [module snailmail] +obsolete model stock.change.product.qty [module stock] +obsolete model stock.lot.report [module stock] +obsolete model stock.package_level [module stock] +obsolete model stock.quant.package [module stock] +obsolete model stock.track.confirmation [module stock] +obsolete model stock.track.line [module stock] +obsolete model stock.valuation.layer [module stock_account] +obsolete model stock.valuation.layer.revaluation [module stock_account] +obsolete model uom.category [module uom] +obsolete model web_editor.assets [module web_editor] +obsolete model web_editor.converter.test [module web_editor] +obsolete model web_editor.converter.test.sub [module web_editor] +new model account.analytic.line.calendar.employee [module hr_timesheet] +new model account.document.import.mixin [module account] +new model discuss.call.history [module mail] +new model event.mail.slot [module event] +new model event.slot [module event] +new model fleet.vehicle.odometer.report [module fleet] +new model hr.applicant.skill [module hr_recruitment_skills] +new model hr.attendance.overtime.line [module hr_attendance] +new model hr.attendance.overtime.rule [module hr_attendance] +new model hr.attendance.overtime.ruleset [module hr_attendance] +new model hr.bank.account.allocation.wizard [module hr] +new model hr.bank.account.allocation.wizard.line [module hr] +new model hr.employee.certification.report [module hr_skills] +new model hr.employee.skill.history.report [module hr_skills] +new model hr.expense.post.wizard [module hr_expense] +new model hr.individual.skill.mixin [module hr_skills] +new model hr.job.skill [module hr_skills] +new model hr.leave.attendance.report [module hr_holidays_attendance] +new model hr.mixin [module hr] +new model hr.talent.pool [module hr_recruitment] +new model hr.version [module hr] +new model hr.version.wizard [module hr] +new model html_editor.converter.test [module html_editor] +new model html_editor.converter.test.sub [module html_editor] +new model im_livechat.channel.member.history [module im_livechat] +new model im_livechat.conversation.tag [module im_livechat] +new model im_livechat.expertise [module im_livechat] +new model ir.actions.server.history [module base] +new model job.add.applicants [module hr_recruitment] +new model l10n_cz.tax_office [module l10n_cz] +new model l10n_in_edi.cancel [module l10n_in_edi] +new model l10n.in.hr.leave.optional.holiday [module l10n_in_hr_holidays] +new model l10n_in.pan.entity [module l10n_in] +new model mail.activity.schedule.line [module mail] +new model mail.followers.edit [module mail] +new model mail.message.link.preview [module mail] +new model mail.presence [module mail] +new model mrp.production.group [module mrp] +new model mrp.production.serials [module mrp] +new model peppol.config.wizard [module account_peppol] +new model pos.confirmation.wizard [module point_of_sale] +new model pos.make.invoice [module point_of_sale] +new model pos.preset [module point_of_sale] +new model product.feed [module website_sale] +new model product.uom [module product] +new model product.value [module stock_account] +new model project.role [module project] +new model project.template.create.wizard [module project] +new model project.template.role.to.users.map [module project] +new model properties.base.definition [module base] +new model properties.base.definition.mixin [module base] +new model res.groups.privilege [module base] +new model res.role [module mail] +new model res.users.settings.embedded.action [module web] +new model restaurant.order.course [module pos_restaurant] +new model server.action.history.wizard [module base] +new model stock_account.stock.valuation.report [module stock_account] +new model stock.avco.report [module stock_account] +new model stock.package [module stock] +new model stock.package.history [module stock] +new model stock.put.in.pack [module stock] +new model stock.reference [module stock] +new model talent.pool.add.applicants [module hr_recruitment] +new model task.share.wizard [module project] +new model website.assets [module website] +new model website.checkout.step [module website_sale] +new model website.html.text.processor [module website] +new model website.page_options.mixin [module website] +new model website.page_visibility_options.mixin [module website] +new model website.technical.page [module website] +---Fields in module 'general'--- +# 14118 fields matched, +# Direct match: 13839 +# Found in other module with different type: 0 +# Found in other module: 247 +# Found with different type: 32 +# In obsolete models: 444 +# New columns: 1838 +# Not matched: 1115 +---XML records in module 'general'--- +---Probably obsolete module account_edi_ubl_cii_tax_extension--- +---Models in module 'account_edi_ubl_cii_tax_extension'--- +---Fields in module 'account_edi_ubl_cii_tax_extension'--- +account_edi_ubl_cii_tax_extension / account.tax / ubl_cii_tax_category_code (selection): module is now 'account_edi_ubl_cii' ('account_edi_ubl_cii_tax_extension') +account_edi_ubl_cii_tax_extension / account.tax / ubl_cii_tax_exemption_reason_code (selection): module is now 'account_edi_ubl_cii' ('account_edi_ubl_cii_tax_extension') +---XML records in module 'account_edi_ubl_cii_tax_extension'--- +DEL ir.ui.view: account_edi_ubl_cii_tax_extension.view_account_invoice_form_inherit +---Probably obsolete module auth_totp_mail_enforce--- +---Models in module 'auth_totp_mail_enforce'--- +model auth.totp.rate.limit.log (moved to auth_totp) [transient] +---Fields in module 'auth_totp_mail_enforce'--- +---XML records in module 'auth_totp_mail_enforce'--- +DEL ir.model.access: auth_totp_mail_enforce.access_auth_totp_rate_limit_log [renamed to auth_totp module] +DEL ir.ui.view: auth_totp_mail_enforce.auth_totp_mail_form +DEL ir.ui.view: auth_totp_mail_enforce.res_config_settings_view_form +DEL mail.template: auth_totp_mail_enforce.mail_template_totp_mail_code [renamed to auth_totp_mail module] (noupdate) +---Probably obsolete module hr_contract--- +---Models in module 'hr_contract'--- +obsolete model hr.contract +obsolete model hr.contract.history [sql_view] +model hr.payroll.structure.type (moved to hr) +---Fields in module 'hr_contract'--- +hr_contract / hr.contract / active (boolean) : DEL +hr_contract / hr.contract / activity_ids (one2many) : DEL relation: mail.activity +hr_contract / hr.contract / company_id (many2one) : DEL relation: res.company, required +hr_contract / hr.contract / contract_type_id (many2one) : DEL relation: hr.contract.type +hr_contract / hr.contract / date_end (date) : DEL +hr_contract / hr.contract / date_start (date) : DEL required +hr_contract / hr.contract / department_id (many2one) : DEL relation: hr.department +hr_contract / hr.contract / employee_id (many2one) : DEL relation: hr.employee +hr_contract / hr.contract / hr_responsible_id (many2one) : DEL relation: res.users +hr_contract / hr.contract / job_id (many2one) : DEL relation: hr.job +hr_contract / hr.contract / kanban_state (selection) : DEL selection_keys: ['blocked', 'done', 'normal'] +hr_contract / hr.contract / message_follower_ids (one2many): DEL relation: mail.followers +hr_contract / hr.contract / message_ids (one2many) : DEL relation: mail.message +hr_contract / hr.contract / name (char) : DEL required +hr_contract / hr.contract / notes (html) : DEL +hr_contract / hr.contract / rating_ids (one2many) : DEL relation: rating.rating +hr_contract / hr.contract / resource_calendar_id (many2one): DEL relation: resource.calendar +hr_contract / hr.contract / state (selection) : DEL selection_keys: ['cancel', 'close', 'draft', 'open'] +hr_contract / hr.contract / structure_type_id (many2one) : DEL relation: hr.payroll.structure.type +hr_contract / hr.contract / trial_date_end (date) : DEL +hr_contract / hr.contract / wage (float) : DEL required +hr_contract / hr.contract / website_message_ids (one2many): DEL relation: mail.message +hr_contract / hr.employee / contract_id (many2one) : DEL relation: hr.contract +hr_contract / hr.employee / contract_ids (one2many) : DEL relation: hr.contract +hr_contract / hr.employee / contract_warning (boolean) : DEL +hr_contract / hr.employee / first_contract_date (date) : DEL +hr_contract / hr.employee / legal_name (char) : module is now 'hr' ('hr_contract') +hr_contract / hr.employee / vehicle (char) : DEL +hr_contract / hr.payroll.structure.type / _order : module is now 'hr' ('hr_contract') +hr_contract / hr.payroll.structure.type / country_code (char) : module is now 'hr' ('hr_contract') +hr_contract / hr.payroll.structure.type / country_id (many2one) : module is now 'hr' ('hr_contract') +hr_contract / hr.payroll.structure.type / default_resource_calendar_id (many2one): module is now 'hr' ('hr_contract') +hr_contract / hr.payroll.structure.type / display_name (char) : module is now 'hr' ('hr_contract') +hr_contract / hr.payroll.structure.type / name (char) : module is now 'hr' ('hr_contract') +hr_contract / res.company / contract_expiration_notice_period (integer): module is now 'hr' ('hr_contract') +hr_contract / res.company / work_permit_expiration_notice_period (integer): module is now 'hr' ('hr_contract') +---XML records in module 'hr_contract'--- +DEL hr.payroll.structure.type: hr_contract.structure_type_employee [renamed to hr module] (noupdate) +DEL hr.payroll.structure.type: hr_contract.structure_type_employee_cp200 [renamed to hr module] (noupdate) +DEL hr.payroll.structure.type: hr_contract.structure_type_employee_cp200_pfi [renamed to hr module] (noupdate) +DEL hr.payroll.structure.type: hr_contract.structure_type_worker [renamed to hr module] (noupdate) +DEL ir.actions.act_window: hr_contract.action_hr_contract +DEL ir.actions.act_window: hr_contract.hr_contract_history_to_review_view_list_action +DEL ir.actions.act_window: hr_contract.hr_contract_history_view_form_action +DEL ir.actions.act_window: hr_contract.hr_contract_history_view_list_action +DEL ir.cron: hr_contract.ir_cron_data_contract_update_state (noupdate) +DEL ir.model.access: hr_contract.access_hr_contract_history_manager +DEL ir.model.access: hr_contract.access_hr_contract_hr_employee_manager +DEL ir.model.access: hr_contract.access_hr_contract_manager +DEL ir.model.access: hr_contract.access_hr_payroll_structure_type_hr_contract_manager [renamed to hr module] +DEL ir.model.access: hr_contract.access_hr_resource_calendar_attendance_user [renamed to hr module] +DEL ir.model.access: hr_contract.access_hr_resource_calendar_user [renamed to hr module] +DEL ir.model.access: hr_contract.access_hr_resource_manager [renamed to hr module] +DEL ir.rule: hr_contract.ir_rule_hr_contract_employee_manager (noupdate) +DEL ir.rule: hr_contract.ir_rule_hr_contract_history_multi_company (noupdate) +DEL ir.rule: hr_contract.ir_rule_hr_contract_manager [renamed to hr module] (noupdate) +DEL ir.rule: hr_contract.ir_rule_hr_contract_multi_company [renamed to hr module] (noupdate) +DEL ir.rule: hr_contract.ir_rule_hr_payroll_structure_type_multi_company [renamed to hr module] (noupdate) +DEL ir.ui.menu: hr_contract.hr_menu_contract +DEL ir.ui.menu: hr_contract.menu_hr_employee_contracts +DEL ir.ui.menu: hr_contract.menu_human_resources_configuration_contract +DEL ir.ui.view: hr_contract.hr_contract_history_view_form +DEL ir.ui.view: hr_contract.hr_contract_history_view_kanban +DEL ir.ui.view: hr_contract.hr_contract_history_view_list +DEL ir.ui.view: hr_contract.hr_contract_history_view_search +DEL ir.ui.view: hr_contract.hr_contract_view_activity +DEL ir.ui.view: hr_contract.hr_contract_view_form +DEL ir.ui.view: hr_contract.hr_contract_view_kanban +DEL ir.ui.view: hr_contract.hr_contract_view_search +DEL ir.ui.view: hr_contract.hr_contract_view_tree +DEL ir.ui.view: hr_contract.hr_departure_wizard_view_form +DEL ir.ui.view: hr_contract.hr_employee_view_graph_inherit_hr_contract +DEL ir.ui.view: hr_contract.hr_employee_view_pivot_inherit_hr_contract +DEL ir.ui.view: hr_contract.hr_employee_view_search +DEL ir.ui.view: hr_contract.hr_hr_employee_view_form2 +DEL ir.ui.view: hr_contract.hr_hr_employee_view_form3 +DEL ir.ui.view: hr_contract.hr_user_view_form +DEL ir.ui.view: hr_contract.res_config_settings_view_form +DEL ir.ui.view: hr_contract.resource_calendar_view_form +DEL ir.ui.view: hr_contract.resource_calendar_view_tree +DEL ir.ui.view: hr_contract.view_employee_public_form +DEL ir.ui.view: hr_contract.view_employee_tree +DEL mail.message.subtype: hr_contract.mt_contract_close [renamed to hr module] (noupdate) +DEL mail.message.subtype: hr_contract.mt_contract_pending [renamed to hr module] (noupdate) +DEL mail.message.subtype: hr_contract.mt_department_contract_pending [renamed to hr module] (noupdate) +DEL res.groups: hr_contract.group_hr_contract_employee_manager (noupdate) +DEL res.groups: hr_contract.group_hr_contract_manager (noupdate) +---Probably obsolete module hr_work_entry_contract--- +---Models in module 'hr_work_entry_contract'--- +model hr.work.entry.regeneration.wizard (moved to hr_work_entry) [transient] +---Fields in module 'hr_work_entry_contract'--- +hr_work_entry_contract / hr.contract / date_generated_from (datetime): DEL required +hr_work_entry_contract / hr.contract / date_generated_to (datetime) : DEL required +hr_work_entry_contract / hr.contract / last_generation_date (date) : DEL +hr_work_entry_contract / hr.contract / work_entry_source (selection) : DEL required, selection_keys: ['calendar'] +hr_work_entry_contract / hr.work.entry / contract_id (many2one) : DEL relation: hr.contract, required +hr_work_entry_contract / hr.work.entry / work_entry_source (selection) : module is now 'hr_work_entry' ('hr_work_entry_contract') +hr_work_entry_contract / hr.work.entry.type / is_leave (boolean) : module is now 'hr_work_entry' ('hr_work_entry_contract') +---XML records in module 'hr_work_entry_contract'--- +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_compensatory [renamed to hr_work_entry module] +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_home_working [renamed to hr_work_entry module] +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_leave [renamed to hr_work_entry module] +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_legal_leave [renamed to hr_work_entry module] +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_sick_leave [renamed to hr_work_entry module] +DEL hr.work.entry.type: hr_work_entry_contract.work_entry_type_unpaid_leave [renamed to hr_work_entry module] +DEL ir.actions.act_window: hr_work_entry_contract.hr_work_entry_regeneration_wizard_action [renamed to hr_work_entry module] +DEL ir.cron: hr_work_entry_contract.ir_cron_generate_missing_work_entries [renamed to hr_work_entry module] (noupdate) +DEL ir.model.access: hr_work_entry_contract.access_hr_work_entry_regeneration_wizard [renamed to hr_work_entry module] +DEL ir.rule: hr_work_entry_contract.ir_rule_hr_work_entry_multi_company [renamed to hr_work_entry module] (noupdate) +DEL ir.ui.view: hr_work_entry_contract.hr_contract_view_form_inherit_work_entry +DEL ir.ui.view: hr_work_entry_contract.hr_work_entry_contract_type_view_form_inherit +DEL ir.ui.view: hr_work_entry_contract.hr_work_entry_contract_view_calendar_inherit +DEL ir.ui.view: hr_work_entry_contract.hr_work_entry_contract_view_form_inherit +DEL ir.ui.view: hr_work_entry_contract.hr_work_entry_regeneration_wizard +---Probably obsolete module l10n_ec_website_sale--- +---Models in module 'l10n_ec_website_sale'--- +---Fields in module 'l10n_ec_website_sale'--- +l10n_ec_website_sale / payment.method / fiscal_country_codes (char) : module is now 'l10n_ec_sale' ('l10n_ec_website_sale') +l10n_ec_website_sale / payment.method / l10n_ec_sri_payment_id (many2one): module is now 'l10n_ec_sale' ('l10n_ec_website_sale') +---XML records in module 'l10n_ec_website_sale'--- +DEL ir.ui.view: l10n_ec_website_sale.address +DEL ir.ui.view: l10n_ec_website_sale.partner_info +DEL ir.ui.view: l10n_ec_website_sale.payment_method_form +DEL ir.ui.view: l10n_ec_website_sale.portal_my_details_fields +---Probably obsolete module l10n_id_efaktur--- +---Models in module 'l10n_id_efaktur'--- +obsolete model l10n_id_efaktur.document +obsolete model l10n_id_efaktur.efaktur.range +---Fields in module 'l10n_id_efaktur'--- +l10n_id_efaktur / account.bank.statement.line / l10n_id_kode_transaksi (selection): module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / account.move / l10n_id_efaktur_document (many2one): DEL relation: l10n_id_efaktur.document +l10n_id_efaktur / account.move / l10n_id_efaktur_range (many2one): DEL relation: l10n_id_efaktur.efaktur.range +l10n_id_efaktur / account.move / l10n_id_kode_transaksi (selection): module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / account.move / l10n_id_replace_invoice_id (many2one): DEL relation: account.move +l10n_id_efaktur / account.move / l10n_id_tax_number (char) : DEL +l10n_id_efaktur / l10n_id_efaktur.document / active (boolean) : DEL +l10n_id_efaktur / l10n_id_efaktur.document / activity_ids (one2many) : DEL relation: mail.activity +l10n_id_efaktur / l10n_id_efaktur.document / attachment_id (many2one) : DEL relation: ir.attachment +l10n_id_efaktur / l10n_id_efaktur.document / company_id (many2one) : DEL relation: res.company, required +l10n_id_efaktur / l10n_id_efaktur.document / invoice_ids (one2many) : DEL relation: account.move +l10n_id_efaktur / l10n_id_efaktur.document / message_follower_ids (one2many): DEL relation: mail.followers +l10n_id_efaktur / l10n_id_efaktur.document / message_ids (one2many) : DEL relation: mail.message +l10n_id_efaktur / l10n_id_efaktur.document / name (char) : DEL required +l10n_id_efaktur / l10n_id_efaktur.document / rating_ids (one2many) : DEL relation: rating.rating +l10n_id_efaktur / l10n_id_efaktur.document / website_message_ids (one2many): DEL relation: mail.message +l10n_id_efaktur / l10n_id_efaktur.efaktur.range / available (integer) : DEL +l10n_id_efaktur / l10n_id_efaktur.efaktur.range / company_id (many2one) : DEL relation: res.company, required +l10n_id_efaktur / l10n_id_efaktur.efaktur.range / max (char) : DEL required +l10n_id_efaktur / l10n_id_efaktur.efaktur.range / min (char) : DEL required +l10n_id_efaktur / res.partner / l10n_id_kode_transaksi (selection): module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / res.partner / l10n_id_nik (char) : module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / res.partner / l10n_id_pkp (boolean) : module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / res.users / l10n_id_kode_transaksi (selection): module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / res.users / l10n_id_nik (char) : module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +l10n_id_efaktur / res.users / l10n_id_pkp (boolean) : module is now 'l10n_id_efaktur_coretax' ('l10n_id_efaktur') +---XML records in module 'l10n_id_efaktur'--- +DEL ir.actions.act_window: l10n_id_efaktur.efaktur_invoice_action +DEL ir.actions.server: l10n_id_efaktur.dowload_efaktur_action [renamed to l10n_id_efaktur_coretax module] +DEL ir.model.access: l10n_id_efaktur.access_efaktur_document_user +DEL ir.model.access: l10n_id_efaktur.access_efaktur_user +DEL ir.rule: l10n_id_efaktur.efaktur_document_multi_company [renamed to l10n_id_efaktur_coretax module] (noupdate) +DEL ir.ui.view: l10n_id_efaktur.account_move_efaktur_form_view +DEL ir.ui.view: l10n_id_efaktur.account_move_efaktur_tree_view +DEL ir.ui.view: l10n_id_efaktur.efaktur_tree_view +DEL ir.ui.view: l10n_id_efaktur.l10n_id_efaktur_document_filter_view +DEL ir.ui.view: l10n_id_efaktur.l10n_id_efaktur_document_form_view +DEL ir.ui.view: l10n_id_efaktur.l10n_id_efaktur_document_list_view +DEL ir.ui.view: l10n_id_efaktur.res_config_settings_view_form +DEL ir.ui.view: l10n_id_efaktur.res_partner_tax_form_view +DEL ir.ui.view: l10n_id_efaktur.view_account_invoice_filter +---Probably obsolete module l10n_in_edi_ewaybill--- +---Models in module 'l10n_in_edi_ewaybill'--- +model l10n.in.ewaybill.type (moved to l10n_in_ewaybill) +---Fields in module 'l10n_in_edi_ewaybill'--- +l10n_in_edi_ewaybill / account.move / l10n_in_distance (integer) : DEL +l10n_in_edi_ewaybill / account.move / l10n_in_mode (selection) : DEL selection_keys: ['0', '1', '2', '3', '4'] +l10n_in_edi_ewaybill / account.move / l10n_in_transportation_doc_date (date): DEL +l10n_in_edi_ewaybill / account.move / l10n_in_transportation_doc_no (char): DEL +l10n_in_edi_ewaybill / account.move / l10n_in_transporter_id (many2one): DEL relation: res.partner +l10n_in_edi_ewaybill / account.move / l10n_in_type_id (many2one) : DEL relation: l10n.in.ewaybill.type +l10n_in_edi_ewaybill / account.move / l10n_in_vehicle_no (char) : DEL +l10n_in_edi_ewaybill / account.move / l10n_in_vehicle_type (selection): DEL selection_keys: ['O', 'R'] +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / _order : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / active (boolean) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / allowed_supply_type (selection): module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / code (char) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / display_name (char) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / name (char) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / sub_type (char) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / l10n.in.ewaybill.type / sub_type_code (char) : module is now 'l10n_in_ewaybill' ('l10n_in_edi_ewaybill') +l10n_in_edi_ewaybill / res.company / l10n_in_edi_ewaybill_auth_validity (datetime): DEL +l10n_in_edi_ewaybill / res.company / l10n_in_edi_ewaybill_password (char): DEL +l10n_in_edi_ewaybill / res.company / l10n_in_edi_ewaybill_username (char): DEL +---XML records in module 'l10n_in_edi_ewaybill'--- +DEL account.edi.format: l10n_in_edi_ewaybill.edi_in_ewaybill_json_1_03 +DEL ir.model.access: l10n_in_edi_ewaybill.access_l10n_in_ewaybill_type [renamed to l10n_in_ewaybill module] +DEL ir.ui.view: l10n_in_edi_ewaybill.invoice_form_inherit_l10n_in_edi_ewaybill +DEL ir.ui.view: l10n_in_edi_ewaybill.l10n_in_einvoice_report_invoice_document_inherit +DEL ir.ui.view: l10n_in_edi_ewaybill.res_config_settings_view_form_inherit_l10n_in_edi_ewaybill +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_bill_of_entry_sub_skd_ckd_lots [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_bill_of_entry_sub_type_import [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_bill_of_supply_sub_type_export [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_bill_of_supply_sub_type_skd_ckd_lots [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_bill_of_supply_sub_type_supply [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_tax_invoice_sub_type_export [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_tax_invoice_sub_type_skd_ckd_lots [renamed to l10n_in_ewaybill module] +DEL l10n.in.ewaybill.type: l10n_in_edi_ewaybill.type_tax_invoice_sub_type_supply [renamed to l10n_in_ewaybill module] +---Probably obsolete module l10n_in_ewaybill_port--- +---Models in module 'l10n_in_ewaybill_port'--- +---Fields in module 'l10n_in_ewaybill_port'--- +l10n_in_ewaybill_port / account.move / l10n_in_ewaybill_port_partner_id (many2one): DEL relation: res.partner +---XML records in module 'l10n_in_ewaybill_port'--- +DEL ir.ui.view: l10n_in_ewaybill_port.invoice_form_inherit_l10n_in_ewaybill_port +---Probably obsolete module l10n_in_gstin_status--- +---Models in module 'l10n_in_gstin_status'--- +---Fields in module 'l10n_in_gstin_status'--- +l10n_in_gstin_status / account.bank.statement.line / l10n_in_gstin_verified_date (date): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / account.bank.statement.line / l10n_in_partner_gstin_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / account.bank.statement.line / l10n_in_show_gstin_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / account.move / l10n_in_gstin_verified_date (date): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / account.move / l10n_in_partner_gstin_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / account.move / l10n_in_show_gstin_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / res.partner / l10n_in_gstin_verified_date (date): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / res.partner / l10n_in_gstin_verified_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / res.users / l10n_in_gstin_verified_date (date): module is now 'l10n_in' ('l10n_in_gstin_status') +l10n_in_gstin_status / res.users / l10n_in_gstin_verified_status (boolean): module is now 'l10n_in' ('l10n_in_gstin_status') +---XML records in module 'l10n_in_gstin_status'--- +DEL ir.ui.view: l10n_in_gstin_status.l10n_in_view_partner_base_vat_form +DEL ir.ui.view: l10n_in_gstin_status.move_form_inherit_l10n_in_gst_verification +---Probably obsolete module l10n_in_purchase--- +---Models in module 'l10n_in_purchase'--- +---Fields in module 'l10n_in_purchase'--- +l10n_in_purchase / purchase.order / l10n_in_gst_treatment (selection): DEL selection_keys: ['composition', 'consumer', 'deemed_export', 'overseas', 'regular', 'special_economic_zone', 'uin_holders', 'unregistered'] +---XML records in module 'l10n_in_purchase'--- +DEL ir.ui.view: l10n_in_purchase.gst_report_purchaseorder_document_inherit +DEL ir.ui.view: l10n_in_purchase.gst_report_purchasequotation_document_inherit +DEL ir.ui.view: l10n_in_purchase.view_purchase_order_form_inherit_l10n_in_purchase +---Probably obsolete module l10n_in_withholding--- +---Models in module 'l10n_in_withholding'--- +model l10n_in.section.alert (moved to l10n_in) +model l10n_in.withhold.wizard (moved to l10n_in) [transient] +obsolete model l10n_in.withhold.wizard.line [transient] +---Fields in module 'l10n_in_withholding'--- +l10n_in_withholding / account.account / l10n_in_tds_tcs_section_id (many2one): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_display_higher_tcs_button (boolean): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_is_withholding (boolean): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_total_withholding_amount (float): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_withhold_move_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_withholding_line_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.bank.statement.line / l10n_in_withholding_ref_move_id (many2one): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_display_higher_tcs_button (boolean): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_is_withholding (boolean): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_total_withholding_amount (float): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_withhold_move_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_withholding_line_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move / l10n_in_withholding_ref_move_id (many2one): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.move.line / l10n_in_withhold_tax_amount (float): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.payment / l10n_in_total_withholding_amount (float): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.payment / l10n_in_withhold_move_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.tax / l10n_in_section_id (many2one) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / account.tax / l10n_in_tds_tax_type (selection): DEL selection_keys: ['purchase', 'sale'] +l10n_in_withholding / l10n_in.section.alert / _order : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / aggregate_limit (float) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / aggregate_period (selection) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / consider_amount (selection) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / display_name (char) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / is_aggregate_limit (boolean) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / is_per_transaction_limit (boolean): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / l10n_in_section_tax_ids (one2many): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / name (char) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / per_transaction_limit (float) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / l10n_in.section.alert / tax_source_type (selection) : module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / res.company / l10n_in_withholding_account_id (many2one): module is now 'l10n_in' ('l10n_in_withholding') +l10n_in_withholding / res.company / l10n_in_withholding_journal_id (many2one): module is now 'l10n_in' ('l10n_in_withholding') +---XML records in module 'l10n_in_withholding'--- +DEL account.report: l10n_in_withholding.tcs_report [renamed to l10n_in module] +DEL account.report: l10n_in_withholding.tds_report [renamed to l10n_in module] +DEL account.report.column: l10n_in_withholding.tcs_report_balance [renamed to l10n_in module] +DEL account.report.column: l10n_in_withholding.tds_report_balance [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_alfhc_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_aofpnbtotl_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_mbcoloio_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_s_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_tl_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_tobaotuafl_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1_touafl_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1c_maq_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1c_pl_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1c_tp_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1f_mv_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1g_soaotpp_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1g_som_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tcs_report_line_section_206c_1h_sog_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_192_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_192a_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_193_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194a_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194b_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194bb_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194c_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194d_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194da_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194e_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194ee_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194f_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194g_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194h_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194i_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194ia_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194ib_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194ic_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194j_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194k_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194la_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194lb_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194lba_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194lbb_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194lbc_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194m_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194n_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194o_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_194q_tag [renamed to l10n_in module] +DEL account.report.expression: l10n_in_withholding.tds_report_line_section_195_tag [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_alfhc [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_aofpnbtotl [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_mbcoloio [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_s [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_tl [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_tobaotuafl [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1_touafl [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1c_maq [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1c_pl [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1c_tp [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1f_mv [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1g_soaotpp [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1g_som [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tcs_report_line_section_206c_1h_sog [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_192 [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_192a [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_193 [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194 [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194a [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194b [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194bb [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194c [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194d [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194da [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194e [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194ee [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194f [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194g [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194h [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194i [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194ia [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194ib [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194ic [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194j [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194k [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194la [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194lb [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194lba [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194lbb [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194lbc [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194m [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194n [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194o [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_194q [renamed to l10n_in module] +DEL account.report.line: l10n_in_withholding.tds_report_line_section_195 [renamed to l10n_in module] +DEL ir.actions.act_window: l10n_in_withholding.l10n_in_section_alert_action [renamed to l10n_in module] +DEL ir.actions.act_window: l10n_in_withholding.l10n_in_withholding_entry_form_action [renamed to l10n_in module] +DEL ir.model.access: l10n_in_withholding.access_l10n_in_section_alert_account_manager [renamed to l10n_in module] +DEL ir.model.access: l10n_in_withholding.access_l10n_in_section_alert_account_readonly [renamed to l10n_in module] +DEL ir.model.access: l10n_in_withholding.access_l10n_in_withhold_wizard [renamed to l10n_in module] +DEL ir.model.access: l10n_in_withholding.access_l10n_in_withhold_wizard_line +DEL ir.model.constraint: l10n_in_withholding.constraint_l10n_in_section_alert_aggregate_limit [renamed to l10n_in module] +DEL ir.model.constraint: l10n_in_withholding.constraint_l10n_in_section_alert_per_transaction_limit [renamed to l10n_in module] +DEL ir.ui.view: l10n_in_withholding.account_account_tds_tcs_view_form_inherit +DEL ir.ui.view: l10n_in_withholding.account_account_tds_tcs_view_tree_inherit +DEL ir.ui.view: l10n_in_withholding.account_move_view_form_inherit_l10n_in_withholding +DEL ir.ui.view: l10n_in_withholding.l10n_in_section_alert_view_form +DEL ir.ui.view: l10n_in_withholding.l10n_in_section_alert_view_tree +DEL ir.ui.view: l10n_in_withholding.res_config_settings_view_form_inherit_l10n_in_withholding +DEL ir.ui.view: l10n_in_withholding.tds_entry_view_form +DEL ir.ui.view: l10n_in_withholding.view_account_payment_form_inherit_l10n_in_withholding +DEL ir.ui.view: l10n_in_withholding.view_move_line_tree_l10n_in +DEL ir.ui.view: l10n_in_withholding.view_tax_form_inherited_l10n_in_withholding +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section206c1h_g +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_alc [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_fo [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_min [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_sc [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_tim [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_tim_o [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1_tl [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1c_mq [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1c_p [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1c_t [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1f_mv [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1g_ot [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tcs_section_206c1g_r [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_192 [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_192a [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_193 [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194 [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194a [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194b [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194ba [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194bb [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194c [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194d [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194da [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194e [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194ee [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194f [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194g [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194h [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194i [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194ia [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194ib [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194ic [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194j [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194j_dir [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194k [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194la [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194lb [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194lba1 [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194lbb [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194lbc [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194m [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194n [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194o [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194o_huf [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_194q [renamed to l10n_in module] +DEL l10n_in.section.alert: l10n_in_withholding.tds_section_195 [renamed to l10n_in module] +---Probably obsolete module l10n_in_withholding_payment--- +---Models in module 'l10n_in_withholding_payment'--- +---Fields in module 'l10n_in_withholding_payment'--- +l10n_in_withholding_payment / account.bank.statement.line / l10n_in_withholding_ref_payment_id (many2one): module is now 'l10n_in' ('l10n_in_withholding_payment') +l10n_in_withholding_payment / account.move / l10n_in_withholding_ref_payment_id (many2one): module is now 'l10n_in' ('l10n_in_withholding_payment') +l10n_in_withholding_payment / account.payment / l10n_in_withhold_move_ids (False): DEL mode: modify +---XML records in module 'l10n_in_withholding_payment'--- +---Probably obsolete module l10n_it_edi_ndd--- +---Models in module 'l10n_it_edi_ndd'--- +model l10n_it.document.type (moved to l10n_it_edi) +---Fields in module 'l10n_it_edi_ndd'--- +l10n_it_edi_ndd / account.bank.statement.line / l10n_it_document_type (many2one): module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / account.bank.statement.line / l10n_it_payment_method (selection): module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / account.move / l10n_it_document_type (many2one): module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / account.move / l10n_it_payment_method (selection): module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / account.payment.method.line / l10n_it_payment_method (selection): module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / l10n_it.document.type / _order : module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / l10n_it.document.type / code (char) : module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / l10n_it.document.type / display_name (char) : module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / l10n_it.document.type / name (char) : module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +l10n_it_edi_ndd / l10n_it.document.type / type (selection) : module is now 'l10n_it_edi' ('l10n_it_edi_ndd') +---XML records in module 'l10n_it_edi_ndd'--- +DEL ir.model.access: l10n_it_edi_ndd.access_l10n_it_document_type [renamed to l10n_it_edi module] +DEL ir.ui.view: l10n_it_edi_ndd.account_invoice_form_l10n_it +DEL ir.ui.view: l10n_it_edi_ndd.l10n_it_document_type_form +DEL ir.ui.view: l10n_it_edi_ndd.l10n_it_document_type_tree +DEL ir.ui.view: l10n_it_edi_ndd.view_account_journal_form_l10n_it +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_01 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_02 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_03 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_04 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_05 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_06 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_07 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_08 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_09 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_16 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_17 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_18 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_19 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_20 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_21 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_22 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_23 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_24 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_25 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_26 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_27 [renamed to l10n_it_edi module] +DEL l10n_it.document.type: l10n_it_edi_ndd.l10n_it_document_type_28 [renamed to l10n_it_edi module] +---Probably obsolete module l10n_it_edi_ndd_account_dn--- +---Models in module 'l10n_it_edi_ndd_account_dn'--- +---Fields in module 'l10n_it_edi_ndd_account_dn'--- +---XML records in module 'l10n_it_edi_ndd_account_dn'--- +DEL ir.ui.view: l10n_it_edi_ndd_account_dn.account_invoice_it_FatturaPA_export_debit_note +---Probably obsolete module l10n_it_edi_website_sale--- +---Models in module 'l10n_it_edi_website_sale'--- +---Fields in module 'l10n_it_edi_website_sale'--- +---XML records in module 'l10n_it_edi_website_sale'--- +DEL ir.ui.view: l10n_it_edi_website_sale.address +---Probably obsolete module l10n_it_edi_withholding--- +---Models in module 'l10n_it_edi_withholding'--- +---Fields in module 'l10n_it_edi_withholding'--- +l10n_it_edi_withholding / account.tax / l10n_it_pension_fund_type (selection): module is now 'l10n_it_edi' ('l10n_it_edi_withholding') +l10n_it_edi_withholding / account.tax / l10n_it_withholding_reason (selection): module is now 'l10n_it_edi' ('l10n_it_edi_withholding') +l10n_it_edi_withholding / account.tax / l10n_it_withholding_type (selection): module is now 'l10n_it_edi' ('l10n_it_edi_withholding') +---XML records in module 'l10n_it_edi_withholding'--- +DEL account.report: l10n_it_edi_withholding.withh_tax_report_it [renamed to l10n_it module] +DEL account.report.column: l10n_it_edi_withholding.withh_tax_report_balance [renamed to l10n_it module] +DEL account.report.expression: l10n_it_edi_withholding.enasarco_purchase_tax_report_it_line_tag [renamed to l10n_it module] +DEL account.report.expression: l10n_it_edi_withholding.enasarco_sale_tax_report_it_line_tag [renamed to l10n_it module] +DEL account.report.expression: l10n_it_edi_withholding.withh_purchase_tax_report_it_line_tag [renamed to l10n_it module] +DEL account.report.expression: l10n_it_edi_withholding.withh_sale_tax_report_it_line_tag [renamed to l10n_it module] +DEL account.report.line: l10n_it_edi_withholding.enasarco_purchase_tax_report_it_line [renamed to l10n_it module] +DEL account.report.line: l10n_it_edi_withholding.enasarco_sale_tax_report_it_line [renamed to l10n_it module] +DEL account.report.line: l10n_it_edi_withholding.withh_purchase_tax_report_it_line [renamed to l10n_it module] +DEL account.report.line: l10n_it_edi_withholding.withh_sale_tax_report_it_line [renamed to l10n_it module] +DEL ir.ui.view: l10n_it_edi_withholding.account_invoice_it_FatturaPA_export_withholding +DEL ir.ui.view: l10n_it_edi_withholding.account_view_tax_form_l10n_it_edi_extended +DEL ir.ui.view: l10n_it_edi_withholding.view_invoice_tree_l10n_it_edi_extended +---Probably obsolete module l10n_jo_edi_extended--- +---Models in module 'l10n_jo_edi_extended'--- +---Fields in module 'l10n_jo_edi_extended'--- +l10n_jo_edi_extended / account.bank.statement.line / l10n_jo_edi_invoice_type (selection): module is now 'l10n_jo_edi' ('l10n_jo_edi_extended') +l10n_jo_edi_extended / account.move / l10n_jo_edi_invoice_type (selection): module is now 'l10n_jo_edi' ('l10n_jo_edi_extended') +l10n_jo_edi_extended / account.move / l10n_jo_edi_state (False) : DEL selection_keys: ['demo', 'sent', 'to_send'], mode: modify +l10n_jo_edi_extended / res.company / l10n_jo_edi_demo_mode (boolean): module is now 'l10n_jo_edi' ('l10n_jo_edi_extended') +---XML records in module 'l10n_jo_edi_extended'--- +DEL ir.ui.view: l10n_jo_edi_extended.res_config_settings_view_form +DEL ir.ui.view: l10n_jo_edi_extended.view_account_invoice_filter +DEL ir.ui.view: l10n_jo_edi_extended.view_move_form +DEL ir.ui.view: l10n_jo_edi_extended.view_out_credit_note_tree +DEL ir.ui.view: l10n_jo_edi_extended.view_out_invoice_tree +---Probably obsolete module l10n_mx_hr--- +---Models in module 'l10n_mx_hr'--- +---Fields in module 'l10n_mx_hr'--- +l10n_mx_hr / hr.employee / l10n_mx_curp (char) : DEL +l10n_mx_hr / hr.employee / l10n_mx_rfc (char) : DEL +---XML records in module 'l10n_mx_hr'--- +DEL ir.ui.view: l10n_mx_hr.hr_employee_form +---Probably obsolete module l10n_my_edi_extended--- +---Models in module 'l10n_my_edi_extended'--- +---Fields in module 'l10n_my_edi_extended'--- +l10n_my_edi_extended / account.bank.statement.line / l10n_my_invoice_need_edi (boolean): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / account.move / l10n_my_edi_invoice_long_id (char): DEL +l10n_my_edi_extended / account.move / l10n_my_invoice_need_edi (boolean): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / account.move.line / l10n_my_edi_classification_code (selection): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / res.partner / l10n_my_edi_industrial_classification (many2one): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / res.partner / l10n_my_edi_malaysian_tin (char): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / res.users / l10n_my_edi_industrial_classification (many2one): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +l10n_my_edi_extended / res.users / l10n_my_edi_malaysian_tin (char): module is now 'l10n_my_edi' ('l10n_my_edi_extended') +---XML records in module 'l10n_my_edi_extended'--- +DEL ir.actions.server: l10n_my_edi_extended.invoice_send_to_myinvois [renamed to l10n_my_edi module] +DEL ir.ui.view: l10n_my_edi_extended.portal_my_details_fields +DEL ir.ui.view: l10n_my_edi_extended.report_invoice +DEL ir.ui.view: l10n_my_edi_extended.report_invoice_document +DEL ir.ui.view: l10n_my_edi_extended.view_move_form_inherit_l10n_my_myinvois_extended +DEL ir.ui.view: l10n_my_edi_extended.view_partner_form_inherit_l10n_my_myinvois_extended +---Probably obsolete module l10n_pe_website_sale--- +---Models in module 'l10n_pe_website_sale'--- +---Fields in module 'l10n_pe_website_sale'--- +---XML records in module 'l10n_pe_website_sale'--- +DEL ir.model.access: l10n_pe_website_sale.access_city_portal [renamed to l10n_pe module] +DEL ir.model.access: l10n_pe_website_sale.access_city_public [renamed to l10n_pe module] +DEL ir.ui.view: l10n_pe_website_sale.address +DEL ir.ui.view: l10n_pe_website_sale.partner_address_info +DEL ir.ui.view: l10n_pe_website_sale.partner_info +---Probably obsolete module l10n_pl_taxable_supply_date--- +---Models in module 'l10n_pl_taxable_supply_date'--- +---Fields in module 'l10n_pl_taxable_supply_date'--- +---XML records in module 'l10n_pl_taxable_supply_date'--- +DEL ir.ui.view: l10n_pl_taxable_supply_date.report_invoice_document +DEL ir.ui.view: l10n_pl_taxable_supply_date.view_move_form_l10n_pl +---Probably obsolete module l10n_ro_efactura_synchronize--- +---Models in module 'l10n_ro_efactura_synchronize'--- +---Fields in module 'l10n_ro_efactura_synchronize'--- +l10n_ro_efactura_synchronize / res.company / l10n_ro_edi_anaf_imported_inv_journal_id (many2one): module is now 'l10n_ro_edi' ('l10n_ro_efactura_synchronize') +---XML records in module 'l10n_ro_efactura_synchronize'--- +DEL ir.cron: l10n_ro_efactura_synchronize.ir_cron_l10n_ro_edi_synchronize_invoices [renamed to l10n_ro_edi module] (noupdate) +DEL ir.ui.view: l10n_ro_efactura_synchronize.account_move_form_inherit_l10n_ro_synchronize +DEL ir.ui.view: l10n_ro_efactura_synchronize.res_config_settings_form_inherit_l10n_ro_synchronize +---Probably obsolete module l10n_uy_website_sale--- +---Models in module 'l10n_uy_website_sale'--- +---Fields in module 'l10n_uy_website_sale'--- +---XML records in module 'l10n_uy_website_sale'--- +DEL ir.ui.view: l10n_uy_website_sale.address +DEL ir.ui.view: l10n_uy_website_sale.partner_info +DEL ir.ui.view: l10n_uy_website_sale.portal_my_details_fields +---Probably obsolete module membership--- +---Models in module 'membership'--- +obsolete model membership.invoice [transient] +obsolete model membership.membership_line +obsolete model report.membership [sql_view] +---Fields in module 'membership'--- +membership / membership.membership_line / account_invoice_line (many2one): DEL relation: account.move.line +membership / membership.membership_line / company_id (many2one) : DEL relation: res.company +membership / membership.membership_line / date (date) : DEL +membership / membership.membership_line / date_cancel (date) : DEL +membership / membership.membership_line / date_from (date) : DEL +membership / membership.membership_line / date_to (date) : DEL +membership / membership.membership_line / member_price (float) : DEL required +membership / membership.membership_line / membership_id (many2one) : DEL relation: product.product, required +membership / membership.membership_line / partner (many2one) : DEL relation: res.partner +membership / membership.membership_line / state (selection) : DEL selection_keys: ['canceled', 'free', 'invoiced', 'none', 'old', 'paid', 'waiting'] +membership / product.template / membership (boolean) : DEL +membership / product.template / membership_date_from (date) : DEL +membership / product.template / membership_date_to (date) : DEL +membership / res.partner / associate_member (many2one) : DEL relation: res.partner +membership / res.partner / free_member (boolean) : DEL +membership / res.partner / member_lines (one2many) : DEL relation: membership.membership_line +membership / res.partner / membership_amount (float) : DEL +membership / res.partner / membership_cancel (date) : DEL +membership / res.partner / membership_start (date) : DEL +membership / res.partner / membership_state (selection) : DEL selection_keys: ['canceled', 'free', 'invoiced', 'none', 'old', 'paid', 'waiting'] +membership / res.partner / membership_stop (date) : DEL +---XML records in module 'membership'--- +DEL ir.actions.act_window: membership.action_membership_invoice_view +DEL ir.actions.act_window: membership.action_membership_members +DEL ir.actions.act_window: membership.action_membership_products +DEL ir.actions.act_window: membership.action_report_membership_tree +DEL ir.actions.act_window.view: membership.action_membership_members_view_form +DEL ir.actions.act_window.view: membership.action_membership_members_view_kanban +DEL ir.actions.act_window.view: membership.action_membership_members_view_tree +DEL ir.actions.act_window.view: membership.action_membership_product_view_form +DEL ir.actions.act_window.view: membership.action_membership_product_view_kanban +DEL ir.actions.act_window.view: membership.action_membership_product_view_tree +DEL ir.cron: membership.ir_cron_update_membership (noupdate) +DEL ir.model.access: membership.access_membership_invoice +DEL ir.model.access: membership.access_membership_membership_line_employee +DEL ir.model.access: membership.access_membership_membership_line_partner_manager +DEL ir.model.access: membership.access_report_membership +DEL ir.model.constraint: membership.constraint_product_template_membership_date_greater +DEL ir.ui.menu: membership.menu_association +DEL ir.ui.menu: membership.menu_marketing_config_association +DEL ir.ui.menu: membership.menu_membership +DEL ir.ui.menu: membership.menu_membership_products +DEL ir.ui.menu: membership.menu_report_membership +DEL ir.ui.view: membership.membership_members_tree +DEL ir.ui.view: membership.membership_product_search_form_view +DEL ir.ui.view: membership.membership_products_form +DEL ir.ui.view: membership.membership_products_kanban +DEL ir.ui.view: membership.membership_products_tree +DEL ir.ui.view: membership.report_membership_view_tree +DEL ir.ui.view: membership.view_membership_invoice_view +DEL ir.ui.view: membership.view_partner_form +DEL ir.ui.view: membership.view_report_membership_graph1 +DEL ir.ui.view: membership.view_report_membership_pivot +DEL ir.ui.view: membership.view_report_membership_search +DEL ir.ui.view: membership.view_res_partner_member_filter +---Probably obsolete module payment_razorpay_oauth--- +---Models in module 'payment_razorpay_oauth'--- +---Fields in module 'payment_razorpay_oauth'--- +payment_razorpay_oauth / payment.provider / razorpay_access_token (char) : module is now 'payment_razorpay' ('payment_razorpay_oauth') +payment_razorpay_oauth / payment.provider / razorpay_access_token_expiry (datetime): module is now 'payment_razorpay' ('payment_razorpay_oauth') +payment_razorpay_oauth / payment.provider / razorpay_account_id (char) : module is now 'payment_razorpay' ('payment_razorpay_oauth') +payment_razorpay_oauth / payment.provider / razorpay_public_token (char) : module is now 'payment_razorpay' ('payment_razorpay_oauth') +payment_razorpay_oauth / payment.provider / razorpay_refresh_token (char) : module is now 'payment_razorpay' ('payment_razorpay_oauth') +---XML records in module 'payment_razorpay_oauth'--- +DEL ir.ui.view: payment_razorpay_oauth.authorization_error +DEL ir.ui.view: payment_razorpay_oauth.payment_provider_form_razorpay_oauth +---Probably obsolete module pos_epson_printer--- +---Models in module 'pos_epson_printer'--- +---Fields in module 'pos_epson_printer'--- +pos_epson_printer / pos.config / epson_printer_ip (char) : module is now 'point_of_sale' ('pos_epson_printer') +pos_epson_printer / pos.printer / epson_printer_ip (char) : module is now 'point_of_sale' ('pos_epson_printer') +pos_epson_printer / pos.printer / printer_type (False) : DEL selection_keys: ['epson_epos', 'iot'], mode: modify +---XML records in module 'pos_epson_printer'--- +DEL ir.ui.view: pos_epson_printer.pos_iot_config_view_form +DEL ir.ui.view: pos_epson_printer.res_config_settings_view_form +DEL ir.ui.view: pos_epson_printer.view_pos_printer_form +---Probably obsolete module pos_paytm--- +---Models in module 'pos_paytm'--- +---Fields in module 'pos_paytm'--- +pos_paytm / pos.payment.method / accept_payment (selection) : DEL selection_keys: ['auto', 'manual'] +pos_paytm / pos.payment.method / allowed_payment_modes (selection): DEL selection_keys: ['all', 'card', 'qr'] +pos_paytm / pos.payment.method / channel_id (char) : DEL +pos_paytm / pos.payment.method / paytm_merchant_key (char) : DEL +pos_paytm / pos.payment.method / paytm_mid (char) : DEL +pos_paytm / pos.payment.method / paytm_test_mode (boolean) : DEL +pos_paytm / pos.payment.method / paytm_tid (char) : DEL +---XML records in module 'pos_paytm'--- +DEL ir.ui.view: pos_paytm.pos_payment_method_view_form_inherit_pos_paytm +---Probably obsolete module pos_six--- +---Models in module 'pos_six'--- +---Fields in module 'pos_six'--- +pos_six / pos.payment.method / six_terminal_ip (char) : DEL +---XML records in module 'pos_six'--- +DEL ir.ui.view: pos_six.pos_payment_method_view_form_inherit_pos_adyen +---Probably obsolete module pos_viva_wallet--- +---Models in module 'pos_viva_wallet'--- +---Fields in module 'pos_viva_wallet'--- +pos_viva_wallet / pos.payment.method / viva_wallet_api_key (char) : DEL +pos_viva_wallet / pos.payment.method / viva_wallet_bearer_token (char): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_client_id (char) : DEL +pos_viva_wallet / pos.payment.method / viva_wallet_client_secret (char): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_latest_response (json): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_merchant_id (char): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_terminal_id (char): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_test_mode (boolean): DEL +pos_viva_wallet / pos.payment.method / viva_wallet_webhook_verification_key (char): DEL +---XML records in module 'pos_viva_wallet'--- +DEL ir.ui.view: pos_viva_wallet.pos_payment_method_view_form_inherit_pos_viva_wallet +---Probably obsolete module product_images--- +---Models in module 'product_images'--- +obsolete model product.fetch.image.wizard [transient] +---Fields in module 'product_images'--- +product_images / product.product / image_fetch_pending (boolean) : DEL +---XML records in module 'product_images'--- +DEL ir.actions.act_window: product_images.product_product_action_get_pic_with_barcode +DEL ir.actions.act_window: product_images.product_template_action_get_pic_with_barcode +DEL ir.cron: product_images.ir_cron_fetch_image +DEL ir.model.access: product_images.access_product_get_pic_barcode_manager +DEL ir.rule: product_images.product_images_product_fetch_image_wizard_rule (noupdate) +DEL ir.ui.view: product_images.product_fetch_image_wizard_view_form +DEL ir.ui.view: product_images.res_config_settings_view_form +---Probably obsolete module sale_async_emails--- +---Models in module 'sale_async_emails'--- +---Fields in module 'sale_async_emails'--- +sale_async_emails / sale.order / pending_email_template_id (many2one): module is now 'sale' ('sale_async_emails') +---XML records in module 'sale_async_emails'--- +DEL ir.config_parameter: sale_async_emails.async_emails [renamed to sale module] (noupdate) +DEL ir.cron: sale_async_emails.cron (noupdate) +---Probably obsolete module web_editor--- +---Models in module 'web_editor'--- +model html.field.history.mixin (moved to html_editor) [abstract] +obsolete model web_editor.assets [abstract] +obsolete model web_editor.converter.test +obsolete model web_editor.converter.test.sub +---Fields in module 'web_editor'--- +web_editor / web_editor.converter.test / binary (binary) : DEL attachment: False +web_editor / web_editor.converter.test / char (char) : DEL +web_editor / web_editor.converter.test / date (date) : DEL +web_editor / web_editor.converter.test / datetime (datetime) : DEL +web_editor / web_editor.converter.test / float (float) : DEL +web_editor / web_editor.converter.test / html (html) : DEL +web_editor / web_editor.converter.test / integer (integer) : DEL +web_editor / web_editor.converter.test / many2one (many2one) : DEL relation: web_editor.converter.test.sub +web_editor / web_editor.converter.test / numeric (float) : DEL +web_editor / web_editor.converter.test / selection_str (selection) : DEL selection_keys: ['A', 'B', 'C', 'D'] +web_editor / web_editor.converter.test / text (text) : DEL +web_editor / web_editor.converter.test.sub / name (char) : DEL +---XML records in module 'web_editor'--- +DEL ir.asset: web_editor.13_0_color_system_support_primary_variables_scss +DEL ir.model.access: web_editor.access_web_editor_converter_test +DEL ir.model.access: web_editor.access_web_editor_converter_test_sub +DEL ir.ui.view: web_editor.colorpicker +DEL ir.ui.view: web_editor.s_hr +DEL ir.ui.view: web_editor.snippet_options +DEL ir.ui.view: web_editor.snippet_options_background_color_widget +DEL ir.ui.view: web_editor.snippet_options_background_options +DEL ir.ui.view: web_editor.snippet_options_image_optimization_widgets +DEL ir.ui.view: web_editor.snippet_options_version_control +DEL ir.ui.view: web_editor.snippets +DEL ir.ui.view: web_editor.tests +---Probably obsolete module website_event_jitsi--- +---Models in module 'website_event_jitsi'--- +---Fields in module 'website_event_jitsi'--- +---XML records in module 'website_event_jitsi'--- +DEL ir.ui.view: website_event_jitsi.res_config_settings_view_form +---Probably obsolete module website_event_meet--- +---Models in module 'website_event_meet'--- +obsolete model event.meeting.room +---Fields in module 'website_event_meet'--- +website_event_meet / event.event / meeting_room_allow_creation (boolean): DEL +website_event_meet / event.event / meeting_room_ids (one2many) : DEL relation: event.meeting.room +website_event_meet / event.meeting.room / active (boolean) : DEL +website_event_meet / event.meeting.room / chat_room_id (many2one) : DEL relation: chat.room, required +website_event_meet / event.meeting.room / event_id (many2one) : DEL relation: event.event, required +website_event_meet / event.meeting.room / is_pinned (boolean) : DEL +website_event_meet / event.meeting.room / is_published (boolean) : DEL +website_event_meet / event.meeting.room / name (char) : DEL required +website_event_meet / event.meeting.room / summary (char) : DEL +website_event_meet / event.meeting.room / target_audience (char) : DEL +website_event_meet / event.type / meeting_room_allow_creation (boolean): DEL +website_event_meet / website.event.menu / menu_type (False) : DEL selection_keys: ['booth', 'community', 'exhibitor', 'introduction', 'location', 'meeting_room', 'register', 'track', 'track_proposal'], mode: modify +---XML records in module 'website_event_meet'--- +DEL ir.actions.act_window: website_event_meet.action_meeting_room_from_event +DEL ir.actions.act_window: website_event_meet.event_meeting_room_action +DEL ir.model.access: website_event_meet.access_chat_room_registration +DEL ir.model.access: website_event_meet.access_chat_room_user +DEL ir.model.access: website_event_meet.access_event_meeting_room_employee +DEL ir.model.access: website_event_meet.access_event_meeting_room_portal +DEL ir.model.access: website_event_meet.access_event_meeting_room_public +DEL ir.model.access: website_event_meet.access_event_meeting_room_user +DEL ir.rule: website_event_meet.event_meeting_room_rule_share (noupdate) +DEL ir.ui.view: website_event_meet.community_aside +DEL ir.ui.view: website_event_meet.community_main +DEL ir.ui.view: website_event_meet.event_event_view_form +DEL ir.ui.view: website_event_meet.event_meet +DEL ir.ui.view: website_event_meet.event_meet_main +DEL ir.ui.view: website_event_meet.event_meeting_room_view_form +DEL ir.ui.view: website_event_meet.event_meeting_room_view_search +DEL ir.ui.view: website_event_meet.event_meeting_room_view_tree +DEL ir.ui.view: website_event_meet.event_type_view_form +DEL ir.ui.view: website_event_meet.meeting_room_aside +DEL ir.ui.view: website_event_meet.meeting_room_card +DEL ir.ui.view: website_event_meet.meeting_room_main +DEL ir.ui.view: website_event_meet.snippet_options +---Probably obsolete module website_event_meet_quiz--- +---Models in module 'website_event_meet_quiz'--- +---Fields in module 'website_event_meet_quiz'--- +---XML records in module 'website_event_meet_quiz'--- +DEL ir.ui.view: website_event_meet_quiz.community_aside +DEL ir.ui.view: website_event_meet_quiz.community_leaderboard_small +DEL ir.ui.view: website_event_meet_quiz.visitor_quiz_points_card +---Probably obsolete module website_jitsi--- +---Models in module 'website_jitsi'--- +obsolete model chat.room +obsolete model chat.room.mixin [abstract] +---Fields in module 'website_jitsi'--- +website_jitsi / chat.room / lang_id (many2one) : DEL relation: res.lang +website_jitsi / chat.room / last_activity (datetime) : DEL +website_jitsi / chat.room / max_capacity (selection) : DEL required, selection_keys: ['12', '16', '20', '4', '8', 'no_limit'] +website_jitsi / chat.room / max_participant_reached (integer): DEL +website_jitsi / chat.room / name (char) : DEL required +website_jitsi / chat.room / participant_count (integer) : DEL +---XML records in module 'website_jitsi'--- +DEL ir.actions.act_window: website_jitsi.chat_room_action +DEL ir.model.access: website_jitsi.access_chat_room_all +DEL ir.model.access: website_jitsi.access_chat_room_system +DEL ir.model.access: website_jitsi.access_chat_room_user +DEL ir.ui.menu: website_jitsi.chat_room_menu +DEL ir.ui.view: website_jitsi.chat_room_join_button +DEL ir.ui.view: website_jitsi.chat_room_view_form +DEL ir.ui.view: website_jitsi.chat_room_view_search +DEL ir.ui.view: website_jitsi.chat_room_view_tree +---Probably obsolete module website_membership--- +---Models in module 'website_membership'--- +---Fields in module 'website_membership'--- +---XML records in module 'website_membership'--- +DEL ir.model.access: website_membership.access_membership_membership_line_portal +DEL ir.model.access: website_membership.access_membership_membership_line_public +DEL ir.model.access: website_membership.access_membership_product_product_public +DEL ir.rule: website_membership.membership_membership_line_public (noupdate) +DEL ir.rule: website_membership.membership_product_product_public (noupdate) +DEL ir.ui.view: website_membership.index +DEL ir.ui.view: website_membership.opt_index_country +DEL ir.ui.view: website_membership.opt_index_google_map +DEL ir.ui.view: website_membership.partner +DEL ir.ui.view: website_membership.product_template_view_form +DEL ir.ui.view: website_membership.product_template_view_tree +DEL ir.ui.view: website_membership.snippet_options +---Probably obsolete module website_payment_authorize--- +---Models in module 'website_payment_authorize'--- +---Fields in module 'website_payment_authorize'--- +---XML records in module 'website_payment_authorize'--- +DEL ir.ui.view: website_payment_authorize.res_config_settings_view_form diff --git a/openupgrade_scripts/scripts/base/tests/data_base_migration.py b/openupgrade_scripts/scripts/base/tests/data_base_migration.py new file mode 100644 index 000000000000..472065b36553 --- /dev/null +++ b/openupgrade_scripts/scripts/base/tests/data_base_migration.py @@ -0,0 +1,44 @@ +env = locals().get("env") +# server action with multiple children +parent_action1 = env["ir.actions.server"].create( + { + "name": "test server action 1", + "state": "multi", + "model_id": env.ref("base.model_ir_module_module").id, + "child_ids": [ + ( + 0, + 0, + { + "name": "child action 1", + "model_id": env.ref("base.model_ir_module_module").id, + }, + ), + ( + 0, + 0, + { + "name": "child action 2", + "model_id": env.ref("base.model_ir_module_module").id, + }, + ), + ], + } +) +parent_action1.copy( + { + "name": "test server action 2", + "child_ids": [ + (6, 0, parent_action1.child_ids.ids), + ( + 0, + 0, + { + "name": "child action 3", + "model_id": env.ref("base.model_ir_module_module").id, + }, + ), + ], + } +) +env.cr.commit() diff --git a/openupgrade_scripts/scripts/base/tests/test_base_migration.py b/openupgrade_scripts/scripts/base/tests/test_base_migration.py new file mode 100644 index 000000000000..525218394f51 --- /dev/null +++ b/openupgrade_scripts/scripts/base/tests/test_base_migration.py @@ -0,0 +1,26 @@ +from odoo.tests import TransactionCase + +from odoo.addons.openupgrade_framework import openupgrade_test + + +@openupgrade_test +class TestBaseMigration(TransactionCase): + def test_server_action_child_ids(self): + """ + Test that server action children are migrated correctly + """ + action1 = self.env["ir.actions.server"].search( + [("name", "=", "test server action 1")] + ) + self.assertTrue(action1) + self.assertItemsEqual( + action1.child_ids.mapped("name"), ("child action 1", "child action 2") + ) + action2 = self.env["ir.actions.server"].search( + [("name", "=", "test server action 2")] + ) + self.assertTrue(action2) + self.assertItemsEqual( + action2.child_ids.mapped("name"), + ("child action 1", "child action 2", "child action 3"), + ) diff --git a/openupgrade_scripts/static/description/banner.png b/openupgrade_scripts/static/description/banner.png new file mode 100644 index 000000000000..9dd67ec04cf4 Binary files /dev/null and b/openupgrade_scripts/static/description/banner.png differ diff --git a/openupgrade_scripts/static/description/icon.png b/openupgrade_scripts/static/description/icon.png new file mode 100644 index 000000000000..3a0328b516c4 Binary files /dev/null and b/openupgrade_scripts/static/description/icon.png differ diff --git a/openupgrade_scripts/static/description/index.html b/openupgrade_scripts/static/description/index.html new file mode 100644 index 000000000000..1b4197a5c39f --- /dev/null +++ b/openupgrade_scripts/static/description/index.html @@ -0,0 +1,438 @@ + + + + + +README.rst + + + +
+ + + +Odoo Community Association + +
+

Openupgrade Scripts

+ +

Beta License: AGPL-3 OCA/OpenUpgrade Translate me on Weblate Try me on Runboat

+

This module is a containers of migration script to migrate from 18.0 to +19.0 version.

+

Table of contents

+ +
+

Installation

+

This module does not need to be installed on a database. It simply needs +to be available via your addons-path.

+
+
+

Configuration

+
    +
  • call your odoo instance with the option +--upgrade-path=/PATH_TO_openupgrade_scripts_MODULE/scripts/
  • +
+

or

+
    +
  • add the key to your configuration file:
  • +
+
+[options]
+upgrade_path = /PATH_TO_openupgrade_scripts_MODULE/scripts/
+
+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Maintainers

+

This module is maintained by the OCA.

+ +Odoo Community Association + +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/OpenUpgrade project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+
+ + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000000..180fc49789ba --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +# generated from manifests external_dependencies +openupgradelib diff --git a/setup/_metapackage/pyproject.toml b/setup/_metapackage/pyproject.toml new file mode 100644 index 000000000000..f7d011b7fa1a --- /dev/null +++ b/setup/_metapackage/pyproject.toml @@ -0,0 +1,12 @@ +[project] +name = "odoo-addons-oca-OpenUpgrade" +version = "19.0.20251225.0" +dependencies = [ + "odoo-addon-openupgrade_framework==19.0.*", + "odoo-addon-openupgrade_scripts==19.0.*", +] +classifiers=[ + "Programming Language :: Python", + "Framework :: Odoo", + "Framework :: Odoo :: 19.0", +]