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

(-)a/C4/Acquisition.pm (+107 lines)
Lines 82-87 BEGIN { Link Here
82
82
83
        &AddClaim
83
        &AddClaim
84
        &GetBiblioCountByBasketno
84
        &GetBiblioCountByBasketno
85
86
        &GetOrderUsers
87
        &ModOrderUsers
88
        &NotifyOrderUsers
85
    );
89
    );
86
}
90
}
87
91
Lines 1477-1482 q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?}, Link Here
1477
            $biblionumber,
1481
            $biblionumber,
1478
            $ordernumber
1482
            $ordernumber
1479
        );
1483
        );
1484
1485
        # All items have been received, sent a notification to users
1486
        NotifyOrderUsers( $ordernumber );
1487
1480
    }
1488
    }
1481
    return ($datereceived, $new_ordernumber);
1489
    return ($datereceived, $new_ordernumber);
1482
}
1490
}
Lines 2960-2965 sub populate_order_with_prices { Link Here
2960
    return $order;
2968
    return $order;
2961
}
2969
}
2962
2970
2971
=head3 GetOrderUsers
2972
2973
    $order_users_ids = &GetOrderUsers($ordernumber);
2974
2975
Returns a list of all borrowernumbers that are in order users list
2976
2977
=cut
2978
2979
sub GetOrderUsers {
2980
    my ($ordernumber) = @_;
2981
2982
    return unless $ordernumber;
2983
2984
    my $query = q|
2985
        SELECT borrowernumber
2986
        FROM aqorderusers
2987
        WHERE ordernumber = ?
2988
    |;
2989
    my $dbh = C4::Context->dbh;
2990
    my $sth = $dbh->prepare($query);
2991
    $sth->execute($ordernumber);
2992
    my $results = $sth->fetchall_arrayref( {} );
2993
2994
    my @borrowernumbers;
2995
    foreach (@$results) {
2996
        push @borrowernumbers, $_->{'borrowernumber'};
2997
    }
2998
2999
    return @borrowernumbers;
3000
}
3001
3002
=head3 ModOrderUsers
3003
3004
    my @order_users_ids = (1, 2, 3);
3005
    &ModOrderUsers($ordernumber, @basketusers_ids);
3006
3007
Delete all users from order users list, and add users in C<@order_users_ids>
3008
to this users list.
3009
3010
=cut
3011
3012
sub ModOrderUsers {
3013
    my ( $ordernumber, @order_users_ids ) = @_;
3014
3015
    return unless $ordernumber;
3016
3017
    my $dbh   = C4::Context->dbh;
3018
    my $query = q|
3019
        DELETE FROM aqorderusers
3020
        WHERE ordernumber = ?
3021
    |;
3022
    my $sth = $dbh->prepare($query);
3023
    $sth->execute($ordernumber);
3024
3025
    $query = q|
3026
        INSERT INTO aqorderusers (ordernumber, borrowernumber)
3027
        VALUES (?, ?)
3028
    |;
3029
    $sth = $dbh->prepare($query);
3030
    foreach my $order_user_id (@order_users_ids) {
3031
        $sth->execute( $ordernumber, $order_user_id );
3032
    }
3033
}
3034
3035
sub NotifyOrderUsers {
3036
    my ($ordernumber) = @_;
3037
3038
    my @borrowernumbers = GetOrderUsers($ordernumber);
3039
    return unless @borrowernumbers;
3040
3041
    my $order = GetOrder( $ordernumber );
3042
    for my $borrowernumber (@borrowernumbers) {
3043
        my $borrower = C4::Members::GetMember( borrowernumber => $borrowernumber );
3044
        my $branch = C4::Branch::GetBranchDetail( $borrower->{branchcode} );
3045
        my $biblio = C4::Biblio::GetBiblio( $order->{biblionumber} );
3046
        my $letter = C4::Letters::GetPreparedLetter(
3047
            module      => 'acquisition',
3048
            letter_code => 'ACQ_NOTIF_ON_RECEIV',
3049
            branchcode  => $branch->{branchcode},
3050
            tables      => {
3051
                'branches'    => $branch,
3052
                'borrowers'   => $borrower,
3053
                'biblio'      => $biblio,
3054
                'aqorders'    => $order,
3055
            },
3056
        );
3057
        if ( $letter ) {
3058
            C4::Letters::EnqueueLetter(
3059
                {
3060
                    letter         => $letter,
3061
                    borrowernumber => $borrowernumber,
3062
                    LibraryName    => C4::Context->preference("LibraryName"),
3063
                    message_transport_type => 'email',
3064
                }
3065
            ) or warn "can't enqueue letter $letter";
3066
        }
3067
    }
3068
}
3069
2963
1;
3070
1;
2964
__END__
3071
__END__
2965
3072
(-)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 237-243 if ( $op eq 'delete_confirm' ) { Link Here
237
    ReopenBasket($query->param('basketno'));
237
    ReopenBasket($query->param('basketno'));
238
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
238
    print $query->redirect('/cgi-bin/koha/acqui/basket.pl?basketno='.$basket->{'basketno'})
239
} elsif ( $op eq 'mod_users' ) {
239
} elsif ( $op eq 'mod_users' ) {
240
    my $basketusers_ids = $query->param('basketusers_ids');
240
    my $basketusers_ids = $query->param('users_ids');
241
    my @basketusers = split( /:/, $basketusers_ids );
241
    my @basketusers = split( /:/, $basketusers_ids );
242
    ModBasketUsers($basketno, @basketusers);
242
    ModBasketUsers($basketno, @basketusers);
243
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
243
    print $query->redirect("/cgi-bin/koha/acqui/basket.pl?basketno=$basketno");
Lines 407-414 if ( $op eq 'delete_confirm' ) { Link Here
407
        creationdate         => $basket->{creationdate},
407
        creationdate         => $basket->{creationdate},
408
        authorisedby         => $basket->{authorisedby},
408
        authorisedby         => $basket->{authorisedby},
409
        authorisedbyname     => $basket->{authorisedbyname},
409
        authorisedbyname     => $basket->{authorisedbyname},
410
        basketusers_ids      => join(':', @basketusers_ids),
410
        users_ids            => join(':', @basketusers_ids),
411
        basketusers          => \@basketusers,
411
        users                => \@basketusers,
412
        closedate            => $basket->{closedate},
412
        closedate            => $basket->{closedate},
413
        estimateddeliverydate=> $estimateddeliverydate,
413
        estimateddeliverydate=> $estimateddeliverydate,
414
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
414
        deliveryplace        => C4::Branch::GetBranchName( $basket->{deliveryplace} ),
(-)a/acqui/neworderempty.pl (+9 lines)
Lines 174-179 if ( $ordernumber eq '' and defined $params->{'breedingid'}){ Link Here
174
174
175
175
176
176
177
my ( @order_user_ids, @order_users );
177
if ( $ordernumber eq '' ) {    # create order
178
if ( $ordernumber eq '' ) {    # create order
178
    $new = 'yes';
179
    $new = 'yes';
179
180
Lines 196-201 else { #modify order Link Here
196
197
197
    $basket   = GetBasket( $data->{'basketno'} );
198
    $basket   = GetBasket( $data->{'basketno'} );
198
    $basketno = $basket->{'basketno'};
199
    $basketno = $basket->{'basketno'};
200
201
    @order_user_ids = GetOrderUsers($ordernumber);
202
    foreach my $order_user_id (@order_user_ids) {
203
        my $order_user = GetMember(borrowernumber => $order_user_id);
204
        push @order_users, $order_user if $order_user;
205
    }
199
}
206
}
200
207
201
my $suggestion;
208
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 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