Bug 23049: Update existing code to use debit_type
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 10 Oct 2019 16:15:10 +0000 (17:15 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 24 Oct 2019 16:24:15 +0000 (17:24 +0100)
* Update C4::Accounts::chargelostitem
* Update C4::Accounts::manualinvoice
* Update C4::Circulation::_FixOverduesOnReturn
* Update C4::Circulation::_FixAccountForLostAndReturned
* Update C4::Overdues::UpdateFine
* Update C4::Overdues::GetFine
* Update C4::Overdues::GetOverduesForBranch
* Update Koha::Account->pay
* Update Koha::Account->add_debit
* Update Koha::Account->non_issues_charges
* Update Koha::Account::Line->apply
* Update Koha::Account::Line->adjust
* Update controller scripts
* Update reports scripts
* Update tests

Test Plan
1) Run the test suit and ensure everything still passes
2) Test reports/cash_register_stats still works
3) Test that adding manual invoices still works
4) Test that making payments still works
5) Test that lost item fee handling still works
6) Test that invoice printing still works
7) Test that the sco still works

Signed-off-by: Séverine QUEUNE <severine.queune@bulac.fr>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

31 files changed:
C4/Accounts.pm
C4/Circulation.pm
C4/Overdues.pm
Koha/Account.pm
Koha/Account/Line.pm
Koha/Schema/Result/Accountline.pm
catalogue/moredetail.pl
installer/data/mysql/atomicupdate/bug_23049_debit.perl
installer/data/mysql/kohastructure.sql
koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember-print.tt
koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt
koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt
koha-tmpl/intranet-tmpl/prog/en/modules/reports/cash_register_stats.tt
koha-tmpl/opac-tmpl/bootstrap/en/includes/account-table.inc
members/pay.pl
members/paycollect.pl
members/printinvoice.pl
misc/cronjobs/staticfines.pl
opac/opac-user.pl
opac/sco/sco-main.pl
reports/cash_register_stats.pl
t/db_dependent/Accounts.t
t/db_dependent/Circulation.t
t/db_dependent/Circulation/NoIssuesChargeGuarantees.t
t/db_dependent/Circulation/Returns.t
t/db_dependent/Koha/Account.t
t/db_dependent/Koha/Account/DebitTypes.t
t/db_dependent/Koha/Account/Lines.t
t/db_dependent/Koha/Patron.t
t/db_dependent/Reserves.t
t/db_dependent/api/v1/patrons_accounts.t

