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

(-)a/Koha/EDI.pm (-8 / +66 lines)
Lines 27-33 use Business::ISBN; Link Here
27
use DateTime;
27
use DateTime;
28
use C4::Context;
28
use C4::Context;
29
use Koha::Database;
29
use Koha::Database;
30
use C4::Acquisition qw( NewBasket CloseBasket ModOrder);
30
use C4::Acquisition qw( NewBasket CloseBasket ModOrder populate_order_with_prices );
31
use C4::Suggestions qw( ModSuggestion );
31
use C4::Suggestions qw( ModSuggestion );
32
use C4::Items qw(AddItem);
32
use C4::Items qw(AddItem);
33
use C4::Biblio qw( AddBiblio TransformKohaToMarc GetMarcBiblio );
33
use C4::Biblio qw( AddBiblio TransformKohaToMarc GetMarcBiblio );
Lines 306-311 sub process_invoice { Link Here
306
                                datereceived     => $msg_date,
306
                                datereceived     => $msg_date,
307
                            }
307
                            }
308
                        );
308
                        );
309
                        my $p_updates =
310
                          update_price_from_invoice( $received_order,
311
                            $invoice_message->vendor_id );
312
                        if ( keys %{$p_updates} ) {
313
                            $received_order->set_columns($p_updates);
314
                            $received_order->update;
315
                        }
309
                        transfer_items( $schema, $line, $order,
316
                        transfer_items( $schema, $line, $order,
310
                            $received_order );
317
                            $received_order );
