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

(-)C4/Acquisition.pm (+68 lines)
Lines 50-55 BEGIN { Link Here
50
50
51
        &GetBasketUsers &ModBasketUsers
51
        &GetBasketUsers &ModBasketUsers
52
        &CanUserManageBasket
52
        &CanUserManageBasket
53
        &CanUserReceiveOrder
53
54
54
        &ModBasketHeader
55
        &ModBasketHeader
55
56
Lines 820-825 sub CanUserManageBasket { Link Here
820
    return 1;
821
    return 1;
821
}
822
}
822
823
824
=head3 CanUserReceiveOrder
825
826
    my $bool = CanUserReceiveOrder($borrower, $order[, $userflags]);
827
    my $bool = CanUserReceiveOrder($borrowernumber, $orderno[, $userflags]);
828
829
Check if a borrower can receive a order, according to user permissions, current
830
working branch and basket branches.
831
832
First parameter can be either a borrowernumber or a hashref as returned by
833
C4::Members::GetMember.
834
835
Second parameter can be either a ordernumber or a hashref as returned by
836
C4::Acquisition::GetOrder.
837
838
The third parameter is optional. If given, it should be a hashref as returned
839
by C4::Auth::getuserflags. If not, getuserflags is called.
840
841
If user is authorised to receive order, returns 1.
842
Otherwise returns 0.
843
844
=cut
845
846
sub CanUserReceiveOrder {
847
    my ($borrower, $order, $userflags) = @_;
848
849
    if (!ref $borrower) {
850
        $borrower = C4::Members::GetMember(borrowernumber => $borrower);
851
    }
852
    if (!ref $order) {
853
        $order = GetOrder($order);
854
    }
855
856
    return 0 unless ($borrower and $order);
857
858
    if (!defined $userflags) {
859
        my $dbh = C4::Context->dbh;
860
        my $sth = $dbh->prepare("SELECT flags FROM borrowers WHERE borrowernumber = ?");
861
        $sth->execute($borrower->{borrowernumber});
862
        my ($flags) = $sth->fetchrow_array;
863
        $sth->finish;
864
865
        $userflags = C4::Auth::getuserflags($flags, $borrower->{userid}, $dbh);
866
    }
867
868
    my $branch = C4::Context->userenv->{'branch'};
869
870
    unless ($userflags->{superlibrarian}
871
    || (!ref $userflags->{acquisition} && $userflags->{acquisition})
872
    || (ref $userflags->{acquisition} && $userflags->{acquisition}->{order_receive_all}) )
873
    {
874
        if (!ref $userflags->{acquisition} && !$userflags->{acquisition}) {
875
            return 0;
876
        }
877
878
        if (ref $userflags->{acquisition} && !$userflags->{acquisition}->{order_receive}) {
879
            return 0;
880
        }
881
882
        my $basket = GetBasket($order->{basketno});
883
        if (!$basket || (defined $basket->{branch} && $basket->{branch} ne $branch)) {
884
            return 0;
885
        }
886
    }
887
888
    return 1;
889
}
890
823
#------------------------------------------------------------#
891
#------------------------------------------------------------#
824
892
825
=head3 GetBasketsByBasketgroup
893
=head3 GetBasketsByBasketgroup
(-)acqui/finishreceive.pl (-1 / +9 lines)
Lines 36-42 use List::MoreUtils qw/any/; Link Here
36
my $input=new CGI;
36
my $input=new CGI;
37
my $flagsrequired = {acquisition => 'order_receive'};
37
my $flagsrequired = {acquisition => 'order_receive'};
38
38
39
checkauth($input, 0, $flagsrequired, 'intranet');
39
my ($userid, $cookie, undef, $userflags)
40
    = checkauth($input, 0, $flagsrequired, 'intranet');
