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

(-)a/installer/data/mysql/kohastructure.sql (-44 / +90 lines)
Lines 265-270 CREATE TABLE `borrowers` ( -- this table includes information about your patrons Link Here
265
  `altcontactphone` varchar(50) default NULL, -- the phone number for the alternate contact for the patron/borrower
265
  `altcontactphone` varchar(50) default NULL, -- the phone number for the alternate contact for the patron/borrower
266
  `smsalertnumber` varchar(50) default NULL, -- the mobile phone number where the patron/borrower would like to receive notices (if SNS turned on)
266
  `smsalertnumber` varchar(50) default NULL, -- the mobile phone number where the patron/borrower would like to receive notices (if SNS turned on)
267
  `privacy` integer(11) DEFAULT '1' NOT NULL, -- patron/borrower's privacy settings related to their reading history
267
  `privacy` integer(11) DEFAULT '1' NOT NULL, -- patron/borrower's privacy settings related to their reading history
268
  `account_balance` decimal(28,6) NOT NULL,
268
  UNIQUE KEY `cardnumber` (`cardnumber`),
269
  UNIQUE KEY `cardnumber` (`cardnumber`),
269
  PRIMARY KEY `borrowernumber` (`borrowernumber`),
270
  PRIMARY KEY `borrowernumber` (`borrowernumber`),
270
  KEY `categorycode` (`categorycode`),
271
  KEY `categorycode` (`categorycode`),
Lines 2734-2783 CREATE TABLE `messages` ( -- circulation messages left via the patron's check ou Link Here
2734
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2735
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2735
2736
2736
--
2737
--
2737
-- Table structure for table `accountlines`
2738
--
2739
2740
DROP TABLE IF EXISTS `accountlines`;
2741
CREATE TABLE `accountlines` (
2742
  `accountlines_id` int(11) NOT NULL AUTO_INCREMENT,
2743
  `borrowernumber` int(11) NOT NULL default 0,
2744
  `accountno` smallint(6) NOT NULL default 0,
2745
  `itemnumber` int(11) default NULL,
2746
  `date` date default NULL,
2747
  `amount` decimal(28,6) default NULL,
2748
  `description` mediumtext,
2749
  `dispute` mediumtext,
2750
  `accounttype` varchar(5) default NULL,
2751
  `amountoutstanding` decimal(28,6) default NULL,
2752
  `lastincrement` decimal(28,6) default NULL,
2753
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
2754
  `notify_id` int(11) NOT NULL default 0,
2755
  `notify_level` int(2) NOT NULL default 0,
2756
  `note` text NULL default NULL,
2757
  `manager_id` int(11) NULL,
2758
  PRIMARY KEY (`accountlines_id`),
2759
  KEY `acctsborridx` (`borrowernumber`),
2760
  KEY `timeidx` (`timestamp`),
2761
  KEY `itemnumber` (`itemnumber`),
2762
  CONSTRAINT `accountlines_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE,
2763
  CONSTRAINT `accountlines_ibfk_2` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE SET NULL ON UPDATE SET NULL
2764
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2765
2766
--
2767
-- Table structure for table `accountoffsets`
2768
--
2769
2770
DROP TABLE IF EXISTS `accountoffsets`;
2771
CREATE TABLE `accountoffsets` (
2772
  `borrowernumber` int(11) NOT NULL default 0,
2773
  `accountno` smallint(6) NOT NULL default 0,
2774
  `offsetaccount` smallint(6) NOT NULL default 0,
2775
  `offsetamount` decimal(28,6) default NULL,
2776
  `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
2777
  CONSTRAINT `accountoffsets_ibfk_1` FOREIGN KEY (`borrowernumber`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE CASCADE ON UPDATE CASCADE
2778
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2779
2780
--
2781
-- Table structure for table `action_logs`
2738
-- Table structure for table `action_logs`
2782
--
2739
--
2783
2740
Lines 3502-3507 CREATE TABLE items_search_fields ( Link Here
3502
    ON DELETE SET NULL ON UPDATE CASCADE
3459
    ON DELETE SET NULL ON UPDATE CASCADE
3503
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3460
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3504
3461
3462
--
3463
-- Table structure for table 'account_credits'
3464
--
3465
DROP TABLE IF EXISTS account_credits;
3466
CREATE TABLE IF account_credits (
3467
    credit_id int(11) NOT NULL AUTO_INCREMENT,     -- The unique id for this credit
3468
    borrowernumber int(11) NOT NULL,               -- The borrower this credit applies to
3469
    `type` varchar(255) NOT NULL,                  -- The type of credit this is ( defined by Koha::Accounts::CreditTypes )
3470
    amount_received decimal(28,6) DEFAULT NULL,    -- If this was a cash payment, the amount of money given
3471
    amount_paid decimal(28,6) NOT NULL,            -- The actual ammount paid, if less than amount_recieved, change was given back
3472
    amount_remaining decimal(28,6) NOT NULL,       -- The amount of this credit that has not been applied to outstanding debits
3473
    amount_voided decimal(28,6) NULL DEFAULT NULL, -- The amount of this credit was for before it was voided
3474
    notes text,                                    -- Misc notes for this credit
3475
    branchcode VARCHAR( 10 ) NULL DEFAULT NULL,    -- Branchcode where the credit was created ( if any )
3476
    manager_id int(11) DEFAULT NULL,               -- The borrowernumber of the user who created this credit ( if any )
3477
    created_on timestamp NULL DEFAULT NULL,        -- Timestamp for when this credit was created
3478
    updated_on timestamp NULL DEFAULT NULL,        -- Timestamp for when this credit was last modified
3479
    PRIMARY KEY (credit_id),
3480
    KEY borrowernumber (borrowernumber),
3481
    KEY branchcode (branchcode)
3482
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
3483
3484
--
3485
-- Constraints for table `account_credits`
3486
--
3487
ALTER TABLE `account_credits`
3488
  ADD CONSTRAINT account_credits_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
3489
  ADD CONSTRAINT account_credits_ibfk_2 FOREIGN KEY (branchcode) REFERENCES branches (branchcode) ON DELETE CASCADE ON UPDATE CASCADE;
3490
3491
--
3492
-- Table structure for table 'account_debits'
3493
--
3494
3495
DROP TABLE IF EXISTS account_debits;
3496
CREATE TABLE account_debits (
3497
    debit_id int(11) NOT NULL AUTO_INCREMENT,           -- The unique id for this debit
3498
    borrowernumber int(11) NOT NULL DEFAULT '0',        -- The borrower this debit applies to
3499
    itemnumber int(11) DEFAULT NULL,                    -- The item related to this debit ( for fines, lost fees, etc )
3500
    issue_id int(11) DEFAULT NULL,                      -- The checkout this debit is related to ( again, for fines, lost fees, etc )
3501
    `type` varchar(255) NOT NULL,                       -- The type of debit this is ( defined by Koha::Accounts::DebitTypes )
3502
    accruing tinyint(1) NOT NULL DEFAULT '0',           -- Boolean flag, tells of if this is a fine that is still accruing
3503
    amount_original decimal(28,6) DEFAULT NULL,         -- The total amount of this debit
3504
    amount_outstanding decimal(28,6) DEFAULT NULL,      -- The amount still owed on this debit
3505
    amount_last_increment decimal(28,6) DEFAULT NULL,   -- The amount by which this debit last changed
3506
    description mediumtext,                             -- The description for this debit
3507
    notes text,                                         -- Misc notes for this debit
3508
    branchcode VARCHAR( 10 ) NULL DEFAULT NULL,         -- Branchcode where the debit was created ( if any )
3509
    manager_id int(11) DEFAULT NULL,                    -- The borrowernumber of the user who created this debit ( if any )
3510
    created_on timestamp NULL DEFAULT NULL,             -- Timestamp for when this credit was created
3511
    updated_on timestamp NULL DEFAULT NULL,             -- Timestamp for when this credit was last modified
3512
    PRIMARY KEY (debit_id),
3513
    KEY acctsborridx (borrowernumber),
3514
    KEY itemnumber (itemnumber),
3515
    KEY borrowernumber (borrowernumber),
3516
    KEY issue_id (issue_id),
3517
    KEY branchcode (branchcode)
3518
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
3519
3520
--
3521
-- Constraints for table `account_debits`
3522
--
3523
ALTER TABLE `account_debits`
3524
    ADD CONSTRAINT account_debits_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
3525
    ADD CONSTRAINT account_debits_ibfk_2 FOREIGN KEY (branchcode) REFERENCES branches (branchcode) ON DELETE CASCADE ON UPDATE CASCADE;
3526
3527
--
3528
-- Table structure for table 'account_offsets'
3529
--
3530
3531
DROP TABLE IF EXISTS account_offsets;
3532
CREATE TABLE account_offsets (
3533
    offset_id int(11) NOT NULL AUTO_INCREMENT,                                              -- Unique id for this offset
3534
    debit_id int(11) DEFAULT NULL,                                                          -- Related debit
3535
    credit_id int(11) DEFAULT NULL,                                                         -- Related credit ( if any )
3536
    `type` varchar(255) DEFAULT NULL,                                                       -- The type of this offset ( defined by Koha::Accounts::OffsetTypes ), if any
3537
    amount decimal(28,6) NOT NULL,                                                          -- The amount of the offset, positive means patron owes more, negative means patron owes less
3538
    created_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,    -- Timestamp for when this offset was created
3539
    PRIMARY KEY (offset_id),
3540
    KEY fee_id (debit_id),
3541
    KEY payment_id (credit_id)
3542
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
3543
3544
--
3545
-- Constraints for table `account_offsets`
3546
--
3547
ALTER TABLE `account_offsets`
3548
    ADD CONSTRAINT account_offsets_ibfk_1 FOREIGN KEY (debit_id) REFERENCES account_debits (debit_id) ON DELETE CASCADE ON UPDATE CASCADE,
3549
    ADD CONSTRAINT account_offsets_ibfk_2 FOREIGN KEY (credit_id) REFERENCES account_credits (credit_id) ON DELETE CASCADE ON UPDATE CASCADE;
3550
3505
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
3551
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
3506
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
3552
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
3507
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
3553
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
(-)a/installer/data/mysql/updatedatabase.pl (-1 / +184 lines)
Lines 37-42 use Getopt::Long; Link Here
37
use C4::Context;
37
use C4::Context;
38
use C4::Installer;
38
use C4::Installer;
39
use C4::Dates;
39
use C4::Dates;
40
use Koha::Database;
40
41
41
use MARC::Record;
42
use MARC::Record;
42
use MARC::File::XML ( BinaryEncoding => 'utf8' );
43
use MARC::File::XML ( BinaryEncoding => 'utf8' );
Lines 7257-7262 if ( CheckVersion($DBversion) ) { Link Here
7257
7258
7258
    $dbh->{AutoCommit} = 1;
7259
    $dbh->{AutoCommit} = 1;
7259
    $dbh->{RaiseError} = 0;
7260
    $dbh->{RaiseError} = 0;
7261
   SetVersion ($DBversion);
7260
}
7262
}
7261
7263
7262
$DBversion = "3.13.00.031";
7264
$DBversion = "3.13.00.031";
Lines 8814-8819 if ( CheckVersion($DBversion) ) { Link Here
8814
    $dbh->do("ALTER TABLE  `biblioitems` CHANGE  `cn_sort`  `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8816
    $dbh->do("ALTER TABLE  `biblioitems` CHANGE  `cn_sort`  `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8815
    $dbh->do("ALTER TABLE  `deletedbiblioitems` CHANGE  `cn_sort`  `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8817
    $dbh->do("ALTER TABLE  `deletedbiblioitems` CHANGE  `cn_sort`  `cn_sort` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL");
8816
    print "Upgrade to $DBversion done (Bug 12424 - ddc sorting of call numbers truncates long Cutter parts)\n";
8818
    print "Upgrade to $DBversion done (Bug 12424 - ddc sorting of call numbers truncates long Cutter parts)\n";
8819
    SetVersion($DBversion);
8820
}
8821
8822
$DBversion = "3.17.00.XXX";
8823
if ( CheckVersion($DBversion) ) {
8824
    $dbh->do(q{
8825
        ALTER TABLE old_issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST
8826
    });
8827
    $dbh->do(q{
8828
        ALTER TABLE issues ADD issue_id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
8829
    });
8830
    $dbh->do(q{
8831
        UPDATE issues SET issue_id = issue_id + ( SELECT COUNT(*) FROM old_issues ) ORDER BY issue_id DESC
8832
    });
8833
8834
    $dbh->do("
8835
        CREATE TABLE IF NOT EXISTS account_credits (
8836
            credit_id int(11) NOT NULL AUTO_INCREMENT,
8837
            borrowernumber int(11) NOT NULL,
8838
            `type` varchar(255) NOT NULL,
8839
            amount_received decimal(28,6) DEFAULT NULL,
8840
            amount_paid decimal(28,6) NOT NULL,
8841
            amount_remaining decimal(28,6) NOT NULL,
8842
            amount_voided decimal(28,6) NULL DEFAULT NULL,
8843
            notes text,
8844
            branchcode VARCHAR( 10 ) NULL DEFAULT NULL,
8845
            manager_id int(11) DEFAULT NULL,
8846
            created_on timestamp NULL DEFAULT NULL,
8847
            updated_on timestamp NULL DEFAULT NULL,
8848
            PRIMARY KEY (credit_id),
8849
            KEY borrowernumber (borrowernumber),
8850
            KEY branchcode (branchcode)
8851
        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
8852
    ");
8853
    $dbh->do("
8854
        CREATE TABLE IF NOT EXISTS account_debits (
8855
            debit_id int(11) NOT NULL AUTO_INCREMENT,
8856
            borrowernumber int(11) NOT NULL DEFAULT '0',
8857
            itemnumber int(11) DEFAULT NULL,
8858
            issue_id int(11) DEFAULT NULL,
8859
            `type` varchar(255) NOT NULL,
8860
            accruing tinyint(1) NOT NULL DEFAULT '0',
8861
            amount_original decimal(28,6) DEFAULT NULL,
8862
            amount_outstanding decimal(28,6) DEFAULT NULL,
8863
            amount_last_increment decimal(28,6) DEFAULT NULL,
8864
            description mediumtext,
8865
            notes text,
8866
            branchcode VARCHAR( 10 ) NULL DEFAULT NULL,
8867
            manager_id int(11) DEFAULT NULL,
8868
            created_on timestamp NULL DEFAULT NULL,
8869
            updated_on timestamp NULL DEFAULT NULL,
8870
            PRIMARY KEY (debit_id),
8871
            KEY acctsborridx (borrowernumber),
8872
            KEY itemnumber (itemnumber),
8873
            KEY borrowernumber (borrowernumber),
8874
            KEY issue_id (issue_id),
8875
            KEY branchcode (branchcode)
8876
        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
8877
    ");
8878
8879
    $dbh->do("
8880
        CREATE TABLE account_offsets (
8881
            offset_id int(11) NOT NULL AUTO_INCREMENT,
8882
            debit_id int(11) DEFAULT NULL,
8883
            credit_id int(11) DEFAULT NULL,
8884
            `type` varchar(255) DEFAULT NULL,
8885
            amount decimal(28,6) NOT NULL COMMENT 'A positive number here represents a payment, a negative is a increase in a fine.',
8886
            created_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
8887
            PRIMARY KEY (offset_id),
8888
            KEY fee_id (debit_id),
8889
            KEY payment_id (credit_id)
8890
        ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
8891
    ");
8892
8893
    $dbh->do("
8894
        ALTER TABLE `account_credits`
8895
          ADD CONSTRAINT account_credits_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
8896
          ADD CONSTRAINT account_credits_ibfk_2 FOREIGN KEY (branchcode) REFERENCES branches (branchcode) ON DELETE CASCADE ON UPDATE CASCADE;
8897
    ");
8898
    $dbh->do("
8899
        ALTER TABLE `account_debits`
8900
          ADD CONSTRAINT account_debits_ibfk_1 FOREIGN KEY (borrowernumber) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE,
8901
          ADD CONSTRAINT account_debits_ibfk_2 FOREIGN KEY (branchcode) REFERENCES branches (branchcode) ON DELETE CASCADE ON UPDATE CASCADE;
8902
    ");
8903
    $dbh->do("
8904
        ALTER TABLE `account_offsets`
8905
          ADD CONSTRAINT account_offsets_ibfk_1 FOREIGN KEY (debit_id) REFERENCES account_debits (debit_id) ON DELETE CASCADE ON UPDATE CASCADE,
8906
          ADD CONSTRAINT account_offsets_ibfk_2 FOREIGN KEY (credit_id) REFERENCES account_credits (credit_id) ON DELETE CASCADE ON UPDATE CASCADE;
8907
    ");
8908
8909
    $dbh->do("
8910
        ALTER TABLE borrowers ADD account_balance DECIMAL( 28, 6 ) NOT NULL;
8911
    ");
8912
8913
    my $schema = Koha::Database->new()->schema;
8914
    my $debit_rs = $schema->resultset('AccountDebit');
8915
    my $credit_rs = $schema->resultset('AccountCredit');
8916
    my $issues_rs = $schema->resultset('Issue');
8917
8918
    use Koha::Accounts::DebitTypes;
8919
    use Koha::Accounts::CreditTypes;
8920
8921
    my $debit_types_map = {
8922
        'A'    => Koha::Accounts::DebitTypes::AccountManagementFee,
8923
        'F'    => Koha::Accounts::DebitTypes::Fine,
8924
        'FU'   => Koha::Accounts::DebitTypes::Fine,
8925
        'L'    => Koha::Accounts::DebitTypes::Lost,
8926
        'M'    => Koha::Accounts::DebitTypes::Sundry,
8927
        'N'    => Koha::Accounts::DebitTypes::NewCard,
8928
        'Rent' => Koha::Accounts::DebitTypes::Rental,
8929
    };
8930
8931
    my $credit_types_map = {
8932
        'FOR' => Koha::Accounts::CreditTypes::Forgiven,
8933
        'LR'  => Koha::Accounts::CreditTypes::Found,
8934
        'Pay' => Koha::Accounts::CreditTypes::Payment,
8935
        'PAY' => Koha::Accounts::CreditTypes::Payment,
8936
        'WO'  => Koha::Accounts::CreditTypes::WriteOff,
8937
        'W'   => Koha::Accounts::CreditTypes::WriteOff,
8938
        'C'   => Koha::Accounts::CreditTypes::Credit,
8939
        'CR'  => Koha::Accounts::CreditTypes::Credit,
8940
    };
8941
8942
    my $sth = $dbh->prepare("SELECT * FROM accountlines");
8943
    $sth->execute();
8944
    while ( my $a = $sth->fetchrow_hashref() ) {
8945
        if ( $debit_types_map->{ $a->{accounttype} } ) {
8946
            $debit_rs->create(
8947
                {
8948
                    borrowernumber     => $a->{borrowernumber},
8949
                    itemnumber         => $a->{itemnumber},
8950
                    amount_original    => $a->{amount},
8951
                    amount_outstanding => $a->{amountoutstanding},
8952
                    created_on         => $a->{timestamp},
8953
                    description        => $a->{description},
8954
                    notes              => $a->{note},
8955
                    manager_id         => $a->{manager_id},
8956
                    accruing           => $a->{accounttype} eq 'FU',
8957
                    type     => $debit_types_map->{ $a->{accounttype} },
8958
                    issue_id => $a->{accounttype} eq 'FU'
8959
                    ? $issues_rs->single(
8960
                        {
8961
                            borrowernumber => $a->{borrowernumber},
8962
                            itemnumber     => $a->{itemnumber},
8963
                        }
8964
                      )->issue_id()
8965
                    : undef,
8966
                }
8967
            );
8968
        }
8969
        elsif ( $credit_types_map->{ $a->{accounttype} } ) {
8970
            $credit_rs->create(
8971
                {
8972
                    borrowernumber   => $a->{borrowernumber},
8973
                    amount_paid      => $a->{amount} * -1,
8974
                    amount_remaining => $a->{amountoutstanding} * -1,
8975
                    created_on       => $a->{timestamp},
8976
                    notes            => $a->{note},
8977
                    manager_id       => $a->{manager_id},
8978
                    type => $credit_types_map->{ $a->{accounttype} },
8979
                }
8980
            );
8981
        }
8982
        else {
8983
            # Everything else must be a MANUAL_INV
8984
            $debit_rs->create(
8985
                {
8986
                    borrowernumber     => $a->{borrowernumber},
8987
                    itemnumber         => $a->{itemnumber},
8988
                    amount_original    => $a->{amount},
8989
                    amount_outstanding => $a->{amountoutstanding},
8990
                    created_on         => $a->{timestamp},
8991
                    description        => $a->{description},
8992
                    notes              => $a->{note},
8993
                    manager_id         => $a->{manager_id},
8994
                    type               => Koha::Accounts::DebitTypes::Sundry,
8995
                }
8996
            );
8997
        }
8998
    }
8999
9000
    print "Upgrade to $DBversion done ( Bug 6427 - Rewrite of the accounts system )\n";
8817
    SetVersion ($DBversion);
9001
    SetVersion ($DBversion);
8818
}
9002
}
8819
9003
8820
- 

Return to bug 6427