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

(-)a/C4/Acquisition.pm (+108 lines)
Lines 81-86 BEGIN { Link Here
81
81
82
        &AddClaim
82
        &AddClaim
83
        &GetBiblioCountByBasketno
83
        &GetBiblioCountByBasketno
84
85
        &GetOrderUsers
86
        &ModOrderUsers
87
        &NotifyOrderUsers
84
    );
88
    );
85
}
89
}
86
90
Lines 1562-1567 q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?}, Link Here
1562
            $biblionumber,
1566
            $biblionumber,
1563
            $ordernumber
1567
            $ordernumber
1564
        );
1568
        );
1569
1570
        # All items have been received, sent a notification to users
1571
        NotifyOrderUsers( $ordernumber );
1572
1565
    }
1573
    }
1566
    return ($datereceived, $new_ordernumber);
1574
    return ($datereceived, $new_ordernumber);
1567
}
1575
}
Lines 2986-2991 sub GetBiblioCountByBasketno { Link Here
2986
    return $sth->fetchrow;
2994
    return $sth->fetchrow;
2987
}
2995
}
2988
2996
2997
2998
=head3 GetOrderUsers
2999
3000
    $order_users_ids = &GetOrderUsers($ordernumber);
3001
3002
Returns a list of all borrowernumbers that are in order users list
3003
3004
=cut
3005
3006
sub GetOrderUsers {
3007
    my ($ordernumber) = @_;
3008
3009
    return unless $ordernumber;
3010
3011
    my $query = q|
3012
        SELECT borrowernumber
3013
        FROM aqorderusers
3014
        WHERE ordernumber = ?
3015
    |;
3016
    my $dbh = C4::Context->dbh;
3017
    my $sth = $dbh->prepare($query);
3018
    $sth->execute($ordernumber);
3019
    my $results = $sth->fetchall_arrayref( {} );
3020
3021
    my @borrowernumbers;
3022
    foreach (@$results) {
3023
        push @borrowernumbers, $_->{'borrowernumber'};
3024
    }
3025
3026
    return @borrowernumbers;
3027
}
3028
3029
=head3 ModOrderUsers
3030
3031
    my @order_users_ids = (1, 2, 3);
3032
    &ModOrderUsers($ordernumber, @basketusers_ids);
