Lines 48-53
sub manager {
Link Here
|
48 |
return Koha::Patron->_new_from_dbic($rs); |
48 |
return Koha::Patron->_new_from_dbic($rs); |
49 |
} |
49 |
} |
50 |
|
50 |
|
|
|
51 |
=head3 register |
52 |
|
53 |
Return the register linked to this cash register::action |
54 |
|
55 |
=cut |
56 |
|
57 |
sub register { |
58 |
my ($self) = @_; |
59 |
my $rs = $self->_result->register; |
60 |
return unless $rs; |
61 |
return Koha::Cash::Register->_new_from_dbic($rs); |
62 |
} |
63 |
|
64 |
=head3 cashup_summary |
65 |
|
66 |
my $cashup_summary = $action->cashup_summary; |
67 |
|
68 |
Return a hashref containing a summary of transactions that make up this cashup action. |
69 |
|
70 |
=cut |
71 |
|
72 |
sub cashup_summary { |
73 |
my ($self) = @_; |
74 |
my $summary; |
75 |
my $prior_cashup = Koha::Cash::Register::Actions->search( |
76 |
{ |
77 |
'code' => 'CASHUP', |
78 |
'timestamp' => { '<' => $self->timestamp }, |
79 |
register_id => $self->register_id |
80 |
}, |
81 |
{ |
82 |
order_by => { '-desc' => [ 'timestamp', 'id' ] }, |
83 |
rows => 1 |
84 |
} |
85 |
); |
86 |
|
87 |
my $previous = $prior_cashup->single; |
88 |
|
89 |
my $conditions = |
90 |
$previous |
91 |
? { |
92 |
'date' => { |
93 |
'-between' => |
94 |
[ $previous->_result->get_column('timestamp'), $self->timestamp ] |
95 |
} |
96 |
} |
97 |
: { 'date' => { '<' => $self->timestamp } }; |
98 |
|
99 |
my $outgoing_transactions = $self->register->accountlines->search( |
100 |
{ %{$conditions}, credit_type_code => undef }, |
101 |
{ select => 'accountlines_id' } ); |
102 |
my $income_transactions = $self->register->accountlines->search( |
103 |
{ %{$conditions}, debit_type_code => undef }, |
104 |
{ select => 'accountlines_id' } ); |
105 |
|
106 |
my $income_summary = Koha::Account::Offsets->search( |
107 |
{ |
108 |
'me.credit_id' => |
109 |
{ '-in' => $income_transactions->_resultset->as_query }, |
110 |
'me.debit_id' => { '!=' => undef } |
111 |
}, |
112 |
{ |
113 |
join => 'debit', |
114 |
group_by => 'debit.debit_type_code', |
115 |
'select' => [ { sum => 'me.amount' }, 'debit.debit_type_code' ], |
116 |
'as' => [ 'total', 'debit_code' ], |
117 |
} |
118 |
); |
119 |
|
120 |
my $outgoing_summary = Koha::Account::Offsets->search( |
121 |
{ |
122 |
'me.debit_id' => |
123 |
{ '-in' => $outgoing_transactions->_resultset->as_query }, |
124 |
'me.credit_id' => { '!=' => undef } |
125 |
}, |
126 |
{ |
127 |
join => 'credit', |
128 |
group_by => 'credit.credit_type_code', |
129 |
'select' => [ { sum => 'me.amount' }, 'credit.credit_type_code' ], |
130 |
'as' => [ 'total', 'credit_code' ], |
131 |
} |
132 |
); |
133 |
|
134 |
my @income = map { $_->unblessed } $income_summary->as_list; |
135 |
my @outgoing = map { $_->unblessed } $outgoing_summary->as_list; |
136 |
$summary = { |
137 |
from_date => $previous ? $previous->timestamp : undef, |
138 |
to_date => $self->timestamp, |
139 |
income => \@income, |
140 |
outgoing => \@outgoing, |
141 |
total => $outgoing_transactions->total + $income_transactions->total, |
142 |
bankable => |
143 |
$outgoing_transactions->search( { payment_type => 'CASH' } )->total + |
144 |
$income_transactions->search( { payment_type => 'CASH' } )->total |
145 |
}; |
146 |
|
147 |
return $summary; |
148 |
} |
149 |
|
51 |
=head2 Internal methods |
150 |
=head2 Internal methods |
52 |
|
151 |
|
53 |
=cut |
152 |
=cut |