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 1476-1481 q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?}, Link Here
1476
            $biblionumber,
1480
            $biblionumber,
1477
            $ordernumber
1481
            $ordernumber
1478
        );
1482
        );
1483
1484
        # All items have been received, sent a notification to users
1485
        NotifyOrderUsers( $ordernumber );
1486
1479
    }
1487
    }
1480
    return ($datereceived, $new_ordernumber);
1488
    return ($datereceived, $new_ordernumber);
1481
}
1489
}
Lines 2896-2901 sub GetBiblioCountByBasketno { Link Here
2896
    return $sth->fetchrow;
2904
    return $sth->fetchrow;
2897
}
2905
}
2898
2906
2907
2908
=head3 GetOrderUsers
2909
2910
    $order_users_ids = &GetOrderUsers($ordernumber);
2911
2912
Returns a list of all borrowernumbers that are in order users list
2913
2914
=cut
2915
2916
sub GetOrderUsers {
2917
    my ($ordernumber) = @_;
2918
2919
    return unless $ordernumber;
2920
2921
    my $query = q|
2922
        SELECT borrowernumber
2923
        FROM aqorderusers
2924
        WHERE ordernumber = ?
2925
    |;
2926
    my $dbh = C4::Context->dbh;
2927
    my $sth = $dbh->prepare($query);
2928
    $sth->execute($ordernumber);
2929
    my $results = $sth->fetchall_arrayref( {} );
2930
2931
    my @borrowernumbers;
2932
    foreach (@$results) {
2933
        push @borrowernumbers, $_->{'borrowernumber'};
2934
    }
2935
2936
    return @borrowernumbers;
2937
}
2938
2939
=head3 ModOrderUsers
2940
2941
    my @order_users_ids = (1, 2, 3);
2942
    &ModOrderUsers($ordernumber, @basketusers_ids);
