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

(-)a/C4/Acquisition.pm (-5 / +42 lines)
Lines 1211-1231 cancelled. Link Here
1211
=cut
1211
=cut
1212
1212
1213
sub DelOrder {
1213
sub DelOrder {
1214
    my ( $bibnum, $ordernumber ) = @_;
1214
    my ( $bibnum, $ordernumber, $delete_biblio, $reason ) = @_;
1215
1216
    my $error;
1215
    my $dbh = C4::Context->dbh;
1217
    my $dbh = C4::Context->dbh;
1216
    my $query = "
1218
    my $query = "
1217
        UPDATE aqorders
1219
        UPDATE aqorders
1218
        SET    datecancellationprinted=now()
1220
        SET    datecancellationprinted=now()
1219
        WHERE  biblionumber=? AND ordernumber=?
1221
    ";
1222
    if($reason) {
1223
        $query .= "
1224
            , notes = IF(notes IS NULL,
1225
                CONCAT('Cancellation reason: ', ?),
1226
                CONCAT(notes, ' - Cancellation reason: ', ?)
1227
            )
1228
        ";
1229
    }
1230
    $query .= "
1231
        WHERE biblionumber=? AND ordernumber=?
1220
    ";
1232
    ";
1221
    my $sth = $dbh->prepare($query);
1233
    my $sth = $dbh->prepare($query);
1222
    $sth->execute( $bibnum, $ordernumber );
1234
    if($reason) {
1235
        $sth->execute($reason, $reason, $bibnum, $ordernumber);
1236
    } else {
1237
        $sth->execute( $bibnum, $ordernumber );
1238
    }
1223
    $sth->finish;
1239
    $sth->finish;
1240
1224
    my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1241
    my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1225
    foreach my $itemnumber (@itemnumbers){
1242
    foreach my $itemnumber (@itemnumbers){
1226
    	C4::Items::DelItem( $dbh, $bibnum, $itemnumber );
1243
        my $delcheck = C4::Items::DelItemCheck( $dbh, $bibnum, $itemnumber );
1244
1245
        if($delcheck != 1) {
1246
            $error->{'delitem'} = 1;
1247
        }
1248
    }
1249
1250
    if($delete_biblio) {
1251
        # We get the number of remaining items
1252
        my $itemcount = C4::Items::GetItemsCount($bibnum);
1253
1254
        # If there are no items left,
1255
        if ( $itemcount == 0 ) {
1256
            # We delete the record
1257
            my $delcheck = DelBiblio($bibnum);
1258
1259
            if($delcheck) {
1260
                $error->{'delbiblio'} = 1;
1261
            }
1262
        }
1227
    }
1263
    }
1228
    
1264
1265
    return $error;
1229
}
1266
}
1230
1267
1231
=head2 FUNCTIONS ABOUT PARCELS
1268
=head2 FUNCTIONS ABOUT PARCELS
(-)a/acqui/addorder.pl (-45 / +3 lines)
Lines 123-129 use strict; Link Here
123
use warnings;
123
use warnings;
124
use CGI;
124
use CGI;
125
use C4::Auth;			# get_template_and_user
125
use C4::Auth;			# get_template_and_user
126
use C4::Acquisition;	# NewOrder DelOrder ModOrder
126
use C4::Acquisition;	# NewOrder ModOrder
127
use C4::Suggestions;	# ModStatus
127
use C4::Suggestions;	# ModStatus
128
use C4::Biblio;			# AddBiblio TransformKohaToMarc
128
use C4::Biblio;			# AddBiblio TransformKohaToMarc
129
use C4::Items;
129
use C4::Items;
Lines 153-196 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
153
my $orderinfo					= $input->Vars;
153
my $orderinfo					= $input->Vars;
154
$orderinfo->{'list_price'}    ||=  0;
154
$orderinfo->{'list_price'}    ||=  0;
155
$orderinfo->{'uncertainprice'} ||= 0;
155
$orderinfo->{'uncertainprice'} ||= 0;
156
#my $ordernumber        = $input->param('ordernumber');
157
#my $basketno      = $input->param('basketno');
158
#my $booksellerid  = $input->param('booksellerid');
159
#my $existing      = $input->param('existing');    # existing biblio, (not basket or order)
160
#my $title         = $input->param('title');
161
#my $author        = $input->param('author');
162
#my $publicationyear= $input->param('publicationyear');
163
#my $isbn          = $input->param('ISBN');
164
#my $itemtype      = $input->param('format');
165
#my $quantity      = $input->param('quantity');		# FIXME: else ERROR!
166
#my $branch        = $input->param('branch');
167
#my $series        = $input->param('series');
168
#my $notes         = $input->param('notes');
169
#my $budget_id     = $input->param('budget_id');
170
#my $sort1         = $input->param('sort1');
171
#my $sort2         = $input->param('sort2');
172
#my $rrp           = $input->param('rrp');
173
#my $ecost         = $input->param('ecost');
174
#my $gst           = $input->param('GST');
175
#my $budget        = $input->param('budget');
176
#my $cost          = $input->param('cost');
177
#my $sub           = $input->param('sub');
178
#my $purchaseorder = $input->param('purchaseordernumber');
179
#my $invoice       = $input->param('invoice');
180
#my $publishercode = $input->param('publishercode');
181
#my $suggestionid  = $input->param('suggestionid');
182
#my $biblionumber  = $input->param('biblionumber');
183
#my $uncertainprice = $input->param('uncertainprice');
184
#my $import_batch_id= $input->param('import_batch_id');
185
#
186
#my $createbibitem = $input->param('createbibitem');
187
#
188
my $user          = $input->remote_user;
189
# create, modify or delete biblio
156
# create, modify or delete biblio
190
# create if $quantity>=0 and $existing='no'
157
# create if $quantity>0 and $existing='no'
191
# modify if $quantity>=0 and $existing='yes'
158
# modify if $quantity>0 and $existing='yes'
192
# delete if $quantity has been set to 0 by the librarian
193
# delete biblio if delbiblio has been set to 1 by the librarian
194
my $bibitemnum;
159
my $bibitemnum;
195
if ( $orderinfo->{quantity} ne '0' ) {
160
if ( $orderinfo->{quantity} ne '0' ) {
196
    #TODO:check to see if biblio exists
161
    #TODO:check to see if biblio exists
Lines 269-281 if ( $orderinfo->{quantity} ne '0' ) { Link Here
269
234
270
}
235
}
271
236
272
else { # qty=0, delete the line
273
    my $biblionumber = $input->param('biblionumber');
274
    DelOrder( $biblionumber, $$orderinfo{ordernumber} );
275
    if ($orderinfo->{delbiblio} == 1){
276
     DelBiblio($biblionumber);
277
    }
278
}
279
my $basketno=$$orderinfo{basketno};
237
my $basketno=$$orderinfo{basketno};
280
my $booksellerid=$$orderinfo{booksellerid};
238
my $booksellerid=$$orderinfo{booksellerid};
281
if (my $import_batch_id=$$orderinfo{import_batch_id}) {
239
if (my $import_batch_id=$$orderinfo{import_batch_id}) {
(-)a/acqui/cancelorder.pl (+74 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
# Copyright 2011 BibLibre SARL
4
# This file is part of Koha.
5
#
6
# Koha is free software; you can redistribute it and/or modify it under the
7
# terms of the GNU General Public License as published by the Free Software
8
# Foundation; either version 2 of the License, or (at your option) any later
9
# version.
10
#
11
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
12
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License along
16
# with Koha; if not, write to the Free Software Foundation, Inc.,
17
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18
19
=head1 NAME
20
21
cancelorder.pl
22
23
=head1 DESCRIPTION
24
25
Ask confirmation for cancelling an order line
26
and add possibility to indicate a reason for cancellation
27
(saved in aqorders.notes)
28
29
=cut
30
31
use Modern::Perl;
32
33
use CGI;
34
use C4::Auth;
35
use C4::Output;
36
use C4::Acquisition;
37
38
my $input = new CGI;
39
my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
40
    template_name   => 'acqui/cancelorder.tt',
41
    query           => $input,
42
    type            => 'intranet',
43
    authnotrequired => 0,
44
    flagsrequired   => { 'acquisition' => 'order_manage' },
45
    debug           => 1,
46
} );
47
48
my $action = $input->param('action');
49
my $ordernumber = $input->param('ordernumber');
50
my $biblionumber = $input->param('biblionumber');
51
my $referrer = $input->param('referrer') || $input->referer;
52
my $del_biblio = $input->param('del_biblio') ? 1 : 0;
53
54
if($action and $action eq "confirmcancel") {
55
    my $reason = $input->param('reason');
56
    my $error = DelOrder($biblionumber, $ordernumber, $del_biblio, $reason);
57
58
    if($error) {
59
        $template->param(error_delitem => 1) if $error->{'delitem'};
60
        $template->param(error_delbiblio => 1) if $error->{'delbiblio'};
61
    } else {
62
        $template->param(success_cancelorder => 1);
63
    }
64
    $template->param(confirmcancel => 1);
65
}
66
67
$template->param(
68
    ordernumber => $ordernumber,
69
    biblionumber => $biblionumber,
70
    referrer => $referrer,
71
    del_biblio => $del_biblio,
72
);
73
74
output_html_with_http_headers $input, $cookie, $template->output;
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt (-15 / +2 lines)
Lines 33-51 Link Here
33
                    window.location = "[% script_name %]?op=delete_confirm&basketno=[% basketno %]&booksellerid=[% booksellerid %]";
33
                    window.location = "[% script_name %]?op=delete_confirm&basketno=[% basketno %]&booksellerid=[% booksellerid %]";
34
                }
34
                }
