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

(-)a/t/db_dependent/Koha/Items.t (-10 / +57 lines)
Lines 559-568 subtest 'store' => sub { Link Here
559
        };
559
        };
560
560
561
        subtest
561
        subtest
562
          'Test with partial payement and write off, and remaining debt' =>
562
          'Test with partial payment and write off, and remaining debt' =>
563
          sub {
563
          sub {
564
564
565
            plan tests => 17;
565
            plan tests => 19;
566
567
            t::lib::Mocks::mock_preference( 'AccountAutoReconcile', 0 );
566
568
567
            my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
569
            my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
568
            my $item = $builder->build_sample_item(
570
            my $item = $builder->build_sample_item(
Lines 617-627 subtest 'store' => sub { Link Here
617
            is(
619
            is(
618
                $account->balance,
620
                $account->balance,
619
                $processfee_amount + $replacement_amount,
621
                $processfee_amount + $replacement_amount,
620
                'Balance is PROCESSING + L'
622
                'Balance is PROCESSING + LOST'
621
            );
623
            );
622
624
623
            # Partially pay fee
625
            # Partially pay fee (99 - 27 = 72)
624
            my $payment_amount = 27;
626
            my $payment_amount = 24;
625
            my $payment        = $account->add_credit(
627
            my $payment        = $account->add_credit(
626
                {
628
                {
627
                    amount    => $payment_amount,
629
                    amount    => $payment_amount,
Lines 633-640 subtest 'store' => sub { Link Here
633
            $payment->apply(
635
            $payment->apply(
634
                { debits => [$lost_fee_line], offset_type => 'Payment' } );
636
                { debits => [$lost_fee_line], offset_type => 'Payment' } );
635
637
636
            # Partially write off fee
638
            # Partially write off fee (72 - 20 = 52)
637
            my $write_off_amount = 25;
639
            my $write_off_amount = 20;
638
            my $write_off        = $account->add_credit(
640
            my $write_off        = $account->add_credit(
639
                {
641
                {
640
                    amount    => $write_off_amount,
642
                    amount    => $write_off_amount,
Lines 642-662 subtest 'store' => sub { Link Here
642
                    interface => 'test',
644
                    interface => 'test',
643
                }
645
                }
644
            );
646
            );
647
645
            $write_off->apply(
648
            $write_off->apply(
646
                { debits => [$lost_fee_line], offset_type => 'Writeoff' } );
649
                { debits => [$lost_fee_line], offset_type => 'Writeoff' } );
647
650
651
            my $payment_amount_2 = 3;
652
            my $payment_2        = $account->add_credit(
653
                {
654
                    amount    => $payment_amount_2,
655
                    type      => 'PAYMENT',
656
                    interface => 'test',
657
                }
658
            );
659
660
            $payment_2->apply(
661
                { debits => [$lost_fee_line], offset_type => 'Payment' } );
662
663
            # Partially write off fee (52 - 5 = 47)
664
            my $write_off_amount_2 = 5;
665
            my $write_off_2        = $account->add_credit(
666
                {
667
                    amount    => $write_off_amount_2,
668
                    type      => 'WRITEOFF',
669
                    interface => 'test',
670
                }
671
            );
672
673
            $write_off_2->apply(
674
                { debits => [$lost_fee_line], offset_type => 'Writeoff' } );
675
676
            is(
677
                $account->balance,
678
                $processfee_amount +
679
                  $replacement_amount -
680
                  $payment_amount -
681
                  $write_off_amount -
682
                  $payment_amount_2 -
683
                  $write_off_amount_2,
684
                'Balance is PROCESSING + LOST - PAYMENT 1 - WRITEOFF - PAYMENT 2 - WRITEOFF 2'
685
            );
686
687
            # VOID payment_2 and writeoff_2
688
            $payment_2->void({ interface => 'test' });
689
            $write_off_2->void({ interface => 'test' });
690
648
            is(
691
            is(
649
                $account->balance,
692
                $account->balance,
650
                $processfee_amount +
693
                $processfee_amount +
651
                  $replacement_amount -
694
                  $replacement_amount -
652
                  $payment_amount -
695
                  $payment_amount -
653
                  $write_off_amount,
696
                  $write_off_amount,
654
                'Payment and write off applied'
697
                'Balance is PROCESSING + LOST - PAYMENT 1 - WRITEOFF (PAYMENT 2 and WRITEOFF 2 VOIDED)'
655
            );
698
            );
656
699
657
            # Store the amountoutstanding value
700
            # Store the amountoutstanding value
658
            $lost_fee_line->discard_changes;
701
            $lost_fee_line->discard_changes;
659
            my $outstanding = $lost_fee_line->amountoutstanding;
702
            my $outstanding = $lost_fee_line->amountoutstanding;
703
            is(
704
                $outstanding + 0,
705
                $replacement_amount - $payment_amount - $write_off_amount,
706
                "Lost Fee Outstanding is LOST - PAYMENT 1 - WRITEOFF"
707
            );
660
708
661
            # Simulate item marked as found
709
            # Simulate item marked as found
662
            $item->itemlost(0)->store;
710
            $item->itemlost(0)->store;
Lines 689-695 subtest 'store' => sub { Link Here
689
            is(
737
            is(
690
                $credit_return->amount + 0,
738
                $credit_return->amount + 0,
691
                ( $payment_amount + $outstanding ) * -1,
739
                ( $payment_amount + $outstanding ) * -1,
692
'The account line of type LOST_FOUND has an amount equal to the payment + outstanding'
740
'The account line of type LOST_FOUND has an amount equal to the payment 1 + outstanding'
693
            );
741
            );
694
            is(
742
            is(
695
                $credit_return->amountoutstanding + 0,
743
                $credit_return->amountoutstanding + 0,
696
- 

Return to bug 28421