2 use strict; use warnings;
3 use Test::More tests => 7;
4 use OpenILS::Utils::TestUtils;
5 use OpenILS::Utils::CStoreEditor qw/:funcs/;
7 diag("Tests ACQ invoices");
9 my $script = OpenILS::Utils::TestUtils->new();
15 $script->authenticate({
17 password => 'demo123',
21 ok($script->authtoken, 'Have an authtoken');
23 my $invoice = Fieldmapper::acq::invoice->new;
25 $invoice->receiver(1);
26 $invoice->provider(1);
28 $invoice->inv_ident(rand());
30 my $entry = Fieldmapper::acq::invoice_entry->new;
33 $entry->purchase_order(2);
34 $entry->inv_item_count(1);
35 $entry->phys_item_count(1);
36 $entry->cost_billed('25.00');
37 $entry->actual_cost('25.00');
38 $entry->amount_paid('25.00');
40 my $acq_ses = $script->session('open-ils.acq');
42 my $req = $acq_ses->request(
43 'open-ils.acq.invoice.update', $script->authtoken, $invoice, [$entry]);
45 $invoice = $req->recv->content;
46 $entry = $invoice->entries->[0];
48 is(ref $invoice, 'Fieldmapper::acq::invoice', 'Invoice created');
51 $e->search_acq_fund_debit({invoice_entry => $entry->id})->[0];
53 isnt($inv_debit, undef, 'A fund_debit links to new invoice entry');
55 is($inv_debit->encumbrance, 't',
56 'Debit is still encumbered after invoice create');
58 # Close the invoice. LP#1333254.
59 $invoice->close_date('2018-01-01');
60 $invoice->closed_by(1); # admin
61 $invoice->ischanged(1);
63 $req = $acq_ses->request(
64 'open-ils.acq.invoice.update', $script->authtoken, $invoice);
66 $invoice = $req->recv->content;
68 isnt($invoice->close_date, undef, 'Invoice is closed');
70 $inv_debit = $e->retrieve_acq_fund_debit($inv_debit->id);
72 is($inv_debit->encumbrance, 'f',
73 'Debit is disencumbered after invoice close');
76 $invoice->clear_close_date;
77 $invoice->clear_closed_by;
78 $invoice->ischanged(1);
80 $req = $acq_ses->request(
81 'open-ils.acq.invoice.update', $script->authtoken, $invoice);
83 $invoice = $req->recv->content;
85 $inv_debit = $e->retrieve_acq_fund_debit($inv_debit->id);
87 is($inv_debit->encumbrance, 't',
88 'Debit is re-encumbered when invoice is reopened');