3033
3034
Delete all users from order users list, and add users in C<@order_users_ids>
3035
to this users list.
3036
3037
=cut
3038
3039
sub ModOrderUsers {
3040
    my ( $ordernumber, @order_users_ids ) = @_;
3041
3042
    return unless $ordernumber;
3043
3044
    my $dbh   = C4::Context->dbh;
3045
    my $query = q|
3046
        DELETE FROM aqorderusers
3047
        WHERE ordernumber = ?
3048
    |;
3049
    my $sth = $dbh->prepare($query);
3050
    $sth->execute($ordernumber);
3051
3052
    $query = q|
3053
        INSERT INTO aqorderusers (ordernumber, borrowernumber)
3054
        VALUES (?, ?)
3055
    |;
3056
    $sth = $dbh->prepare($query);
3057
    foreach my $order_user_id (@order_users_ids) {
3058
        $sth->execute( $ordernumber, $order_user_id );
3059
    }
3060
}
3061
3062
sub NotifyOrderUsers {
3063
    my ($ordernumber) = @_;
3064
3065
    my @borrowernumbers = GetOrderUsers($ordernumber);
3066
    return unless @borrowernumbers;
3067
3068
    my $order = GetOrder( $ordernumber );
3069
    for my $borrowernumber (@borrowernumbers) {
3070
        my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
3071
        my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
3072
        my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
3073
        my $letter = C4::Letters::GetPreparedLetter(
3074
            module      => 'acquisition',
3075
            letter_code => 'ACQ_NOTIF_ON_RECEIV',
3076
            branchcode  => $branch->{branchcode},
3077
            tables      => {
3078
                'branches'    => $branch,
3079
                'borrowers'   => $borrower,
3080
                'biblio'      => $biblio,
3081
                'aqorders'    => $order,
3082
            },
3083
        );
3084
        if ( $letter ) {
3085
            C4::Letters::EnqueueLetter(
3086
                {
3087
                    letter         => $letter,
3088
                    borrowernumber => $borrowernumber,
3089
                    LibraryName    => C4::Context->preference("LibraryName"),
3090
                    message_transport_type => 'email',
3091
                }
3092
            ) or warn "can't enqueue letter $letter";
3093
        }
3094
    }
3095
}
3096
2989
1;
3097
1;
2990
__END__
3098
__END__
2991
3099
(-)a/acqui/addorder.pl (-2 / +6 lines)
Lines 271-278 if ( $orderinfo->{quantity} ne '0' ) { Link Here
271
    $orderinfo->{unitprice} = $orderinfo->{ecost} if not defined $orderinfo->{unitprice} or $orderinfo->{unitprice} eq '';
271
    $orderinfo->{unitprice} = $orderinfo->{ecost} if not defined $orderinfo->{unitprice} or $orderinfo->{unitprice} eq '';
272
272
273
    # if we already have $ordernumber, then it's an ordermodif
273
    # if we already have $ordernumber, then it's an ordermodif
274
    if ($$orderinfo{ordernumber}) {
274
    if ( $orderinfo->{ordernumber} ) {
275
        ModOrder( $orderinfo);
275
        ModOrder($orderinfo);
276
        my $order_users_ids = $input->param('users_ids');
277
        my @order_users = split( /:/, $order_users_ids );
278
279
        ModOrderUsers( $orderinfo->{ordernumber}, @order_users );
276
    }
280
    }
277
    else { # else, it's a new line
281
    else { # else, it's a new line
278
        @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);
282
        @$orderinfo{qw(basketno ordernumber )} = NewOrder($orderinfo);
(-)a/acqui/basket.pl (-3 / +3 lines)
Lines 235-241 if ( $op eq 'delete_confirm' ) { Link Here
235
    ReopenBasket($query->param('basketno'));
235
    ReopenBasket($query->param('basketno'));
236
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
236
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
237
} elsif ( $op eq 'mod_users' ) {
237
} elsif ( $op eq 'mod_users' ) {
238
    my $basketusers_ids = $query->param('basketusers_ids');
238
    my $basketusers_ids = $query->param('users_ids');
239
    my @basketusers = split( /:/, $basketusers_ids );
239
    my @basketusers = split( /:/, $basketusers_ids );
240
    ModBasketUsers($basketno, @basketusers);
240
    ModBasketUsers($basketno, @basketusers);
241
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
241
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
Lines 403-410 if ( $op eq 'delete_confirm' ) { Link Here
403
        creationdate         => $basket->{creationdate},
403
        creationdate         => $basket->{creationdate},
404
        authorisedby         => $basket->{authorisedby},
404
        authorisedby         => $basket->{authorisedby},
405
        authorisedbyname     => $basket->{authorisedbyname},
405
        authorisedbyname     => $basket->{authorisedbyname},
406
        basketusers_ids      => join(':', @basketusers_ids),
406
        users_ids            => join(':', @basketusers_ids),
407
        basketusers          => \@basketusers,
407
        users                => \@basketusers,
408
        closedate            => $basket->{closedate},
408
        closedate            => $basket->{closedate},
409
        estimateddeliverydate=> $estimateddeliverydate,
409
        estimateddeliverydate=> $estimateddeliverydate,
410
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
410
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
(-)a/acqui/neworderempty.pl (+9 lines)
Lines 170-175 if ( $ordernumber eq '' and defined $params->{'breedingid'}){ Link Here
170
170
171
171
172
172
173
my ( @order_user_ids, @order_users );
173
if ( $ordernumber eq '' ) {    # create order
174
if ( $ordernumber eq '' ) {    # create order
174
    $new = 'yes';
175
    $new = 'yes';
175
176
Lines 192-197 else { #modify order Link Here
192
193
193
    $basket   = GetBasket( $data->{'basketno'} );
194
    $basket   = GetBasket( $data->{'basketno'} );
194
    $basketno = $basket->{'basketno'};
195
    $basketno = $basket->{'basketno'};
196
197
    @order_user_ids = GetOrderUsers($ordernumber);
198
    foreach my $order_user_id (@order_user_ids) {
199
        my $order_user = GetMember(borrowernumber => $order_user_id);
200
        push @order_users, $order_user if $order_user;
201
    }
195
}
202
}
196
203
197
my $suggestion;
204
my $suggestion;
Lines 397-402 $template->param( Link Here
397
    import_batch_id  => $import_batch_id,
404
    import_batch_id  => $import_batch_id,
398
    subscriptionid   => $subscriptionid,
405
    subscriptionid   => $subscriptionid,
399
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
406
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
407
    users_ids        => join(':', @order_user_ids),
408
    users            => \@order_users,
400
    (uc(C4::Context->preference("marcflavour"))) => 1
409
    (uc(C4::Context->preference("marcflavour"))) => 1
401
);
410
);
402
411
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt (+57 lines)
Lines 160-165 $(document).ready(function() Link Here
160
        });
160
        });
161
        $("#budget_id").change();
161
        $("#budget_id").change();
162
    });