index 34a3ef9..6aa1bb4 100644 (file)
@@ -90,9 +90,9 @@ sub chargelostitem {
     # first make sure the borrower hasn't already been charged for this item (for this issuance)
     my $existing_charges = $account->lines->search(
         {
-            itemnumber     => $itemnumber,
-            accounttype    => 'LOST',
-            issue_id       => $issue_id
+            itemnumber      => $itemnumber,
+            debit_type_code => 'LOST',
+            issue_id        => $issue_id
         }
     )->count();
 
@@ -174,7 +174,7 @@ sub manualinvoice {
             date              => \'NOW()',
             amount            => $amount,
             description       => $desc,
-            accounttype       => $type,
+            debit_type_code   => $type,
             amountoutstanding => $amountleft,
             itemnumber        => $itemnum || undef,
             issue_id          => $issue_id,
@@ -199,7 +199,7 @@ sub manualinvoice {
             borrowernumber    => $borrowernumber,
             amount            => $amount,
             description       => $desc,
-            accounttype       => $type,
+            debit_type_code   => $type,
             amountoutstanding => $amountleft,
             note              => $note,
             itemnumber        => $itemnum,
index 2800bdf..eb78f49 100644 (file)
@@ -2347,10 +2347,10 @@ sub _FixOverduesOnReturn {
             # check for overdue fine
             my $accountlines = Koha::Account::Lines->search(
                 {
-                    borrowernumber => $borrowernumber,
-                    itemnumber     => $item,
-                    accounttype    => 'OVERDUE',
-                    status         => 'UNRETURNED'
+                    borrowernumber  => $borrowernumber,
+                    itemnumber      => $item,
+                    debit_type_code => 'OVERDUE',
+                    status          => 'UNRETURNED'
                 }
             );
             return 0 unless $accountlines->count; # no warning, there's just nothing to fix
@@ -2411,9 +2411,9 @@ sub _FixAccountForLostAndReturned {
     # check for charge made for lost book
     my $accountlines = Koha::Account::Lines->search(
         {
-            itemnumber  => $itemnumber,
-            accounttype => 'LOST',
-            status      => [ undef, { '<>' => 'RETURNED' } ]
+            itemnumber      => $itemnumber,
+            debit_type_code => 'LOST',
+            status          => [ undef, { '<>' => 'RETURNED' } ]
         },
         {
             order_by => { -desc => [ 'date', 'accountlines_id' ] }
index fa8d6e6..d97cde9 100644 (file)
@@ -523,7 +523,7 @@ sub UpdateFine {
     my $overdues = Koha::Account::Lines->search(
         {
             borrowernumber    => $borrowernumber,
-            accounttype       => [ 'OVERDUE', 'M' ],
+            debit_type_code   => [ 'OVERDUE', 'M' ],
             amountoutstanding => { '<>' => 0 }
         }
     );
@@ -637,7 +637,7 @@ sub GetFine {
     my ( $itemnum, $borrowernumber ) = @_;
     my $dbh   = C4::Context->dbh();
     my $query = q|SELECT sum(amountoutstanding) as fineamount FROM accountlines
-    where accounttype like 'OVERDUE'
+    WHERE debit_type_code LIKE 'OVERDUE'
   AND amountoutstanding > 0 AND borrowernumber=?|;
     my @query_param;
     push @query_param, $borrowernumber;
@@ -728,7 +728,7 @@ sub GetOverduesForBranch {
     LEFT JOIN itemtypes   ON itemtypes.itemtype       = $itype_link
     LEFT JOIN branches    ON  branches.branchcode     = issues.branchcode
     WHERE (accountlines.amountoutstanding  != '0.000000')
-      AND (accountlines.accounttype         = 'OVERDUE' )
+      AND (accountlines.debit_type_code     = 'OVERDUE' )
       AND (accountlines.status              = 'UNRETURNED' )
       AND (issues.branchcode =  ?   )
       AND (issues.date_due  < NOW())
index 743b4b7..61b08db 100644 (file)
@@ -115,8 +115,8 @@ sub pay {
         # Same logic exists in Koha::Account::Line::apply
         if (   $new_amountoutstanding == 0
             && $fine->itemnumber
-            && $fine->accounttype
-            && ( $fine->accounttype eq 'LOST' ) )
+            && $fine->debit_type_code
+            && ( $fine->debit_type_code eq 'LOST' ) )
         {
             C4::Circulation::ReturnLostItem( $self->{patron_id}, $fine->itemnumber );
         }
@@ -174,8 +174,8 @@ sub pay {
 
         if (   $fine->amountoutstanding == 0
             && $fine->itemnumber
-            && $fine->accounttype
-            && ( $fine->accounttype eq 'LOST' ) )
+            && $fine->debit_type_code
+            && ( $fine->debit_type_code eq 'LOST' ) )
         {
             C4::Circulation::ReturnLostItem( $self->{patron_id}, $fine->itemnumber );
         }
@@ -444,19 +444,20 @@ my $debit_line = Koha::Account->new({ patron_id => $patron_id })->add_debit(
 );
 
 $debit_type can be any of:
-  - overdue
-  - lost_item
-  - new_card
   - account
   - account_renew
+  - hold_expired
+  - lost_item
   - sundry
+  - new_card
+  - overdue
   - processing
   - rent
   - rent_daily
-  - rent_renewal
-  - rent_daily_renewal
+  - rent_renew
+  - rent_daily_renew
   - reserve
-  - manual
+  - manual_debit
 
 =cut
 
@@ -465,27 +466,25 @@ sub add_debit {
     my ( $self, $params ) = @_;
 
     # amount should always be a positive value
-    my $amount       = $params->{amount};
+    my $amount = $params->{amount};
 
     unless ( $amount > 0 ) {
         Koha::Exceptions::Account::AmountNotPositive->throw(
-            error => 'Debit amount passed is not positive'
-        );
+            error => 'Debit amount passed is not positive' );
     }
 
-    my $description  = $params->{description} // q{};
-    my $note         = $params->{note} // q{};
-    my $user_id      = $params->{user_id};
-    my $interface    = $params->{interface};
-    my $library_id   = $params->{library_id};
-    my $type         = $params->{type};
-    my $item_id      = $params->{item_id};
-    my $issue_id     = $params->{issue_id};
+    my $description = $params->{description} // q{};
+    my $note        = $params->{note} // q{};
+    my $user_id     = $params->{user_id};
+    my $interface   = $params->{interface};
+    my $library_id  = $params->{library_id};
+    my $type        = $params->{type};
+    my $item_id     = $params->{item_id};
+    my $issue_id    = $params->{issue_id};
 
-    unless ( $interface ) {
+    unless ($interface) {
         Koha::Exceptions::MissingParameter->throw(
-            error => 'The interface parameter is mandatory'
-        );
+            error => 'The interface parameter is mandatory' );
     }
 
     my $schema = Koha::Database->new->schema;
@@ -496,20 +495,20 @@ sub add_debit {
         );
     }
 
-    my $account_type = $Koha::Account::account_type_debit->{$type};
+    my $debit_type_code = $Koha::Account::account_type_debit->{$type};
 
     my $line;
-
     $schema->txn_do(
         sub {
 
             # Insert the account line
             $line = Koha::Account::Line->new(
-                {   borrowernumber    => $self->{patron_id},
+                {
+                    borrowernumber    => $self->{patron_id},
                     date              => \'NOW()',
                     amount            => $amount,
                     description       => $description,
-                    accounttype       => $account_type,
+                    debit_type_code   => $debit_type_code,
                     amountoutstanding => $amount,
                     payment_type      => undef,
                     note              => $note,
@@ -518,15 +517,16 @@ sub add_debit {
                     itemnumber        => $item_id,
                     issue_id          => $issue_id,
                     branchcode        => $library_id,
-                    ( $type eq 'overdue' ? ( status => 'UNRETURNED' ) : ()),
+                    ( $type eq 'overdue' ? ( status => 'UNRETURNED' ) : () ),
                 }
             )->store();
 
             # Record the account offset
             my $account_offset = Koha::Account::Offset->new(
-                {   debit_id => $line->id,
-                    type      => $Koha::Account::offset_type->{$type},
-                    amount    => $amount
+                {
+                    debit_id => $line->id,
+                    type     => $Koha::Account::offset_type->{$type},
+                    amount   => $amount
                 }
             )->store();
 
@@ -535,12 +535,13 @@ sub add_debit {
                     "FINES", 'CREATE',
                     $self->{patron_id},
                     Dumper(
-                        {   action            => "create_$type",
+                        {
+                            action            => "create_$type",
                             borrowernumber    => $self->{patron_id},
                             amount            => $amount,
                             description       => $description,
                             amountoutstanding => $amount,
-                            accounttype       => $account_type,
+                            debit_type_code   => $debit_type_code,
                             note              => $note,
                             itemnumber        => $item_id,
                             manager_id        => $user_id,
@@ -636,13 +637,13 @@ sub non_issues_charges {
     push @not_fines, ( 'RENT', 'RENT_DAILY', 'RENT_RENEW', 'RENT_DAILY_RENEW' )
       unless C4::Context->preference('RentalsInNoissuesCharge');
     unless ( C4::Context->preference('ManInvInNoissuesCharge') ) {
-        my @man_inv = Koha::Account::DebitTypes->search({ system => 0 })->get_column('code');
+        my @man_inv = Koha::Account::DebitTypes->search({ is_system => 0 })->get_column('code');
         push @not_fines, @man_inv;
     }
 
     return $self->lines->search(
         {
-            debit_type => { -not_in => \@not_fines }
+            debit_type_code => { -not_in => \@not_fines }
         },
     )->total_outstanding;
 }
@@ -741,18 +742,18 @@ our $account_type_credit = {
 our $account_type_debit = {
     'account'          => 'ACCOUNT',
     'account_renew'    => 'ACCOUNT_RENEW',
-    'overdue'          => 'OVERDUE',
+    'hold_expired'     => 'HE',
     'lost_item'        => 'LOST',
-    'new_card'         => 'N',
     'sundry'           => 'M',
+    'new_card'         => 'N',
+    'overdue'          => 'OVERDUE',
     'processing'       => 'PF',
     'rent'             => 'RENT',
     'rent_daily'       => 'RENT_DAILY',
     'rent_renew'       => 'RENT_RENEW',
     'rent_daily_renew' => 'RENT_DAILY_RENEW',
     'reserve'          => 'Res',
-    'manual_debit'     => 'M',
-    'hold_expired'     => 'HE'
+    'manual_debit'     => 'M'
 };
 
 =head1 AUTHORS
index b66239d..14fdbd3 100644 (file)
@@ -252,8 +252,8 @@ sub apply {
             # Same logic exists in Koha::Account::pay
             if (   $debit->amountoutstanding == 0
                 && $debit->itemnumber
-                && $debit->accounttype
-                && $debit->accounttype eq 'LOST' )
+                && $debit->debit_type_code
+                && $debit->debit_type_code eq 'LOST' )
             {
                 C4::Circulation::ReturnLostItem( $self->borrowernumber, $debit->itemnumber );
             }
@@ -300,21 +300,21 @@ sub adjust {
         );
     }
 
-    my $account_type   = $self->accounttype;
-    my $account_status = $self->status;
+    my $debit_type_code = $self->debit_type_code;
+    my $account_status  = $self->status;
     unless (
         (
             exists(
                 $Koha::Account::Line::allowed_update->{$update_type}
-                  ->{$account_type}
+                  ->{$debit_type_code}
             )
             && ( $Koha::Account::Line::allowed_update->{$update_type}
-                ->{$account_type} eq $account_status )
+                ->{$debit_type_code} eq $account_status )
         )
       )
     {
         Koha::Exceptions::Account::UnrecognisedType->throw(
-            error => 'Update type not allowed on this accounttype' );
+            error => 'Update type not allowed on this debit_type' );
     }
 
     my $schema = Koha::Database->new->schema;
@@ -327,7 +327,7 @@ sub adjust {
             my $difference                = $amount - $amount_before;
             my $new_outstanding           = $amount_outstanding_before + $difference;
 
-            my $offset_type = $account_type;
+            my $offset_type = $debit_type_code;
             $offset_type .= ( $difference > 0 ) ? "_INCREASE" : "_DECREASE";
 
             # Catch cases that require patron refunds
@@ -374,7 +374,7 @@ sub adjust {
                             amount            => $amount,
                             description       => undef,
                             amountoutstanding => $new_outstanding,
-                            accounttype       => $self->accounttype,
+                            debit_type_code   => $self->debit_type_code,
                             note              => undef,
                             itemnumber        => $self->itemnumber,
                             manager_id        => undef,
index 5082443..48b3dca 100644 (file)
@@ -69,12 +69,12 @@ __PACKAGE__->table("accountlines");
   is_nullable: 1
   size: 80
 
-=head2 debit_type
+=head2 debit_type_code
 
   data_type: 'varchar'
   is_foreign_key: 1
   is_nullable: 1
-  size: 16
+  size: 64
 
 =head2 status
 
@@ -150,8 +150,8 @@ __PACKAGE__->add_columns(
   { data_type => "longtext", is_nullable => 1 },
   "accounttype",
   { data_type => "varchar", is_nullable => 1, size => 80 },
-  "debit_type",
-  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 16 },
+  "debit_type_code",
+  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 64 },
   "status",
   { data_type => "varchar", is_nullable => 1, size => 16 },
   "payment_type",
@@ -261,7 +261,7 @@ __PACKAGE__->belongs_to(
   },
 );
 
-=head2 debit_type
+=head2 debit_type_code
 
 Type: belongs_to
 
@@ -270,9 +270,9 @@ Related object: L<Koha::Schema::Result::AccountDebitType>
 =cut
 
 __PACKAGE__->belongs_to(
-  "debit_type",
+  "debit_type_code",
   "Koha::Schema::Result::AccountDebitType",
-  { code => "debit_type" },
+  { code => "debit_type_code" },
   {
     is_deferrable => 1,
     join_type     => "LEFT",
@@ -342,8 +342,8 @@ __PACKAGE__->belongs_to(
 );
 
 
-# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-10-11 10:47:58
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:RKg4gDSu0WwJ1C9YmDv3pw
+# Created by DBIx::Class::Schema::Loader v0.07046 @ 2019-10-08 11:15:31
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:1Vgkg0JR7RqmkniOmUoUhQ
 
 sub koha_objects_class {
     'Koha::Account::Lines';
index c55c72b..f74bc85 100755 (executable)
@@ -179,7 +179,7 @@ foreach my $item (@items){
         my $accountlines = Koha::Account::Lines->search(
             {
                 itemnumber        => $item->{itemnumber},
-                accounttype       => 'LOST',
+                debit_type_code   => 'LOST',
                 status            => [ undef, { '<>' => 'RETURNED' } ],
                 amountoutstanding => 0
             },
index e59fdd9..b40b5cf 100644 (file)
@@ -1,6 +1,7 @@
 $DBversion = 'XXX';    # will be replaced by the RM
 if ( CheckVersion($DBversion) ) {
 
+    # Adding account_debit_types
     $dbh->do(
         qq{
             CREATE TABLE IF NOT EXISTS account_debit_types (
@@ -14,6 +15,7 @@ if ( CheckVersion($DBversion) ) {
           }
     );
 
+    # Adding ac_debit_types_branches
     $dbh->do(
         qq{
             CREATE TABLE IF NOT EXISTS ac_debit_types_branches (
@@ -25,6 +27,7 @@ if ( CheckVersion($DBversion) ) {
         }
     );
 
+    # Populating account_debit_types
     $dbh->do(
         qq{
             INSERT IGNORE INTO account_debit_types (
@@ -51,6 +54,7 @@ if ( CheckVersion($DBversion) ) {
         }
     );
 
+    # Moving MANUAL_INV to account_debit_types
     $dbh->do(
         qq{
             INSERT IGNORE INTO account_debit_types (
@@ -73,35 +77,43 @@ if ( CheckVersion($DBversion) ) {
           }
     );
 
-    $dbh->do(
-        qq{
-            ALTER IGNORE TABLE accountlines
-            ADD
-              debit_type varchar(64) DEFAULT NULL
-            AFTER
-              accounttype
-          }
-    );
+    # Adding debit_type_code to accountlines
+    unless ( column_exists('accountlines', 'debit_type_code') ) {
+        $dbh->do(
+            qq{
+                ALTER IGNORE TABLE accountlines
+                ADD
+                  debit_type_code varchar(64) DEFAULT NULL
+                AFTER
+                  accounttype
+              }
+        );
+    }
 
-    $dbh->do(
-        qq{
-        ALTER TABLE accountlines ADD CONSTRAINT `accountlines_ibfk_debit_type` FOREIGN KEY (`debit_type`) REFERENCES `account_debit_types` (`code`) ON DELETE SET NULL ON UPDATE CASCADE
-          }
-    );
+    # Linking debit_type_code in accountlines to code in account_debit_types
+    unless ( foreign_key_exists( 'accountlines', 'accountlines_ibfk_debit_type' ) ) {
+        $dbh->do(
+            qq{
+            ALTER TABLE accountlines ADD CONSTRAINT `accountlines_ibfk_debit_type` FOREIGN KEY (`debit_type_code`) REFERENCES `account_debit_types` (`code`) ON DELETE RESTRICT ON UPDATE CASCADE
+              }
+        );
+    }
 
+    # Adding a check constraints to accountlines
     $dbh->do(
         qq{
-        ALTER TABLE accountlines ADD CONSTRAINT `accountlines_check_type` CHECK (accounttype IS NOT NULL OR debit_type IS NOT NULL)
+        ALTER TABLE accountlines ADD CONSTRAINT `accountlines_check_type` CHECK (accounttype IS NOT NULL OR debit_type_code IS NOT NULL)
         }
     );
 
+    # Populating debit_type_code
     $dbh->do(
         qq{
-        UPDATE accountlines SET debit_type = accounttype, accounttype = NULL WHERE accounttype IN (SELECT code from account_debit_types)
+        UPDATE accountlines SET debit_type_code = accounttype, accounttype = NULL WHERE accounttype IN (SELECT code from account_debit_types)
         }
     );
 
-    # Clean up MANUAL_INV
+    # Remove MANUAL_INV
     $dbh->do(
         qq{
         DELETE FROM authorised_values WHERE category = 'MANUAL_INV'
index 130949e..3b0bffc 100644 (file)
@@ -2661,7 +2661,7 @@ CREATE TABLE `accountlines` (
   `amount` decimal(28,6) default NULL,
   `description` LONGTEXT,
   `accounttype` varchar(80) default NULL,
-  `debit_type` varchar(64) default NULL,
+  `debit_type_code` varchar(64) default NULL,
   `status` varchar(16) default NULL,
   `payment_type` varchar(80) default NULL, -- optional authorised value PAYMENT_TYPE
   `amountoutstanding` decimal(28,6) default NULL,
@@ -2674,7 +2674,7 @@ CREATE TABLE `accountlines` (
   PRIMARY KEY (`accountlines_id`),
   KEY `acctsborridx` (`borrowernumber`),
   KEY `timeidx` (`timestamp`),
-  KEY `debit_type` (`debit_type`),
+  KEY `debit_type_code` (`debit_type_code`),
   KEY `itemnumber` (`itemnumber`),
   KEY `branchcode` (`branchcode`),
   KEY `manager_id` (`manager_id`),
@@ -2683,7 +2683,7 @@ CREATE TABLE `accountlines` (
   CONSTRAINT `accountlines_ibfk_borrowers_2` FOREIGN KEY (`manager_id`) REFERENCES `borrowers` (`borrowernumber`) ON DELETE SET NULL ON UPDATE CASCADE,
   CONSTRAINT `accountlines_ibfk_branches` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE SET NULL ON UPDATE CASCADE,
   CONSTRAINT `accountlines_ibfk_registers` FOREIGN KEY (`register_id`) REFERENCES `cash_registers` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
-  CONSTRAINT `accountlines_ibfk_debit_type` FOREIGN KEY (`debit_type`) REFERENCES `account_debit_types` (`code`) ON DELETE SET NULL ON UPDATE CASCADE,
+  CONSTRAINT `accountlines_ibfk_debit_type` FOREIGN KEY (`debit_type_code`) REFERENCES `account_debit_types` (`code`) ON DELETE RESTRICT ON UPDATE CASCADE,
   CONSTRAINT `accountlines_check_type` CHECK (`accounttype` IS NOT NULL OR `debit_type_code` IS NOT NULL)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
index 4c722d2..8bfc483 100644 (file)
                           , [% account.description | html %]
                       [% END %]
                       &nbsp;
-                      [% IF ( account.itemnumber AND account.accounttype != 'OVERDUE' ) %]
+                      [% IF ( account.itemnumber AND account.debit_type_code != 'OVERDUE' ) %]
                           <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% account.item.biblionumber | uri %]&amp;itemnumber=[% account.itemnumber | uri %]">[% account.item.biblio.title | html %]</a>
                       [% END %]
                   </td>
index 8dec77b..e2883b3 100644 (file)
@@ -74,7 +74,7 @@
     [% END %]
     <input type="hidden" name="itemnumber[% line.accountlines_id | html %]" value="[% line.itemnumber | html %]" />
     <input type="hidden" name="description[% line.accountlines_id | html %]" value="[% line.description | html %]" />
-    <input type="hidden" name="accounttype[% line.accountlines_id | html %]" value="[% line.accounttype | html %]" />
+    <input type="hidden" name="debit_type_code[% line.accountlines_id | html %]" value="[% line.debit_type_code | html %]" />
     <input type="hidden" name="amount[% line.accountlines_id | html %]" value="[% line.amount | html %]" />
     <input type="hidden" name="accountlines_id[% line.accountlines_id | html %]" value="[% line.accountlines_id | html %]" />
     <input type="hidden" name="amountoutstanding[% line.accountlines_id | html %]" value="[% line.amountoutstanding | html %]" />
index 6ede064..bc0cefa 100644 (file)
@@ -73,7 +73,7 @@
     <input type="hidden" name="pay_individual" id="pay_individual" value="[% pay_individual | html %]" />
     <input type="hidden" name="itemnumber" id="itemnumber" value="[% itemnumber | html %]" />
     <input type="hidden" name="description" id="description" value="[% description | html %]" />
-    <input type="hidden" name="accounttype" id="accounttype" value="[% accounttype | html %]" />
+    <input type="hidden" name="debit_type_code" id="debit_type_code" value="[% debit_type_code | html %]" />
     <input type="hidden" name="amount" id="amount" value="[% amount | html %]" />
     <input type="hidden" name="amountoutstanding" id="amountoutstanding" value="[% amountoutstanding | html %]" />
     <input type="hidden" name="accountlines_id" id="accountlines_id" value="[% accountlines_id | html %]" />
@@ -97,7 +97,7 @@
             <td>
                 [% individual_description | html %]
             </td>
-            <td>[% accounttype | html %]</td>
+            <td>[% debit_type_code | html %]</td>
             <td class="debit">[% amount | format('%.2f') %]</td>
             <td class="debit">[% amountoutstanding | format('%.2f') %]</td>
         </tr></tbody>
     <input type="hidden" name="pay_individual" id="pay_individual" value="[% pay_individual | html %]" />
     <input type="hidden" name="itemnumber" id="itemnumber" value="[% itemnumber | html %]" />
     <input type="hidden" name="description" id="description" value="[% description | html %]" />
-    <input type="hidden" name="accounttype" id="accounttype" value="[% accounttype | html %]" />
+    <input type="hidden" name="debit_type_code" id="debit_type_code" value="[% debit_type_code | html %]" />
     <input type="hidden" name="amount" id="amount" value="[% amount | html %]" />
     <input type="hidden" name="accountlines_id" id="accountlines_id" value="[% accountlines_id | html %]" />
     <input type="hidden" name="title" id="title" value="[% title | html %]" />
     <tfoot><tr><td colspan="3">Total amount outstanding:</td><td>[% amountoutstanding | format('%.2f') %]</td></tr></tfoot>
     <tbody><tr>
             <td>[% description | html %] [% title | html %]</td>
-            <td>[% accounttype | html %]</td>
+            <td>[% debit_type_code | html %]</td>
             <td class="debit">[% amount | format('%.2f') %]</td>
             <td class="debit">[% amountoutstanding | format('%.2f') %]</td>
         </tr></tbody>
index d127de6..c145ce3 100644 (file)
@@ -4,6 +4,7 @@
 [% USE Price %]
 [% USE ItemTypes %]
 [% SET footerjs = 1 %]
+[% PROCESS 'accounts.inc' %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Reports [% IF ( do_it ) %]&rsaquo; Cash register statistics &rsaquo; Results[% ELSE %]&rsaquo; Cash register statistics[% END %]</title>
 [% INCLUDE 'doc-head-close.inc' %]
                         <option value="FORW">Write off</option>
                         [% END %]
 
-                        [% IF transaction_type == "F" %]
-                        <option value="F" selected="selected">Fine</option>
-                        [% ELSE %]
-                        <option value="F">Fine</option>
-                        [% END %]
-
-                        [% IF transaction_type == "FU" %]
-                        <option value="FU" selected="selected">Accruing fine</option>
-                        [% ELSE %]
-                        <option value="FU">Accruing fine</option>
-                        [% END %]
-
                         [% IF transaction_type == "PAY" %]
                         <option value="PAY" selected="selected">Payment</option>
                         [% ELSE %]
                         <option value="PAY">Payment</option>
                         [% END %]
 
-                        [% IF transaction_type == "A" %]
-                        <option value="A" selected="selected">Account management fee</option>
-                        [% ELSE %]
-                        <option value="A">Account management fee</option>
-                        [% END %]
-
-                        [% IF transaction_type == "M" %]
-                        <option value="M" selected="selected">Sundry</option>
-                        [% ELSE %]
-                        <option value="M">Sundry</option>
-                        [% END %]
-
-                        [% IF transaction_type == "L" %]
-                        <option value="L" selected="selected">Lost item</option>
-                        [% ELSE %]
-                        <option value="L">Lost item</option>
-                        [% END %]
-
-                        [% IF transaction_type == "N" %]
-                        <option value="N" selected="selected">New card</option>
-                        [% ELSE %]
-                        <option value="N">New card</option>
-                        [% END %]
-
-                        [% FOREACH manualinv IN manualinv_types %]
-                            [% value_manualinv = manualinv.authorised_value|truncate(5, '') %]
-                            [% IF transaction_type == value_manualinv %]
-                            <option value="[% value_manualinv | html %]" selected="selected">[% manualinv.authorised_value | html %]</option>
+                        [% FOREACH debit_type IN debit_types %]
+                            [% IF transaction_type == debit_type.code %]
+                            <option value="[% debit_type.code | html %]" selected="selected">[% debit_type.description | html %]</option>
                             [% ELSE %]
-                            <option value="[% value_manualinv | html %]">[% manualinv.authorised_value | html %]</option>
+                            <option value="[% debit_type.code | html %]">[% debit_type.description | html %]</option>
                             [% END %]
                         [% END %]
                     </select>
                 <td>
                     [% IF loopresul.accounttype == "ACT" %]
                         <span>All payments to the library</span>
-                    [% ELSIF loopresul.accounttype == "C" || loopresul.accounttype == "CR" %]
-                        <span>Credit</span>
-                    [% ELSIF loopresul.accounttype == "FORW" || loopresul.accounttype == "W" %]
-                        <span>Write off</span>
-                    [% ELSIF loopresul.accounttype == "F" %]
-                        <span>Fine</span>
-                    [% ELSIF loopresul.accounttype == "FU" %]
-                        <span>Accruing fine</span>
-                    [% ELSIF loopresul.accounttype == "Pay" %]
-                        <span>Payment</span>
-                    [% ELSIF loopresul.accounttype == "A" %]
-                        <span>Account management fee</span>
-                    [% ELSIF loopresul.accounttype == "M" %]
-                        <span>Sundry</span>
-                    [% ELSIF loopresul.accounttype == "LOST" %]
-                        <span>Lost item</span>
-                    [% ELSIF loopresul.accounttype == "N" %]
-                        <span>New card</span>
                     [% ELSE %]
-                        [% FOREACH manualinv IN manualinv_types %]
-                            [% value_manualinv = manualinv.authorised_value|truncate(5, '') %]
-                            [% IF loopresul.accounttype == value_manualinv %]
-                            <span>[% manualinv.authorised_value | html %]</span>
-                            [% LAST %]
-                            [% END %]
-                        [% END %]
+                        [%- PROCESS account_type_description account=loopresul -%]
                     [% END %]
                 </td>
                 <td>[% loopresul.note | html %]</td>
index cdc23e4..3e63421 100644 (file)
 </form>
 
 [%- BLOCK account_type_description -%]
-    [%- SWITCH account.accounttype -%]
-        [%- CASE 'Pay'              -%]<span>Payment
-        [%- CASE 'VOID'             -%]<span>Voided
-        [%- CASE 'N'                -%]<span>New card
-        [%- CASE 'OVERDUE'          -%]<span>Fine
-        [%- CASE 'ACCOUNT'          -%]<span>Account creation fee
-        [%- CASE 'ACCOUNT_RENEW'    -%]<span>Account renewal fee
-        [%- CASE 'M'                -%]<span>Sundry
-        [%- CASE 'LOST'             -%]<span>Lost item
-        [%- CASE 'W'                -%]<span>Writeoff
-        [%- CASE 'HE'               -%]<span>Hold waiting too long
-        [%- CASE 'RENT'             -%]<span>Rental fee
-        [%- CASE 'RENT_DAILY'       -%]<span>Daily rental fee
-        [%- CASE 'RENT_RENEW'       -%]<span>Renewal of rental item
-        [%- CASE 'RENT_DAILT_RENEW' -%]<span>Renewal of dailt rental item
-        [%- CASE 'FOR'              -%]<span>Forgiven
-        [%- CASE 'PF'               -%]<span>Lost item processing fee
-        [%- CASE 'PAY'              -%]<span>Payment
-        [%- CASE 'WO'               -%]<span>Writeoff
-        [%- CASE 'C'                -%]<span>Credit
-        [%- CASE 'LOST_RETURN'      -%]<span>Lost item fee refund
-        [%- CASE 'Res'              -%]<span>Hold fee
-        [%- CASE                    -%]<span>[% account.accounttype | html %]
+    <span>
+    [%- IF account.accounttype -%]
+        [%- SWITCH account.accounttype -%]
+            [%- CASE 'Pay'              -%]Payment
+            [%- CASE 'W'                -%]Writeoff
+            [%- CASE 'FOR'              -%]Forgiven
+            [%- CASE 'PAY'              -%]Payment
+            [%- CASE 'WO'               -%]Writeoff
+            [%- CASE 'C'                -%]Credit
+            [%- CASE 'LOST_RETURN'      -%]Lost item fee refund
+            [%- CASE                    -%][% account.accounttype | html %]
+        [%- END -%]
+    [%- ELSIF account.debit_type -%]
+       [%- SWITCH account.debit_type -%]
+           [%- CASE 'ACCOUNT'          -%]Account creation fee
+           [%- CASE 'ACCOUNT_RENEW'    -%]Account renewal fee
+           [%- CASE 'HE'               -%]Hold waiting too long
+           [%- CASE 'LOST'             -%]Lost item
+           [%- CASE 'M'                -%]Sundry
+           [%- CASE 'N'                -%]New card
+           [%- CASE 'OVERDUE'          -%]Fine
+           [%- CASE 'PF'               -%]Lost item processing fee
+           [%- CASE 'RENT'             -%]Rental fee
+           [%- CASE 'RENT_DAILY'       -%]Daily rental fee
+           [%- CASE 'RENT_RENEW'       -%]Renewal of rental item
+           [%- CASE 'RENT_DAILY_RENEW' -%]Rewewal of daily rental item
+           [%- CASE 'Res'              -%]Hold fee
+           [%- CASE                    -%][% account.debit_type.description | html %]
+       [%- END -%]
     [%- END -%]
-    [%- PROCESS account_status_description account=account -%]</span>
+    [%- PROCESS account_status_description account=account -%]
+    </span>
 [%- END -%]
 
 [%- BLOCK account_status_description -%]
index ee2d5f2..a5467b2 100755 (executable)
@@ -105,7 +105,7 @@ elsif ( $input->param('confirm_writeoff') ) {
               . "borrowernumber=$borrowernumber"
               . "&amount=" . $accountline->amount
               . "&amountoutstanding=" . $accountline->amountoutstanding
-              . "&accounttype=" . $accountline->accounttype
+              . "&debit_type_code=" . $accountline->debit_type_code
               . "&accountlines_id=" . $accountlines_id
               . "&change_given=" . $change_given
               . "&writeoff_individual=1"
@@ -192,7 +192,7 @@ sub redirect_to_paycollect {
       "/cgi-bin/koha/members/paycollect.pl?borrowernumber=$borrowernumber";
     $redirect .= q{&};
     $redirect .= "$action=1";
-    $redirect .= get_for_redirect( 'accounttype', "accounttype$line_no", 0 );
+    $redirect .= get_for_redirect( 'debit_type_code', "debit_type_code$line_no", 0 );
     $redirect .= get_for_redirect( 'amount', "amount$line_no", 1 );
     $redirect .=
       get_for_redirect( 'amountoutstanding', "amountoutstanding$line_no", 1 );
index bbd4b5a..33be232 100755 (executable)
@@ -109,8 +109,8 @@ if ( $pay_individual || $writeoff_individual ) {
     } elsif ($writeoff_individual) {
         $template->param( writeoff_individual => 1 );
     }
-    my $accounttype       = $input->param('accounttype');
-    $accountlines_id       = $input->param('accountlines_id');
+    my $debit_type_code   = $input->param('debit_type_code');
+    $accountlines_id      = $input->param('accountlines_id');
     my $amount            = $input->param('amount');
     my $amountoutstanding = $input->param('amountoutstanding');
     my $itemnumber  = $input->param('itemnumber');
@@ -118,7 +118,7 @@ if ( $pay_individual || $writeoff_individual ) {
     my $title        = $input->param('title');
     $total_due = $amountoutstanding;
     $template->param(
-        accounttype       => $accounttype,
+        debit_type_code    => $debit_type_code,
         accountlines_id    => $accountlines_id,
         amount            => $amount,
         amountoutstanding => $amountoutstanding,
index 98ff1c5..ce16cea 100755 (executable)
@@ -82,8 +82,8 @@ my %row = (
     'amount'                  => sprintf( "%.2f", $accountline->{'amount'} ),
     'amountoutstanding' =>
       sprintf( "%.2f", $accountline->{'amountoutstanding'} ),
-    accounttype => $accountline->{accounttype},
-    'note'      => $accountline->{'note'},
+    'debit_type_code' => $accountline->{'debit_type_code'},
+    'note'            => $accountline->{'note'},
 );
 
 my @account_offsets = Koha::Account::Offsets->search( { debit_id => $accountline_object->id } );
index 774c3b0..40407c6 100755 (executable)
@@ -229,7 +229,7 @@ for ( my $i = 0 ; $i < scalar(@$data) ; $i++ ) {
 
             my $desc        = "staticfine";
             my $query       = "INSERT INTO accountlines
-                        (borrowernumber,itemnumber,date,amount,description,accounttype,status,amountoutstanding)
+                        (borrowernumber,itemnumber,date,amount,description,debit_type_code,status,amountoutstanding)
                                 VALUES (?,?,now(),?,?,'OVERDUE','RETURNED',?)";
             my $sth2 = $dbh->prepare($query);
             $bigdebug and warn "query: $query\nw/ args: $borrowernumber, $itemnumber, $amount, $desc, $amount\n";
index 9a9173c..451b7f9 100755 (executable)
@@ -187,7 +187,7 @@ if ( $pending_checkouts->count ) { # Useless test
             {
                 borrowernumber    => $patron->borrowernumber,
                 amountoutstanding => { '>' => 0 },
-                accounttype       => [ 'OVERDUE', 'LOST' ],
+                debit_type_code   => [ 'OVERDUE', 'LOST' ],
                 itemnumber        => $issue->{itemnumber}
             },
         );
@@ -197,7 +197,7 @@ if ( $pending_checkouts->count ) { # Useless test
             {
                 borrowernumber    => $patron->borrowernumber,
                 amountoutstanding => { '>' => 0 },
-                accounttype       => { 'LIKE' => 'RENT_%' },
+                debit_type_code   => { 'LIKE' => 'RENT_%' },
                 itemnumber        => $issue->{itemnumber}
             }
         );
index a41971d..cbf54ff 100755 (executable)
@@ -240,10 +240,10 @@ elsif ( $patron && ( $op eq 'checkout' || $op eq 'renew' ) ) {
                     # Note that this should not be needed but since we do not have proper exception handling here we do it this way
                     patron_has_hold_fee => Koha::Account::Lines->search(
                         {
-                            borrowernumber => $borrower->{borrowernumber},
-                            accounttype    => 'Res',
-                            description    => $item->biblio->title,
-                            date           => $dtf->format_date(dt_from_string)
+                            borrowernumber  => $borrower->{borrowernumber},
+                            debit_type_code => 'Res',
+                            description     => $item->biblio->title,
+                            date            => $dtf->format_date(dt_from_string)
                         }
                       )->count,
                 );
index 33922b8..b4340c9 100755 (executable)
@@ -25,6 +25,9 @@ use C4::Circulation;
 use DateTime;
 use Koha::DateUtils;
 use Text::CSV::Encoded;
+use List::Util qw/any/;
+
+use Koha::Account::DebitTypes;
 
 my $input            = new CGI;
 my $dbh              = C4::Context->dbh;
@@ -53,11 +56,8 @@ $template->param(
 my $fromDate = dt_from_string;
 my $toDate   = dt_from_string;
 
-my $query_manualinv = "SELECT id, authorised_value FROM authorised_values WHERE category = 'MANUAL_INV'";
-my $sth_manualinv = $dbh->prepare($query_manualinv) or die "Unable to prepare query" . $dbh->errstr;
-$sth_manualinv->execute() or die "Unable to execute query " . $sth_manualinv->errstr;
-my $manualinv_types = $sth_manualinv->fetchall_arrayref({});
-
+my @debit_types =
+  Koha::Account::DebitTypes->search()->as_list;
 
 if ($do_it) {
 
@@ -73,9 +73,12 @@ if ($do_it) {
         $whereTType = q{};
     } elsif ($transaction_type eq 'ACT') { #Active
         $whereTType = q{ AND accounttype IN ('Pay','C') };
-    } else { #Single transac type
-        if ($transaction_type eq 'FORW') {
-            $whereTType = q{ AND accounttype IN ('FOR','W') };
+    } elsif ($transaction_type eq 'FORW') {
+        $whereTType = q{ AND accounttype IN ('FOR','W') };
+    } else {
+        if ( any { $transaction_type eq $_->code } @debit_types ) {
+            $whereTType = q{ AND debit_type_code = ? };
+            push @extra_params, $transaction_type;
         } else {
             $whereTType = q{ AND accounttype = ? };
             push @extra_params, $transaction_type;
@@ -93,7 +96,7 @@ if ($do_it) {
     SELECT round(amount,2) AS amount, description,
         bo.surname AS bsurname, bo.firstname AS bfirstname, m.surname AS msurname, m.firstname AS mfirstname,
         bo.cardnumber, br.branchname, bo.borrowernumber,
-        al.borrowernumber, DATE(al.date) as date, al.accounttype, al.amountoutstanding, al.note,
+        al.borrowernumber, DATE(al.date) as date, al.accounttype, al.debit_type_code, al.amountoutstanding, al.note,
         bi.title, bi.biblionumber, i.barcode, i.itype
         FROM accountlines al
         LEFT JOIN borrowers bo ON (al.borrowernumber = bo.borrowernumber)
@@ -153,6 +156,7 @@ if ($do_it) {
                         $row->{branchname},
                         $row->{date},
                         $row->{accounttype},
+                        $row->{debit_type},
                         $row->{note},
                         $row->{amount},
                         $row->{title},
@@ -182,7 +186,7 @@ $template->param(
     endDate          => $toDate,
     transaction_type => $transaction_type,
     branchloop       => Koha::Libraries->search({}, { order_by => ['branchname'] })->unblessed,
-    manualinv_types  => $manualinv_types,
+    debit_types      => \@debit_types,
     CGIsepChoice => GetDelimiterChoices,
 );
 
index d6fd475..8d91d22 100644 (file)
@@ -26,6 +26,7 @@ use t::lib::TestBuilder;
 use t::lib::Mocks;
 
 use Koha::Account;
+use Koha::Account::DebitTypes;
 use Koha::Account::Lines;
 use Koha::Account::Offsets;
 use Koha::Notice::Messages;
@@ -92,7 +93,7 @@ my ($accountline) = Koha::Account::Lines->search(
         borrowernumber => $patron->{borrowernumber}
     }
 );
-is( $accountline->accounttype, $type, 'Accountline type set correctly for manualinvoice' );
+is( $accountline->debit_type_code, $type, 'Debit type set correctly for manualinvoice' );
 is( $accountline->amount, $amount, 'Accountline amount set correctly for manualinvoice' );
 ok( $accountline->description =~ /^$description/, 'Accountline description set correctly for manualinvoice' );
 is( $accountline->note, $note, 'Accountline note set correctly for manualinvoice' );
@@ -373,7 +374,7 @@ subtest "Koha::Account::pay writeoff tests" => sub {
 
     my $writeoff = Koha::Account::Lines->find( $id );
 
-    is( $writeoff->accounttype, 'W', 'Type is correct' );
+    is( $writeoff->accounttype, 'W', 'Type is correct for writeoff' );
     is( $writeoff->description, 'Writeoff', 'Description is correct' );
     is( $writeoff->amount, '-42.000000', 'Amount is correct' );
 };
@@ -583,39 +584,39 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
         t::lib::Mocks::mock_preference('useDefaultReplacementCost', '0');
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost or default when pref off");
         ok( !$procfee,  "No processing fee if no processing fee");
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'PF' });
         ok( $lostfine->amount == 6.12, "Lost fine equals replacementcost when pref off and no default set");
         ok( !$procfee,  "No processing fee if no processing fee");
         $lostfine->delete();
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
         ok( !$procfee,  "No processing fee if no processing fee");
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'PF' });
         ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
         ok( !$procfee,  "No processing fee if no processing fee");
         $lostfine->delete();
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost and no default set when pref off");
         ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
         $procfee->delete();
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'PF' });
         ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and no default set");
         ok( $procfee->amount == 8.16,  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
@@ -623,15 +624,15 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
         $procfee->delete();
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost but default set when pref off");
         ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
         $procfee->delete();
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         ok( $lostfine->amount == 6.12 , "Lost fine equals replacementcost when pref off and default set");
         ok( $procfee->amount == 2.04,  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
@@ -641,66 +642,66 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
         t::lib::Mocks::mock_preference('useDefaultReplacementCost', '1');
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost or default when pref on");
         ok( !$procfee,  "No processing fee if no processing fee");
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber1, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber1, debit_type_code => 'PF' });
         is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
         ok( !$procfee,  "No processing fee if no processing fee");
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'PF' });
         is( $lostfine->amount(), "16.320000", "Lost fine is default if no replacementcost but default set when pref on");
         ok( !$procfee,  "No processing fee if no processing fee");
         $lostfine->delete();
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber2, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber2, debit_type_code => 'PF' });
         is( $lostfine->amount, "6.120000" , "Lost fine equals replacementcost when pref on and default set");
         ok( !$procfee,  "No processing fee if no processing fee");
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'PF' });
         ok( !$lostfine, "No lost fine if no replacementcost and default not set when pref on");
         is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
         $procfee->delete();
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber3, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber3, debit_type_code => 'PF' });
         is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and no default set");
         is( $procfee->amount, "8.160000",  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_3, "Processing fee issue id is correct" );
 
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         is( $lostfine->amount, "4.080000", "Lost fine is default if no replacementcost but default set when pref on");
         is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
         $lostfine->delete();
         $procfee->delete();
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         is( $lostfine->amount, "6.120000", "Lost fine equals replacementcost when pref on and default set");
         is( $procfee->amount, "2.040000",  "Processing fee if processing fee");
         is( $procfee->issue_id, $cli_issue_id_4, "Processing fee issue id is correct" );
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
-        my $lostfines = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        my $procfees  = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        my $lostfines = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        my $procfees  = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         ok( $lostfines->count == 1 , "Lost fine cannot be double charged for the same issue_id");
         ok( $procfees->count == 1,  "Processing fee cannot be double charged for the same issue_id");
         MarkIssueReturned($cli_borrowernumber, $cli_itemnumber4);
         $cli_issue_id_4X = $builder->build({ source => 'Issue', value => { borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4 } })->{issue_id};
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 6.12, "Perdedor");
-        $lostfines = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfees  = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfines = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfees  = Koha::Account::Lines->search({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         ok( $lostfines->count == 2 , "Lost fine can be charged twice for the same item if they are distinct issue_id's");
         ok( $procfees->count == 2,  "Processing fee can be charged twice for the same item if they are distinct issue_id's");
         $lostfines->delete();
@@ -714,7 +715,7 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, '1.99', "Perdedor");
 
         # Lost Item Fee
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
         ok($lostfine, "Lost fine created");
         is($lostfine->manager_id, $staff_id, "Lost fine manager_id set correctly");
         is($lostfine->issue_id, $cli_issue_id_4X, "Lost fine issue_id set correctly");
@@ -723,7 +724,7 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
         is($lostfine->branchcode, $branchcode, "Lost fine branchcode set correctly");
 
         # Processing Fee
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         ok($procfee, "Processing fee created");
         is($procfee->manager_id, $staff_id, "Processing fee manager_id set correctly");
         is($procfee->issue_id, $cli_issue_id_4X, "Processing fee issue_id set correctly");
@@ -741,16 +742,16 @@ subtest "C4::Accounts::chargelostitem tests" => sub {
 
         t::lib::Mocks::mock_preference( 'FinesLog', 0 );
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         is( $schema->resultset('ActionLog')->count(), $action_logs + 0, 'No logs were added' );
         $lostfine->delete();
         $procfee->delete();
 
         t::lib::Mocks::mock_preference( 'FinesLog', 1 );
         C4::Accounts::chargelostitem( $cli_borrowernumber, $cli_itemnumber4, 0, "Perdedor");
-        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'LOST' });
-        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, accounttype => 'PF' });
+        $lostfine = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'LOST' });
+        $procfee  = Koha::Account::Lines->find({ borrowernumber => $cli_borrowernumber, itemnumber => $cli_itemnumber4, debit_type_code => 'PF' });
         is( $schema->resultset('ActionLog')->count(), $action_logs + 2, 'Logs were added' );
         $lostfine->delete();
         $procfee->delete();
@@ -786,7 +787,7 @@ subtest "Koha::Account::non_issues_charges tests" => sub {
             interface   => 'commandline'
         }
     );
-    Koha::Account::DebitTypes->new(
+    Koha::Account::DebitTypes->find_or_create(
         {
             code        => 'Copie',
             description => 'Fee for copie',
@@ -798,7 +799,7 @@ subtest "Koha::Account::non_issues_charges tests" => sub {
             borrowernumber    => $patron->borrowernumber,
             date              => $today,
             description       => 'a Manual invoice fee',
-            debit_type        => 'Copie',
+            debit_type_code   => 'Copie',
             amountoutstanding => $manual,
             interface         => 'commandline'
         }
index f0086a0..51fe4ad 100755 (executable)
@@ -911,7 +911,7 @@ subtest "CanBookBeRenewed tests" => sub {
     );
 
     my $line = Koha::Account::Lines->search({ borrowernumber => $renewing_borrower->{borrowernumber} })->next();
-    is( $line->accounttype, 'OVERDUE', 'Account line type is OVERDUE' );
+    is( $line->debit_type_code, 'OVERDUE', 'Account line type is OVERDUE' );
     is( $line->status, 'UNRETURNED', 'Account line status is UNRETURNED' );
     is( $line->amountoutstanding, '15.000000', 'Account line amount outstanding is 15.00' );
     is( $line->amount, '15.000000', 'Account line amount is 15.00' );
@@ -927,7 +927,7 @@ subtest "CanBookBeRenewed tests" => sub {
     LostItem( $item_1->itemnumber, 'test', 1 );
 
     $line = Koha::Account::Lines->find($line->id);
-    is( $line->accounttype, 'OVERDUE', 'Account type remains as OVERDUE' );
+    is( $line->debit_type_code, 'OVERDUE', 'Account type remains as OVERDUE' );
     isnt( $line->status, 'UNRETURNED', 'Account status correctly changed from UNRETURNED to RETURNED' );
 
     my $item = Koha::Items->find($item_1->itemnumber);
@@ -2124,7 +2124,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
         LostItem( $item->itemnumber, 1 );
 
         my $processing_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'PF' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'PF' } );
         is( $processing_fee_lines->count, 1, 'Only one processing fee produced' );
         my $processing_fee_line = $processing_fee_lines->next;
         is( $processing_fee_line->amount + 0,
@@ -2133,7 +2133,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
             $processfee_amount, 'The right PF amountoutstanding is generated' );
 
         my $lost_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'LOST' } );
         is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
         my $lost_fee_line = $lost_fee_lines->next;
         is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
@@ -2159,7 +2159,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
 
         $lost_fee_line->discard_changes; # reload from DB
         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
-        is( $lost_fee_line->accounttype,
+        is( $lost_fee_line->debit_type_code,
             'LOST', 'Lost fee now still has account type of LOST' );
         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
 
@@ -2188,7 +2188,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
         LostItem( $item->itemnumber, 1 );
 
         my $processing_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'PF' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'PF' } );
         is( $processing_fee_lines->count, 1, 'Only one processing fee produced' );
         my $processing_fee_line = $processing_fee_lines->next;
         is( $processing_fee_line->amount + 0,
@@ -2197,7 +2197,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
             $processfee_amount, 'The right PF amountoutstanding is generated' );
 
         my $lost_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'LOST' } );
         is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
         my $lost_fee_line = $lost_fee_lines->next;
         is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
@@ -2227,7 +2227,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
 
         $lost_fee_line->discard_changes;
         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
-        is( $lost_fee_line->accounttype,
+        is( $lost_fee_line->debit_type_code,
             'LOST', 'Lost fee now still has account type of LOST' );
         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
 
@@ -2258,7 +2258,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
         LostItem( $item->itemnumber, 1 );
 
         my $processing_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'PF' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'PF' } );
         is( $processing_fee_lines->count, 1, 'Only one processing fee produced' );
         my $processing_fee_line = $processing_fee_lines->next;
         is( $processing_fee_line->amount + 0,
@@ -2267,7 +2267,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
             $processfee_amount, 'The right PF amountoutstanding is generated' );
 
         my $lost_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'LOST' } );
         is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
         my $lost_fee_line = $lost_fee_lines->next;
         is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
@@ -2283,7 +2283,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
 
         $lost_fee_line->discard_changes;
         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
-        is( $lost_fee_line->accounttype,
+        is( $lost_fee_line->debit_type_code,
             'LOST', 'Lost fee now still has account type of LOST' );
         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
 
@@ -2311,7 +2311,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
         LostItem( $item->itemnumber, 1 );
 
         my $processing_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'PF' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'PF' } );
         is( $processing_fee_lines->count, 1, 'Only one processing fee produced' );
         my $processing_fee_line = $processing_fee_lines->next;
         is( $processing_fee_line->amount + 0,
@@ -2320,7 +2320,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
             $processfee_amount, 'The right PF amountoutstanding is generated' );
 
         my $lost_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, accounttype => 'LOST' } );
+            { borrowernumber => $patron->id, itemnumber => $item->itemnumber, debit_type_code => 'LOST' } );
         is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
         my $lost_fee_line = $lost_fee_lines->next;
         is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
@@ -2367,7 +2367,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
 
         $lost_fee_line->discard_changes;
         is( $lost_fee_line->amountoutstanding + 0, 0, 'Lost fee has no outstanding amount' );
-        is( $lost_fee_line->accounttype,
+        is( $lost_fee_line->debit_type_code,
             'LOST', 'Lost fee now still has account type of LOST' );
         is( $lost_fee_line->status, 'RETURNED', "Lost fee now has account status of RETURNED");
 
@@ -2424,7 +2424,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
         LostItem( $item_id, 1 );
 
         my $lost_fee_lines = Koha::Account::Lines->search(
-            { borrowernumber => $patron->id, itemnumber => $item_id, accounttype => 'LOST' } );
+            { borrowernumber => $patron->id, itemnumber => $item_id, debit_type_code => 'LOST' } );
         is( $lost_fee_lines->count, 1, 'Only one lost item fee produced' );
         my $lost_fee_line = $lost_fee_lines->next;
         is( $lost_fee_line->amount + 0, $replacement_amount, 'The right LOST amount is generated' );
@@ -2461,7 +2461,7 @@ subtest '_FixAccountForLostAndReturned' => sub {
 
         is( $account->balance, $manual_debit_amount - $payment_amount, 'Balance is PF - payment (LOST_RETURN)' );
 
-        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, accounttype => 'OVERDUE', status => 'UNRETURNED' })->next;
+        my $manual_debit = Koha::Account::Lines->search({ borrowernumber => $patron->id, debit_type_code => 'OVERDUE', status => 'UNRETURNED' })->next;
         is( $manual_debit->amountoutstanding + 0, $manual_debit_amount - $payment_amount, 'reconcile_balance was called' );
     };
 };
@@ -2491,7 +2491,7 @@ subtest '_FixOverduesOnReturn' => sub {
     my $accountline = Koha::Account::Line->new(
         {
             borrowernumber => $patron->{borrowernumber},
-            accounttype    => 'OVERDUE',
+            debit_type_code    => 'OVERDUE',
             status         => 'UNRETURNED',
             itemnumber     => $item->itemnumber,
             amount => 99.00,
@@ -2511,7 +2511,7 @@ subtest '_FixOverduesOnReturn' => sub {
     ## Run again, with exemptfine enabled
     $accountline->set(
         {
-            accounttype    => 'OVERDUE',
+            debit_type_code    => 'OVERDUE',
             status         => 'UNRETURNED',
             amountoutstanding => 99.00,
         }
@@ -2558,7 +2558,7 @@ subtest '_FixAccountForLostAndReturned returns undef if patron is deleted' => su
     my $accountline = Koha::Account::Line->new(
         {
             borrowernumber => $patron->id,
-            accounttype    => 'L',
+            debit_type_code    => 'LOST',
             status         => undef,
             itemnumber     => $item->itemnumber,
             amount => 99.00,
@@ -3033,12 +3033,12 @@ subtest 'AddRenewal and AddIssuingCharge tests' => sub {
     is( $lines->count, 2 );
 
     my $line = $lines->next;
-    is( $line->accounttype, 'RENT',       'The issue of item with issuing charge generates an accountline of the correct type' );
+    is( $line->debit_type_code, 'RENT',       'The issue of item with issuing charge generates an accountline of the correct type' );
     is( $line->branchcode,  $library->id, 'AddIssuingCharge correctly sets branchcode' );
     is( $line->description, '',     'AddIssue does not set a hardcoded description for the accountline' );
 
     $line = $lines->next;
-    is( $line->accounttype, 'RENT_RENEW', 'The renewal of item with issuing charge generates an accountline of the correct type' );
+    is( $line->debit_type_code, 'RENT_RENEW', 'The renewal of item with issuing charge generates an accountline of the correct type' );
     is( $line->branchcode,  $library->id, 'AddRenewal correctly sets branchcode' );
     is( $line->description, '', 'AddRenewal does not set a hardcoded description for the accountline' );
 
index 84868ef..ed15c4f 100644 (file)
@@ -87,7 +87,7 @@ is( $issuingimpossible->{DEBT_GUARANTEES} + 0, '10.00' + 0, "Patron cannot check
 
 my $accountline = Koha::Account::Lines->search({ borrowernumber => $guarantee->id })->next();
 is( $accountline->amountoutstanding, "10.000000", "Found 10.00 amount outstanding" );
-is( $accountline->accounttype, "LOST", "Account type is LOST" );
+is( $accountline->debit_type_code, "LOST", "Debit type is LOST" );
 
 my $offset = Koha::Account::Offsets->search({ debit_id => $accountline->id })->next();
 is( $offset->type, 'Lost Item', 'Got correct offset type' );
index f50638a..41f7736 100644 (file)
@@ -277,7 +277,7 @@ subtest 'Handle ids duplication' => sub {
     my $issue_id = $original_checkout->issue_id;
     my $account_lines = Koha::Account::Lines->search({ borrowernumber => $patron->borrowernumber, issue_id => $issue_id });
     is( $account_lines->count, 1, '1 account line should exist for this issue_id' );
-    is( $account_lines->next->accounttype, 'RENT', 'patron has been charged the rentalcharge' );
+    is( $account_lines->next->debit_type_code, 'RENT', 'patron has been charged the rentalcharge' );
     $account_lines->delete;
 
     # Create an existing entry in old_issue
index a757f52..dad70d4 100755 (executable)
@@ -343,7 +343,7 @@ subtest 'add_debit() tests' => sub {
         'No log was added'
     );
     is(
-        $line_1->accounttype,
+        $line_1->debit_type_code,
         $Koha::Account::account_type_debit->{'rent'},
         'Account type is correctly set'
     );
@@ -370,7 +370,7 @@ subtest 'add_debit() tests' => sub {
         'Log was added'
     );
     is(
-        $line_2->accounttype,
+        $line_2->debit_type_code,
         $Koha::Account::account_type_debit->{'rent'},
         'Account type is correctly set'
     );
@@ -657,7 +657,7 @@ subtest 'pay() handles lost items when paying a specific lost fee' => sub {
             borrowernumber => $patron->id,
             itemnumber     => $item->id,
             date           => \'NOW()',
-            accounttype    => 'LOST',
+            debit_type_code    => 'LOST',
             interface      => 'cli',
             amount => '1',
             amountoutstanding => '1',
@@ -730,7 +730,7 @@ subtest 'pay() handles lost items when paying by amount ( not specifying the los
             borrowernumber => $patron->id,
             itemnumber     => $item->id,
             date           => \'NOW()',
-            accounttype    => 'LOST',
+            debit_type_code    => 'LOST',
             interface      => 'cli',
             amount => '1',
             amountoutstanding => '1',
@@ -801,7 +801,7 @@ subtest 'Koha::Account::Line::apply() handles lost items' => sub {
             borrowernumber    => $patron->id,
             itemnumber        => $item->id,
             date              => \'NOW()',
-            accounttype       => 'LOST',
+            debit_type_code       => 'LOST',
             interface         => 'cli',
             amount            => '1',
             amountoutstanding => '1',
index fee8ead..c6b63be 100644 (file)
@@ -52,8 +52,6 @@ my $new_debit_type_2 = Koha::Account::DebitType->new(
     }
 )->store;
 
-my $defaults                  = Koha::Account::DebitType::defaults;
-my $number_of_system_types    = scalar @{$defaults};
 my $retrieved_debit_types_all = Koha::Account::DebitTypes->search();
 try {
     $retrieved_debit_types_all->delete;
index 7f9dcf0..9a0a101 100755 (executable)
@@ -46,7 +46,7 @@ subtest 'patron() tests' => sub {
     my $line = Koha::Account::Line->new(
     {
         borrowernumber => $patron->{borrowernumber},
-        accounttype    => "OVERDUE",
+        debit_type_code    => "OVERDUE",
         status         => "RETURNED",
         amount         => 10,
         interface      => 'commandline',
@@ -86,7 +86,7 @@ subtest 'item() tests' => sub {
     {
         borrowernumber => $patron->{borrowernumber},
         itemnumber     => $item->itemnumber,
-        accounttype    => "OVERDUE",
+        debit_type_code    => "OVERDUE",
         status         => "RETURNED",
         amount         => 10,
         interface      => 'commandline',
@@ -115,7 +115,7 @@ subtest 'total_outstanding() tests' => sub {
 
     my $debit_1 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 10,
             amountoutstanding => 10,
@@ -125,7 +125,7 @@ subtest 'total_outstanding() tests' => sub {
 
     my $debit_2 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 10,
             amountoutstanding => 10,
@@ -138,7 +138,7 @@ subtest 'total_outstanding() tests' => sub {
 
     my $credit_1 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => -10,
             amountoutstanding => -10,
@@ -151,7 +151,7 @@ subtest 'total_outstanding() tests' => sub {
 
     my $credit_2 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => -10,
             amountoutstanding => -10,
@@ -164,7 +164,7 @@ subtest 'total_outstanding() tests' => sub {
 
     my $credit_3 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => -100,
             amountoutstanding => -100,
@@ -195,7 +195,7 @@ subtest 'is_credit() and is_debit() tests' => sub {
     my $debit = Koha::Account::Line->new(
     {
         borrowernumber => $patron->id,
-        accounttype    => "OVERDUE",
+        debit_type_code    => "OVERDUE",
         status         => "RETURNED",
         amount         => 10,
         interface      => 'commandline',
@@ -220,7 +220,7 @@ subtest 'apply() tests' => sub {
 
     my $debit_1 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 10,
             amountoutstanding => 10,
@@ -230,7 +230,7 @@ subtest 'apply() tests' => sub {
 
     my $debit_2 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 100,
             amountoutstanding => 100,
@@ -293,7 +293,7 @@ subtest 'apply() tests' => sub {
     my $credit_2 = $account->add_credit({ amount => 20, interface => 'commandline' });
     my $debit_3  = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 100,
             amountoutstanding => 100,
@@ -343,7 +343,7 @@ subtest 'Keep account info when related patron, staff or item is deleted' => sub
         borrowernumber => $patron->borrowernumber,
         manager_id     => $staff->borrowernumber,
         itemnumber     => $item->itemnumber,
-        accounttype    => "OVERDUE",
+        debit_type_code    => "OVERDUE",
         status         => "RETURNED",
         amount         => 10,
         interface      => 'commandline',
@@ -382,7 +382,7 @@ subtest 'adjust() tests' => sub {
 
     my $debit_1 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "RETURNED",
             amount            => 10,
             amountoutstanding => 10,
@@ -392,7 +392,7 @@ subtest 'adjust() tests' => sub {
 
     my $debit_2 = Koha::Account::Line->new(
         {   borrowernumber    => $patron->id,
-            accounttype       => "OVERDUE",
+            debit_type_code       => "OVERDUE",
             status            => "UNRETURNED",
             amount            => 100,
             amountoutstanding => 100,
@@ -406,7 +406,7 @@ subtest 'adjust() tests' => sub {
     qr/Update type not recognised/, 'Exception thrown for unrecognised type';
 
     throws_ok { $debit_1->adjust( { amount => 50, type => 'overdue_update', interface => 'commandline' } ) }
-    qr/Update type not allowed on this accounttype/,
+    qr/Update type not allowed on this debit_type/,
       'Exception thrown for type conflict';
 
     # Increment an unpaid fine
index eea40c3..adfcb60 100644 (file)
@@ -112,9 +112,9 @@ subtest 'add_enrolment_fee_if_needed() tests' => sub {
 
         my @debits = $account->outstanding_debits;
         is( scalar @debits, 3, '3 enrolment fees' );
-        is( $debits[0]->accounttype, 'ACCOUNT', 'Account type set correctly' );
-        is( $debits[1]->accounttype, 'ACCOUNT', 'Account type set correctly' );
-        is( $debits[2]->accounttype, 'ACCOUNT_RENEW', 'Account type set correctly' );
+        is( $debits[0]->debit_type_code, 'ACCOUNT', 'Account type set correctly' );
+        is( $debits[1]->debit_type_code, 'ACCOUNT', 'Account type set correctly' );
+        is( $debits[2]->debit_type_code, 'ACCOUNT_RENEW', 'Account type set correctly' );
 
         $schema->storage->txn_rollback;
     };
index 33aa3d9..804d2c0 100755 (executable)
@@ -739,7 +739,7 @@ subtest 'ChargeReserveFee tests' => sub {
 
     is( ref($line), 'Koha::Account::Line' , 'Returns a Koha::Account::Line object');
     ok( $line->is_debit, 'Generates a debit line' );
-    is( $line->accounttype, 'Res' , 'generates Res accounttype');
+    is( $line->debit_type_code, 'Res' , 'generates Res debit_type');
     is( $line->borrowernumber, $patron->id , 'generated line belongs to the passed patron');
     is( $line->amount, $fee , 'amount set correctly');
     is( $line->amountoutstanding, $fee , 'amountoutstanding set correctly');
index e4a8f4d..53cebb3 100644 (file)
@@ -65,7 +65,7 @@ subtest 'get_balance() tests' => sub {
             date              => \'NOW()',
             amount            => 50,
             description       => "A description",
-            accounttype       => "N", # New card
+            debit_type_code   => "N", # New card
             amountoutstanding => 50,
             manager_id        => $patron->borrowernumber,
             branchcode        => $library->id,
@@ -80,7 +80,7 @@ subtest 'get_balance() tests' => sub {
             date              => \'NOW()',
             amount            => 50.01,
             description       => "A description",
-            accounttype       => "N", # New card
+            debit_type_code   => "N", # New card
             amountoutstanding => 50.01,
             manager_id        => $patron->borrowernumber,
             branchcode        => $library->id,
@@ -183,7 +183,7 @@ subtest 'add_credit() tests' => sub {
             date              => \'NOW()',
             amount            => 10,
             description       => "A description",
-            accounttype       => "N",                       # New card
+            debit_type_code   => "N",                       # New card
             amountoutstanding => 10,
             manager_id        => $patron->borrowernumber,
             interface         => 'test',
@@ -194,7 +194,7 @@ subtest 'add_credit() tests' => sub {
             date              => \'NOW()',
             amount            => 15,
             description       => "A description",
-            accounttype       => "N",                       # New card
+            debit_type_code   => "N",                       # New card
             amountoutstanding => 15,
             manager_id        => $patron->borrowernumber,
             interface         => 'test',
@@ -221,7 +221,7 @@ subtest 'add_credit() tests' => sub {
             date              => \'NOW()',
             amount            => 100,
             description       => "A description",
-            accounttype       => "N",                       # New card
+            debit_type_code   => "N",                       # New card
             amountoutstanding => 100,
             manager_id        => $patron->borrowernumber,
             interface         => 'test',