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

(-)a/t/db_dependent/Budgets.t (-2 / +101 lines)
Lines 1-6 Link Here
1
#!/usr/bin/perl
1
#!/usr/bin/perl
2
use Modern::Perl;
2
use Modern::Perl;
3
use Test::More tests => 154;
3
use Test::More tests => 155;
4
use JSON;
4
use JSON;
5
5
6
BEGIN {
6
BEGIN {
Lines 30-35 my $schema = Koha::Database->new->schema; Link Here
30
$schema->storage->txn_begin;
30
$schema->storage->txn_begin;
31
my $builder = t::lib::TestBuilder->new;
31
my $builder = t::lib::TestBuilder->new;
32
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
33
$dbh->do(q|DELETE FROM vendor_edi_accounts|);
33
$dbh->do(q|DELETE FROM aqbudgetperiods|);
34
$dbh->do(q|DELETE FROM aqbudgetperiods|);
34
$dbh->do(q|DELETE FROM aqbudgets|);
35
$dbh->do(q|DELETE FROM aqbudgets|);
35
36
Lines 1208-1213 subtest 'GetBudgetSpent GetBudgetOrdered GetBudgetsPlanCell tests' => sub { Link Here
1208
    is ( @$gbh[0]->{budget_spent}+0, 78.8, "We expect this to be a rounded order cost * quantity");
1209
    is ( @$gbh[0]->{budget_spent}+0, 78.8, "We expect this to be a rounded order cost * quantity");
1209
    is ( @$gbh[0]->{budget_ordered}, 78.8, "We expect this to be a rounded order cost * quantity");
1210
    is ( @$gbh[0]->{budget_ordered}, 78.8, "We expect this to be a rounded order cost * quantity");
1210
1211
1212
    $schema->storage->txn_rollback;
1213
};
1214
1215
1216
subtest 'FieldsForCalculatingFundValues tests' => sub {
1217
    plan tests => 10;
1218
1219
    $schema->storage->txn_begin;
1220
    
1221
    # Test FieldsForCalculatingFundValues()
1222
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '1');
1223
    my ( $unitprice_field, $ecost_field ) = C4::Budgets->FieldsForCalculatingFundValues();
1224
    is ( $unitprice_field, 'unitprice_tax_included', "We expect this to be unitprice_tax_included" );
1225
    is ( $ecost_field, 'ecost_tax_included', "We expect this to be ecost_tax_included" );
1226
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '0');
1227
    ( $unitprice_field, $ecost_field ) = C4::Budgets->FieldsForCalculatingFundValues();
1228
    is ( $unitprice_field, 'unitprice_tax_excluded', "We expect this to be unitprice_tax_excluded" );
1229
    is ( $ecost_field, 'ecost_tax_excluded', "We expect this to be ecost_tax_excluded" );
1230
1231
    # Build an order
1232
    t::lib::Mocks::mock_preference('OrderPriceRounding','nearest_cent');
1233
    my $item_1         = $builder->build_sample_item;
1234
    my $basket   = $builder->build({ source => 'Aqbasket', value => { is_standing => 0 } });
1235
    my $invoice  = $builder->build({ source => 'Aqinvoice'});
1236
    my $currency = $builder->build({ source => 'Currency', value => { active => 1, archived => 0, symbol => 'F', rate => 2, isocode => undef, currency => 'BOO' }  });
1237
    my $vendor   = $builder->build({ source => 'Aqbookseller',value => { listincgst => 0, listprice => $currency->{currency}, invoiceprice => $currency->{currency} } });
1238
    my $budget_period = $builder->build({ source => 'Aqbudgetperiod' });
1239
    my $budget = $builder->build({ source => 'Aqbudget', value => {
1240
            budget_period_id => $budget_period->{budget_period_id},
1241
            budget_parent_id => undef,
1242
        }
1243
    });
1244
    my $orderinfo = {
1245
        basketno                => $basket->{basketno},
1246
        booksellerid            => $vendor->{id},
1247
        rrp                     => 16.99,
1248
        discount                => 0,
1249
        ecost                   => 16.91,
1250
        biblionumber            => $item_1->biblionumber,
1251
        currency                => $currency->{currency},
1252
        tax_rate_on_ordering    => 0.15,
1253
        tax_value_on_ordering   => 0,
1254
        tax_rate_on_receiving   => 0.15,
1255
        tax_value_on_receiving  => 0,
1256
        quantity                => 8,
1257
        quantityreceived        => 0,
1258
        datecancellationprinted => undef,
1259
        datereceived            => undef,
1260
        budget_id               => $budget->{budget_id},
1261
    };
1262
1263
    # Do some maths
1264
    my $ordered_order = Koha::Acquisition::Order->new($orderinfo);
1265
    $ordered_order->populate_with_prices_for_ordering();
1266
    my $ordered_orderinfo = $ordered_order->unblessed();
1267
1268
    # Place the order
1269
    $ordered_order = $builder->build({ source => 'Aqorder', value => $ordered_orderinfo });
1270
1271
    # Check order values with different CalculateFundValuesIncludingTax options
1272
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '0');
1273
    my $budget_ordered = GetBudgetOrdered( $ordered_order->{budget_id} );
1274
    is ( $budget_ordered, 135.92, "We expect this to be the tax exclusive value" );
1275
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '1');
1276
    $budget_ordered = GetBudgetOrdered( $ordered_order->{budget_id} );
1277
    is ( $budget_ordered, 156.32, "We expect this to be the tax inclusive value" );
1278
1279
    # Receive the order
1280
    $orderinfo->{unitprice} = 9.85; #we are paying what we expected
1281
1282
    # Do some maths
1283
    my $spent_order = Koha::Acquisition::Order->new($orderinfo);
1284
    $spent_order->populate_with_prices_for_receiving();
1285
    my $spent_orderinfo = $spent_order->unblessed();
1286
    my $received_order = $builder->build({ source => 'Aqorder', value => $spent_orderinfo });
1287
1288
    # Receive a copy of the order
1289
    ModReceiveOrder({
1290
            biblionumber => $spent_orderinfo->{biblionumber},
1291
            order => $received_order,
1292
            invoice => $invoice,
1293
            quantityreceived => 8,
1294
            budget_id => $spent_orderinfo->{budget_id},
1295
            received_items => [],
1296
    });
1297
1298
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '0');
1299
    my $spent_spent = GetBudgetSpent( $spent_orderinfo->{budget_id} );
1300
    is ( $spent_spent, 78.8, "We expect this to be the tax exclusive value" );
1301
    my $gbh = GetBudgetHierarchy($budget->{budget_period_id});
1302
    is ( @$gbh[0]->{budget_spent}, 78.8, "We expect this value to be the tax exclusive value");
1303
1304
    t::lib::Mocks::mock_preference('CalculateFundValuesIncludingTax', '1');
1305
    $spent_spent = GetBudgetSpent( $spent_orderinfo->{budget_id} );
1306
    is ( $spent_spent, 90.64 , "We expect this to be the tax inclusive value" );
1307
    $gbh = GetBudgetHierarchy($budget->{budget_period_id});
1308
    is ( @$gbh[0]->{budget_spent}, 90.64, "We expect this value to be the tax inclusive value");
1309
1310
    $schema->storage->txn_rollback;
1211
};
1311
};
1212
1312
1213
sub _get_dependencies {
1313
sub _get_dependencies {
1214
- 

Return to bug 31631