5 description => "Curbside pickup tables",
8 my ( $dbh, $out ) = @$args{qw(dbh out)};
9 unless ( TableExists('curbside_pickup_policy') ) {
12 CREATE TABLE `curbside_pickup_policy` (
13 `id` int(11) NOT NULL auto_increment,
14 `branchcode` varchar(10) NOT NULL,
15 `enabled` TINYINT(1) NOT NULL DEFAULT 0,
16 `pickup_interval` INT(2) NOT NULL DEFAULT 0,
17 `patrons_per_interval` INT(2) NOT NULL DEFAULT 0,
18 `patron_scheduled_pickup` TINYINT(1) NOT NULL DEFAULT 0,
19 `sunday_start_hour` INT(2) NULL DEFAULT NULL,
20 `sunday_start_minute` INT(2) NULL DEFAULT NULL,
21 `sunday_end_hour` INT(2) NULL DEFAULT NULL,
22 `sunday_end_minute` INT(2) NULL DEFAULT NULL,
23 `monday_start_hour` INT(2) NULL DEFAULT NULL,
24 `monday_start_minute` INT(2) NULL DEFAULT NULL,
25 `monday_end_hour` INT(2) NULL DEFAULT NULL,
26 `monday_end_minute` INT(2) NULL DEFAULT NULL,
27 `tuesday_start_hour` INT(2) NULL DEFAULT NULL,
28 `tuesday_start_minute` INT(2) NULL DEFAULT NULL,
29 `tuesday_end_hour` INT(2) NULL DEFAULT NULL,
30 `tuesday_end_minute` INT(2) NULL DEFAULT NULL,
31 `wednesday_start_hour` INT(2) NULL DEFAULT NULL,
32 `wednesday_start_minute` INT(2) NULL DEFAULT NULL,
33 `wednesday_end_hour` INT(2) NULL DEFAULT NULL,
34 `wednesday_end_minute` INT(2) NULL DEFAULT NULL,
35 `thursday_start_hour` INT(2) NULL DEFAULT NULL,
36 `thursday_start_minute` INT(2) NULL DEFAULT NULL,
37 `thursday_end_hour` INT(2) NULL DEFAULT NULL,
38 `thursday_end_minute` INT(2) NULL DEFAULT NULL,
39 `friday_start_hour` INT(2) NULL DEFAULT NULL,
40 `friday_start_minute` INT(2) NULL DEFAULT NULL,
41 `friday_end_hour` INT(2) NULL DEFAULT NULL,
42 `friday_end_minute` INT(2) NULL DEFAULT NULL,
43 `saturday_start_hour` INT(2) NULL DEFAULT NULL,
44 `saturday_start_minute` INT(2) NULL DEFAULT NULL,
45 `saturday_end_hour` INT(2) NULL DEFAULT NULL,
46 `saturday_end_minute` INT(2) NULL DEFAULT NULL,
48 UNIQUE KEY (`branchcode`),
49 FOREIGN KEY (branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ON UPDATE CASCADE
50 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
54 unless ( TableExists('curbside_pickups') ) {
58 CREATE TABLE `curbside_pickups` (
59 `id` int(11) NOT NULL auto_increment,
60 `borrowernumber` int(11) NOT NULL,
61 `branchcode` varchar(10) NOT NULL,
62 `scheduled_pickup_datetime` datetime NOT NULL,
63 `staged_datetime` datetime NULL DEFAULT NULL,
64 `staged_by` int(11) NULL DEFAULT NULL,
65 `arrival_datetime` datetime NULL DEFAULT NULL,
66 `delivered_datetime` datetime NULL DEFAULT NULL,
67 `delivered_by` int(11) NULL DEFAULT NULL,
68 `notes` text NULL DEFAULT NULL,
70 FOREIGN KEY (branchcode) REFERENCES branches(branchcode) ON DELETE CASCADE ON UPDATE CASCADE,
71 FOREIGN KEY (borrowernumber) REFERENCES borrowers(borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
72 FOREIGN KEY (staged_by) REFERENCES borrowers(borrowernumber) ON DELETE SET NULL ON UPDATE CASCADE
73 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
77 unless ( TableExists('curbside_pickup_issues') ) {
80 CREATE TABLE `curbside_pickup_issues` (
81 `id` int(11) NOT NULL auto_increment,
82 `curbside_pickup_id` int(11) NOT NULL,
83 `issue_id` int(11) NOT NULL,
84 `reserve_id` int(11) NOT NULL,
86 FOREIGN KEY (curbside_pickup_id) REFERENCES curbside_pickups(id) ON DELETE CASCADE ON UPDATE CASCADE
87 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
93 INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type` )
95 ('CurbsidePickup', '0', NULL, 'Enable curbside pickup', 'YesNo')
99 INSERT IGNORE permissions (module_bit, code, description)
101 (3, 'manage_curbside_pickups', 'Manage curbside pickups')