35
            }
35
            }
36
            function confirm_delete_item(ordernumber, biblionumber) {
37
                var is_confirmed = confirm(_('Are you sure you want to delete this order ?'));
38
                if (is_confirmed) {
39
                    window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno=[% basketno %]&quantity=0&biblionumber="+biblionumber;
40
                }
41
            }
42
            
43
            function confirm_delete_biblio(ordernumber, biblionumber) {
44
                var is_confirmed = confirm(_('Are you sure you want to delete this catalog record and order ?'));
45
                if (is_confirmed) {
46
                    window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno=[% basketno %]&quantity=0&biblionumber="+biblionumber+"&delbiblio=1";
47
                    }
48
            }
49
36
50
//]]>
37
//]]>
51
</script>
38
</script>
Lines 287-296 Link Here
287
                            [% IF ( books_loo.left_holds_on_order ) %]
274
                            [% IF ( books_loo.left_holds_on_order ) %]
288
                            <span class="button" title="Can't delete order, ([% books_loo.holds_on_order %]) holds are linked with this order cancel holds first">Can't delete order</span><br>
275
                            <span class="button" title="Can't delete order, ([% books_loo.holds_on_order %]) holds are linked with this order cancel holds first">Can't delete order</span><br>
289
                            [% ELSE %]
