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

(-)a/C4/Acquisition.pm (+68 lines)
Lines 52-57 BEGIN { Link Here
52
52
53
        &GetBasketUsers &ModBasketUsers
53
        &GetBasketUsers &ModBasketUsers
54
        &CanUserManageBasket
54
        &CanUserManageBasket
55
        &CanUserReceiveOrder
55
56
56
        &ModBasketHeader
57
        &ModBasketHeader
57
58
Lines 818-823 sub CanUserManageBasket { Link Here
818
    return 1;
819
    return 1;
819
}
820
}
820
821
822
=head3 CanUserReceiveOrder
823
824
    my $bool = CanUserReceiveOrder($borrower, $order[, $userflags]);
825
    my $bool = CanUserReceiveOrder($borrowernumber, $orderno[, $userflags]);
826
827
Check if a borrower can receive a order, according to user permissions, current
828
working branch and basket branches.
829
830
First parameter can be either a borrowernumber or a hashref as returned by
831
C4::Members::GetMember.
832
833
Second parameter can be either a ordernumber or a hashref as returned by
834
C4::Acquisition::GetOrder.
835
836
The third parameter is optional. If given, it should be a hashref as returned
837
by C4::Auth::getuserflags. If not, getuserflags is called.
838
839
If user is authorised to receive order, returns 1.
840
Otherwise returns 0.
841
842
=cut
843
844
sub CanUserReceiveOrder {
845
    my ($borrower, $order, $userflags) = @_;
846
847
    if (!ref $borrower) {
848
        $borrower = C4::Members::GetMember(borrowernumber => $borrower);
849
    }
850
    if (!ref $order) {
851
        $order = GetOrder($order);
852
    }
853
854
    return 0 unless ($borrower and $order);
855
856
    if (!defined $userflags) {
857
        my $dbh = C4::Context->dbh;
858
        my $sth = $dbh->prepare("SELECT flags FROM borrowers WHERE borrowernumber = ?");
859
        $sth->execute($borrower->{borrowernumber});
860
        my ($flags) = $sth->fetchrow_array;
861
        $sth->finish;
862
863
        $userflags = C4::Auth::getuserflags($flags, $borrower->{userid}, $dbh);
864
    }
865
866
    my $branch = C4::Context->userenv->{'branch'};
867
868
    unless ($userflags->{superlibrarian}
869
    || (!ref $userflags->{acquisition} && $userflags->{acquisition})
870
    || (ref $userflags->{acquisition} && $userflags->{acquisition}->{order_receive_all}) )
871
    {
872
        if (!ref $userflags->{acquisition} && !$userflags->{acquisition}) {
873
            return 0;
874
        }
875
876
        if (ref $userflags->{acquisition} && !$userflags->{acquisition}->{order_receive}) {
877
            return 0;
878
        }
879
880
        my $basket = GetBasket($order->{basketno});
881
        if (!$basket || (defined $basket->{branch} && $basket->{branch} ne $branch)) {
882
            return 0;
883
        }
884
    }
885
886
    return 1;
887
}
888
821
#------------------------------------------------------------#
889
#------------------------------------------------------------#
822
890
823
=head3 GetBasketsByBasketgroup
891
=head3 GetBasketsByBasketgroup
(-)a/acqui/finishreceive.pl (-1 / +9 lines)
Lines 39-45 use List::MoreUtils qw/any/; Link Here
39
my $input=new CGI;
39
my $input=new CGI;
40
my $flagsrequired = {acquisition => 'order_receive'};
40
my $flagsrequired = {acquisition => 'order_receive'};
41
41
42
checkauth($input, 0, $flagsrequired, 'intranet');
42
my ($userid, $cookie, undef, $userflags)
43
    = checkauth($input, 0, $flagsrequired, 'intranet');
