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 2883-2888 sub GetBiblioCountByBasketno { Link Here
2883
    return $sth->fetchrow;
2891
    return $sth->fetchrow;
2884
}
2892
}
2885
2893
2894
2895
=head3 GetOrderUsers
2896
2897
    $order_users_ids = &GetOrderUsers($ordernumber);
2898
2899
Returns a list of all borrowernumbers that are in order users list
2900
2901
=cut
2902
2903
sub GetOrderUsers {
2904
    my ($ordernumber) = @_;
2905
2906
    return unless $ordernumber;
2907
2908
    my $query = q|
2909
        SELECT borrowernumber
2910
        FROM aqorderusers
2911
        WHERE ordernumber = ?
2912
    |;
2913
    my $dbh = C4::Context->dbh;
2914
    my $sth = $dbh->prepare($query);
2915
    $sth->execute($ordernumber);
2916
    my $results = $sth->fetchall_arrayref( {} );
2917
2918
    my @borrowernumbers;
2919
    foreach (@$results) {
2920
        push @borrowernumbers, $_->{'borrowernumber'};
2921
    }
2922
2923
    return @borrowernumbers;
2924
}
2925
2926
=head3 ModOrderUsers
2927
2928
    my @order_users_ids = (1, 2, 3);
2929
    &ModOrderUsers($ordernumber, @basketusers_ids);
2930
2931
Delete all users from order users list, and add users in C<@order_users_ids>
2932
to this users list.
2933
2934
=cut
2935
2936
sub ModOrderUsers {
2937
    my ( $ordernumber, @order_users_ids ) = @_;
2938
2939
    return unless $ordernumber;
2940
2941
    my $dbh   = C4::Context->dbh;
2942
    my $query = q|
2943
        DELETE FROM aqorderusers
2944
        WHERE ordernumber = ?
2945
    |;
2946
    my $sth = $dbh->prepare($query);
2947
    $sth->execute($ordernumber);
2948
2949
    $query = q|
2950
        INSERT INTO aqorderusers (ordernumber, borrowernumber)
2951
        VALUES (?, ?)
2952
    |;
2953
    $sth = $dbh->prepare($query);
2954
    foreach my $order_user_id (@order_users_ids) {
2955
        $sth->execute( $ordernumber, $order_user_id );
2956
    }
2957
}
2958
2959
sub NotifyOrderUsers {
2960
    my ($ordernumber) = @_;
2961
2962
    my @borrowernumbers = GetOrderUsers($ordernumber);
2963
    return unless @borrowernumbers;
2964
2965
    my $order = GetOrder( $ordernumber );
2966
    for my $borrowernumber (@borrowernumbers) {
2967
        my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
2968
        my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
2969
        my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
2970
        my $letter = C4::Letters::GetPreparedLetter(
2971
            module      => 'acquisition',
2972
            letter_code => 'ACQ_NOTIF_ON_RECEIV',
2973
            branchcode  => $branch->{branchcode},
2974
            tables      => {
2975
                'branches'    => $branch,
2976
                'borrowers'   => $borrower,
2977
                'biblio'      => $biblio,
2978
                'aqorders'    => $order,
2979
            },
2980
        );
2981
        if ( $letter ) {
2982
            C4::Letters::EnqueueLetter(
2983
                {
2984
                    letter         => $letter,
2985
                    borrowernumber => $borrowernumber,
2986
                    LibraryName    => C4::Context->preference("LibraryName"),
2987
                    message_transport_type => 'email',
2988
                }
2989
            ) or warn "can't enqueue letter $letter";
2990
        }
2991
    }
2992
}
2993
2886
1;
2994
1;
2887
__END__
2995
__END__
2888
2996
(-)a/acqui/addorder.pl (-2 / +6 lines)
Lines 263-270 if ( $orderinfo->{quantity} ne '0' ) { Link Here
263
263
264
    # if we already have $ordernumber, then it's an ordermodif
264
    # if we already have $ordernumber, then it's an ordermodif
265
    my $order = Koha::Acquisition::Order->new($orderinfo);
265
    my $order = Koha::Acquisition::Order->new($orderinfo);
266
    if ($$orderinfo{ordernumber}) {
266
    if ( $orderinfo->{ordernumber} ) {
267
        ModOrder( $orderinfo);
267
        ModOrder($orderinfo);
268
        my $order_users_ids = $input->param('users_ids');
269
        my @order_users = split( /:/, $order_users_ids );
270
271
        ModOrderUsers( $orderinfo->{ordernumber}, @order_users );
268
    }
272
    }
269
    else { # else, it's a new line
273
    else { # else, it's a new line
270
        $order->insert;
274
        $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 399-404 $template->param( Link Here
399
    import_batch_id  => $import_batch_id,
406
    import_batch_id  => $import_batch_id,
400
    subscriptionid   => $subscriptionid,
407
    subscriptionid   => $subscriptionid,
401
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
408
    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
409
    users_ids        => join(':', @order_user_ids),
410
    users            => \@order_users,
402
    (uc(C4::Context->preference("marcflavour"))) => 1
411
    (uc(C4::Context->preference("marcflavour"))) => 1
403
);
412
);
404
413
(-)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 196-201 sub add_form { Link Here
196
    if ($module eq 'reserves') {
196
    if ($module eq 'reserves') {
197
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
197
        push @{$field_selection}, add_fields('borrowers', 'reserves', 'biblio', 'items');
198
    }
198
    }
199
    elsif ( $module eq 'acquisition' ) {
200
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'items');
201
    }
199
    elsif ($module eq 'claimacquisition') {
202
    elsif ($module eq 'claimacquisition') {
200
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
203
        push @{$field_selection}, add_fields('aqbooksellers', 'aqorders', 'biblio', 'biblioitems');
201
    }
204
    }
202
- 

Return to bug 12648