276
                            [% ELSE %]
290
                            <a href="javascript:confirm_delete_item([% books_loo.ordernumber %],[% books_loo.biblionumber %])" class="button">Delete order</a><br>
277
                            <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% books_loo.ordernumber %]&biblionumber=[% books_loo.biblionumber %]&referrer=/cgi-bin/koha/acqui/basket.pl%3Fbasketno=[% basketno %]" class="button">Delete order</a><br>
291
                            [% END %]
278
                            [% END %]
292
                            [% IF ( books_loo.can_del_bib ) %]
279
                            [% IF ( books_loo.can_del_bib ) %]
293
                            <a href="javascript:confirm_delete_biblio([% books_loo.ordernumber %],[% books_loo.biblionumber %])" class="button">Delete order and catalog record</a><br>
280
                            <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% books_loo.ordernumber %]&biblionumber=[% books_loo.biblionumber %]&del_biblio=1&referrer=/cgi-bin/koha/acqui/basket.pl%3Fbasketno=[% basketno %]" class="button">Delete order and catalog record</a><br>
294
                            [% ELSE %]
281
                            [% ELSE %]
295
                            <span class="button" title="Can't delete catalog record, see constraints below">Can't delete order and catalog record</span><br>
282
                            <span class="button" title="Can't delete catalog record, see constraints below">Can't delete order and catalog record</span><br>
296
                            [% END %]