40
41
41
my $user             = $input->remote_user;
42
my $user             = $input->remote_user;
42
my $biblionumber     = $input->param('biblionumber');
43
my $biblionumber     = $input->param('biblionumber');
Lines 58-63 my $bookfund = $input->param("bookfund"); Link Here
58
my $order            = GetOrder($ordernumber);
59
my $order            = GetOrder($ordernumber);
59
my $new_ordernumber  = $ordernumber;
60
my $new_ordernumber  = $ordernumber;
60
61
62
my $borrower = C4::Members::GetMember(userid => $userid);
63
unless (CanUserReceiveOrder($borrower, $ordernumber, $userflags)) {
64
    my $error = "cannot_receive_order";
65
    print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid&error=$error");
66
    exit;
67
}
68
61
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
69
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
62
if ($quantityrec > $origquantityrec ) {
70
if ($quantityrec > $origquantityrec ) {
63
    my @received_items = ();
71
    my @received_items = ();
(-)acqui/neworderempty.pl (-3 / +2 lines)
Lines 66-73 the item's id in the breeding reservoir Link Here
66
66
67
=cut
67
=cut
68
68
69
use warnings;
69
use Modern::Perl;
70
use strict;
71
use CGI;
70
use CGI;
72
use C4::Context;
71
use C4::Context;
73
use C4::Input;
72
use C4::Input;
Lines 245-251 foreach my $thisbranch ( sort {$branches->{$a}->{'branchname'} cmp $branches->{$ Link Here
245
        value      => $thisbranch,
244
        value      => $thisbranch,
246
        branchname => $branches->{$thisbranch}->{'branchname'},
245
        branchname => $branches->{$thisbranch}->{'branchname'},
247
    );
246
    );
248
    $row{'selected'} = 1 if( $thisbranch && $data->{branchcode} && $thisbranch eq $data->{branchcode}) ;
247
    $row{'selected'} = 1 if( $thisbranch && $data->{branch} && $thisbranch eq $data->{branch}) ;
249
    push @branchloop, \%row;
248
    push @branchloop, \%row;
250
}
249
}
251
$template->param( branchloop => \@branchloop );
250
$template->param( branchloop => \@branchloop );
(-)acqui/orderreceive.pl (+12 lines)
Lines 114-119 unless ( $results and @$results) { Link Here
114
# prepare the form for receiving
114
# prepare the form for receiving
115
my $order = $results->[0];
115
my $order = $results->[0];
116
116
117
unless (CanUserReceiveOrder($loggedinuser, $order, $userflags)) {
118
    $template->param(
119
        cannot_receive_order => 1,
120
        ordernumber => $ordernumber,
121
        invoice => $invoice,
122
        booksellerid => $booksellerid,
123
        name => $bookseller->{name}
124
    );
125
    output_html_with_http_headers $input, $cookie, $template->output;
126
    exit;
127
}
128
117
# Check if ACQ framework exists
129
# Check if ACQ framework exists
118
my $acq_fw = GetMarcStructure(1, 'ACQ');
130
my $acq_fw = GetMarcStructure(1, 'ACQ');
119
unless($acq_fw) {
131
unless($acq_fw) {
(-)acqui/parcel.pl (-3 / +9 lines)
Lines 54-61 To filter the results list on this given date. Link Here
54
54
55
=cut
55
=cut
56
56
57
use strict;
57
use Modern::Perl;
58
use warnings;
59
58
60
use C4::Auth;
59
use C4::Auth;
61
use C4::Acquisition;
60
use C4::Acquisition;
Lines 110-116 sub get_gst { Link Here
110
        : $value * ( 1 + $gstrate ) - $value;
109
        : $value * ( 1 + $gstrate ) - $value;
111
}
110
}
112
111
113
my ($template, $loggedinuser, $cookie)
112
my ($template, $loggedinuser, $cookie, $userflags)
114
    = get_template_and_user({template_name => "acqui/parcel.tt",
113
    = get_template_and_user({template_name => "acqui/parcel.tt",
115
                 query => $input,
114
                 query => $input,
116
                 type => "intranet",
115
                 type => "intranet",
Lines 305-310 unless( defined $invoice->{closedate} ) { Link Here
305
        $line{holds}                = $holds;
304
        $line{holds}                = $holds;
306
        $line{holds_on_order}       = $itemholds?$itemholds:$holds if $line{left_holds_on_order};
305
        $line{holds_on_order}       = $itemholds?$itemholds:$holds if $line{left_holds_on_order};
307
306
307
        $line{can_receive} = CanUserReceiveOrder($loggedinuser, $pendingorders->[$i], $userflags);
308
308
        my $budget = GetBudget( $line{budget_id} );
309
        my $budget = GetBudget( $line{budget_id} );
309
        $line{budget_name} = $budget->{'budget_name'};
310
        $line{budget_name} = $budget->{'budget_name'};
310
311
Lines 316-321 unless( defined $invoice->{closedate} ) { Link Here
316
    );
317
    );
317
}
318
}
318
319
320
my @errors = $input->param('error');
321
foreach my $error (@errors) {
322
    $template->param("error_$error" => 1);
323
}
324
319
$template->param(
325
$template->param(
320
    invoiceid             => $invoice->{invoiceid},
326
    invoiceid             => $invoice->{invoiceid},
321
    invoice               => $invoice->{invoicenumber},
327
    invoice               => $invoice->{invoicenumber},
(-)installer/data/mysql/de-DE/mandatory/userpermissions.sql (+1 lines)
Lines 23-28 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
23
   (11, 'order_manage_all', 'Bestellungen aller Bibliotheken, unabhängig von Berechtigungen, verwalten'),
23
   (11, 'order_manage_all', 'Bestellungen aller Bibliotheken, unabhängig von Berechtigungen, verwalten'),
24
   (11, 'group_manage', 'Bestellgruppen vewalten'),
24
   (11, 'group_manage', 'Bestellgruppen vewalten'),
25
   (11, 'order_receive', 'Lieferungen verwalten'),
25
   (11, 'order_receive', 'Lieferungen verwalten'),
26
   (11, 'order_receive_all', 'Receive all orders'),
26
   (11, 'budget_add_del', 'Konten hinzufügen/ändern, aber bestehende nicht ändern'),
27
   (11, 'budget_add_del', 'Konten hinzufügen/ändern, aber bestehende nicht ändern'),
27
   (11, 'budget_manage_all', 'Alle Konten verwalten'),
28
   (11, 'budget_manage_all', 'Alle Konten verwalten'),
28
   (13, 'edit_news', 'Nachrichten für OPAC und Dienstoberfläche verfassen'),
29
   (13, 'edit_news', 'Nachrichten für OPAC und Dienstoberfläche verfassen'),
(-)installer/data/mysql/en/mandatory/userpermissions.sql (+1 lines)
Lines 23-28 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
25
   (11, 'order_receive', 'Manage orders & basket'),
25
   (11, 'order_receive', 'Manage orders & basket'),
26
   (11, 'order_receive_all', 'Receive all orders'),
26
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
29
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
(-)installer/data/mysql/es-ES/mandatory/userpermissions.sql (+1 lines)
Lines 23-28 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
25
   (11, 'order_receive', 'Manage orders & basket'),
25
   (11, 'order_receive', 'Manage orders & basket'),
26
   (11, 'order_receive_all', 'Receive all orders'),
26
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
29
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
(-)installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql (+1 lines)
Lines 41-46 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
41
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
41
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
42
   (11, 'group_manage', 'Gérer les commandes et les bons de commande'),
42
   (11, 'group_manage', 'Gérer les commandes et les bons de commande'),
43
   (11, 'order_receive', 'Gérer les réceptions'),
43
   (11, 'order_receive', 'Gérer les réceptions'),
44
   (11, 'order_receive_all', 'Gérer toutes les réceptions'),
44
   (11, 'budget_add_del', 'Ajouter et supprimer les budgets (mais pas modifier)'),
45
   (11, 'budget_add_del', 'Ajouter et supprimer les budgets (mais pas modifier)'),
45
   (11, 'budget_manage_all', 'Gérer tous les budgets'),
46
   (11, 'budget_manage_all', 'Gérer tous les budgets'),
46
   (13, 'manage_csv_profiles', 'Gérer les profils d''export CSV'),
47
   (13, 'manage_csv_profiles', 'Gérer les profils d''export CSV'),
(-)installer/data/mysql/it-IT/necessari/userpermissions.sql (+1 lines)
Lines 23-28 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
23
   (11, 'order_manage_all', 'Gestisci ordini e raccoglitori, indipendentemente dalle restrizioni su di loro'),
23
   (11, 'order_manage_all', 'Gestisci ordini e raccoglitori, indipendentemente dalle restrizioni su di loro'),
24
   (11, 'group_manage', 'Gestisci ordini e ordini d\'acquisto'),
24
   (11, 'group_manage', 'Gestisci ordini e ordini d\'acquisto'),
25
   (11, 'order_receive', 'Gestisci arrivi'),
25
   (11, 'order_receive', 'Gestisci arrivi'),
26
   (11, 'order_receive_all', 'Receive all orders'),
26
   (11, 'budget_add_del', 'Aggiungi e cancella budgets (senza modificarli)'),
27
   (11, 'budget_add_del', 'Aggiungi e cancella budgets (senza modificarli)'),
27
   (11, 'budget_manage_all', 'Gestisci tutti i budgets'),
28
   (11, 'budget_manage_all', 'Gestisci tutti i budgets'),
28
   (13, 'edit_news', 'Scrivi le news per l\'OPAC e per l\'interfaccia staff'),
29
   (13, 'edit_news', 'Scrivi le news per l\'OPAC e per l\'interfaccia staff'),
(-)installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql (+1 lines)
Lines 43-48 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
43
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
43
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
44
   (11, 'group_manage', 'Administrere bestillinger og kurv-grupper'),
44
   (11, 'group_manage', 'Administrere bestillinger og kurv-grupper'),
45
   (11, 'order_receive', 'Administrere bestillinger og kurver'),
45
   (11, 'order_receive', 'Administrere bestillinger og kurver'),
46
   (11, 'order_receive_all', 'Receive all orders'),
46
   (11, 'budget_add_del', 'Legge til og slette budsjetter (men ikke endre budsjetter)'),
47
   (11, 'budget_add_del', 'Legge til og slette budsjetter (men ikke endre budsjetter)'),
47
   (11, 'budget_manage_all', 'Administrere alle budsjetter'),
48
   (11, 'budget_manage_all', 'Administrere alle budsjetter'),
48
   (13, 'edit_news', 'Legge ut nyhter i OPACen og det interne grensesnittet'),
49
   (13, 'edit_news', 'Legge ut nyhter i OPACen og det interne grensesnittet'),
(-)installer/data/mysql/pl-PL/mandatory/userpermissions.sql (+1 lines)
Lines 23-28 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
23
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
24
   (11, 'group_manage', 'Manage orders & basketgroups'),
25
   (11, 'order_receive', 'Manage orders & basket'),
25
   (11, 'order_receive', 'Manage orders & basket'),
26
   (11, 'order_receive_all', 'Receive all orders'),
26
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
27
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (11, 'budget_manage_all', 'Manage all budgets'),
28
   (13, 'edit_news', 'RTworzeniei publikowanie wiadomości w interfejsie bibliotekarza i OPAC'),
29
   (13, 'edit_news', 'RTworzeniei publikowanie wiadomości w interfejsie bibliotekarza i OPAC'),
(-)installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql (+1 lines)
Lines 49-54 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
49
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
49
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
50
   (11, 'group_manage', 'Manage orders & basketgroups'),
50
   (11, 'group_manage', 'Manage orders & basketgroups'),
51
   (11, 'order_receive', 'Manage orders & basket'),
51
   (11, 'order_receive', 'Manage orders & basket'),
52
   (11, 'order_receive_all', 'Receive all orders'),
52
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
53
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
53
   (11, 'budget_manage_all', 'Manage all budgets'),
54
   (11, 'budget_manage_all', 'Manage all budgets'),
54
   (13, 'edit_news',                   'Написание новостей для электронного каталога и интерфейса библиотекарей'),
55
   (13, 'edit_news',                   'Написание новостей для электронного каталога и интерфейса библиотекарей'),
(-)installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql (+1 lines)
Lines 49-54 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
49
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
49
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
50
   (11, 'group_manage', 'Manage orders & basketgroups'),
50
   (11, 'group_manage', 'Manage orders & basketgroups'),
51
   (11, 'order_receive', 'Manage orders & basket'),
51
   (11, 'order_receive', 'Manage orders & basket'),
52
   (11, 'order_receive_all', 'Receive all orders'),
52
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
53
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
53
   (11, 'budget_manage_all', 'Manage all budgets'),
54
   (11, 'budget_manage_all', 'Manage all budgets'),
54
   (13, 'edit_news',                   'Написання новин для електронного каталогу та інтерфейсу бібліотекарів'),
55
   (13, 'edit_news',                   'Написання новин для електронного каталогу та інтерфейсу бібліотекарів'),
(-)installer/data/mysql/updatedatabase.pl (+10 lines)
Lines 8603-8608 if ( CheckVersion($DBversion) ) { Link Here
8603
    SetVersion($DBversion);
8603
    SetVersion($DBversion);
8604
}
8604
}
8605
8605
8606
$DBversion = "XXX";
8607
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
8608
    $dbh->do("
8609
        INSERT INTO permissions (module_bit, code, description)
8610
          VALUES (11, 'order_receive_all', 'Receive all orders')
8611
    ");
8612
    print "Upgrade to $DBversion done (Add aqorders.branch and permission order_receive_all)\n";
8613
    SetVersion($DBversion);
8614
}
8615
8606
=head1 FUNCTIONS
8616
=head1 FUNCTIONS
8607
8617
8608
=head2 TableExists($table)
8618
=head2 TableExists($table)
(-)koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt (+5 lines)
Lines 129-134 Link Here
129
129
130
<h1>Receive items from : [% name %] [% IF ( invoice ) %][[% invoice %]] [% END %] (order #[% ordernumber %])</h1>
130
<h1>Receive items from : [% name %] [% IF ( invoice ) %][[% invoice %]] [% END %] (order #[% ordernumber %])</h1>
131
131
132
[% IF (cannot_receive_order) %]
133
    <p class="error">You are not authorised to receive this order.</p>
134
[% ELSE %]
135
132
[% IF ( count ) %]
136
[% IF ( count ) %]
133
    <form action="/cgi-bin/koha/acqui/finishreceive.pl" method="post" onsubmit="return Check(this);">
137
    <form action="/cgi-bin/koha/acqui/finishreceive.pl" method="post" onsubmit="return Check(this);">
134
<div class="yui-g">
138
<div class="yui-g">
Lines 343-348 Link Here
343
    This ordernumber does not exist.
347
    This ordernumber does not exist.
344
[% END %]
348
[% END %]
345
349
350
[% END %][%# IF (cannot_receive_order) %]
346
</div>
351
</div>
347
</div>
352
</div>
348
<div class="yui-b">
353
<div class="yui-b">
(-)koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt (-4 / +22 lines)
Lines 164-174 Link Here
164
	<div class="yui-b">
164
	<div class="yui-b">
165
	[% IF ( receive_error ) %]
165
	[% IF ( receive_error ) %]
166
	<div class="dialog alert">
166
	<div class="dialog alert">
167
	<h3>Error adding items:</h3>
167
	<h3>Error receiving items:</h3>
168
	<ul>
168
	<ul>
169
	[% FOREACH error_loo IN error_loop %]
169
        [% FOREACH error IN error_loop %]
170
		<li>[% error_loo.error_param %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %] <!-- todo: other error conditions come here. --></li>
170
            <li>
171
	[% END %]
171
                [% error.error_param %]
172
                [% IF ( error.error_duplicate_barcode ) %]
173
                    Duplicate Barcode
174
                [% ELSIF (error.error_cannot_receive_order) %]
175
                    You were not authorised to receive this order
176
                [% END %]
177
                <!-- todo: other error conditions come here. -->
178
            </li>
179
        [% END %]
172
	</ul>
180
	</ul>
173
	</div>
181
	</div>
174
	[% END %]
182
	[% END %]
Lines 215-220 Link Here
215
        </div>
223
        </div>
216
    [% END %]
224
    [% END %]
217
225
226
    [% IF error_cannot_receive_order %]
227
      <div class="dialog error">
228
        You cannot receive this order.
229
      </div>
230
    [% END %]
231
218
[% UNLESS no_orders_to_display %]
232
[% UNLESS no_orders_to_display %]
219
<div id="acqui_receive_summary">
233
<div id="acqui_receive_summary">
220
<p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
234
<p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
Lines 293-299 Link Here
293
                <td>[% loop_order.ordertotal %]</td>
307
                <td>[% loop_order.ordertotal %]</td>
294
                <td>[% loop_order.budget_name %]</td>
308
                <td>[% loop_order.budget_name %]</td>
295
				<td>
309
				<td>
310
                            [% IF (loop_order.can_receive) %]
296
                              <a href="orderreceive.pl?ordernumber=[% loop_order.ordernumber %]&amp;invoiceid=[% invoiceid %]">Receive</a>
311
                              <a href="orderreceive.pl?ordernumber=[% loop_order.ordernumber %]&amp;invoiceid=[% invoiceid %]">Receive</a>
312
                            [% ELSE %]
313
                              Can't receive order
314
                            [% END %]
297
                    <br />
315
                    <br />
298
                    <a href="#" onclick="transfer_order_popup([% loop_order.ordernumber %]); return false;">Transfer</a>
316
                    <a href="#" onclick="transfer_order_popup([% loop_order.ordernumber %]); return false;">Transfer</a>
299
				</td>
317
				</td>
(-)t/Acquisition/CanUserReceiveBasket.t (-1 / +74 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
use Test::MockModule;
5
use Test::More tests => 18;
6
7
use C4::Acquisition;
8
9
my $C4_Acquisition_module = new Test::MockModule('C4::Acquisition');
10
$C4_Acquisition_module->mock('GetBasket', \&Mock_GetBasket);
11
my $C4_Context_module = new Test::MockModule('C4::Context');
12
$C4_Context_module->mock('userenv', \&Mock_userenv);
13
14
my $baskets = {
15
    1 => {},
16
    2 => {
17
        branch => 'B1'
18
    },
19
    3 => {
20
        branch => 'B2'
21
    }
22
};
23
24
my $userenv = {};
25
26
my $borrower = {};
27
28
my $order1 = {
29
    basketno => 1
30
};
31
my $order2 = {
32
    basketno => 2
33
};
34
my $order3 = {
35
    basketno => 3
36
};
37
38
$userenv->{branch} = 'B1';
39
40
ok( CanUserReceiveOrder($borrower, $order1, {superlibrarian => 1}) );
41
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => 1}) );
42
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive_all => 1 }}) );
43
44
ok( not CanUserReceiveOrder($borrower, $order1, {}) );
45
ok( not CanUserReceiveOrder($borrower, $order1, {acquisition => 0}) );
46
ok( not CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive => 0 }}) );
47
48
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive => 1 }}) );
49
ok( CanUserReceiveOrder($borrower, $order2, {acquisition => { order_receive => 1 }}) );
50
ok( not CanUserReceiveOrder($borrower, $order3, {acquisition => { order_receive => 1 }}) );
51
52
$userenv->{branch} = 'B2';
53
54
ok( CanUserReceiveOrder($borrower, $order1, {superlibrarian => 1}) );
55
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => 1}) );
56
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive_all => 1 }}) );
57
58
ok( not CanUserReceiveOrder($borrower, $order1, {}) );
59
ok( not CanUserReceiveOrder($borrower, $order1, {acquisition => 0}) );
60
ok( not CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive => 0 }}) );
61
62
ok( CanUserReceiveOrder($borrower, $order1, {acquisition => { order_receive => 1 }}) );
63
ok( not CanUserReceiveOrder($borrower, $order2, {acquisition => { order_receive => 1 }}) );
64
ok( CanUserReceiveOrder($borrower, $order3, {acquisition => { order_receive => 1 }}) );
65
66
sub Mock_GetBasket {
67
    my ($basketno) = @_;
68
69
    return $baskets->{$basketno};
70
}
71
72
sub Mock_userenv {
73
    return $userenv;
74
}

Return to bug 7290