#!/usr/bin/perl
use Modern::Perl;
-use Test::More tests => 144;
+use Test::More tests => 145;
BEGIN {
use_ok('C4::Budgets')
use C4::Context;
use C4::Biblio;
use C4::Acquisition;
-use C4::Members qw( AddMember );
use Koha::Acquisition::Booksellers;
use Koha::Acquisition::Orders;
+use Koha::Patrons;
use t::lib::TestBuilder;
ModReceiveOrder({
bibionumber => $biblio,
- order => $order,
+ order => $order->unblessed,
budget_id => $fund,
quantityreceived => 2,
invoice => $test_invoice,
} );
is ( GetBudgetSpent( $fund ), 6, "total shipping cost is 6");
-is ( GetBudgetOrdered( $fund ), '20.000000', "total ordered price is 20");
+is ( GetBudgetOrdered( $fund ), '20', "total ordered price is 20");
# CloneBudgetPeriod
my $patron_category = $builder->build({ source => 'Category' });
my $branchcode = $library->{branchcode};
-my $john_doe = C4::Members::AddMember(
+my $john_doe = Koha::Patron->new({
cardnumber => '123456',
firstname => 'John',
surname => 'Doe',
dateofbirth => '',
dateexpiry => '9999-12-31',
userid => 'john.doe'
-);
+})->store->borrowernumber;
C4::Budgets::SetOwnerToFundHierarchy( $budget_id1, $john_doe );
is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
is( C4::Budgets::GetBudget($budget_id21)->{budget_owner_id},
undef, "SetOwnerToFundHierarchy should not have set an owner for budget 21 ($budget_id21)" );
-my $jane_doe = C4::Members::AddMember(
+my $jane_doe = Koha::Patron->new({
cardnumber => '789012',
firstname => 'Jane',
surname => 'Doe',
dateofbirth => '',
dateexpiry => '9999-12-31',
userid => 'jane.doe'
-);
+})->store->borrowernumber;
C4::Budgets::SetOwnerToFundHierarchy( $budget_id11, $jane_doe );
is( C4::Budgets::GetBudget($budget_id1)->{budget_owner_id},
# /Test GetBudgetAuthCats
+subtest 'GetBudgetSpent and GetBudgetOrdered' => sub {
+ plan tests => 10;
+
+ my $budget = $builder->build({
+ source => 'Aqbudget',
+ value => {
+ budget_amount => 1000,
+ }
+ });
+ my $invoice = $builder->build({
+ source => 'Aqinvoice',
+ value => {
+ closedate => undef,
+ }
+ });
+
+ my $spent = GetBudgetSpent( $budget->{budget_id} );
+ my $ordered = GetBudgetOrdered( $budget->{budget_id} );
+
+ is( $spent, 0, "New budget, no orders/invoices, should be nothing spent");
+ is( $ordered, 0, "New budget, no orders/invoices, should be nothing ordered");
+
+ my $inv_adj_1 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice->{invoiceid},
+ adjustment => 3,
+ encumber_open => 0,
+ budget_id => $budget->{budget_id},
+ }
+ });
+
+ $spent = GetBudgetSpent( $budget->{budget_id} );
+ $ordered = GetBudgetOrdered( $budget->{budget_id} );
+ is( $spent, 0, "After adding invoice adjustment on open invoice, should be nothing spent");
+ is( $ordered, 0, "After adding invoice adjustment on open invoice not encumbered, should be nothing ordered");
+
+ my $inv_adj_2 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice->{invoiceid},
+ adjustment => 3,
+ encumber_open => 1,
+ budget_id => $budget->{budget_id},
+ }
+ });
+
+ $spent = GetBudgetSpent( $budget->{budget_id} );
+ $ordered = GetBudgetOrdered( $budget->{budget_id} );
+ is( $spent, 0, "After adding invoice adjustment on open invoice, should be nothing spent");
+ is( $ordered, 3, "After adding invoice adjustment on open invoice encumbered, should be 3 ordered");
+
+ my $invoice_2 = $builder->build({
+ source => 'Aqinvoice',
+ value => {
+ closedate => '2017-07-01',
+ }
+ });
+ my $inv_adj_3 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice_2->{invoiceid},
+ adjustment => 3,
+ encumber_open => 0,
+ budget_id => $budget->{budget_id},
+ }
+ });
+ my $inv_adj_4 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice_2->{invoiceid},
+ adjustment => 3,
+ encumber_open => 1,
+ budget_id => $budget->{budget_id},
+ }
+ });
+
+ $spent = GetBudgetSpent( $budget->{budget_id} );
+ $ordered = GetBudgetOrdered( $budget->{budget_id} );
+ is( $spent, 6, "After adding invoice adjustment on closed invoice, should be 6 spent, encumber has no affect once closed");
+ is( $ordered, 3, "After adding invoice adjustment on closed invoice, should still be 3 ordered");
+
+ my $budget_2 = $builder->build({
+ source => 'Aqbudget',
+ value => {
+ budget_amount => 1000,
+ }
+ });
+ my $inv_adj_5 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice->{invoiceid},
+ adjustment => 3,
+ encumber_open => 1,
+ budget_id => $budget_2->{budget_id},
+ }
+ });
+ my $inv_adj_6 = $builder->build({
+ source => 'AqinvoiceAdjustment',
+ value => {
+ invoiceid => $invoice_2->{invoiceid},
+ adjustment => 3,
+ encumber_open => 1,
+ budget_id => $budget_2->{budget_id},
+ }
+ });
+
+ $spent = GetBudgetSpent( $budget->{budget_id} );
+ $ordered = GetBudgetOrdered( $budget->{budget_id} );
+ is( $spent, 6, "After adding invoice adjustment on a different budget should be 6 spent/budget unaffected");
+ is( $ordered, 3, "After adding invoice adjustment on a different budget, should still be 3 ordered/budget unaffected");
+
+};
+
sub _get_dependencies {
my ($budget_hierarchy) = @_;
my $graph;