Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 923c8609

Von Kivitendo Admin vor etwa 8 Jahren hinzugefügt

  • ID 923c8609be1b07bfdcbc515a5e3a2a64e2edbedb
  • Vorgänger 844f4629
  • Nachfolger 938dfd8b

Erstellen von Jahresabschluss-Buchungen(4)

- Einrückungen von G.Richardson,
- dates in DateObjekte konvertiert
- Eine Buchung und Gegenbuchung als eine Transaktion

Unterschiede anzeigen:

SL/Controller/YearEndTransactions.pm
23 23

  
24 24
sub action_filter {
25 25
  my ($self) = @_;
26

  
27 26
  $self->ob_date(DateTime->today->truncate(to => 'year'))                  if !$self->ob_date;
28 27
  $self->cb_date(DateTime->today->truncate(to => 'year')->add(days => -1)) if !$self->cb_date;
29
  $self->ob_reference(t8('OB Transaction')) if !$self->ob_reference;
30
  $self->cb_reference(t8('CB Transaction')) if !$self->cb_reference;
28
  $self->ob_reference(t8('OB Transaction'))   if !$self->ob_reference;
29
  $self->cb_reference(t8('CB Transaction'))   if !$self->cb_reference;
31 30
  $self->ob_description(t8('OB Transaction')) if !$self->ob_description;
32 31
  $self->cb_description(t8('CB Transaction')) if !$self->cb_description;
33 32
  $self->render('gl/yearend_filter',
34
                title => t8('CB/OB Transactions'),
33
                title               => t8('CB/OB Transactions'),
35 34
                make_title_of_chart => sub { $_[0]->accno.' '.$_[0]->description }
36 35
               );
37 36

  
......
46 45
  $self->prepare_report($report);
47 46

  
48 47
  $report->set_options(
49
    output_format    => 'HTML',
50
    raw_top_info_text    => $::form->parse_html_template('gl/yearend_top', { SELF => $self }),
48
    output_format        => 'HTML',
49
    raw_top_info_text    => $::form->parse_html_template('gl/yearend_top',    { SELF => $self }),
51 50
    raw_bottom_info_text => $::form->parse_html_template('gl/yearend_bottom', { SELF => $self }),
52
    allow_pdf_export => 0,
53
    allow_csv_export => 0,
54
    title            => $::locale->text('CB/OB Transactions'),
55
    );
51
    allow_pdf_export     => 0,
52
    allow_csv_export     => 0,
53
    title                => $::locale->text('CB/OB Transactions'),
54
  );
56 55
  $report->generate_with_headers();
57 56
  $main::lxdebug->leave_sub();
58 57
}
......
105 104
  my ($self,$report) = @_;
106 105
  $main::lxdebug->enter_sub();
107 106
  my $idx = 1;
108
  my $cgi = $::request->{cgi};
109 107

  
110 108
  my %column_defs = (
111
    'ids'                     => { raw_header_data => $self->presenter->checkbox_tag("", id => "check_all",
112
                                                                                     checkall => "[data-checkall=1]"), 'align' => 'center' },
113
    'chart'                   => { text => $::locale->text('Account'), },
114
    'description'             => { text => $::locale->text('Description'), },
115
    'saldo'                   => { text => $::locale->text('Saldo'),  'align' => 'right'},
116
    'sum_cb'                  => { text => $::locale->text('Sum CB Transactions'), 'align' => 'right'},  ##close == Schluss
117
    'sum_ob'                  => { text => $::locale->text('Sum OB Transactions'), 'align' => 'right'},  ##open  == Eingang
109
    'ids'         => { raw_header_data => $self->presenter->checkbox_tag("", id => "check_all",
110
                                                                          checkall => "[data-checkall=1]"), 'align' => 'center' },
111
    'chart'       => { text => $::locale->text('Account'), },
112
    'description' => { text => $::locale->text('Description'), },
113
    'saldo'       => { text => $::locale->text('Saldo'),  'align' => 'right'},
114
    'sum_cb'      => { text => $::locale->text('Sum CB Transactions'), 'align' => 'right'},  ##close == Schluss
115
    'sum_ob'      => { text => $::locale->text('Sum OB Transactions'), 'align' => 'right'},  ##open  == Eingang
118 116
  );
119
  my @columns    = qw(ids chart description saldo sum_cb sum_ob);
