Bug 19166: (follow-up) Adjust table and files and QA issues
authorNick Clemens <nick@bywatersolutions.com>
Mon, 16 Jul 2018 14:08:17 +0000 (14:08 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Thu, 19 Jul 2018 17:28:41 +0000 (17:28 +0000)
Move to aqinvoice_adjustment
Move to Koha::Acquisition::Invoice::Adjustments
Test if variable exists before count

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

12 files changed:
C4/Budgets.pm
Koha/Schema/Result/Aqbudget.pm
Koha/Schema/Result/Aqinvoice.pm
acqui/invoice.pl
acqui/ordered.pl
acqui/spent.pl
installer/data/mysql/atomicupdate/bug_19166.perl
installer/data/mysql/kohastructure.sql
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/ordered.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt
t/db_dependent/Budgets.t

index 8e7cc86..e0b7dc1 100644 (file)
@@ -22,7 +22,7 @@ use strict;
 use C4::Context;
 use Koha::Database;
 use Koha::Patrons;
-use Koha::InvoiceAdjustments;
+use Koha::Acquisition::Invoice::Adjustments;
 use C4::Debug;
 use vars qw(@ISA @EXPORT);
 
@@ -350,7 +350,7 @@ sub GetBudgetSpent {
     my ($shipmentcost_sum) = $sth->fetchrow_array;
     $sum += $shipmentcost_sum;
 
-    my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $budget_id, closedate => { '!=' => undef } },{ join => 'invoiceid' });
+    my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $budget_id, closedate => { '!=' => undef } },{ join => 'invoiceid' });
     while ( my $adj = $adjustments->next ){
         $sum += $adj->adjustment;
     }
@@ -371,7 +371,7 @@ sub GetBudgetOrdered {
        $sth->execute($budget_id);
     my $sum =  0 + $sth->fetchrow_array;
 
-    my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $budget_id, encumber_open => 1, closedate => undef},{ join => 'invoiceid' });
+    my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $budget_id, encumber_open => 1, closedate => undef},{ join => 'invoiceid' });
     while ( my $adj = $adjustments->next ){
         $sum += $adj->adjustment;
     }
index 68a93af..1cdb64c 100644 (file)
@@ -212,6 +212,21 @@ __PACKAGE__->has_many(
   { cascade_copy => 0, cascade_delete => 0 },
 );
 
