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

(-)a/C4/Budgets.pm (-3 / +3 lines)
Lines 22-28 use strict; Link Here
22
use C4::Context;
22
use C4::Context;
23
use Koha::Database;
23
use Koha::Database;
24
use Koha::Patrons;
24
use Koha::Patrons;
25
use Koha::InvoiceAdjustments;
25
use Koha::Acquisition::Invoice::Adjustments;
26
use C4::Debug;
26
use C4::Debug;
27
use vars qw(@ISA @EXPORT);
27
use vars qw(@ISA @EXPORT);
28
28
Lines 350-356 sub GetBudgetSpent { Link Here
350
    my ($shipmentcost_sum) = $sth->fetchrow_array;
350
    my ($shipmentcost_sum) = $sth->fetchrow_array;
351
    $sum += $shipmentcost_sum;
351
    $sum += $shipmentcost_sum;
352
352
353
    my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $budget_id, closedate => { '!=' => undef } },{ join => 'invoiceid' });
353
    my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $budget_id, closedate => { '!=' => undef } },{ join => 'invoiceid' });
354
    while ( my $adj = $adjustments->next ){
354
    while ( my $adj = $adjustments->next ){
355
        $sum += $adj->adjustment;
355
        $sum += $adj->adjustment;
356
    }
356
    }
Lines 371-377 sub GetBudgetOrdered { Link Here
371
	$sth->execute($budget_id);
371
	$sth->execute($budget_id);
372
    my $sum =  0 + $sth->fetchrow_array;
372
    my $sum =  0 + $sth->fetchrow_array;
373
373
374
    my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $budget_id, encumber_open => 1, closedate => undef},{ join => 'invoiceid' });
374
    my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $budget_id, encumber_open => 1, closedate => undef},{ join => 'invoiceid' });
375
    while ( my $adj = $adjustments->next ){
375
    while ( my $adj = $adjustments->next ){
376
        $sum += $adj->adjustment;
376
        $sum += $adj->adjustment;
377
    }
377
    }