2943
2944
Delete all users from order users list, and add users in C<@order_users_ids>
2945
to this users list.
2946
2947
=cut
2948
2949
sub ModOrderUsers {
2950
    my ( $ordernumber, @order_users_ids ) = @_;
2951
2952
    return unless $ordernumber;
2953
2954
    my $dbh   = C4::Context->dbh;
2955
    my $query = q|
2956
        DELETE FROM aqorderusers
2957
        WHERE ordernumber = ?
2958
    |;
2959
    my $sth = $dbh->prepare($query);
2960
    $sth->execute($ordernumber);
2961
2962
    $query = q|
2963
        INSERT INTO aqorderusers (ordernumber, borrowernumber)
2964
        VALUES (?, ?)
2965
    |;
2966
    $sth = $dbh->prepare($query);
2967
    foreach my $order_user_id (@order_users_ids) {
2968
        $sth->execute( $ordernumber, $order_user_id );
2969
    }
2970
}
2971
2972
sub NotifyOrderUsers {
2973
    my ($ordernumber) = @_;
2974
2975
    my @borrowernumbers = GetOrderUsers($ordernumber);
2976
    return unless @borrowernumbers;
2977
2978
    my $order = GetOrder( $ordernumber );
2979
    for my $borrowernumber (@borrowernumbers) {
2980
        my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
2981
        my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
2982
        my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
2983
        my $letter = C4::Letters::GetPreparedLetter(
2984
            module      => 'acquisition',
2985
            letter_code => 'ACQ_NOTIF_ON_RECEIV',
2986
            branchcode  => $branch->{branchcode},
2987
            tables      => {
2988
                'branches'    => $branch,
2989
                'borrowers'   => $borrower,
2990
                'biblio'      => $biblio,
2991
                'aqorders'    => $order,
2992
            },
2993
        );
2994
        if ( $letter ) {
2995
            C4::Letters::EnqueueLetter(
2996
                {
2997
                    letter         => $letter,
2998
                    borrowernumber => $borrowernumber,
2999
                    LibraryName    => C4::Context->preference("LibraryName"),
3000
                    message_transport_type => 'email',
3001
                }
3002
            ) or warn "can't enqueue letter $letter";
3003
        }
3004
    }
3005
}
3006
2899
1;
3007
1;
2900
__END__
3008
__END__
2901
3009
(-)a/acqui/addorder.pl (-2 / +6 lines)
Lines 270-277 if ( $orderinfo->{quantity} ne '0' ) { Link Here
270
270
271
    # if we already have $ordernumber, then it's an ordermodif
271
    # if we already have $ordernumber, then it's an ordermodif
272
    my $order = Koha::Acquisition::Order->new($orderinfo);
272
    my $order = Koha::Acquisition::Order->new($orderinfo);
273
    if ($$orderinfo{ordernumber}) {
273
    if ( $orderinfo->{ordernumber} ) {
274
        ModOrder( $orderinfo);
274
        ModOrder($orderinfo);
275
        my $order_users_ids = $input->param('users_ids');
276
        my @order_users = split( /:/, $order_users_ids );
277
278
        ModOrderUsers( $orderinfo->{ordernumber}, @order_users );
275
    }
279
    }
276
    else { # else, it's a new line
280
    else { # else, it's a new line
277
        $order->insert;
281
        $order->insert;
(-)a/acqui/basket.pl (-3 / +3 lines)
Lines 238-244 if ( $op eq 'delete_confirm' ) { Link Here
238
    ReopenBasket($query->param('basketno'));
238
    ReopenBasket($query->param('basketno'));
239
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
239
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
240
} elsif ( $op eq 'mod_users' ) {
240
} elsif ( $op eq 'mod_users' ) {
241
    my $basketusers_ids = $query->param('basketusers_ids');
241
    my $basketusers_ids = $query->param('users_ids');
242
    my @basketusers = split( /:/, $basketusers_ids );
242
    my @basketusers = split( /:/, $basketusers_ids );
243
    ModBasketUsers($basketno, @basketusers);
243
    ModBasketUsers($basketno, @basketusers);
244
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
244
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
Lines 408-415 if ( $op eq 'delete_confirm' ) { Link Here
408
        creationdate         => $basket->{creationdate},
408
        creationdate         => $basket->{creationdate},
409
        authorisedby         => $basket->{authorisedby},
409
        authorisedby         => $basket->{authorisedby},
410
        authorisedbyname     => $basket->{authorisedbyname},
410
        authorisedbyname     => $basket->{authorisedbyname},
411
        basketusers_ids      => join(':', @basketusers_ids),
411
        users_ids            => join(':', @basketusers_ids),
412
        basketusers          => \@basketusers,
412
        users                => \@basketusers,
413
        closedate            => $basket->{closedate},
413
        closedate            => $basket->{closedate},
414
        estimateddeliverydate=> $estimateddeliverydate,
414
        estimateddeliverydate=> $estimateddeliverydate,
415
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
415
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
(-)a/acqui/neworderempty.pl (+9 lines)
Lines 173-178 if ( $ordernumber eq '' and defined $params->{'breedingid'}){ Link Here
173
173
174
174
175
175
176
my ( @order_user_ids, @order_users );
176
if ( $ordernumber eq '' ) {    # create order
177
if ( $ordernumber eq '' ) {    # create order
177
    $new = 'yes';
178
    $new = 'yes';
178
179
Lines 195-200 else { #modify order Link Here
195
196
196
    $basket   = GetBasket( $data->{'basketno'} );
197
    $basket   = GetBasket( $data->{'basketno'} );
197
    $basketno = $basket->{'basketno'};
198
    $basketno = $basket->{'basketno'};
199
200
    @order_user_ids = GetOrderUsers($ordernumber);
201
    foreach my $order_user_id (@order_user_ids) {
202
        my $order_user = GetMember(borrowernumber => $order_user_id);
203
        push @order_users, $order_user if $order_user;
204
    }
198
}
205
}
199
206
200
my $suggestion;
207
my $suggestion;
Lines 400-405 $template->param( Link Here
400
    import_batch_id  => $import_batch_id,
407
    import_batch_id  => $import_batch_id,
401
    subscriptionid   => $subscriptionid,
408
    subscriptionid   => $subscriptionid,
402
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
409
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
410
    users_ids        => join(':', @order_user_ids),
411
    users            => \@order_users,
403
    (uc(C4::Context->preference("marcflavour"))) => 1
412
    (uc(C4::Context->preference("marcflavour"))) => 1
404
);
413
);
405
414
(-)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