|
Lines 24-29
use Test::MockModule;
Link Here
|
| 24 |
use Test::Exception; |
24 |
use Test::Exception; |
| 25 |
|
25 |
|
| 26 |
use Koha::Account; |
26 |
use Koha::Account; |
|
|
27 |
use Koha::Account::DebitTypes; |
| 27 |
use Koha::Account::Lines; |
28 |
use Koha::Account::Lines; |
| 28 |
use Koha::Account::Offsets; |
29 |
use Koha::Account::Offsets; |
| 29 |
|
30 |
|
|
Lines 53-59
subtest 'new' => sub {
Link Here
|
| 53 |
|
54 |
|
| 54 |
subtest 'outstanding_debits() tests' => sub { |
55 |
subtest 'outstanding_debits() tests' => sub { |
| 55 |
|
56 |
|
| 56 |
plan tests => 22; |
57 |
plan tests => 23; |
| 57 |
|
58 |
|
| 58 |
$schema->storage->txn_begin; |
59 |
$schema->storage->txn_begin; |
| 59 |
|
60 |
|
|
Lines 62-70
subtest 'outstanding_debits() tests' => sub {
Link Here
|
| 62 |
|
63 |
|
| 63 |
my @generated_lines; |
64 |
my @generated_lines; |
| 64 |
push @generated_lines, $account->add_debit({ amount => 1, interface => 'commandline', type => 'OVERDUE' }); |
65 |
push @generated_lines, $account->add_debit({ amount => 1, interface => 'commandline', type => 'OVERDUE' }); |
| 65 |
push @generated_lines, $account->add_debit({ amount => 2, interface => 'commandline', type => 'OVERDUE' }); |
66 |
push @generated_lines, $account->add_debit({ amount => 2, interface => 'commandline', type => 'RESERVE' }); |
| 66 |
push @generated_lines, $account->add_debit({ amount => 3, interface => 'commandline', type => 'OVERDUE' }); |
67 |
push @generated_lines, $account->add_debit({ amount => 3, interface => 'commandline', type => 'RENT' }); |
| 67 |
push @generated_lines, $account->add_debit({ amount => 4, interface => 'commandline', type => 'OVERDUE' }); |
68 |
Koha::Account::DebitTypes->find_or_create( |
|
|
69 |
{ |
| 70 |
code => 'COPY', |
| 71 |
description => 'Fee for copie', |
| 72 |
is_system => 0 |
| 73 |
} |
| 74 |
)->store; |
| 75 |
push @generated_lines, $account->add_debit({ amount => 4, interface => 'commandline', type => 'COPY' }); |
| 68 |
|
76 |
|
| 69 |
my $lines = $account->outstanding_debits(); |
77 |
my $lines = $account->outstanding_debits(); |
| 70 |
my @lines_arr = $account->outstanding_debits(); |
78 |
my @lines_arr = $account->outstanding_debits(); |
|
Lines 142-147
subtest 'outstanding_debits() tests' => sub {
Link Here
|
| 142 |
is( $lines->count, 0, 'No credits are confused with debits because of the amountoutstanding value' ); |
150 |
is( $lines->count, 0, 'No credits are confused with debits because of the amountoutstanding value' ); |
| 143 |
|
151 |
|
| 144 |
$schema->storage->txn_rollback; |
152 |
$schema->storage->txn_rollback; |
|
|
153 |
|
| 154 |
subtest 'filter_by' => sub { |
| 155 |
plan tests => 21; |
| 156 |
$schema->storage->txn_begin; |
| 157 |
|
| 158 |
my $patron = $builder->build_object({ class => 'Koha::Patrons' }); |
| 159 |
my $account = $patron->account; |
| 160 |
|
| 161 |
my $due = 1; |
| 162 |
my $res = 3; |
| 163 |
my $rent = 5; |
| 164 |
my $manual = 7; |
| 165 |
|
| 166 |
my @generated_lines; |
| 167 |
push @generated_lines, $account->add_debit({ amount => $due, interface => 'commandline', type => 'OVERDUE' }); |
| 168 |
push @generated_lines, $account->add_debit({ amount => $res, interface => 'commandline', type => 'RESERVE' }); |
| 169 |
push @generated_lines, $account->add_debit({ amount => $rent, interface => 'commandline', type => 'RENT' }); |
| 170 |
Koha::Account::DebitTypes->find_or_create( |
| 171 |
{ |
| 172 |
code => 'COPY', |
| 173 |
description => 'Fee for copie', |
| 174 |
is_system => 0 |
| 175 |
} |
| 176 |
)->store; |
| 177 |
push @generated_lines, $account->add_debit({ amount => $manual, interface => 'commandline', type => 'COPY' }); |
| 178 |
|
| 179 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 0 ); |
| 180 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 ); |
| 181 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 0 ); |
| 182 |
my ( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 183 |
my $other_charges = $total - $non_issues_charges; |
| 184 |
is( |
| 185 |
$account->balance, |
| 186 |
$due + $res + $rent + $manual, |
| 187 |
'Total charges should be Due + Res + Rent + Manual' |
| 188 |
); |
| 189 |
is( $non_issues_charges, $due, |
| 190 |
'If 0|0|0 there should only have been overdue charges' ); |
| 191 |
is( $other_charges, 15, 'If 0|0|0 there should only have other charges' ); |
| 192 |
|
| 193 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 0 ); |
| 194 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 ); |
| 195 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 1 ); |
| 196 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 197 |
$other_charges = $total - $non_issues_charges; |
| 198 |
is( |
| 199 |
$total, |
| 200 |
$due + $res + $rent + $manual, |
| 201 |
'Total charges should be Res + Rent + Manual' |
| 202 |
); |
| 203 |
is( $non_issues_charges, $due + $manual, |
| 204 |
'If 0|0|1 Only Overdue + Manual should be a non issue charge' ); |
| 205 |
is( |
| 206 |
$other_charges, |
| 207 |
$res + $rent, |
| 208 |
'If 0|0|1 Res + Rent should be other charges' |
| 209 |
); |
| 210 |
|
| 211 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 0 ); |
| 212 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 ); |
| 213 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 0 ); |
| 214 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 215 |
$other_charges = $total - $non_issues_charges; |
| 216 |
is( |
| 217 |
$total, |
| 218 |
$due + $res + $rent + $manual, |
| 219 |
'Total charges should be Res + Rent + Manual' |
| 220 |
); |
| 221 |
is( $non_issues_charges, $due + $rent, |
| 222 |
'If 0|1|0 Only Overdue + Rental should be a non issue charge' ); |
| 223 |
is( |
| 224 |
$other_charges, |
| 225 |
$res + $manual, |
| 226 |
'If 0|1|0 Rent + Manual should be other charges' |
| 227 |
); |
| 228 |
|
| 229 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 0 ); |
| 230 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 ); |
| 231 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 1 ); |
| 232 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 233 |
$other_charges = $total - $non_issues_charges; |
| 234 |
is( |
| 235 |
$total, |
| 236 |
$due + $res + $rent + $manual, |
| 237 |
'Total charges should be Res + Rent + Manual' |
| 238 |
); |
| 239 |
is( |
| 240 |
$non_issues_charges, |
| 241 |
$due + $rent + $manual, |
| 242 |
'If 0|1|1 Due + Rent + Manual should be non issues charges' |
| 243 |
); |
| 244 |
is( $other_charges, $res, 'If 0|1|1 there should only have other charges' ); |
| 245 |
|
| 246 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 1 ); |
| 247 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 0 ); |
| 248 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 0 ); |
| 249 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 250 |
$other_charges = $total - $non_issues_charges; |
| 251 |
is( |
| 252 |
$total, |
| 253 |
$due + $res + $rent + $manual, |
| 254 |
'Total charges should be Res + Rent + Manual' |
| 255 |
); |
| 256 |
is( $non_issues_charges, $due + $res, |
| 257 |
'If 1|0|0 Only Overdue + Res should be non issues charges' ); |
| 258 |
is( |
| 259 |
$other_charges, |
| 260 |
$rent + $manual, |
| 261 |
'If 1|0|0 Rent + Manual should be other charges' |
| 262 |
); |
| 263 |
|
| 264 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 1 ); |
| 265 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 ); |
| 266 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 0 ); |
| 267 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 268 |
$other_charges = $total - $non_issues_charges; |
| 269 |
is( |
| 270 |
$total, |
| 271 |
$due + $res + $rent + $manual, |
| 272 |
'Total charges should be Res + Rent + Manual' |
| 273 |
); |
| 274 |
is( |
| 275 |
$non_issues_charges, |
| 276 |
$due + $res + $rent, |
| 277 |
'If 1|1|0 Overdue + Res + Rent should be non issues charges' |
| 278 |
); |
| 279 |
is( $other_charges, $manual, |
| 280 |
'If 1|1|0 Only Manual should be other charges' ); |
| 281 |
|
| 282 |
t::lib::Mocks::mock_preference( 'HoldsInNoissuesCharge', 1 ); |
| 283 |
t::lib::Mocks::mock_preference( 'RentalsInNoissuesCharge', 1 ); |
| 284 |
t::lib::Mocks::mock_preference( 'ManInvInNoissuesCharge', 1 ); |
| 285 |
( $total, $non_issues_charges ) = ( $account->balance, $account->outstanding_debits({filter_by => 'blocks_issue'})->total_outstanding ); |
| 286 |
$other_charges = $total - $non_issues_charges; |
| 287 |
is( |
| 288 |
$total, |
| 289 |
$due + $res + $rent + $manual, |
| 290 |
'Total charges should be Res + Rent + Manual' |
| 291 |
); |
| 292 |
is( |
| 293 |
$non_issues_charges, |
| 294 |
$due + $res + $rent + $manual, |
| 295 |
'If 1|1|1 Res + Rent + Manual should be non issues charges' |
| 296 |
); |
| 297 |
is( $other_charges, 0, 'If 1|1|1 there should not have any other charges' ); |
| 298 |
|
| 299 |
$schema->storage->txn_rollback; |
| 300 |
} |
| 145 |
}; |
301 |
}; |
| 146 |
|
302 |
|
| 147 |
subtest 'outstanding_credits() tests' => sub { |
303 |
subtest 'outstanding_credits() tests' => sub { |
| 148 |
- |
|
|