Bug 9987: Remove DB field aqorders.biblioitemnunmber
[koha.git] / t / db_dependent / lib / KohaTest / Acquisition.pm
1 package KohaTest::Acquisition;
2 use base qw( KohaTest );
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use C4::Acquisition;
10 use C4::Budgets;
11 use C4::Context;
12 use C4::Members;
13 use Time::localtime;
14
15 sub testing_class { 'C4::Acquisition' };
16
17
18 sub methods : Test( 1 ) {
19     my $self = shift;
20     my @methods = qw(  GetBasket 
21                        NewBasket 
22                        CloseBasket 
23                        GetPendingOrders 
24                        GetOrders 
25                        GetOrder 
26                        NewOrder 
27                        ModOrder 
28                        ModReceiveOrder 
29                        SearchOrder 
30                        DelOrder 
31                        GetParcel 
32                        GetParcels 
33                        GetLateOrders 
34                        GetHistory 
35                        GetRecentAcqui 
36                 );
37     
38     can_ok( $self->testing_class, @methods );    
39 }
40
41 =head3 create_new_basket
42
43   creates a baseket by creating an order with no baseket number.
44
45   named parameters:
46     authorizedby
47     invoice
48     date
49
50   returns: baseket number, order number
51
52   runs 4 tests
53
54 =cut
55
56 sub create_new_basket {
57     my $self = shift;
58     my %param = @_;
59     $param{'authorizedby'} = $self->{'memberid'} unless exists $param{'authorizedby'};
60     $param{'invoice'}      = 123                 unless exists $param{'invoice'};
61     
62     my $today = sprintf( '%04d-%02d-%02d',
63                          localtime->year() + 1900,
64                          localtime->mon() + 1,
65                          localtime->mday() );
66     
67     # I actually think that this parameter is unused.
68     $param{'date'}         = $today              unless exists $param{'date'};
69
70     $self->add_biblios( add_items => 1 );
71     ok( scalar @{$self->{'biblios'}} > 0, 'we have added at least one biblio' );
72
73     my $rand = int(rand(10000));
74     my $basketno = NewBasket( $self->{'booksellerid'}, $param{'authorizedby'},  "Basket $rand");
75 #             $basketnote, $basketbooksellernote, $basketcontractnumber );
76 #   The following keys are used: "biblionumber", "title", "basketno", "quantity", "notes", "biblioitemnumber", "rrp", "ecost", "gst", "unitprice", "subscription", "sort1", "sort2", "booksellerinvoicenumber", "listprice", "budgetdate", "purchaseordernumber", "branchcode", "booksellerinvoicenumber", "bookfundid".
77     my $budget_id = AddBudget( { budget_name => "Budget $rand" } );
78     my ( undef, $ordernumber ) = NewOrder( {
79             basketno => $basketno,
80             budget_id => $budget_id,
81             biblionumber => $self->{'biblios'}[0],
82             quantity => 1,
83             bookfundid => $self->{'bookfundid'},
84             rrp => 1,
85             ecost => 1,
86             booksellerinvoicenumber => $param{'invoice'},
87         } );
88     ok( $basketno, "my basket number is $basketno" );
89     ok( $ordernumber,   "my order number is $ordernumber" );
90     
91     my $order = GetOrder( $ordernumber );
92     is( $order->{'ordernumber'}, $ordernumber, 'got the right order' )
93       or diag( Data::Dumper->Dump( [ $order ], [ 'order' ] ) );
94     
95     is( $order->{'budgetdate'}, $today, "the budget date is $today" );
96
97     # XXX should I stuff these in $self?
98     return ( $basketno, $ordernumber );
99     
100 }
101
102
103 sub enable_independant_branches {
104     my $self = shift;
105     
106     my $member = GetMember( 'borrowernumber' =>$self->{'memberid'} );
107     
108     C4::Context::set_userenv( 0, # usernum
109                               $self->{'memberid'}, # userid
110                               undef, # usercnum
111                               undef, # userfirstname
112                               undef, # usersurname
113                               $member->{'branchcode'}, # userbranch
114                               undef, # branchname
115                               0, # userflags
116                               undef, # emailaddress
117                               undef, # branchprinter
118                          );
119
120     # set a preference. There's surely a method for this, but I can't find it.
121     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '1' where variable = 'IndependentBranches') );
122     ok( $retval, 'set the preference' );
123     
124     ok( C4::Context->userenv, 'usernev' );
125     isnt( C4::Context->userenv->{flags}, 1, 'flag != 1' )
126       or diag( Data::Dumper->Dump( [ C4::Context->userenv ], [ 'userenv' ] ) );
127
128     is( C4::Context->userenv->{branch}, $member->{'branchcode'}, 'we have set the right branch in C4::Context: ' . $member->{'branchcode'} );
129     
130 }
131
132 sub disable_independant_branches {
133     my $self = shift;
134
135     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '0' where variable = 'IndependentBranches') );
136     ok( $retval, 'set the preference back' );
137
138     
139 }
140 1;