117
  my @columns      = qw(ids chart description saldo sum_cb sum_ob);
120 118
  map { $column_defs{$_}->{visible} = 1 } @columns;
121
  my $ob_next_date = $::locale->parse_date_to_object($self->ob_date)->add(years => 1)->add(days => -1)->to_kivitendo;
122 119

  
123
  $self->cb_startdate($self->get_balance_starting_date($self->cb_date));
120
  my $ob_next_date = $self->ob_date->clone();
121
  $ob_next_date->add(years => 1)->add(days => -1);
122

  
123
  $self->cb_startdate($::locale->parse_date_to_object($self->get_balance_starting_date($self->cb_date)));
124 124

  
125 125
  my @custom_headers = ();
126 126
  # Zeile 1:
127 127
  push @custom_headers, [
128 128
      { 'text' => '   ', 'colspan' => 3 },
129
      { 'text' => $::locale->text("Timerange")."<br />".$self->cb_startdate." - ".$self->cb_date, 'colspan' => 2, 'align' => 'center'},
130
      { 'text' => $::locale->text("Timerange")."<br />".$self->ob_date." - ".$ob_next_date, 'align' => 'center'},
129
      { 'text' => $::locale->text("Timerange")."<br />".$self->cb_startdate->to_kivitendo." - ".$self->cb_date->to_kivitendo, 'colspan' => 2, 'align' => 'center'},
130
      { 'text' => $::locale->text("Timerange")."<br />".$self->ob_date->to_kivitendo." - ".$ob_next_date->to_kivitendo, 'align' => 'center'},
131 131
    ];
132 132

  
133 133
  # Zeile 2:
......
148 148
      my $chart_id = $chart->id;
149 149
      my $row = { map { $_ => { 'data' => '' } } @columns };
150 150
      $row->{ids}  = {
151
        'raw_data' =>  $self->presenter->checkbox_tag("multi_id_${idx}", value => $chart_id, "data-checkall" => 1),
151
        'raw_data' => $self->presenter->checkbox_tag("multi_id_${idx}", value => $chart_id, "data-checkall" => 1),
152 152
        'valign'   => 'center',
153 153
        'align'    => 'center',
154 154
      };
155
      $row->{chart}->{data}        = $chart->accno;
156
      $row->{description}->{data}  = $chart->description;
155
      $row->{chart}->{data}       = $chart->accno;
156
      $row->{description}->{data} = $chart->description;
157 157
      if ( $balance > 0 ) {
158 158
        $row->{saldo}->{data} = $::form->format_amount(\%::myconfig, $balance, 2)." H";
159 159
      } elsif ( $balance < 0 )  {
......
162 162
        $row->{saldo}->{data} = $::form->format_amount(\%::myconfig,0, 2)."  ";
163 163
      }
164 164
      my $sum_cb = 0;