(-)a/Koha/Schema/Result/Aqbudget.pm (-2 / +17 lines)
Lines 212-217 __PACKAGE__->has_many( Link Here
212
  { cascade_copy => 0, cascade_delete => 0 },
212
  { cascade_copy => 0, cascade_delete => 0 },
213
);
213
);
214
214
215
=head2 aqinvoice_adjustments
216
217
Type: has_many
218
219
Related object: L<Koha::Schema::Result::AqinvoiceAdjustment>
220
221
=cut
222
223
__PACKAGE__->has_many(
224
  "aqinvoice_adjustments",
225
  "Koha::Schema::Result::AqinvoiceAdjustment",
226
  { "foreign.budget_id" => "self.budget_id" },
227
  { cascade_copy => 0, cascade_delete => 0 },
228
);
229
215
=head2 aqinvoices
230
=head2 aqinvoices
216
231
217
Type: has_many
232
Type: has_many
Lines 283-290 Composing rels: L</aqbudgetborrowers> -> borrowernumber Link Here
283
__PACKAGE__->many_to_many("borrowernumbers", "aqbudgetborrowers", "borrowernumber");
298
__PACKAGE__->many_to_many("borrowernumbers", "aqbudgetborrowers", "borrowernumber");
284
299
285
300
286
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:53
301
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-07-16 13:50:45
287
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:9MY8aD6YBjuLy8c7tDnZeg
302
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:zB7ox8a4KdDGq5fsbQfLGQ
288
303
289
304
290
# You can replace this text with custom content, and it will be preserved on regeneration
305
# You can replace this text with custom content, and it will be preserved on regeneration
(-)a/Koha/Schema/Result/Aqinvoice.pm (-2 / +17 lines)
Lines 113-118 __PACKAGE__->set_primary_key("invoiceid"); Link Here
113
113
114
=head1 RELATIONS
114
=head1 RELATIONS
115
115
116
=head2 aqinvoice_adjustments
117
118
Type: has_many
119
120
Related object: L<Koha::Schema::Result::AqinvoiceAdjustment>
121
122
=cut
123
124
__PACKAGE__->has_many(
125
  "aqinvoice_adjustments",
126
  "Koha::Schema::Result::AqinvoiceAdjustment",
127
  { "foreign.invoiceid" => "self.invoiceid" },
128
  { cascade_copy => 0, cascade_delete => 0 },
129
);
130
116
=head2 aqorders
131
=head2 aqorders
117
132
118
Type: has_many
133
Type: has_many
Lines 184-191 __PACKAGE__->belongs_to( Link Here
184
);
199
);
185
200
186
201
187
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:53
202
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-07-16 13:50:45
188
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:SAUxWSdpMJK4atxhfgCAGg
203
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mpdxTbkz/8WInG5Wp4q7Ug
189
204
190
205
191
# You can replace this text with custom content, and it will be preserved on regeneration
206
# You can replace this text with custom content, and it will be preserved on regeneration
(-)a/acqui/invoice.pl (-5 / +5 lines)
Lines 38-44 use Koha::Acquisition::Booksellers; Link Here
38
use Koha::Acquisition::Currencies;
38
use Koha::Acquisition::Currencies;
39
use Koha::DateUtils;
39
use Koha::DateUtils;
40
use Koha::Misc::Files;
40
use Koha::Misc::Files;
41
use Koha::InvoiceAdjustments;
41
use Koha::Acquisition::Invoice::Adjustments;
42
42
43
my $input = new CGI;
43
my $input = new CGI;
44
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
44
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
Lines 111-117 elsif ( $op && $op eq 'delete' ) { Link Here
111
}
111
}
112
elsif ( $op && $op eq 'del_adj' ) {
112
elsif ( $op && $op eq 'del_adj' ) {
113
    my $adjustment_id  = $input->param('adjustment_id');
113
    my $adjustment_id  = $input->param('adjustment_id');
114
    my $del_adj = Koha::InvoiceAdjustments->find( $adjustment_id );
114
    my $del_adj = Koha::Acquisition::Invoice::Adjustments->find( $adjustment_id );
115
    $del_adj->delete() if ($del_adj);
115
    $del_adj->delete() if ($del_adj);
116
}
116
}
117
elsif ( $op && $op eq 'mod_adj' ) {
117
elsif ( $op && $op eq 'mod_adj' ) {
Lines 126-132 elsif ( $op && $op eq 'mod_adj' ) { Link Here
126
    for( my $i=0; $i < scalar @adjustment; $i++ ){
126
    for( my $i=0; $i < scalar @adjustment; $i++ ){
127
        if( $adjustment_id[$i] eq 'new' ){
127
        if( $adjustment_id[$i] eq 'new' ){
128
            next unless ( $adjustment[$i] || $reason[$i] );
128
            next unless ( $adjustment[$i] || $reason[$i] );
129
            my $new_adj = Koha::InvoiceAdjustment->new({
129
            my $new_adj = Koha::Acquisition::Invoice::Adjustment->new({
130
                invoiceid => $invoiceid,
130
                invoiceid => $invoiceid,
131
                adjustment => $adjustment[$i],
131
                adjustment => $adjustment[$i],
132
                reason => $reason[$i],
132
                reason => $reason[$i],
Lines 137-143 elsif ( $op && $op eq 'mod_adj' ) { Link Here
137
            $new_adj->store();
137
            $new_adj->store();
138
        }
138
        }
139
        else {
139
        else {
140
            my $old_adj = Koha::InvoiceAdjustments->find( $adjustment_id[$i] );
140
            my $old_adj = Koha::Acquisition::Invoice::Adjustments->find( $adjustment_id[$i] );
141
            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] ){
141
            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] ){
142
                $old_adj->timestamp(undef);
142
                $old_adj->timestamp(undef);
143
                $old_adj->adjustment( $adjustment[$i] );
143
                $old_adj->adjustment( $adjustment[$i] );
Lines 201-207 foreach my $budget (@$budgets) { Link Here
201
    push @budgets_loop, \%line;
201
    push @budgets_loop, \%line;
202
}
202
}
203
203
204
my $adjustments = Koha::InvoiceAdjustments->search({ invoiceid => $details->{'invoiceid'} });
204
my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({ invoiceid => $details->{'invoiceid'} });
205
if ( $adjustments ) { $template->param( adjustments => $adjustments ); }
205
if ( $adjustments ) { $template->param( adjustments => $adjustments ); }
206
206
207
$template->param(
207
$template->param(
(-)a/acqui/ordered.pl (-2 / +2 lines)
Lines 32-38 use Modern::Perl; Link Here
32
use CGI qw ( -utf8 );
32
use CGI qw ( -utf8 );
33
use C4::Auth;
33
use C4::Auth;
34
use C4::Output;
34
use C4::Output;
35
use Koha::InvoiceAdjustments;
35
use Koha::Acquisition::Invoice::Adjustments;
36
36
37
my $dbh     = C4::Context->dbh;
37
my $dbh     = C4::Context->dbh;
38
my $input   = new CGI;
38
my $input   = new CGI;
Lines 97-103 while ( my $data = $sth->fetchrow_hashref ) { Link Here
97
    }
97
    }
98
}
98
}
99
99
100
my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $fund_id, closedate => undef, encumber_open => 1 }, { join => 'invoiceid' } );
100
my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $fund_id, closedate => undef, encumber_open => 1 }, { join => 'invoiceid' } );
101
while ( my $adj = $adjustments->next ){
101
while ( my $adj = $adjustments->next ){
102
    $total += $adj->adjustment;
102
    $total += $adj->adjustment;
103
}
103
}
(-)a/acqui/spent.pl (-2 / +2 lines)
Lines 34-40 use C4::Auth; Link Here
34
use C4::Output;
34
use C4::Output;
35
use Modern::Perl;
35
use Modern::Perl;
36
use CGI qw ( -utf8 );
36
use CGI qw ( -utf8 );
37
use Koha::InvoiceAdjustments;
37
use Koha::Acquisition::Invoice::Adjustments;
38
38
39
my $dbh      = C4::Context->dbh;
39
my $dbh      = C4::Context->dbh;
40
my $input    = new CGI;
40
my $input    = new CGI;
Lines 119-125 while (my $data = $sth->fetchrow_hashref) { Link Here
119
}
119
}
120
$sth->finish;
120
$sth->finish;
121
121
122
my $adjustments = Koha::InvoiceAdjustments->search({budget_id => $bookfund, closedate => { '!=' => undef } }, { join => 'invoiceid' } );
122
my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({budget_id => $bookfund, closedate => { '!=' => undef } }, { join => 'invoiceid' } );
123
while ( my $adj = $adjustments->next ){
123
while ( my $adj = $adjustments->next ){
124
    $total += $adj->adjustment;
124
    $total += $adj->adjustment;
125
}
125
}
(-)a/installer/data/mysql/atomicupdate/bug_19166.perl (-3 / +3 lines)
Lines 1-7 Link Here
1
$DBversion = 'XXX';  # will be replaced by the RM
1
$DBversion = 'XXX';  # will be replaced by the RM
2
if( CheckVersion( $DBversion ) ) {
2
if( CheckVersion( $DBversion ) ) {
3
    $dbh->do( "
3
    $dbh->do( "
4
        CREATE TABLE IF NOT EXISTS invoice_adjustments (
4
        CREATE TABLE IF NOT EXISTS aqinvoice_adjustments (
5
            adjustment_id int(11) NOT NULL AUTO_INCREMENT,
5
            adjustment_id int(11) NOT NULL AUTO_INCREMENT,
6
            invoiceid int(11) NOT NULL,
6
            invoiceid int(11) NOT NULL,
7
            adjustment decimal(28,6),
7
            adjustment decimal(28,6),
Lines 11-18 if( CheckVersion( $DBversion ) ) { Link Here
11
            encumber_open smallint(1) NOT NULL default 1,
11
            encumber_open smallint(1) NOT NULL default 1,
12
            timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
12
            timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
13
            PRIMARY KEY (adjustment_id),
13
            PRIMARY KEY (adjustment_id),
14
            CONSTRAINT invoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
14
            CONSTRAINT aqinvoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
15
            CONSTRAINT invoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
15
            CONSTRAINT aqinvoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
16
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
16
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
17
        " );
17
        " );
18
    $dbh->do("INSERT IGNORE INTO authorised_value_categories (category_name) VALUES ('ADJ_REASON')");
18
    $dbh->do("INSERT IGNORE INTO authorised_value_categories (category_name) VALUES ('ADJ_REASON')");
(-)a/installer/data/mysql/kohastructure.sql (-19 / +19 lines)
Lines 824-848 CREATE TABLE `import_items` ( Link Here
824
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
824
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
825
825
826
--
826
--
827
-- Table structure for table 'invoice_adjustments'
828
--
829
830
DROP TABLE IF EXISTS invoice_adjustments;
831
CREATE TABLE IF NOT EXISTS invoice_adjustments (
832
    adjustment_id int(11) NOT NULL AUTO_INCREMENT, -- primary key for adjustments
833
    invoiceid int(11) NOT NULL, -- foreign key to link an adjustment to an invoice
834
    adjustment decimal(28,6), -- amount of adjustment
835
    reason varchar(80) default NULL, -- reason for adjustment defined by authorised values in ADJ_REASON category
836
    note mediumtext default NULL, -- text to explain adjustment
837
    budget_id int(11) default NULL, -- optional link to budget to apply adjustment to
838
    encumber_open smallint(1) NOT NULL default 1, -- whether or not to encumber the finds when invoice is still open, 1 = yes, 0 = no
839
    timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- timestamp  of last adjustment to adjustment
840
    PRIMARY KEY (adjustment_id),
841
    CONSTRAINT invoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
842
    CONSTRAINT invoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
843
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
844
845
--
846
-- Table structure for table `issuingrules`
827
-- Table structure for table `issuingrules`
847
--
828
--
848
829
Lines 3160-3165 CREATE TABLE aqinvoices ( Link Here
3160
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
3141
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
3161
3142
3162
--
3143
--
3144
-- Table structure for table 'aqinvoice_adjustments'
3145
--
3146
3147
DROP TABLE IF EXISTS aqinvoice_adjustments;
3148
CREATE TABLE IF NOT EXISTS aqinvoice_adjustments (
3149
    adjustment_id int(11) NOT NULL AUTO_INCREMENT, -- primary key for adjustments
3150
    invoiceid int(11) NOT NULL, -- foreign key to link an adjustment to an invoice
3151
    adjustment decimal(28,6), -- amount of adjustment
3152
    reason varchar(80) default NULL, -- reason for adjustment defined by authorised values in ADJ_REASON category
3153
    note mediumtext default NULL, -- text to explain adjustment
3154
    budget_id int(11) default NULL, -- optional link to budget to apply adjustment to
3155
    encumber_open smallint(1) NOT NULL default 1, -- whether or not to encumber the finds when invoice is still open, 1 = yes, 0 = no
3156
    timestamp timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- timestamp  of last adjustment to adjustment
3157
    PRIMARY KEY (adjustment_id),
3158
    CONSTRAINT aqinvoice_adjustments_fk_invoiceid FOREIGN KEY (invoiceid) REFERENCES aqinvoices (invoiceid) ON DELETE CASCADE ON UPDATE CASCADE,
3159
    CONSTRAINT aqinvoice_adjustments_fk_budget_id FOREIGN KEY (budget_id) REFERENCES aqbudgets (budget_id) ON DELETE SET NULL ON UPDATE CASCADE
3160
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
3161
3162
--
3163
-- Table structure for table `aqorders`
3163
-- Table structure for table `aqorders`
3164
--
3164
--
3165
3165
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt (-1 / +1 lines)
Lines 92-98 Link Here
92
          <form action="/cgi-bin/koha/acqui/invoice.pl" method="post" class="validated">
92
          <form action="/cgi-bin/koha/acqui/invoice.pl" method="post" class="validated">
93
              <fieldset class="rows">
93
              <fieldset class="rows">
94
                  <input type="hidden" name="invoiceid" value="[% invoiceid %]" />
94
                  <input type="hidden" name="invoiceid" value="[% invoiceid %]" />
95
                  [% IF (adjustments.count > 0) %]
95
                  [% IF (adjustments && adjustments.count > 0) %]
96
                      <table id="invoice_adj_table">
96
                      <table id="invoice_adj_table">
97
                          <tr>
97
                          <tr>
98
                             <th>Id</th>
98
                             <th>Id</th>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/ordered.tt (-1 / +1 lines)
Lines 73-79 Link Here
73
[% END %]
73
[% END %]
74
    </tbody>
74
    </tbody>
75
    <tfoot>
75
    <tfoot>
76
    [% IF ( adjustments.count > 0 ) %]
76
    [% IF ( adjustments && adjustments.count > 0 ) %]
77
            [% FOREACH adjustment IN adjustments %]
77
            [% FOREACH adjustment IN adjustments %]
78
                <tr>
78
                <tr>
79
                    <td></td>
79
                    <td></td>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/spent.tt (-2 / +2 lines)
Lines 77-83 Link Here
77
    [% END %]
77
    [% END %]
78
78
79
    <tfoot>
79
    <tfoot>
80
        [% IF shipmentcosts.size || ( adjustments.count > 0 ) %]
80
        [% IF shipmentcosts.size || ( adjustments && adjustments.count > 0 ) %]
81
            <tr valign="top">
81
            <tr valign="top">
82
                <td colspan="9"> Sub total </td>
82
                <td colspan="9"> Sub total </td>
83
                <td class="data"> [% subtotal %] </td>
83
                <td class="data"> [% subtotal %] </td>
Lines 92-98 Link Here
92
                </tr>
92
                </tr>
93
            [% END %]
93
            [% END %]
94
        [% END %]
94
        [% END %]
95
        [% IF ( adjustments.count > 0 ) %]
95
        [% IF ( adjustments && adjustments.count > 0 ) %]
96
            [% FOREACH adjustment IN adjustments %]
96
            [% FOREACH adjustment IN adjustments %]
97
                <tr>
97
                <tr>
98
                    <td></td>
98
                    <td></td>
(-)a/t/db_dependent/Budgets.t (-7 / +6 lines)
Lines 821-827 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
821
    is( $ordered, 0, "New budget, no orders/invoices, should be nothing ordered");
821
    is( $ordered, 0, "New budget, no orders/invoices, should be nothing ordered");
822
822
823
    my $inv_adj_1 = $builder->build({
823
    my $inv_adj_1 = $builder->build({
824
        source => 'InvoiceAdjustment',
824
        source => 'AqinvoiceAdjustment',
825
        value  => {
825
        value  => {
826
            invoiceid     => $invoice->{invoiceid},
826
            invoiceid     => $invoice->{invoiceid},
827
            adjustment    => 3,
827
            adjustment    => 3,
Lines 836-842 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
836
    is( $ordered, 0, "After adding invoice adjustment on open invoice not encumbered, should be nothing ordered");
836
    is( $ordered, 0, "After adding invoice adjustment on open invoice not encumbered, should be nothing ordered");
837
837
838
    my $inv_adj_2 = $builder->build({
838
    my $inv_adj_2 = $builder->build({
839
        source => 'InvoiceAdjustment',
839
        source => 'AqinvoiceAdjustment',
840
        value  => {
840
        value  => {
841
            invoiceid     => $invoice->{invoiceid},
841
            invoiceid     => $invoice->{invoiceid},
842
            adjustment    => 3,
842
            adjustment    => 3,
Lines 857-863 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
857
        }
857
        }
858
    });
858
    });
859
    my $inv_adj_3 = $builder->build({
859
    my $inv_adj_3 = $builder->build({
860
        source => 'InvoiceAdjustment',
860
        source => 'AqinvoiceAdjustment',
861
        value  => {
861
        value  => {
862
            invoiceid     => $invoice_2->{invoiceid},
862
            invoiceid     => $invoice_2->{invoiceid},
863
            adjustment    => 3,
863
            adjustment    => 3,
Lines 866-872 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
866
        }
866
        }
867
    });
867
    });
868
    my $inv_adj_4 = $builder->build({
868
    my $inv_adj_4 = $builder->build({
869
        source => 'InvoiceAdjustment',
869
        source => 'AqinvoiceAdjustment',
870
        value  => {
870
        value  => {
871
            invoiceid     => $invoice_2->{invoiceid},
871
            invoiceid     => $invoice_2->{invoiceid},
872
            adjustment    => 3,
872
            adjustment    => 3,
Lines 887-893 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
887
        }
887
        }
888
    });
888
    });
889
    my $inv_adj_5 = $builder->build({
889
    my $inv_adj_5 = $builder->build({
890
        source => 'InvoiceAdjustment',
890
        source => 'AqinvoiceAdjustment',
891
        value  => {
891
        value  => {
892
            invoiceid     => $invoice->{invoiceid},
892
            invoiceid     => $invoice->{invoiceid},
893
            adjustment    => 3,
893
            adjustment    => 3,
Lines 896-902 subtest 'GetBudgetSpent and GetBudgetOrdered' => sub { Link Here
896
        }
896
        }
897
    });
897
    });
898
    my $inv_adj_6 = $builder->build({
898
    my $inv_adj_6 = $builder->build({
899
        source => 'InvoiceAdjustment',
899
        source => 'AqinvoiceAdjustment',
900
        value  => {
900
        value  => {
901
            invoiceid     => $invoice_2->{invoiceid},
901
            invoiceid     => $invoice_2->{invoiceid},
902
            adjustment    => 3,
902
            adjustment    => 3,
903
- 

Return to bug 19166