283
                            [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/cancelorder.tt (+62 lines)
Line 0 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Acquisition &rsaquo; Cancel order</title>
3
[% INCLUDE 'doc-head-close.inc' %]
4
</head>
5
6
<body>
7
[% INCLUDE 'header.inc' %]
8
9
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisition</a> &rsaquo; Cancel order</div>
10
11
<div id="doc3" class="yui-t2">
12
13
<div id="bd">
14
  <div id="yui-main">
15
    <div class="yui-b">
16
      [% UNLESS ( confirmcancel ) %]
17
      <form method="post" action="">
18
        <div class="dialog alert">
19
          <h3>Are you sure you want to cancel this order ([% ordernumber %])</h3>
20
          <p>
21
            [% IF (del_biblio) %]
22
              Bibliographic record will be deleted too.
23
            [% ELSE %]
24
              Bibliographic record will not be deleted.
25
            [% END %]
26
          </p>
27
          <p>
28
            <textarea name="reason" placeholder="Reason of cancellation"></textarea>
29
          </p>
30
          <input type="hidden" name="action" value="confirmcancel" />
31
          <input type="hidden" value="[% ordernumber %]" name="ordernumber" />
32
          <input type="hidden" value="[% biblionumber %]" name="biblionumber" />
33
          <input type="hidden" value="[% referrer %]" name="referrer" />
34
          [% IF (del_biblio) %]
35
            <input type="hidden" value="1" name="del_biblio" />
36
          [% END %]
37
          <input type="submit" class="approve" value="Yes, Cancel (Y)" accesskey="y" />
38
          <input type="submit" class="deny" value="No, Don't Cancel (N)" accesskey="n" onclick="window.location='[% referrer %]';return false;" />
39
        </div>
40
      </form>
41
      [% ELSE %]
42
        [% IF ( success_cancelorder ) %]
43
            <div class="dialog message">
44
                The order has been successfully canceled
45
        [% ELSE %]
46
            <div class="dialog alert">
47
                An error has occured.
48
                [% IF ( error_delitem ) %]
49
                    <p>The order has been canceled, although one or more items could not have been deleted.</p>
50
                [% END %]
51
                [% IF ( error_delbiblio ) %]
52
                <p>The order has been canceled, although the record has not been deleted.</p>
53
                [% END %]
54
        [% END %]
55
                <p>Click <a href="[% referrer %]">here</a> to return to previous page</p>
56
            </div>
57
      [% END %]
58
59
    </div>
60
  </div>
61
</div>
62
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt (-21 / +2 lines)
Lines 133-156 Link Here
133
133
134
//]]>
134
//]]>
135
</script>
135
</script>
136
<script type="text/javascript">
137
//<![CDATA[
138
            function confirm_delete_item(ordernumber, biblionumber) {
139
                var is_confirmed = confirm(_('Are you sure you want to delete this order ?'));
140
                if (is_confirmed) {
141
                    window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno=[% basketno %]&quantity=0&biblionumber="+biblionumber;
142
                }
143
            }
144
            
145
            function confirm_delete_biblio(ordernumber, biblionumber) {
146
                var is_confirmed = confirm(_('Are you sure you want to delete this catalog record and order ?'));
147
                if (is_confirmed) {
148
                    window.location = "addorder.pl?ordernumber="+ordernumber+"&basketno=[% basketno %]&quantity=0&biblionumber="+biblionumber+"&delbiblio=1";
149
                    }
150
            }
151
152
//]]>
153
</script>
154
136
155
</head>
137
</head>
156
<body>
138
<body>
Lines 254-263 Link Here
254
				    [% IF ( loop_order.left_holds_on_order ) %]
236
				    [% IF ( loop_order.left_holds_on_order ) %]
255
                    <span class="button" title="Can't delete order, ([% loop_order.holds_on_order %]) holds are linked with this order cancel holds first">Can't delete order</span><br>
237
                    <span class="button" title="Can't delete order, ([% loop_order.holds_on_order %]) holds are linked with this order cancel holds first">Can't delete order</span><br>
256
                    [% ELSE %]
238
                    [% ELSE %]
257
                    <a href="javascript:confirm_delete_item([% loop_order.ordernumber %],[% loop_order.biblionumber %])" class="button">Delete order</a><br>
239
                    <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% loop_order.ordernumber %]&biblionumber=[% loop_order.biblionumber %]&referrer=/cgi-bin/koha/acqui/parcel.pl%3Fsupplierid=[% supplierid %]%26datereceived=[% datereceived %]%26invoice=[% invoice %]" class="button">Delete order</a><br>
258
                    [% END %]
240
                    [% END %]
259
                    [% IF ( loop_order.can_del_bib ) %]
241
                    [% IF ( loop_order.can_del_bib ) %]
260
                    <a href="javascript:confirm_delete_biblio([% loop_order.ordernumber %],[% loop_order.biblionumber %])" class="button">Delete order and catalog record</a><br>
242
                    <a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber=[% loop_order.ordernumber %]&biblionumber=[% loop_order.biblionumber %]&del_biblio=1&referrer=/cgi-bin/koha/acqui/parcel.pl%3Fsupplierid=[% supplierid %]%26datereceived=[% datereceived %]%26invoice=[% invoice %]" class="button">Delete order and catalog record</a><br>
261
                    [% ELSE %]
243
                    [% ELSE %]
262
                    <span class="button" title="Can't delete catalog record, see constraints below">Can't delete order and catalog record</span><br>
244
                    <span class="button" title="Can't delete catalog record, see constraints below">Can't delete order and catalog record</span><br>
263
                    [% END %]
245
                    [% END %]
264
- 

Return to bug 7162