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' => 'debit_type_code' }, |
114 |
group_by => [ 'debit.debit_type_code', 'debit_type_code.description' ], |
115 |
'select' => [ { sum => 'me.amount' }, 'debit.debit_type_code', 'debit_type_code.description' ], |
116 |
'as' => [ 'total', 'debit_type_code', 'debit_description' ], |
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' => 'credit_type_code' }, |
128 |
group_by => [ 'credit.credit_type_code', 'credit_type_code.description' ], |
129 |
'select' => [ { sum => 'me.amount' }, 'credit.credit_type_code', 'credit_type_code.description' ], |
130 |
'as' => [ 'total', 'credit_type_code', 'credit_description' ], |
131 |
} |
132 |
); |
133 |
|
134 |
my @income = map { |
135 |
{ |
136 |
total => $_->get_column('total'), |
137 |
debit_type_code => $_->get_column('debit_type_code'), |
138 |
debit_type => { description => $_->get_column('debit_description') } |
139 |
} |
140 |
} $income_summary->as_list; |
141 |
my @outgoing = map { |
142 |
{ |
143 |
total => $_->get_column('total'), |
144 |
credit_type_code => $_->get_column('credit_type_code'), |
145 |
credit_type => { description => $_->get_column('credit_description') } |
146 |
} |
147 |
} $outgoing_summary->as_list; |
148 |
$summary = { |
149 |
from_date => $previous ? $previous->timestamp : undef, |
150 |
to_date => $self->timestamp, |
151 |
income => \@income, |
152 |
outgoing => \@outgoing, |
153 |
total => ( $outgoing_transactions->total * -1 ) + |
154 |
( $income_transactions->total * -1 ), |
155 |
bankable => ( |
156 |
$outgoing_transactions->search( { payment_type => 'CASH' } ) |
157 |
->total * -1 |
158 |
) + ( |
159 |
$income_transactions->search( { payment_type => 'CASH' } )->total * |
160 |
-1 |
161 |
) |
162 |
}; |
163 |
|
164 |
return $summary; |
165 |
} |
166 |
|
51 |
=head2 Internal methods |
167 |
=head2 Internal methods |
52 |
|
168 |
|
53 |
=cut |
169 |
=cut |