162
    });
163
164
    function UserSearchPopup(f) {
165
        window.open(
166
            "/cgi-bin/koha/acqui/add_user_search.pl",
167
            'UserSearchPopup',
168
            'width=740,height=450,toolbar=no,'
169
         );
170
    }
171
172
    function add_user(borrowernumber, borrowername) {
173
        var ids = $("#users_ids").val();
174
        if(ids.length > 0) {
175
            ids = ids.split(':');
176
        } else {
177
            ids = new Array;
178
        }
179
        if (ids.indexOf(borrowernumber) < 0) {
180
            ids.push(borrowernumber);
181
            $("#users_ids").val(ids.join(':'));
182
            var li = '<li id="user_'+borrowernumber+'">'+borrowername
183
                + ' [<a style="cursor:pointer" onclick="del_user('+borrowernumber+');">'
184
                + _("Delete user") + '</a>]</li>';
185
            $("#users_names").append(li);
186
            return 0;
187
        }
188
        return -1;
189
    }
190
191
    function del_user(borrowernumber) {
192
      $("#user_"+borrowernumber).remove();
193
      var ids = $("#users_ids").val().split(':');
194
      ids.splice(ids.indexOf(borrowernumber.toString()), 1);
195
      $("#users_ids").val(ids.join(':'));
196
    }
163
//]]>
197
//]]>
164
</script>
198
</script>
165
</head>
199
</head>
Lines 227-232 $(document).ready(function() Link Here
227
261
228
<form action="/cgi-bin/koha/acqui/addorder.pl" method="post" id="Aform" onsubmit="return Check(this);">
262
<form action="/cgi-bin/koha/acqui/addorder.pl" method="post" id="Aform" onsubmit="return Check(this);">
229
263
264
    <fieldset class="rows">
265
        <legend>Patrons</legend>
266
        <ol>
267
            <li>
268
                <span class="label">To notify on reveiving:</span>
269
                <div style="float:left">
270
                    <ul id="users_names" style="padding-left:0">
271
                      [% FOREACH user IN users %]
272
                        <li id="user_[% user.borrowernumber %]">
273
                            [% user.firstname %] [% user.surname %]
274
                            [<a onclick="del_user([% user.borrowernumber %]);" style="cursor:pointer">Delete user</a>]
275
                        </li>
276
                      [% END %]
277
                    </ul>
278
                    <input type="hidden" id="basketno" name="basketno" value="[% basketno %]" />
279
                    <input type="hidden" id="users_ids" name="users_ids" value="[% users_ids %]" />
280
                    <input type="hidden" id="op" name="op" value="mod_users" />
281
                    <input type="button" id="add_user" onclick="UserSearchPopup();" value="Add user" />
282
                </div>
283
            </li>
284
        </ol>
285
    </fieldset>
286
230
<fieldset class="rows">
287
<fieldset class="rows">
231
        <legend>
288
        <legend>
232
            Catalog details
289
            Catalog details
(-)a/tools/letter.pl (-1 / +3 lines)
Lines 221-226 sub add_form { Link Here
221
    if ($module eq 'reserves') {
221
    if ($module eq 'reserves') {
222
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
222
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
223
    }
223
    }
224
    elsif ( $module eq 'acquisition' ) {
225
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'items');
226
    }
224
    elsif ($module eq 'claimacquisition') {
227
    elsif ($module eq 'claimacquisition') {
225
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
228
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
226
    }
229
    }
227
- 

Return to bug 12648