View | Details | Raw Unified | Return to bug 40817
Collapse All | Expand All

(-)a/installer/data/mysql/atomicupdate/bug_40817.pl (+47 lines)
Line 0 Link Here
1
use Modern::Perl;
2
use Koha::Installer::Output qw(say_warning say_failure say_success say_info);
3
4
return {
5
    bug_number  => "40817",
6
    description => "Add reserve_id and old_reserve_id fields to accountlines table for hold-fee linking",
7
    up          => sub {
8
        my ($args) = @_;
9
        my ( $dbh, $out ) = @$args{qw(dbh out)};
10
11
        # Add reserve_id field to accountlines table
12
        unless ( column_exists( 'accountlines', 'reserve_id' ) ) {
13
            $dbh->do(
14
                q{
15
                ALTER TABLE accountlines
16
                ADD COLUMN reserve_id int(11) DEFAULT NULL AFTER old_issue_id,
17
                ADD KEY `accountlines_ibfk_reserves` (`reserve_id`),
18
                ADD CONSTRAINT `accountlines_ibfk_reserves`
19
                    FOREIGN KEY (`reserve_id`) REFERENCES `reserves` (`reserve_id`)
20
                    ON DELETE SET NULL ON UPDATE CASCADE
21
            }
22
            );
23
            say_success( $out, "Added reserve_id field to accountlines table" );
24
        } else {
25
            say_info( $out, "reserve_id field already exists in accountlines table" );
26
        }
27
28
        # Add old_reserve_id field to accountlines table
29
        unless ( column_exists( 'accountlines', 'old_reserve_id' ) ) {
30
            $dbh->do(
31
                q{
32
                ALTER TABLE accountlines
33
                ADD COLUMN old_reserve_id int(11) DEFAULT NULL AFTER reserve_id,
34
                ADD KEY `accountlines_ibfk_old_reserves` (`old_reserve_id`),
35
                ADD CONSTRAINT `accountlines_ibfk_old_reserves`
36
                    FOREIGN KEY (`old_reserve_id`) REFERENCES `old_reserves` (`reserve_id`)
37
                    ON DELETE SET NULL ON UPDATE CASCADE
38
            }
39
            );
40
            say_success( $out, "Added old_reserve_id field to accountlines table" );
41
        } else {
42
            say_info( $out, "old_reserve_id field already exists in accountlines table" );
43
        }
44
45
        say_success( $out, "Bug 40817: Hold-fee linking via direct foreign keys implemented successfully" );
46
    },
47
};
(-)a/installer/data/mysql/kohastructure.sql (-2 / +7 lines)
Lines 120-125 CREATE TABLE `accountlines` ( Link Here
120
  `accountlines_id` int(11) NOT NULL AUTO_INCREMENT,
120
  `accountlines_id` int(11) NOT NULL AUTO_INCREMENT,
121
  `issue_id` int(11) DEFAULT NULL,
121
  `issue_id` int(11) DEFAULT NULL,
122
  `old_issue_id` int(11) DEFAULT NULL,
122
  `old_issue_id` int(11) DEFAULT NULL,
123
  `reserve_id` int(11) DEFAULT NULL,
124
  `old_reserve_id` int(11) DEFAULT NULL,
123
  `borrowernumber` int(11) DEFAULT NULL,
125
  `borrowernumber` int(11) DEFAULT NULL,
124
  `itemnumber` int(11) DEFAULT NULL,
126
  `itemnumber` int(11) DEFAULT NULL,
125
  `date` timestamp NULL DEFAULT NULL,
127
  `date` timestamp NULL DEFAULT NULL,
Lines 148-153 CREATE TABLE `accountlines` ( Link Here
148
  KEY `accountlines_ibfk_registers` (`register_id`),
150
  KEY `accountlines_ibfk_registers` (`register_id`),
149
  KEY `accountlines_ibfk_old_issues` (`old_issue_id`),
151
  KEY `accountlines_ibfk_old_issues` (`old_issue_id`),
150
  KEY `accountlines_ibfk_issues` (`issue_id`),
152
  KEY `accountlines_ibfk_issues` (`issue_id`),
153
  KEY `accountlines_ibfk_reserves` (`reserve_id`),
154
  KEY `accountlines_ibfk_old_reserves` (`old_reserve_id`),
151
  CONSTRAINT `accountlines_ibfk_borrowers` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
155
  CONSTRAINT `accountlines_ibfk_borrowers` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
152
  CONSTRAINT `accountlines_ibfk_borrowers_2` FOREIGN KEY (`manager_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
156
  CONSTRAINT `accountlines_ibfk_borrowers_2` FOREIGN KEY (`manager_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
153
  CONSTRAINT `accountlines_ibfk_branches` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE,
157
  CONSTRAINT `accountlines_ibfk_branches` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE,
Lines 156-162 CREATE TABLE `accountlines` ( Link Here
156
  CONSTRAINT `accountlines_ibfk_issues` FOREIGN KEY (`issue_id`) REFERENCES `issues` (`issue_id`) ON DELETE SET NULL ON UPDATE CASCADE,
160
  CONSTRAINT `accountlines_ibfk_issues` FOREIGN KEY (`issue_id`) REFERENCES `issues` (`issue_id`) ON DELETE SET NULL ON UPDATE CASCADE,
157
  CONSTRAINT `accountlines_ibfk_items` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE CASCADE,
161
  CONSTRAINT `accountlines_ibfk_items` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE CASCADE,
158
  CONSTRAINT `accountlines_ibfk_old_issues` FOREIGN KEY (`old_issue_id`) REFERENCES `old_issues` (`issue_id`) ON DELETE SET NULL ON UPDATE CASCADE,
162
  CONSTRAINT `accountlines_ibfk_old_issues` FOREIGN KEY (`old_issue_id`) REFERENCES `old_issues` (`issue_id`) ON DELETE SET NULL ON UPDATE CASCADE,
159
  CONSTRAINT `accountlines_ibfk_registers` FOREIGN KEY (`register_id`) REFERENCES `cash_registers` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
163
  CONSTRAINT `accountlines_ibfk_registers` FOREIGN KEY (`register_id`) REFERENCES `cash_registers` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
164
  CONSTRAINT `accountlines_ibfk_reserves` FOREIGN KEY (`reserve_id`) REFERENCES `reserves` (`reserve_id`) ON DELETE SET NULL ON UPDATE CASCADE,
165
  CONSTRAINT `accountlines_ibfk_old_reserves` FOREIGN KEY (`old_reserve_id`) REFERENCES `old_reserves` (`reserve_id`) ON DELETE SET NULL ON UPDATE CASCADE
160
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
166
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
161
/*!40101 SET character_set_client = @saved_cs_client */;
167
/*!40101 SET character_set_client = @saved_cs_client */;
162
168
163
- 

Return to bug 40817