$gl_department_id_filter = " AND gl.department_id = ? ";
}
+ my ($gl_itime_filter, $ar_itime_filter, $ap_itime_filter);
+ if ( $form->{gldatefrom} ) {
+ $gl_itime_filter = " AND gl.itime >= ? ";
+ $ar_itime_filter = " AND ar.itime >= ? ";
+ $ap_itime_filter = " AND ap.itime >= ? ";
+ }
+
if ( $self->{trans_id} ) {
# ignore dates when trans_id is passed so that the entire transaction is
# checked, not just either the initial bookings or the subsequent payments
WHERE (ar.id IS NOT NULL)
AND $fromto
$trans_id_filter
+ $ar_itime_filter
$ar_department_id_filter
$filter
WHERE (ap.id IS NOT NULL)
AND $fromto
$trans_id_filter
+ $ap_itime_filter
$ap_department_id_filter
$filter
WHERE (gl.id IS NOT NULL)
AND $fromto
$trans_id_filter
+ $gl_itime_filter
$gl_department_id_filter
$filter
ORDER BY trans_id, acc_trans_id|;
my @query_args;
- if ( $form->{department_id} ) {
- push(@query_args, ($form->{department_id}) x 3);
+ if ( $form->{gldatefrom} or $form->{department_id} ) {
+
+ for ( 1 .. 3 ) {
+ if ( $form->{gldatefrom} ) {
+ my $glfromdate = $::locale->parse_date_to_object($form->{gldatefrom});
+ die "illegal data" unless ref($glfromdate) eq 'DateTime';
+ push(@query_args, $glfromdate);
+ }
+ if ( $form->{department_id} ) {
+ push(@query_args, $form->{department_id});
+ }
+ }
}
my $sth = prepare_execute_query($form, $self->dbh, $query, @query_args);
clear_up();
+my $dbh = SL::DB->client->dbh;
+
my $buchungsgruppe7 = SL::DB::Manager::Buchungsgruppe->find_by(description => 'Standard 7%') || die "No accounting group for 7\%";
my $bank = SL::DB::Manager::Chart->find_by(description => 'Bank') || die 'Can\'t find chart "Bank"';
my $date = DateTime->new(year => 2017, month => 1, day => 1);
my $payment_date = DateTime->new(year => 2017, month => 1, day => 5);
+my $gldate = DateTime->new(year => 2017, month => 2, day => 9); # simulate bookings for Jan being made in Feb
my $part1 = SL::Dev::Part::create_part(partnumber => '19', description => 'Part 19%')->save;
my $part2 = SL::Dev::Part::create_part(
my $invoice = SL::Dev::Record::create_sales_invoice(
invnumber => "1 sales invoice",
+ itime => $gldate,
+ gldate => $gldate,
+ intnotes => 'booked in February',
taxincluded => 0,
transdate => $date,
invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty => 3, sellprice => 70),
},
], "trans_id datev check ok";
+my $march_9 = DateTime->new(year => 2017, month => 3, day => 9);
my $invoice2 = SL::Dev::Record::create_sales_invoice(
invnumber => "2 sales invoice",
+ itime => $march_9,
+ gldate => $march_9,
+ intnotes => 'booked in March',
taxincluded => 0,
transdate => $date,
invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty => 6, sellprice => 70),
my $credit_note = SL::Dev::Record::create_credit_note(
invnumber => 'Gutschrift 34',
+ itime => $gldate,
+ gldate => $gldate,
+ intnotes => 'booked in February',
taxincluded => 0,
transdate => $date,
invoiceitems => [ SL::Dev::Record::create_invoice_item(part => $part1, qty => 3, sellprice => 70),
]
);
-my $startdate = DateTime->new(year => 2017, month => 1, day => 1);
+my $startdate = DateTime->new(year => 2017, month => 1, day => 1);
my $enddate = DateTime->new(year => 2017, month => 12, day => 31);
my $datev = SL::DATEV->new(
- dbh => $credit_note->db->dbh,
+ dbh => $dbh,
+ from => $startdate,
+ to => $enddate,
+);
+$datev->generate_datev_data(from_to => $datev->fromto);
+my $datev_lines = $datev->generate_datev_lines;
+my $umsatzsumme = sum map { $_->{umsatz} } @{ $datev_lines };
+cmp_ok($::form->round_amount($umsatzsumme,2), '==', 3924.5, "Sum of all bookings ok");
+
+note('testing gldatefrom');
+my $datev = SL::DATEV->new(
+ dbh => $dbh,
from => $startdate,
- to => $enddate
+ to => DateTime->new(year => 2017, month => 01, day => 31),
);
+
+$::form = Support::TestSetup->create_new_form;
+$::form->{gldatefrom} = DateTime->new(year => 2017, month => 3, day => 1)->to_kivitendo;
+
$datev->generate_datev_data(from_to => $datev->fromto);
my $datev_lines = $datev->generate_datev_lines;
my $umsatzsumme = sum map { $_->{umsatz} } @{ $datev_lines };
-is($umsatzsumme, 3924.50, "umsatzsumme ok");
+cmp_ok($umsatzsumme, '==', 1569.8, "Sum of bookings made after March 1st (only invoice2) ok");
+
+$::form->{gldatefrom} = DateTime->new(year => 2017, month => 5, day => 1)->to_kivitendo;
+$datev->generate_datev_data(from_to => $datev->fromto);
+cmp_bag $datev->generate_datev_lines, [], "no bookings for January made after May 1st: ok";
done_testing();
clear_up();
SL::DB::Manager::Part->delete_all( all => 1);
};
-
1;
-
</table>
</td>
</tr>
- [% IF ALL_DEPARTMENTS.as_list.size %]
- <tr>
- <th align=left>[% 'Department' | $T8 %]</th>
- </tr>
<tr>
- <td>
- <table>
- <tr>
- <td align=left>[% 'Department' | $T8 %]</td>
- <td align=left></td>
- <td>[% L.select_tag('department_id', ALL_DEPARTMENTS, title_key = 'description', with_empty = 1) %]</td>
- </tr>
- </table>
- </td>
+ <td><hr size=1 noshade></td>
+ </tr>
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td align=left>[% 'Gldate' | $T8 %] [% 'From' | $T8 %]</td>
+ <td align=left></td>
+ <td>[% L.date_tag('gldatefrom') %]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <tr>
+ <td><hr size=1 noshade></td>
+ </tr>
+ [% IF ALL_DEPARTMENTS.as_list.size %]
+ <tr>
+ <td>
+ <table>
+ <tr>
+ <td align=left>[% 'Department' | $T8 %]</td>
+ <td align=left></td>
+ <td>[% L.select_tag('department_id', ALL_DEPARTMENTS, title_key = 'description', with_empty = 1) %]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><hr size=3 noshade></td>
</tr>
[% END %]
- <tr>
- <td><hr size=3 noshade></td>
- </tr>
</table>
<input type=hidden name=beraternr value="[% beraternr %]">