Line 0
Link Here
|
|
|
1 |
use Modern::Perl; |
2 |
use Test::More tests => 13; |
3 |
|
4 |
use C4::Acquisition; |
5 |
use C4::Budgets; |
6 |
use_ok('C4::Serials'); |
7 |
|
8 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
9 |
|
10 |
my $dbh = C4::Context->dbh; |
11 |
$dbh->{AutoCommit} = 0; |
12 |
$dbh->{RaiseError} = 1; |
13 |
|
14 |
my $branchcode = 'CPL'; |
15 |
my $bpid = AddBudgetPeriod({ |
16 |
budget_period_startdate => '2015-01-01', |
17 |
budget_period_enddate => '2015-12-31', |
18 |
budget_period_description => "budget desc" |
19 |
}); |
20 |
|
21 |
my $budget_id = AddBudget({ |
22 |
budget_code => "ABCD", |
23 |
budget_amount => "123.132", |
24 |
budget_name => "Périodiques", |
25 |
budget_notes => "This is a note", |
26 |
budget_period_id => $bpid |
27 |
}); |
28 |
|
29 |
my $record = MARC::Record->new(); |
30 |
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio($record, ''); |
31 |
|
32 |
my $sample_supplier1 = { |
33 |
name => 'Name1', |
34 |
address1 => 'address1_1', |
35 |
address2 => 'address1-2', |
36 |
address3 => 'address1_2', |
37 |
address4 => 'address1_2', |
38 |
postal => 'postal1', |
39 |
phone => 'phone1', |
40 |
accountnumber => 'accountnumber1', |
41 |
fax => 'fax1', |
42 |
url => 'url1', |
43 |
active => 1, |
44 |
gstreg => 1, |
45 |
listincgst => 1, |
46 |
invoiceincgst => 1, |
47 |
gstrate => '1.0000', |
48 |
discount => '1.0000', |
49 |
notes => 'notes1', |
50 |
deliverytime => undef |
51 |
}; |
52 |
my $sample_supplier2 = { |
53 |
name => 'Name2', |
54 |
address1 => 'address1_2', |
55 |
address2 => 'address2-2', |
56 |
address3 => 'address3_2', |
57 |
address4 => 'address4_2', |
58 |
postal => 'postal2', |
59 |
phone => 'phone2', |
60 |
accountnumber => 'accountnumber2', |
61 |
fax => 'fax2', |
62 |
url => 'url2', |
63 |
active => 1, |
64 |
gstreg => 1, |
65 |
listincgst => 1, |
66 |
invoiceincgst => 1, |
67 |
gstrate => '2.0000', |
68 |
discount => '2.0000', |
69 |
notes => 'notes2', |
70 |
deliverytime => 2 |
71 |
}; |
72 |
|
73 |
my $supplier_id1 = C4::Bookseller::AddBookseller($sample_supplier1); |
74 |
my $supplier_id2 = C4::Bookseller::AddBookseller($sample_supplier2); |
75 |
|
76 |
my $supplierlist = eval { GetSuppliersWithLateIssues() }; |
77 |
is( length($@), 0, "No SQL problem in GetSuppliersWithLateIssues" ); |
78 |
is ( scalar(@$supplierlist), 0, 'There is no late issues yet'); |
79 |
|
80 |
my $subscriptionid_not_late = NewSubscription( |
81 |
undef, $branchcode, $supplier_id1, undef, $budget_id, $biblionumber, |
82 |
'2013-01-01', undef, undef, undef, undef, |
83 |
undef, undef, undef, undef, undef, undef, |
84 |
1, "notes",undef, '9999-01-01', undef, undef, |
85 |
undef, undef, 0, "intnotes", 0, |
86 |
undef, undef, 0, undef, '2013-12-31', 0 |
87 |
); |
88 |
$supplierlist = GetSuppliersWithLateIssues(); |
89 |
is ( scalar(@$supplierlist), 0, 'There is still no late issues yet'); |
90 |
|
91 |
my $subscriptionid_inlate1 = NewSubscription( |
92 |
undef, $branchcode, $supplier_id1, undef, $budget_id, $biblionumber, |
93 |
'2013-01-01', undef, undef, undef, undef, |
94 |
undef, undef, undef, undef, undef, undef, |
95 |
1, "notes",undef, '2013-01-01', undef, undef, |
96 |
undef, undef, 0, "intnotes", 0, |
97 |
undef, undef, 0, undef, '2013-12-31', 0 |
98 |
); |
99 |
|
100 |
my $subscriptionid_inlate2 = NewSubscription( |
101 |
undef, $branchcode, $supplier_id2, undef, $budget_id, $biblionumber, |
102 |
'2013-01-01', undef, undef, undef, undef, |
103 |
undef, undef, undef, undef, undef, undef, |
104 |
1, "notes",undef, '2013-01-01', undef, undef, |
105 |
undef, undef, 0, "intnotes", 0, |
106 |
undef, undef, 0, undef, '2013-12-31', 0 |
107 |
); |
108 |
|
109 |
my $subscriptionid_inlate3 = NewSubscription( |
110 |
undef, $branchcode, $supplier_id2, undef, $budget_id, $biblionumber, |
111 |
'2013-01-02', undef, undef, undef, undef, |
112 |
undef, undef, undef, undef, undef, undef, |
113 |
1, "notes",undef, '2013-01-02', undef, undef, |
114 |
undef, undef, 0, "intnotes", 0, |
115 |
undef, undef, 0, undef, '2013-12-31', 0 |
116 |
); |
117 |
|
118 |
|
119 |
$supplierlist = GetSuppliersWithLateIssues(); |
120 |
is ( scalar(@$supplierlist), 2, '2 suppliers should have issues in late'); |
121 |
|
122 |
is( GetLateOrMissingIssues(), undef, 'GetLateOrMissingIssues should return undef without parameter' ); |
123 |
|
124 |
my @late_or_missing_issues = GetLateOrMissingIssues( $supplier_id1 ); |
125 |
is( scalar(@late_or_missing_issues), 1, 'supplier 1 should have 1 issue in late' ); |
126 |
|
127 |
@late_or_missing_issues = GetLateOrMissingIssues( $supplier_id2); |
128 |
is( scalar(@late_or_missing_issues), 2, 'supplier 2 should have 2 issues in late' ); |
129 |
|
130 |
is( exists $late_or_missing_issues[0]->{claimdate}, 1, 'GetLateOrMissingIssues returns claimdate' ); |
131 |
is( exists $late_or_missing_issues[0]->{claims_count}, 1, 'GetLateOrMissingIssues returns claims_count' ); |
132 |
is( $late_or_missing_issues[0]->{claims_count}, 0, 'The issues should not habe been claimed yet' ); |
133 |
|
134 |
my $serialid_to_claim = $late_or_missing_issues[0]->{serialid}; |
135 |
updateClaim( $serialid_to_claim ); |
136 |
|
137 |
@late_or_missing_issues = GetLateOrMissingIssues( $supplier_id2); |
138 |
is( scalar(@late_or_missing_issues), 2, 'supplier 2 should have 2 issues in late (already claimed issues are returns)' ); |
139 |
|
140 |
my ( $serial_claimed ) = grep { ($_->{serialid} == $serialid_to_claim) ? $_ : () } @late_or_missing_issues; |
141 |
is( $serial_claimed->{claims_count}, 1, 'The serial should have been claimed' ); |
142 |
|
143 |
my $today = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }); |
144 |
# FIXME: This test should pass. The GetLateOrMissingIssues should not deal with date format! |
145 |
#is( $serial_claimed->{claimdate}, $today, 'The serial should have been claimed today' ); |