6 use JSON qw( from_json );
8 use C4::Auth qw/:DEFAULT get_session/;
12 use Koha::AuthorisedValues;
13 use Koha::Cash::Registers;
14 use Koha::Charges::Sales;
19 my $sessionID = $q->cookie('CGISESSID');
20 my $session = get_session($sessionID);
22 my ( $template, $loggedinuser, $cookie, $user_flags ) = get_template_and_user(
24 template_name => 'pos/pay.tt',
30 my $logged_in_user = Koha::Patrons->find($loggedinuser) or die "Not logged in";
32 my $library_id = C4::Context->userenv->{'branch'};
33 my $registerid = $q->param('registerid');
34 my $registers = Koha::Cash::Registers->search(
35 { branch => $library_id, archived => 0 },
36 { order_by => { '-asc' => 'name' } }
39 if ( !$registers->count ) {
40 $template->param( error_registers => 1 );
44 my $default_register = Koha::Cash::Registers->find(
45 { branch => $library_id, branch_default => 1 } );
46 $registerid = $default_register->id if $default_register;
48 $registerid = $registers->next->id if !$registerid;
51 registerid => $registerid,
52 registers => $registers,
56 my $total_paid = $q->param('paid');
57 if ( $total_paid and $total_paid ne '0.00' ) {
58 warn "total_paid: $total_paid\n";
59 my $cash_register = Koha::Cash::Registers->find( { id => $registerid } );
60 my $payment_type = $q->param('payment_type');
61 my $sale = Koha::Charges::Sales->new(
63 cash_register => $cash_register,
64 staff_id => $logged_in_user->id
68 my @sales = $q->multi_param('sales');
69 for my $item (@sales) {
70 $item = from_json $item;
71 $sale->add_item($item);
74 $sale->purchase( { payment_type => $payment_type } );
77 output_html_with_http_headers( $q, $cookie, $template->output );