165
      foreach my $acc ( @{ SL::DB::Manager::AccTransaction->get_all(where => [ chart_id => $chart->id, cb_transaction => 't',
165
      foreach my $acc ( @{ SL::DB::Manager::AccTransaction->get_all(where => [ chart_id  => $chart->id, cb_transaction => 't',
166 166
                                                                               transdate => { ge => $self->cb_startdate},
167
                                                                               transdate => { le => $self->cb_date }]) }) {
167
                                                                               transdate => { le => $self->cb_date }
168
                                                                             ]) }) {
168 169
        $sum_cb += $acc->amount;
169 170
      }
170 171
      my $sum_ob = 0;
171
      foreach my $acc ( @{ SL::DB::Manager::AccTransaction->get_all(where => [ chart_id => $chart->id, ob_transaction => 't',
172
      foreach my $acc ( @{ SL::DB::Manager::AccTransaction->get_all(where => [ chart_id  => $chart->id, ob_transaction => 't',
172 173
                                                                               transdate => { ge => $self->ob_date},
173
                                                                               transdate => { le => $ob_next_date }]) }) {
174
                                                                               transdate => { le => $ob_next_date }
175
                                                                             ]) }) {
174 176
        $sum_ob += $acc->amount;
175 177
      }
176 178
      if ( $sum_cb > 0 ) {
......
200 202
  $main::lxdebug->enter_sub();
201 203
  my ($self,$chart) = @_;
202 204

  
203
## eigene Abfrage da SL:DB:Chart->get_balance keine cb_transactions mitzählt
204
## Alternative in Chart cb_transaction abfrage per neuem Parameter 'with_cb' disablen:
205
#  my %balance_params = ( fromdate   => $self->startdate,
206
#                         todate     => $self->cb_date,
207
#                         accounting_method => 'accrual',
208
#                         with_cb    => 1, ## in Chart cb_transaction abfrage disablen
209
#                       );
210
#  return $chart->get_balance(%balance_params);
211

  
212
  $main::lxdebug->message(LXDebug->DEBUG2(),"get_balance from=".$self->cb_startdate." to=".$self->cb_date);
213
  my $query = qq|SELECT SUM(amount) AS sum FROM acc_trans WHERE chart_id = ? | .
214
              qq| AND transdate >= ? AND transdate <= ? |;
215
  my @query_args = ( $chart->id, $self->cb_startdate, $self->cb_date);
216
  my ($balance)  = selectfirst_array_query($::form, $chart->db->dbh, $query, @query_args);
217

  
205
  #$main::lxdebug->message(LXDebug->DEBUG2(),"get_balance from=".$self->cb_startdate->to_kivitendo." to=".$self->cb_date->to_kivitendo);
206
  my $balance = $chart->get_balance(fromdate => $self->cb_startdate, todate => $self->cb_date);
218 207
  $main::lxdebug->leave_sub();
219 208
  return 0 unless $balance != 0;
220 209
  return $balance;
......
225 214
  $::form->get_employee();
226 215
  my $employee_id = $::form->{employee_id};
227 216
  $main::lxdebug->message(LXDebug->DEBUG2(),"employee_id=".$employee_id." ob=".$ob." cb=".$cb);
228
  my $gl_entry = SL::DB::GLTransaction->new();
229
  $gl_entry->assign_attributes(
230
    employee_id => $employee_id,
231
    transdate   => $transdate,
232
    reference   => $reference,
233
    description => $description,
217
  my $gl_entry = SL::DB::GLTransaction->new(
218
    employee_id    => $employee_id,
219
    transdate      => $transdate,
220
    reference      => $reference,
221
    description    => $description,
234 222
    ob_transaction => $ob,
235 223
    cb_transaction => $cb,
236 224
  );
237
  $gl_entry->save;
238
  my $kto_trans1 = SL::DB::AccTransaction->new();
239
  $kto_trans1->assign_attributes(
240
    trans_id    => $gl_entry->id,
241
    transdate   => $transdate,
225
  #$gl_entry->save;
226
  my $kto_trans1 = SL::DB::AccTransaction->new(
227
    trans_id       => $gl_entry->id,
228
    transdate      => $transdate,
242 229
    ob_transaction => $ob,
243 230
    cb_transaction => $cb,
244 231
    chart_id       => $gegenkonto->id,
......
247 234
    taxkey         => 0,
248 235
    amount         => $amount,
249 236
  );
250
  $kto_trans1->save;
251
  my $kto_trans2 = SL::DB::AccTransaction->new();
252
  $kto_trans2->assign_attributes(
253
    trans_id    => $gl_entry->id,
254
    transdate   => $transdate,
237
  #$kto_trans1->save;
238
  my $kto_trans2 = SL::DB::AccTransaction->new(
239
    trans_id       => $gl_entry->id,
240
    transdate      => $transdate,
255 241
    ob_transaction => $ob,
256 242
    cb_transaction => $cb,
257 243
    chart_id       => $konto->id,
......
260 246
    taxkey         => 0,
261 247
    amount         => -$amount,
262 248
  );
263
  $kto_trans2->save;
249
  #$kto_trans2->save;
250
  $gl_entry->add_transactions($kto_trans1);
251
  $gl_entry->add_transactions($kto_trans2);
252
  $gl_entry->save;
264 253
}
265 254

  
266
sub init_cbob_chart { $::form->{cbob_chart} }
267
sub init_ob_date { $::form->{ob_date} }
268
sub init_ob_reference { $::form->{ob_reference} }
269
sub init_ob_description { $::form->{ob_description} }
270
sub init_cb_startdate { $::form->{cb_startdate} }
271
sub init_cb_date { $::form->{cb_date} }
272
sub init_cb_reference { $::form->{cb_reference} }
273
sub init_cb_description { $::form->{cb_description} }
255
sub init_cbob_chart     { $::form->{cbob_chart}                                    }
256
sub init_ob_date        { $::locale->parse_date_to_object($::form->{ob_date})      }
257
sub init_ob_reference   { $::form->{ob_reference}                                  }
258
sub init_ob_description { $::form->{ob_description}                                }
259
sub init_cb_startdate   { $::locale->parse_date_to_object($::form->{cb_startdate}) }
260
sub init_cb_date        { $::locale->parse_date_to_object($::form->{cb_date})      }
261
sub init_cb_reference   { $::form->{cb_reference}                                  }
262
sub init_cb_description { $::form->{cb_description}                                }
274 263

  
275
sub init_charts9000 { 
264
sub init_charts9000 {
276 265
  SL::DB::Manager::Chart->get_all(  query => [ accno => { like => '9%'}] );
277 266
}
278 267

  
279
sub init_charts { 
268
sub init_charts {
280 269
  # wie geht 'not like' in rose ?
281 270
  SL::DB::Manager::Chart->get_all(  query => [ \ "accno not like '9%'"], sort_by => 'accno ASC' );
282 271
}
t/bank/cb_ob_transactions.t
45 45
  SL::DB::Manager::Vendor->delete_all(all => 1);
46 46
  SL::DB::Manager::BankAccount->delete_all(all => 1);
47 47
  SL::DB::Manager::AccTransaction->delete_all(all => 1);
48
  SL::DB::Manager::GLTransaction->delete_all(all => 1);
48 49
  SL::DB::Manager::PaymentTerm->delete_all(all => 1);
49 50
  SL::DB::Manager::Currency->delete_all(where => [ name => 'CUR' ]);
50 51
};
......
58 59
test1();
59 60

  
60 61
# remove all created data at end of test
61
clear_up();
62
#clear_up();
62 63

  
63 64
done_testing();
64 65

  
templates/webpages/gl/yearend_bottom.html
3 3
<table  width="100%">
4 4
  <tr><td>
5 5
    [%- L.hidden_tag("action","YearEndTransactions/dispatch") %]
6
    [%- L.hidden_tag("cb_date",SELF.cb_date) %]
7
    [%- L.hidden_tag("cb_startdate",SELF.cb_startdate) %]
6
    [%- L.hidden_tag("cb_date",SELF.cb_date.to_kivitendo) %]
7
    [%- L.hidden_tag("cb_startdate",SELF.cb_startdate.to_kivitendo) %]
8 8
    [%- L.hidden_tag("cb_reference",SELF.cb_reference) %]
9 9
    [%- L.hidden_tag("cb_description",SELF.cb_description) %]
10
    [%- L.hidden_tag("ob_date",SELF.ob_date) %]
10
    [%- L.hidden_tag("ob_date",SELF.ob_date.to_kivitendo) %]
11 11
    [%- L.hidden_tag("ob_reference",SELF.ob_reference) %]
12 12
    [%- L.hidden_tag("ob_description",SELF.ob_description) %]
13 13
    [%- L.hidden_tag("cbob_chart",SELF.cbob_chart) %]
templates/webpages/gl/yearend_top.html
7 7
    <td colspan="6" align="left">
8 8
      [%- LxERP.t8('Select charts for which the CB/OB transactions want to be posted.') %]<br>
9 9
      [%- LxERP.t8('There will be two transactions done:') %]<br>
10
     - [%- LxERP.t8('One SB-transaction') %] ( [% SELF.cb_date %], [% SELF.cb_reference %], [% SELF.cb_description %], [% SELF.cbob_chartaccno %] )<br>
11
     - [%- LxERP.t8('One OB-transaction') %] ( [% SELF.ob_date %], [% SELF.ob_reference %], [% SELF.ob_description %], [% SELF.cbob_chartaccno %] )<br>
10
     - [%- LxERP.t8('One SB-transaction') %] ( [% SELF.cb_date.to_kivitendo %], [% SELF.cb_reference %], [% SELF.cb_description %], [% SELF.cbob_chartaccno %] )<br>
11
     - [%- LxERP.t8('One OB-transaction') %] ( [% SELF.ob_date.to_kivitendo %], [% SELF.ob_reference %], [% SELF.ob_description %], [% SELF.cbob_chartaccno %] )<br>
12 12
      [%- LxERP.t8('No revert available.') %]
13 13
    </td>
14 14
  </tr>

Auch abrufbar als: Unified diff