This commit is contained in:
admin
2026-01-16 09:50:21 +09:00
parent 24c04e0d29
commit d8ec60629e
18 changed files with 941 additions and 22 deletions

View File

@@ -0,0 +1,25 @@
-- 既存の修正仕訳データを修正
-- 1. ID 80のis_deletedをfalseに設定修正版は削除されていないはず
UPDATE journal_entries
SET is_deleted = false
WHERE journal_entry_id = 80;
-- 2. 最新の修正仕訳【修正後】【修正後】などのparent_entry_idが正しく設定されているか確認
-- まず確認クエリ
SELECT journal_entry_id, description, parent_entry_id, is_deleted
FROM journal_entries
WHERE description LIKE '%遠達ビル%'
ORDER BY journal_entry_id;
-- 3. 修正チェーンを正しく設定
-- ID 98: [逆仕訳] 【修正後】·遠達ビル 事務所費用 → parent_entry_idを80に設定
UPDATE journal_entries SET parent_entry_id = 80 WHERE journal_entry_id = 98;
-- ID 99: 【修正後】【修正後】·遠達ビル 事務所費用 → parent_entry_idを98に設定
UPDATE journal_entries SET parent_entry_id = 98 WHERE journal_entry_id = 99;
-- 4. すべての【修正後】仕訳のis_deletedをfalseに設定
UPDATE journal_entries
SET is_deleted = false
WHERE description LIKE '【修正後】%';

View File

@@ -0,0 +1,78 @@
-- 既存の全仕訳のparent_entry_idを一括設定
-- ステップ1: 現在の状況を確認
SELECT
journal_entry_id,
entry_date,
description,
parent_entry_id,
is_deleted
FROM journal_entries
ORDER BY entry_date, journal_entry_id;
-- ステップ2: [逆仕訳]のparent_entry_idを設定
-- [逆仕訳]の直前の同じ日付・同じベース説明の仕訳を親とする
UPDATE journal_entries je_reverse
SET parent_entry_id = (
SELECT je_original.journal_entry_id
FROM journal_entries je_original
WHERE je_original.entry_date = je_reverse.entry_date
AND je_original.journal_entry_id < je_reverse.journal_entry_id
AND REPLACE(je_reverse.description, '[逆仕訳] ', '') = je_original.description
AND je_original.description NOT LIKE '[逆仕訳]%'
ORDER BY je_original.journal_entry_id DESC
LIMIT 1
)
WHERE je_reverse.description LIKE '[逆仕訳]%'
AND je_reverse.parent_entry_id IS NULL;
-- ステップ3: 【修正後】のparent_entry_idを設定
-- 【修正後】の直前の逆仕訳を親とする
UPDATE journal_entries je_modified
SET parent_entry_id = (
SELECT je_reverse.journal_entry_id
FROM journal_entries je_reverse
WHERE je_reverse.journal_entry_id < je_modified.journal_entry_id
AND je_reverse.description = '[逆仕訳] ' || REPLACE(je_modified.description, '【修正後】', '')
ORDER BY je_reverse.journal_entry_id DESC
LIMIT 1
)
WHERE je_modified.description LIKE '【修正後】%'
AND je_modified.parent_entry_id IS NULL;
-- ステップ4: 複数の【修正後】プレフィックスがある場合の処理
-- 【修正後】【修正後】などのケース
UPDATE journal_entries je_modified
SET parent_entry_id = (
SELECT je_reverse.journal_entry_id
FROM journal_entries je_reverse
WHERE je_reverse.entry_date = je_modified.entry_date
AND je_reverse.journal_entry_id < je_modified.journal_entry_id
AND je_reverse.description LIKE '[逆仕訳]%'
ORDER BY je_reverse.journal_entry_id DESC
LIMIT 1
)
WHERE je_modified.description LIKE '【修正後】%'
AND je_modified.parent_entry_id IS NULL;
-- ステップ5: 結果確認
SELECT
journal_entry_id,
entry_date,
LEFT(description, 50) as description,
parent_entry_id,
is_deleted
FROM journal_entries
WHERE parent_entry_id IS NOT NULL
ORDER BY entry_date, journal_entry_id;
-- ステップ6: parent_entry_idが設定されていない逆仕訳・修正後を確認
SELECT
journal_entry_id,
entry_date,
LEFT(description, 50) as description,
parent_entry_id
FROM journal_entries
WHERE (description LIKE '[逆仕訳]%' OR description LIKE '【修正後】%')
AND parent_entry_id IS NULL
ORDER BY journal_entry_id;

View File

@@ -1,5 +1,9 @@
-- 修正後の仕訳に対して、元の仕訳IDをparent_entry_idに設定
-- 特定の修正チェーンを手動で設定72 → 79 → 80
-- UPDATE journal_entries SET parent_entry_id = 72 WHERE journal_entry_id = 79;
-- UPDATE journal_entries SET parent_entry_id = 79 WHERE journal_entry_id = 80;
-- ステップ1: 【修正後】の仕訳を確認
SELECT
je_modified.journal_entry_id as modified_id,