311
                        receipt_items( $schema, $line,
318
                        receipt_items( $schema, $line,
Lines 317-322 sub process_invoice { Link Here
317
                        $order->invoiceid($invoiceid);
324
                        $order->invoiceid($invoiceid);
318
                        $order->unitprice($price);
325
                        $order->unitprice($price);
319
                        $order->orderstatus('complete');
326
                        $order->orderstatus('complete');
327
                        my $p_updates = update_price_from_invoice( $order,
328
                            $invoice_message->vendor_id );
329
                        foreach my $col ( keys %{$p_updates} ) {
330
                            $order->set_column( $col, $p_updates->{$col} );
331
                        }
320
                        $order->update;
332
                        $order->update;
321
                        receipt_items( $schema, $line, $ordernumber );
333
                        receipt_items( $schema, $line, $ordernumber );
322
                    }
334
                    }
Lines 350-355 sub _get_invoiced_price { Link Here
350
    return $price;
362
    return $price;
351
}
363
}
352
364
365
sub update_price_from_invoice {
366
    my $ord          = shift;
367
    my $booksellerid = shift;
368
369
    # wrapper around populate_order_with_prices as we are using dbic Row objects
370
    my $ord_hash_ref = {
371
        discount               => $ord->discount,
372
        tax_rate_on_receiving  => $ord->tax_rate_on_receiving,
373
        tax_value_on_receiving => $ord->tax_value_on_receiving,
374
        tax_rate               => $ord->tax_rate_bak,
375
        unitprice              => $ord->unitprice,
376
        ecost_tax_included     => $ord->ecost_tax_included,
377
        ecost_tax_excluded     => $ord->ecost_tax_excluded,
378
        unitprice_tax_included => $ord->unitprice_tax_included,
379
        unitprice_tax_excluded => $ord->unitprice_tax_excluded,
380
        quantity               => $ord->quantity,
381
    };
382
    my %pre_hash = %{$ord_hash_ref};
383
    $ord_hash_ref = populate_order_with_prices(
384
        {
385
            order        => $ord_hash_ref,
386
            booksellerid => $booksellerid,
387
            receiving    => 1,
388
        }
389
    );
390
    foreach my $k ( keys %pre_hash ) {
391
        if ( !defined $ord_hash_ref->{$k}
392
            || $ord_hash_ref->{$k} == $pre_hash{$k} )
393
        {
394
            delete $ord_hash_ref->{$k};
395
        }
396
    }
397
    delete $ord_hash_ref->{quantity};
398
    delete $ord_hash_ref->{discount};
399
400
    return $ord_hash_ref;
401
}
402
353
sub receipt_items {
403
sub receipt_items {
354
    my ( $schema, $inv_line, $ordernumber ) = @_;
404
    my ( $schema, $inv_line, $ordernumber ) = @_;
355
    my $logger   = Log::Log4perl->get_logger();
405
    my $logger   = Log::Log4perl->get_logger();
Lines 578-596 sub quote_item { Link Here
578
        $order_quantity = 1;    # attempts to create an orderline for each gir
628
        $order_quantity = 1;    # attempts to create an orderline for each gir
579
    }
629
    }
580
    my $vendor = $schema->resultset('Aqbookseller')->find( $quote->vendor_id );
630
    my $vendor = $schema->resultset('Aqbookseller')->find( $quote->vendor_id );
631
    my $ecost = _discounted_price( $quote->vendor->discount,
632
            $item->price_info, $item->price_info_inclusive );
581
633
582
    # database definitions should set some of these defaults but dont
634
    # database definitions should set some of these defaults but dont
583
    my $order_hash = {
635
    my $order_hash = {
584
        biblionumber       => $bib->{biblionumber},
636
        biblionumber       => $bib->{biblionumber},
585
        entrydate          => DateTime->now( time_zone => 'local' )->ymd(),
637
        entrydate          => DateTime->now( time_zone => 'local' )->ymd(),
586
        basketno           => $basketno,
638
        basketno           => $basketno,
587
        listprice          => $item->price,
639
        listprice          => $item->price_info,
588
        quantity           => $order_quantity,
640
        quantity           => $order_quantity,
589
        quantityreceived   => 0,
641
        quantityreceived   => 0,
590
        order_vendornote   => q{},
642
        order_vendornote   => q{},
591
        order_internalnote => $order_note,
643
        order_internalnote => $order_note,
592
        rrp                => $item->price,
644
        rrp                => $item->price_info,
593
        ecost => _discounted_price( $quote->vendor->discount, $item->price ),
645
        rrp_tax_included   => $item->price_info,
646
        ecost              => $ecost,
647
        ecost_tax_included => $ecost,
648
        discount => $quote->vendor->discount,
594
        uncertainprice => 0,
649
        uncertainprice => 0,
595
        sort1          => q{},
650
        sort1          => q{},
596
        sort2          => q{},
651
        sort2          => q{},
Lines 801-808 sub quote_item { Link Here
801
                        notforloan       => -1,
856
                        notforloan       => -1,
802
                        cn_sort          => q{},
857
                        cn_sort          => q{},
803
                        cn_source        => 'ddc',
858
                        cn_source        => 'ddc',
804
                        price            => $item->price,
859
                        price            => $item->price_info,
805
                        replacementprice => $item->price,
860
                        replacementprice => $item->price_info,
806
                        itype =>
861
                        itype =>
807
                          $item->girfield( 'stock_category', $occurrence ),
862
                          $item->girfield( 'stock_category', $occurrence ),
808
                        location =>
863
                        location =>
Lines 846-852 sub get_edifact_ean { Link Here
846
901
847
# We should not need to have a routine to do this here
902
# We should not need to have a routine to do this here
848
sub _discounted_price {
903
sub _discounted_price {
849
    my ( $discount, $price ) = @_;
904
    my ( $discount, $price, $discounted_price ) = @_;
905
    if (defined $discounted_price) {
906
        return $discounted_price;
907
    }
850
    return $price - ( ( $discount * $price ) / 100 );
908
    return $price - ( ( $discount * $price ) / 100 );
851
}
909
}
852
910
Lines 996-1002 sub _create_item_from_quote { Link Here
996
        cn_sort    => q{},
1054
        cn_sort    => q{},
997
    };
1055
    };
998
    $item_hash->{booksellerid} = $quote->vendor_id;
1056
    $item_hash->{booksellerid} = $quote->vendor_id;
999
    $item_hash->{price}        = $item_hash->{replacementprice} = $item->price;
1057
    $item_hash->{price}        = $item_hash->{replacementprice} = $item->price_info;
1000
    $item_hash->{itype}        = $item->girfield('stock_category');
1058
    $item_hash->{itype}        = $item->girfield('stock_category');
1001
    $item_hash->{location}     = $item->girfield('collection_code');
1059
    $item_hash->{location}     = $item->girfield('collection_code');
1002
1060
(-)a/Koha/Edifact/Line.pm (-2 / +1 lines)
Lines 792-798 sub price_info { Link Here
792
# information price incl tax,allowances, charges
792
# information price incl tax,allowances, charges
793
sub price_info_inclusive {
793
sub price_info_inclusive {
794
    my $self = shift;
794
    my $self = shift;
795
    my $p    = $self->pri_price('AAE');
795
    my $p    = $self->pri_price('AAF');
796
    if ( defined $p ) {
796
    if ( defined $p ) {
797
        return $p->{price};
797
        return $p->{price};
798
    }
798
    }
799
- 

Return to bug 18267