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());
29 $invoice->complete('f');
31 my $entry = Fieldmapper::acq::invoice_entry->new;
34 $entry->purchase_order(2);
35 $entry->inv_item_count(1);
36 $entry->phys_item_count(1);
37 $entry->cost_billed('25.00');
38 $entry->actual_cost('25.00');
39 $entry->amount_paid('25.00');
41 my $acq_ses = $script->session('open-ils.acq');
43 my $req = $acq_ses->request(
44 'open-ils.acq.invoice.update', $script->authtoken, $invoice, [$entry]);
46 $invoice = $req->recv->content;
47 $entry = $invoice->entries->[0];
49 is(ref $invoice, 'Fieldmapper::acq::invoice', 'Invoice created');
52 $e->search_acq_fund_debit({invoice_entry => $entry->id})->[0];
54 isnt($inv_debit, undef, 'A fund_debit links to new invoice entry');
56 is($inv_debit->encumbrance, 't',
57 'Debit is still encumbered after invoice create');
59 # Close the invoice. LP#1333254.
60 $invoice->complete('t');
61 $invoice->ischanged(1);
63 $req = $acq_ses->request(
64 'open-ils.acq.invoice.update', $script->authtoken, $invoice);
66 $invoice = $req->recv->content;
68 is($invoice->complete, 't', '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->complete('f');
77 $invoice->ischanged(1);
79 $req = $acq_ses->request(
80 'open-ils.acq.invoice.update', $script->authtoken, $invoice);
82 $invoice = $req->recv->content;
84 $inv_debit = $e->retrieve_acq_fund_debit($inv_debit->id);
86 is($inv_debit->encumbrance, 't',
87 'Debit is re-encumbered when invoice is reopened');