+=head2 aqinvoice_adjustments
+
+Type: has_many
+
+Related object: L<Koha::Schema::Result::AqinvoiceAdjustment>
+
+=cut
+
+__PACKAGE__->has_many(
+  "aqinvoice_adjustments",
+  "Koha::Schema::Result::AqinvoiceAdjustment",
+  { "foreign.budget_id" => "self.budget_id" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
 =head2 aqinvoices
 
 Type: has_many
@@ -283,8 +298,8 @@ Composing rels: L</aqbudgetborrowers> -> borrowernumber
 __PACKAGE__->many_to_many("borrowernumbers", "aqbudgetborrowers", "borrowernumber");
 
 
-# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:53
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9MY8aD6YBjuLy8c7tDnZeg
+# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-07-16 13:50:45
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zB7ox8a4KdDGq5fsbQfLGQ
 
 
 # You can replace this text with custom content, and it will be preserved on regeneration
index 3ec1475..b760947 100644 (file)
@@ -113,6 +113,21 @@ __PACKAGE__->set_primary_key("invoiceid");
 
 =head1 RELATIONS
 
+=head2 aqinvoice_adjustments
+
+Type: has_many
+
+Related object: L<Koha::Schema::Result::AqinvoiceAdjustment>
+
+=cut
+
+__PACKAGE__->has_many(
+  "aqinvoice_adjustments",
+  "Koha::Schema::Result::AqinvoiceAdjustment",
+  { "foreign.invoiceid" => "self.invoiceid" },
+  { cascade_copy => 0, cascade_delete => 0 },
+);
+
 =head2 aqorders
 
 Type: has_many
@@ -184,8 +199,8 @@ __PACKAGE__->belongs_to(
 );
 
 
-# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:53
-# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SAUxWSdpMJK4atxhfgCAGg
+# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-07-16 13:50:45
+# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mpdxTbkz/8WInG5Wp4q7Ug
 
 
 # You can replace this text with custom content, and it will be preserved on regeneration
index 4fe4b22..bdf9485 100755 (executable)
@@ -38,7 +38,7 @@ use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Currencies;
 use Koha::DateUtils;
 use Koha::Misc::Files;
-use Koha::InvoiceAdjustments;
+use Koha::Acquisition::Invoice::Adjustments;
 
 my $input = new CGI;
 my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
@@ -111,7 +111,7 @@ elsif ( $op && $op eq 'delete' ) {
 }
 elsif ( $op && $op eq 'del_adj' ) {
     my $adjustment_id  = $input->param('adjustment_id');
-    my $del_adj = Koha::InvoiceAdjustments->find( $adjustment_id );
+    my $del_adj = Koha::Acquisition::Invoice::Adjustments->find( $adjustment_id );
     $del_adj->delete() if ($del_adj);
 }
 elsif ( $op && $op eq 'mod_adj' ) {
@@ -126,7 +126,7 @@ elsif ( $op && $op eq 'mod_adj' ) {
     for( my $i=0; $i < scalar @adjustment; $i++ ){
         if( $adjustment_id[$i] eq 'new' ){
             next unless ( $adjustment[$i] || $reason[$i] );
-            my $new_adj = Koha::InvoiceAdjustment->new({
+            my $new_adj = Koha::Acquisition::Invoice::Adjustment->new({
                 invoiceid => $invoiceid,
                 adjustment => $adjustment[$i],
                 reason => $reason[$i],
@@ -137,7 +137,7 @@ elsif ( $op && $op eq 'mod_adj' ) {
             $new_adj->store();
         }
         else {
-            my $old_adj = Koha::InvoiceAdjustments->find( $adjustment_id[$i] );
+            my $old_adj = Koha::Acquisition::Invoice::Adjustments->find( $adjustment_id[$i] );
             unless ( $old_adj->adjustment == $adjustment[$i] && $old_adj->reason eq $reason[$i] && $old_adj->budget_id == $budget_id[$i] && $old_adj->encumber_open == $e_open{$adjustment_id[$i]} && $old_adj->note eq $note[$i] ){
                 $old_adj->timestamp(undef);
                 $old_adj->adjustment( $adjustment[$i] );
@@ -201,7 +201,7 @@ foreach my $budget (@$budgets) {
     push @budgets_loop, \%line;
 }
 
-my $adjustments = Koha::InvoiceAdjustments->search({ invoiceid => $details->{'invoiceid'} });
+my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({ invoiceid => $details->{'invoiceid'} });
 if ( $adjustments ) { $template->param( adjustments => $adjustments ); }
 
 $template->param(
index c78ac66..e393490 100755 (executable)
@@ -32,7 +32,7 @@ use Modern::Perl;
 use CGI qw ( -utf8 );
 use C4::Auth;
 use C4::Output;
-use Koha::InvoiceAdjustments;
+use Koha::Acquisition::Invoice::Adjustments;
 
 my $dbh     = C4::Context->dbh;
 my $input   = new CGI;
@@ -97,7 +97,7 @@ while ( my $data = $sth->fetchrow_hashref ) {
     }
 }
 
-my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $fund_id, closedate => undef, encumber_open => 1 }, { join => 'invoiceid' } );
+my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $fund_id, closedate => undef, encumber_open => 1 }, { join => 'invoiceid' } );
 while ( my $adj = $adjustments->next ){
     $total += $adj->adjustment;
 }
index dfc5f85..988b8c2 100755 (executable)
@@ -34,7 +34,7 @@ use C4::Auth;
 use C4::Output;
 use Modern::Perl;
 use CGI qw ( -utf8 );
-use Koha::InvoiceAdjustments;
+use Koha::Acquisition::Invoice::Adjustments;
 
 my $dbh      = C4::Context->dbh;
 my $input    = new CGI;
@@ -119,7 +119,7 @@ while (my $data = $sth->fetchrow_hashref) {
 }
 $sth->finish;
 
-my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $bookfund, closedate => { '!=' => undef } }, { join => 'invoiceid' } );
+my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $bookfund, closedate => { '!=' => undef } }, { join => 'invoiceid' } );
 while ( my $adj = $adjustments->next ){
     $total += $adj->adjustment;
 }
index 6088e99..5a3794e 100644 (file)
@@ -1,7 +1,7 @@
 $DBversion = 'XXX';  # will be replaced by the RM
 if( CheckVersion( $DBversion ) ) {
     $dbh->do( "
-        CREATE TABLE IF NOT EXISTS invoice_adjustments (
+        CREATE TABLE IF NOT EXISTS aqinvoice_adjustments (
             adjustment_id int(11) NOT NULL AUTO_INCREMENT,
             invoiceid int(11) NOT NULL,
             adjustment decimal(28,6),
@@ -11,8 +11,8 @@ if( CheckVersion( $DBversion ) ) {
             encumber_open smallint(1) NOT NULL default 1,
             timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
             PRIMARY KEY (adjustment_id),
-            CONSTRAINT invoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
-            CONSTRAINT invoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
+            CONSTRAINT aqinvoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
+            CONSTRAINT aqinvoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
         ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
         " );
     $dbh->do("INSERT IGNORE INTO authorised_value_categories (category_name) VALUES ('ADJ_REASON')");
index f7765a1..81109a1 100644 (file)
@@ -824,25 +824,6 @@ CREATE TABLE `import_items` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
 --
--- Table structure for table 'invoice_adjustments'
---
-
-DROP TABLE IF EXISTS invoice_adjustments;
-CREATE TABLE IF NOT EXISTS invoice_adjustments (
-    adjustment_id int(11) NOT NULL AUTO_INCREMENT, -- primary key for adjustments
-    invoiceid int(11) NOT NULL, -- foreign key to link an adjustment to an invoice
-    adjustment decimal(28,6), -- amount of adjustment
-    reason varchar(80) default NULL, -- reason for adjustment defined by authorised values in ADJ_REASON category
-    note mediumtext default NULL, -- text to explain adjustment
-    budget_id int(11) default NULL, -- optional link to budget to apply adjustment to
-    encumber_open smallint(1) NOT NULL default 1, -- whether or not to encumber the finds when invoice is still open, 1 = yes, 0 = no
-    timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- timestamp  of last adjustment to adjustment
-    PRIMARY KEY (adjustment_id),
-    CONSTRAINT invoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
-    CONSTRAINT invoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-
---
 -- Table structure for table `issuingrules`
 --
 
@@ -3160,6 +3141,25 @@ CREATE TABLE aqinvoices (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
 --
+-- Table structure for table 'aqinvoice_adjustments'
+--
+
+DROP TABLE IF EXISTS aqinvoice_adjustments;
+CREATE TABLE IF NOT EXISTS aqinvoice_adjustments (
+    adjustment_id int(11) NOT NULL AUTO_INCREMENT, -- primary key for adjustments
+    invoiceid int(11) NOT NULL, -- foreign key to link an adjustment to an invoice
+    adjustment decimal(28,6), -- amount of adjustment
+    reason varchar(80) default NULL, -- reason for adjustment defined by authorised values in ADJ_REASON category
+    note mediumtext default NULL, -- text to explain adjustment
+    budget_id int(11) default NULL, -- optional link to budget to apply adjustment to
+    encumber_open smallint(1) NOT NULL default 1, -- whether or not to encumber the finds when invoice is still open, 1 = yes, 0 = no
+    timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- timestamp  of last adjustment to adjustment
+    PRIMARY KEY (adjustment_id),
+    CONSTRAINT aqinvoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
+    CONSTRAINT aqinvoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+--
 -- Table structure for table `aqorders`
 --
 
index 16b8d02..85a23c5 100644 (file)
@@ -92,7 +92,7 @@
           <form action="/cgi-bin/koha/acqui/invoice.pl" method="post" class="validated">
               <fieldset class="rows">
                   <input type="hidden" name="invoiceid" value="[% invoiceid %]" />
-                  [% IF (adjustments.count > 0) %]
+                  [% IF (adjustments && adjustments.count > 0) %]
                       <table id="invoice_adj_table">
                           <tr>
                              <th>Id</th>
index 174edb8..f1418cd 100644 (file)
@@ -73,7 +73,7 @@
 [% END %]
     </tbody>
     <tfoot>
-    [% IF ( adjustments.count > 0 ) %]
+    [% IF ( adjustments && adjustments.count > 0 ) %]
             [% FOREACH adjustment IN adjustments %]
                 <tr>
                     <td></td>
index bf41136..b045c53 100644 (file)
@@ -77,7 +77,7 @@
     [% END %]
 
     <tfoot>
-        [% IF shipmentcosts.size || ( adjustments.count > 0 ) %]
+        [% IF shipmentcosts.size || ( adjustments && adjustments.count > 0 ) %]
             <tr valign="top">
                 <td colspan="9"> Sub total </td>
                 <td class="data"> [% subtotal %] </td>
@@ -92,7 +92,7 @@
                 </tr>
             [% END %]
         [% END %]
-        [% IF ( adjustments.count > 0 ) %]
+        [% IF ( adjustments && adjustments.count > 0 ) %]
             [% FOREACH adjustment IN adjustments %]
                 <tr>
                     <td></td>
index 9c74895..e28e20c 100755 (executable)
@@ -821,7 +821,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
     is( $ordered, 0, "New budget, no orders/invoices, should be nothing ordered");
 
     my $inv_adj_1 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice->{invoiceid},
             adjustment    => 3,
@@ -836,7 +836,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
     is( $ordered, 0, "After adding invoice adjustment on open invoice not encumbered, should be nothing ordered");
 
     my $inv_adj_2 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice->{invoiceid},
             adjustment    => 3,
@@ -857,7 +857,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
         }
     });
     my $inv_adj_3 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice_2->{invoiceid},
             adjustment    => 3,
@@ -866,7 +866,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
         }
     });
     my $inv_adj_4 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice_2->{invoiceid},
             adjustment    => 3,
@@ -887,7 +887,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
         }
     });
     my $inv_adj_5 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice->{invoiceid},
             adjustment    => 3,
@@ -896,7 +896,7 @@ subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
         }
     });
     my $inv_adj_6 = $builder->build({
-        source => 'InvoiceAdjustment',
+        source => 'AqinvoiceAdjustment',
         value  => {
             invoiceid     => $invoice_2->{invoiceid},
             adjustment    => 3,