[IMP] add migrations script to use bank-payment-alternative addons in 18.0
This commit is contained in:
@@ -3,4 +3,158 @@ set -euo pipefail
|
|||||||
|
|
||||||
echo "Post migration to 18.0..."
|
echo "Post migration to 18.0..."
|
||||||
|
|
||||||
#compose --debug run ou18 -u base --stop-after-init --no-http
|
# ============================================================================
|
||||||
|
# BANK-PAYMENT -> BANK-PAYMENT-ALTERNATIVE DATA MIGRATION
|
||||||
|
# Source PR: https://github.com/OCA/bank-payment-alternative/pull/42
|
||||||
|
# ============================================================================
|
||||||
|
BANK_PAYMENT_POST_SQL=$(cat <<'EOF'
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
mode_rec RECORD;
|
||||||
|
new_line_id INTEGER;
|
||||||
|
journal_rec RECORD;
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'account_payment_mode') THEN
|
||||||
|
RAISE NOTICE 'No account_payment_mode table found, skipping bank-payment migration';
|
||||||
|
RETURN;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RAISE NOTICE 'Starting bank-payment to bank-payment-alternative migration...';
|
||||||
|
|
||||||
|
ALTER TABLE account_payment_method_line
|
||||||
|
ADD COLUMN IF NOT EXISTS old_payment_mode_id INT,
|
||||||
|
ADD COLUMN IF NOT EXISTS old_refund_payment_mode_id INT;
|
||||||
|
|
||||||
|
FOR mode_rec IN
|
||||||
|
SELECT id, name, company_id, payment_method_id,
|
||||||
|
fixed_journal_id AS journal_id, bank_account_link,
|
||||||
|
create_date, create_uid, write_date, write_uid,
|
||||||
|
show_bank_account, refund_payment_mode_id, active
|
||||||
|
FROM account_payment_mode
|
||||||
|
LOOP
|
||||||
|
INSERT INTO account_payment_method_line (
|
||||||
|
name, payment_method_id, bank_account_link, journal_id,
|
||||||
|
selectable, company_id, create_uid, create_date,
|
||||||
|
write_uid, write_date, show_bank_account,
|
||||||
|
old_payment_mode_id, old_refund_payment_mode_id, active
|
||||||
|
) VALUES (
|
||||||
|
to_jsonb(mode_rec.name),
|
||||||
|
mode_rec.payment_method_id,
|
||||||
|
mode_rec.bank_account_link,
|
||||||
|
mode_rec.journal_id,
|
||||||
|
true,
|
||||||
|
mode_rec.company_id,
|
||||||
|
mode_rec.create_uid,
|
||||||
|
mode_rec.create_date,
|
||||||
|
mode_rec.write_uid,
|
||||||
|
mode_rec.write_date,
|
||||||
|
mode_rec.show_bank_account,
|
||||||
|
mode_rec.id,
|
||||||
|
mode_rec.refund_payment_mode_id,
|
||||||
|
mode_rec.active
|
||||||
|
) RETURNING id INTO new_line_id;
|
||||||
|
|
||||||
|
IF mode_rec.bank_account_link = 'variable' THEN
|
||||||
|
FOR journal_rec IN
|
||||||
|
SELECT rel.journal_id
|
||||||
|
FROM account_payment_mode_variable_journal_rel rel
|
||||||
|
WHERE rel.payment_mode_id = mode_rec.id
|
||||||
|
LOOP
|
||||||
|
INSERT INTO account_payment_method_line_journal_rel
|
||||||
|
(account_payment_method_line_id, account_journal_id)
|
||||||
|
VALUES (new_line_id, journal_rec.journal_id)
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
END LOOP;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RAISE NOTICE 'Migrated payment mode % -> payment method line %', mode_rec.id, new_line_id;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
UPDATE account_payment_method_line apml
|
||||||
|
SET refund_payment_method_line_id = apml2.id
|
||||||
|
FROM account_payment_method_line apml2
|
||||||
|
WHERE apml.old_refund_payment_mode_id IS NOT NULL
|
||||||
|
AND apml.old_refund_payment_mode_id = apml2.old_payment_mode_id;
|
||||||
|
|
||||||
|
UPDATE account_move am
|
||||||
|
SET preferred_payment_method_line_id = apml.id
|
||||||
|
FROM account_payment_mode apm, account_payment_method_line apml
|
||||||
|
WHERE am.payment_mode_id = apm.id
|
||||||
|
AND apm.id = apml.old_payment_mode_id
|
||||||
|
AND am.preferred_payment_method_line_id IS NULL;
|
||||||
|
|
||||||
|
RAISE NOTICE 'account_payment_base_oca migration completed';
|
||||||
|
END $$;
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
echo "Executing bank-payment base migration..."
|
||||||
|
query_postgres_container "$BANK_PAYMENT_POST_SQL" ou18 || exit 1
|
||||||
|
|
||||||
|
BANK_PAYMENT_BATCH_SQL=$(cat <<'EOF'
|
||||||
|
DO $$
|
||||||
|
BEGIN
|
||||||
|
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'account_payment_mode') THEN
|
||||||
|
RETURN;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'account_payment_order') THEN
|
||||||
|
RAISE NOTICE 'No account_payment_order table, skipping batch migration';
|
||||||
|
RETURN;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
RAISE NOTICE 'Starting account_payment_batch_oca migration...';
|
||||||
|
|
||||||
|
IF EXISTS (SELECT FROM information_schema.columns
|
||||||
|
WHERE table_name = 'account_payment_method' AND column_name = 'payment_order_only') THEN
|
||||||
|
UPDATE account_payment_method
|
||||||
|
SET payment_order_ok = payment_order_only
|
||||||
|
WHERE payment_order_only IS NOT NULL;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
UPDATE account_payment_method_line apml
|
||||||
|
SET payment_order_ok = apm.payment_order_ok,
|
||||||
|
no_debit_before_maturity = apm.no_debit_before_maturity,
|
||||||
|
default_payment_mode = apm.default_payment_mode,
|
||||||
|
default_invoice = apm.default_invoice,
|
||||||
|
default_target_move = apm.default_target_move,
|
||||||
|
default_date_type = apm.default_date_type,
|
||||||
|
default_date_prefered = apm.default_date_prefered,
|
||||||
|
group_lines = apm.group_lines
|
||||||
|
FROM account_payment_mode apm
|
||||||
|
WHERE apml.old_payment_mode_id IS NOT NULL
|
||||||
|
AND apm.id = apml.old_payment_mode_id;
|
||||||
|
|
||||||
|
IF EXISTS (SELECT FROM information_schema.tables
|
||||||
|
WHERE table_name = 'account_journal_account_payment_method_line_rel') THEN
|
||||||
|
DELETE FROM account_journal_account_payment_method_line_rel
|
||||||
|
WHERE account_payment_method_line_id IN (
|
||||||
|
SELECT id FROM account_payment_method_line WHERE old_payment_mode_id IS NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO account_journal_account_payment_method_line_rel
|
||||||
|
(account_payment_method_line_id, account_journal_id)
|
||||||
|
SELECT apml.id, rel.account_journal_id
|
||||||
|
FROM account_journal_account_payment_mode_rel rel
|
||||||
|
JOIN account_payment_method_line apml ON rel.account_payment_mode_id = apml.old_payment_mode_id
|
||||||
|
ON CONFLICT DO NOTHING;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
UPDATE account_payment_order apo
|
||||||
|
SET payment_method_line_id = apml.id,
|
||||||
|
payment_method_code = apm_method.code
|
||||||
|
FROM account_payment_method_line apml,
|
||||||
|
account_payment_mode apm,
|
||||||
|
account_payment_method apm_method
|
||||||
|
WHERE apo.payment_mode_id = apm.id
|
||||||
|
AND apml.old_payment_mode_id = apm.id
|
||||||
|
AND apm_method.id = apml.payment_method_id;
|
||||||
|
|
||||||
|
RAISE NOTICE 'account_payment_batch_oca migration completed';
|
||||||
|
RAISE NOTICE 'NOTE: Payment lots for open orders must be generated manually via Odoo UI or script';
|
||||||
|
END $$;
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
echo "Executing bank-payment batch migration..."
|
||||||
|
query_postgres_container "$BANK_PAYMENT_BATCH_SQL" ou18 || exit 1
|
||||||
|
|
||||||
|
echo "Post migration to 18.0 completed!"
|
||||||
|
|||||||
@@ -6,6 +6,83 @@ echo "Prepare migration to 18.0..."
|
|||||||
# Copy database
|
# Copy database
|
||||||
copy_database ou17 ou18 ou18 || exit 1
|
copy_database ou17 ou18 ou18 || exit 1
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# BANK-PAYMENT -> BANK-PAYMENT-ALTERNATIVE MODULE RENAMING
|
||||||
|
# Migration from OCA/bank-payment to OCA/bank-payment-alternative
|
||||||
|
# Source PR: https://github.com/OCA/bank-payment-alternative/pull/42
|
||||||
|
#
|
||||||
|
# This renaming MUST be done BEFORE OpenUpgrade runs, so that the migration
|
||||||
|
# scripts in the new modules (account_payment_base_oca, account_payment_batch_oca)
|
||||||
|
# can properly migrate the data.
|
||||||
|
# ============================================================================
|
||||||
|
BANK_PAYMENT_RENAME_SQL=$(cat <<'EOF'
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
renamed_modules TEXT[][] := ARRAY[
|
||||||
|
['account_payment_mode', 'account_payment_base_oca'],
|
||||||
|
['account_banking_pain_base', 'account_payment_sepa_base'],
|
||||||
|
['account_banking_sepa_credit_transfer', 'account_payment_sepa_credit_transfer'],
|
||||||
|
['account_payment_order', 'account_payment_batch_oca']
|
||||||
|
];
|
||||||
|
merged_modules TEXT[][] := ARRAY[
|
||||||
|
['account_payment_partner', 'account_payment_base_oca']
|
||||||
|
];
|
||||||
|
old_name TEXT;
|
||||||
|
new_name TEXT;
|
||||||
|
old_module_id INTEGER;
|
||||||
|
deleted_count INTEGER;
|
||||||
|
BEGIN
|
||||||
|
FOR i IN 1..array_length(renamed_modules, 1) LOOP
|
||||||
|
old_name := renamed_modules[i][1];
|
||||||
|
new_name := renamed_modules[i][2];
|
||||||
|
|
||||||
|
SELECT id INTO old_module_id FROM ir_module_module WHERE name = old_name;
|
||||||
|
IF old_module_id IS NOT NULL THEN
|
||||||
|
RAISE NOTICE 'Renaming module: % -> %', old_name, new_name;
|
||||||
|
UPDATE ir_module_module SET name = new_name WHERE name = old_name;
|
||||||
|
UPDATE ir_model_data SET module = new_name WHERE module = old_name;
|
||||||
|
UPDATE ir_module_module_dependency SET name = new_name WHERE name = old_name;
|
||||||
|
END IF;
|
||||||
|
END LOOP;
|
||||||
|
|
||||||
|
FOR i IN 1..array_length(merged_modules, 1) LOOP
|
||||||
|
old_name := merged_modules[i][1];
|
||||||
|
new_name := merged_modules[i][2];
|
||||||
|
|
||||||
|
SELECT id INTO old_module_id FROM ir_module_module WHERE name = old_name;
|
||||||
|
IF old_module_id IS NOT NULL THEN
|
||||||
|
RAISE NOTICE 'Merging module: % -> %', old_name, new_name;
|
||||||
|
|
||||||
|
DELETE FROM ir_model_data
|
||||||
|
WHERE module = old_name
|
||||||
|
AND name IN (SELECT name FROM ir_model_data WHERE module = new_name);
|
||||||
|
GET DIAGNOSTICS deleted_count = ROW_COUNT;
|
||||||
|
IF deleted_count > 0 THEN
|
||||||
|
RAISE NOTICE ' Deleted % duplicate ir_model_data records', deleted_count;
|
||||||
|
END IF;
|
||||||
|
|
||||||
|
UPDATE ir_model_data SET module = new_name WHERE module = old_name;
|
||||||
|
UPDATE ir_module_module_dependency SET name = new_name WHERE name = old_name;
|
||||||
|
UPDATE ir_module_module SET state = 'uninstalled' WHERE name = old_name;
|
||||||
|
DELETE FROM ir_module_module WHERE name = old_name;
|
||||||
|
END IF;
|
||||||
|
END LOOP;
|
||||||
|
END $$;
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
echo "Executing bank-payment module renaming..."
|
||||||
|
query_postgres_container "$BANK_PAYMENT_RENAME_SQL" ou18 || exit 1
|
||||||
|
|
||||||
|
BANK_PAYMENT_PRE_SQL=$(cat <<'EOF'
|
||||||
|
UPDATE ir_model_data
|
||||||
|
SET noupdate = false
|
||||||
|
WHERE module = 'account_payment_base_oca'
|
||||||
|
AND name = 'view_account_invoice_report_search';
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
echo "Executing bank-payment pre-migration..."
|
||||||
|
query_postgres_container "$BANK_PAYMENT_PRE_SQL" ou18 || exit 1
|
||||||
|
|
||||||
# Execute SQL pre-migration commands
|
# Execute SQL pre-migration commands
|
||||||
PRE_MIGRATE_SQL=$(cat <<'EOF'
|
PRE_MIGRATE_SQL=$(cat <<'EOF'
|
||||||
UPDATE account_analytic_plan SET default_applicability=NULL WHERE default_applicability='optional';
|
UPDATE account_analytic_plan SET default_applicability=NULL WHERE default_applicability='optional';
|
||||||
|
|||||||
Reference in New Issue
Block a user