43
44
44
my $user             = $input->remote_user;
45
my $user             = $input->remote_user;
45
my $biblionumber     = $input->param('biblionumber');
46
my $biblionumber     = $input->param('biblionumber');
Lines 61-66 my $bookfund = $input->param("bookfund"); Link Here
61
my $order            = GetOrder($ordernumber);
62
my $order            = GetOrder($ordernumber);
62
my $new_ordernumber  = $ordernumber;
63
my $new_ordernumber  = $ordernumber;
63
64
65
my $borrower = C4::Members::GetMember(userid => $userid);
66
unless (CanUserReceiveOrder($borrower, $ordernumber, $userflags)) {
67
    my $error = "cannot_receive_order";
68
    print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid&error=$error");
69
    exit;
70
}
71
64
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
72
#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
65
if ($quantityrec > $origquantityrec ) {
73
if ($quantityrec > $origquantityrec ) {
66
    my @received_items = ();
74
    my @received_items = ();
(-)a/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 qw ( -utf8 );
70
use CGI qw ( -utf8 );
72
use C4::Context;
71
use C4::Context;
73
use C4::Input;
72
use C4::Input;
Lines 246-252 foreach my $thisbranch ( sort {$branches->{$a}->{'branchname'} cmp $branches->{$ Link Here
246
        value      => $thisbranch,
245
        value      => $thisbranch,
247
        branchname => $branches->{$thisbranch}->{'branchname'},
246
        branchname => $branches->{$thisbranch}->{'branchname'},
248
    );
247
    );
249
    $row{'selected'} = 1 if( $thisbranch && $data->{branchcode} && $thisbranch eq $data->{branchcode}) ;
248
    $row{'selected'} = 1 if( $thisbranch && $data->{branch} && $thisbranch eq $data->{branch}) ;
250
    push @branchloop, \%row;
249
    push @branchloop, \%row;
251
}
250
}
252
$template->param( branchloop => \@branchloop );
251
$template->param( branchloop => \@branchloop );
(-)a/acqui/orderreceive.pl (+12 lines)
Lines 115-120 unless ( $results and @$results) { Link Here
115
# prepare the form for receiving
115
# prepare the form for receiving
116
my $order = $results->[0];
116
my $order = $results->[0];
117
117
118
unless (CanUserReceiveOrder($loggedinuser, $order, $userflags)) {
119
    $template->param(
120
        cannot_receive_order => 1,
121
        ordernumber => $ordernumber,
122
        invoice => $invoice,
123
        booksellerid => $booksellerid,
124
        name => $bookseller->{name}
125
    );
126
    output_html_with_http_headers $input, $cookie, $template->output;
127
    exit;
128
}
129
118
# Check if ACQ framework exists
130
# Check if ACQ framework exists
119
my $acq_fw = GetMarcStructure(1, 'ACQ');
131
my $acq_fw = GetMarcStructure(1, 'ACQ');
120
unless($acq_fw) {
132
unless($acq_fw) {
(-)a/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 75-81 use JSON; Link Here
75
my $input=new CGI;
74
my $input=new CGI;
76
my $sticky_filters = $input->param('sticky_filters') || 0;
75
my $sticky_filters = $input->param('sticky_filters') || 0;
77
76
78
my ($template, $loggedinuser, $cookie)
77
my ($template, $loggedinuser, $cookie, $userflags)
79
    = get_template_and_user({template_name => "acqui/parcel.tt",
78
    = get_template_and_user({template_name => "acqui/parcel.tt",
80
                 query => $input,
79
                 query => $input,
81
                 type => "intranet",
80
                 type => "intranet",
Lines 267-272 unless( defined $invoice->{closedate} ) { Link Here
267
        $line{holds}                = $holds;
266
        $line{holds}                = $holds;
268
        $line{holds_on_order}       = $itemholds?$itemholds:$holds if $line{left_holds_on_order};
267
        $line{holds_on_order}       = $itemholds?$itemholds:$holds if $line{left_holds_on_order};
269
268
269
        $line{can_receive} = CanUserReceiveOrder($loggedinuser, $pendingorders->[$i], $userflags);
270
270
        my $budget_name = GetBudgetName( $line{budget_id} );
271
        my $budget_name = GetBudgetName( $line{budget_id} );
271
        $line{budget_name} = $budget_name;
272
        $line{budget_name} = $budget_name;
272
273
Lines 278-283 unless( defined $invoice->{closedate} ) { Link Here
278
    );
279
    );
279
}
280
}
280
281
282
my @errors = $input->param('error');
283
foreach my $error (@errors) {
284
    $template->param("error_$error" => 1);
285
}
286
281
$template->param(
287
$template->param(
282
    invoiceid             => $invoice->{invoiceid},
288
    invoiceid             => $invoice->{invoiceid},
283
    invoice               => $invoice->{invoicenumber},
289
    invoice               => $invoice->{invoicenumber},
(-)a/installer/data/mysql/de-DE/mandatory/userpermissions.sql (+1 lines)
Lines 25-30 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
25
   (11, 'order_manage_all', 'Bestellungen aller Bibliotheken, unabhängig von Berechtigungen, verwalten'),
25
   (11, 'order_manage_all', 'Bestellungen aller Bibliotheken, unabhängig von Berechtigungen, verwalten'),
26
   (11, 'group_manage', 'Bestellgruppen vewalten'),
26
   (11, 'group_manage', 'Bestellgruppen vewalten'),
27
   (11, 'order_receive', 'Lieferungen verwalten'),
27
   (11, 'order_receive', 'Lieferungen verwalten'),
28
   (11, 'order_receive_all', 'Receive all orders'),
28
   (11, 'budget_add_del', 'Konten hinzufügen/ändern, aber bestehende nicht ändern'),
29
   (11, 'budget_add_del', 'Konten hinzufügen/ändern, aber bestehende nicht ändern'),
29
   (11, 'budget_manage_all', 'Alle Konten verwalten'),
30
   (11, 'budget_manage_all', 'Alle Konten verwalten'),
30
   (13, 'edit_news', 'Nachrichten für OPAC und Dienstoberfläche verfassen'),
31
   (13, 'edit_news', 'Nachrichten für OPAC und Dienstoberfläche verfassen'),
(-)a/installer/data/mysql/en/mandatory/userpermissions.sql (+1 lines)
Lines 25-30 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
25
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
25
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
26
   (11, 'group_manage', 'Manage orders & basketgroups'),
26
   (11, 'group_manage', 'Manage orders & basketgroups'),
27
   (11, 'order_receive', 'Manage orders & basket'),
27
   (11, 'order_receive', 'Manage orders & basket'),
28
   (11, 'order_receive_all', 'Receive all orders'),
28
   (11, 'budget_add_del', 'Add and delete budgets (but can''t modify budgets)'),
29
   (11, 'budget_add_del', 'Add and delete budgets (but can''t modify budgets)'),
29
   (11, 'budget_manage_all', 'Manage all budgets'),
30
   (11, 'budget_manage_all', 'Manage all budgets'),
30
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
31
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
(-)a/installer/data/mysql/es-ES/mandatory/userpermissions.sql (+1 lines)
Lines 25-30 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
25
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
25
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
26
   (11, 'group_manage', 'Manage orders & basketgroups'),
26
   (11, 'group_manage', 'Manage orders & basketgroups'),
27
   (11, 'order_receive', 'Manage orders & basket'),
27
   (11, 'order_receive', 'Manage orders & basket'),
28
   (11, 'order_receive_all', 'Receive all orders'),
28
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
29
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
29
   (11, 'budget_manage_all', 'Manage all budgets'),
30
   (11, 'budget_manage_all', 'Manage all budgets'),
30
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
31
   (13, 'edit_news', 'Write news for the OPAC and staff interfaces'),
(-)a/installer/data/mysql/fr-FR/1-Obligatoire/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', 'Gérer les commandes et les bons de commande'),
44
   (11, 'group_manage', 'Gérer les commandes et les bons de commande'),
45
   (11, 'order_receive', 'Gérer les réceptions'),
45
   (11, 'order_receive', 'Gérer les réceptions'),
46
   (11, 'order_receive_all', 'Gérer toutes les réceptions'),
46
   (11, 'budget_add_del', 'Ajouter et supprimer les budgets (mais pas modifier)'),
47
   (11, 'budget_add_del', 'Ajouter et supprimer les budgets (mais pas modifier)'),
47
   (11, 'budget_manage_all', 'Gérer tous les budgets'),
48
   (11, 'budget_manage_all', 'Gérer tous les budgets'),
48
   (13, 'manage_csv_profiles', 'Gérer les profils d''export CSV'),
49
   (13, 'manage_csv_profiles', 'Gérer les profils d''export CSV'),
(-)a/installer/data/mysql/it-IT/necessari/userpermissions.sql (+1 lines)
Lines 25-30 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
25
   (11, 'order_manage_all', 'Gestisci ordini e raccoglitori, indipendentemente dalle restrizioni su di loro'),
25
   (11, 'order_manage_all', 'Gestisci ordini e raccoglitori, indipendentemente dalle restrizioni su di loro'),
26
   (11, 'group_manage', 'Gestisci ordini e ordini d\'acquisto'),
26
   (11, 'group_manage', 'Gestisci ordini e ordini d\'acquisto'),
27
   (11, 'order_receive', 'Gestisci arrivi'),
27
   (11, 'order_receive', 'Gestisci arrivi'),
28
   (11, 'order_receive_all', 'Receive all orders'),
28
   (11, 'budget_add_del', 'Aggiungi e cancella budgets (senza modificarli)'),
29
   (11, 'budget_add_del', 'Aggiungi e cancella budgets (senza modificarli)'),
29
   (11, 'budget_manage_all', 'Gestisci tutti i budgets'),
30
   (11, 'budget_manage_all', 'Gestisci tutti i budgets'),
30
   (13, 'edit_news', 'Scrivi le news per l\'OPAC e per l\'interfaccia staff'),
31
   (13, 'edit_news', 'Scrivi le news per l\'OPAC e per l\'interfaccia staff'),
(-)a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql (+1 lines)
Lines 45-50 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
45
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
45
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
46
   (11, 'group_manage', 'Administrere bestillinger og kurv-grupper'),
46
   (11, 'group_manage', 'Administrere bestillinger og kurv-grupper'),
47
   (11, 'order_receive', 'Administrere bestillinger og kurver'),
47
   (11, 'order_receive', 'Administrere bestillinger og kurver'),
48
   (11, 'order_receive_all', 'Receive all orders'),
48
   (11, 'budget_add_del', 'Legge til og slette budsjetter (men ikke endre budsjetter)'),
49
   (11, 'budget_add_del', 'Legge til og slette budsjetter (men ikke endre budsjetter)'),
49
   (11, 'budget_manage_all', 'Administrere alle budsjetter'),
50
   (11, 'budget_manage_all', 'Administrere alle budsjetter'),
50
   (13, 'edit_news', 'Legge ut nyhter i OPACen og det interne grensesnittet'),
51
   (13, 'edit_news', 'Legge ut nyhter i OPACen og det interne grensesnittet'),
(-)a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql (+1 lines)
Lines 25-30 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
25
   (11, 'order_manage_all', 'Zarządzanie zamówieniami i koszykami, niezależnie od ich ustawień'),
25
   (11, 'order_manage_all', 'Zarządzanie zamówieniami i koszykami, niezależnie od ich ustawień'),
26
   (11, 'group_manage', 'Zarządzanie zamówieniami i grupami koszyków'),
26
   (11, 'group_manage', 'Zarządzanie zamówieniami i grupami koszyków'),
27
   (11, 'order_receive', 'Zarządzanie zamówieniami i koszykami'),
27
   (11, 'order_receive', 'Zarządzanie zamówieniami i koszykami'),
28
   (11, 'order_receive_all', 'Receive all orders'),
28
   (11, 'budget_add_del', 'Dodawanie i usuwanie budżetów (bez modyfikacji)'),
29
   (11, 'budget_add_del', 'Dodawanie i usuwanie budżetów (bez modyfikacji)'),
29
   (11, 'budget_manage_all', 'Zarządzanie wszystkimi budżetami'),
30
   (11, 'budget_manage_all', 'Zarządzanie wszystkimi budżetami'),
30
   (13, 'edit_news', 'Tworzenie i publikowanie wiadomości w interfejsie bibliotekarza i OPAC'),
31
   (13, 'edit_news', 'Tworzenie i publikowanie wiadomości w interfejsie bibliotekarza i OPAC'),
(-)a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql (+1 lines)
Lines 52-57 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
52
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
52
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
53
   (11, 'group_manage', 'Manage orders & basketgroups'),
53
   (11, 'group_manage', 'Manage orders & basketgroups'),
54
   (11, 'order_receive', 'Manage orders & basket'),
54
   (11, 'order_receive', 'Manage orders & basket'),
55
   (11, 'order_receive_all', 'Receive all orders'),
55
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
56
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
56
   (11, 'budget_manage_all', 'Manage all budgets'),
57
   (11, 'budget_manage_all', 'Manage all budgets'),
57
   (13, 'edit_news',                   'Написание новостей для электронного каталога и интерфейса библиотекарей'),
58
   (13, 'edit_news',                   'Написание новостей для электронного каталога и интерфейса библиотекарей'),
(-)a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql (+1 lines)
Lines 52-57 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
52
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
52
   (11, 'order_manage_all', 'Manage all orders and baskets, regardless of restrictions on them'),
53
   (11, 'group_manage', 'Manage orders & basketgroups'),
53
   (11, 'group_manage', 'Manage orders & basketgroups'),
54
   (11, 'order_receive', 'Manage orders & basket'),
54
   (11, 'order_receive', 'Manage orders & basket'),
55
   (11, 'order_receive_all', 'Receive all orders'),
55
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
56
   (11, 'budget_add_del', 'Add and delete budgets (but cant modify budgets)'),
56
   (11, 'budget_manage_all', 'Manage all budgets'),
57
   (11, 'budget_manage_all', 'Manage all budgets'),
57
   (13, 'edit_news',                   'Написання новин для електронного каталогу та інтерфейсу бібліотекарів'),
58
   (13, 'edit_news',                   'Написання новин для електронного каталогу та інтерфейсу бібліотекарів'),
(-)a/installer/data/mysql/updatedatabase.pl (+20 lines)
Lines 9773-9778 if ( CheckVersion($DBversion) ) { Link Here
9773
    SetVersion ($DBversion);
9773
    SetVersion ($DBversion);
9774
}
9774
}
9775
9775
9776
$DBversion = "3.19.00.012";
9777
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
9778
    $dbh->do("
9779
        INSERT INTO permissions (module_bit, code, description)
9780
          VALUES (11, 'order_receive_all', 'Receive all orders')
9781
    ");
9782
9783
    # Add this new permission to all users that have 'order_receive' permission
9784
    $dbh->do(q{
9785
        INSERT INTO user_permissions (borrowernumber, module_bit, code)
9786
          SELECT borrowernumber, 11, 'order_receive_all'
9787
          FROM user_permissions
9788
          WHERE code = 'order_receive'
9789
          GROUP BY borrowernumber
9790
    });
9791
9792
    print "Upgrade to $DBversion done (Bug 7290: Add permission order_receive_all)\n";
9793
    SetVersion($DBversion);
9794
}
9795
9776
=head1 FUNCTIONS
9796
=head1 FUNCTIONS
9777
9797
9778
=head2 TableExists($table)
9798
=head2 TableExists($table)
(-)a/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 345-350 Link Here
345
    This ordernumber does not exist.
349
    This ordernumber does not exist.
346
[% END %]
350
[% END %]
347
351
352
[% END %][%# IF (cannot_receive_order) %]
348
</div>
353
</div>
349
</div>
354
</div>
350
<div class="yui-b">
355
<div class="yui-b">
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt (-4 / +22 lines)
Lines 151-161 Link Here
151
	<div class="yui-b">
151
	<div class="yui-b">
152
	[% IF ( receive_error ) %]
152
	[% IF ( receive_error ) %]
153
	<div class="dialog alert">
153
	<div class="dialog alert">
154
	<h3>Error adding items:</h3>
154
	<h3>Error receiving items:</h3>
155
	<ul>
155
	<ul>
156
	[% FOREACH error_loo IN error_loop %]
156
        [% FOREACH error IN error_loop %]
157
		<li>[% error_loo.error_param %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %] <!-- todo: other error conditions come here. --></li>
157
            <li>
158
	[% END %]
158
                [% error.error_param %]
159
                [% IF ( error.error_duplicate_barcode ) %]
160
                    Duplicate Barcode
161
                [% ELSIF (error.error_cannot_receive_order) %]
162
                    You were not authorised to receive this order
163
                [% END %]
164
                <!-- todo: other error conditions come here. -->
165
            </li>
166
        [% END %]
159
	</ul>
167
	</ul>
160
	</div>
168
	</div>
161
	[% END %]
169
	[% END %]
Lines 202-207 Link Here
202
        </div>
210
        </div>
203
    [% END %]
211
    [% END %]
204
212
213
    [% IF error_cannot_receive_order %]
214
      <div class="dialog error">
215
        You cannot receive this order.
216
      </div>
217
    [% END %]
218
205
[% UNLESS no_orders_to_display %]
219
[% UNLESS no_orders_to_display %]
206
<div id="acqui_receive_summary">
220
<div id="acqui_receive_summary">
207
<p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
221
<p><strong>Invoice number:</strong> [% invoice %] <strong>Received by:</strong> [% loggedinusername %] <strong>On:</strong> [% formatteddatereceived %]</p>
Lines 280-286 Link Here
280
                <td>[% loop_order.total | $Price %]</td>
294
                <td>[% loop_order.total | $Price %]</td>
281
                <td>[% loop_order.budget_name %]</td>
295
                <td>[% loop_order.budget_name %]</td>
282
				<td>
296
				<td>
297
                            [% IF (loop_order.can_receive) %]
283
                              <a href="orderreceive.pl?ordernumber=[% loop_order.ordernumber %]&amp;invoiceid=[% invoiceid %]">Receive</a>
298
                              <a href="orderreceive.pl?ordernumber=[% loop_order.ordernumber %]&amp;invoiceid=[% invoiceid %]">Receive</a>
299
                            [% ELSE %]
300
                              Can't receive order
301
                            [% END %]
284
                    <br />
302
                    <br />
285
                    <a href="#" onclick="transfer_order_popup([% loop_order.ordernumber %]); return false;">Transfer</a>
303
                    <a href="#" onclick="transfer_order_popup([% loop_order.ordernumber %]); return false;">Transfer</a>
286
				</td>
304
				</td>
(-)a/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