}
$main::lxdebug->leave_sub();
}
-
-sub erfolgsrechnung {
- $main::lxdebug->enter_sub();
-
- my ($self, $myconfig, $form) = @_;
- $form->{company} = $::instance_conf->get_company;
- $form->{address} = $::instance_conf->get_address;
-
- # wrong user inputs should be handled during users input
- # e.g. spaces, tabs, wrong format or wrong dates
- $form->{fromdate} = "01.01.2000" if !$form->{fromdate};
- $form->{todate} = $form->current_date(%{$myconfig}) if !$form->{todate};
-
- my %categories = (I => "ERTRAG", E => "AUFWAND");
- my $fromdate = conv_dateq($form->{fromdate});
- my $todate = conv_dateq($form->{todate});
-
- $form->{total} = 0;
- foreach my $category (keys %categories) {
- my %category = (
- name => $categories{$category},
- total => 0,
- accounts => get_accounts_ch($category),
- );
- foreach my $account (@{$category{accounts}}) {
- $account->{total} += ($account->{category} eq $category ? 1 : -1) * get_total_ch($account->{id}, $fromdate, $todate);
- $category{total} += $account->{total};
- $account->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $account->{total}), 2);
- }
- $form->{total} += $category{total};
- $category{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $category{total}), 2);
- push(@{$form->{categories}}, \%category);
- }
- $form->{total} = $form->format_amount($myconfig, $form->parse_amount($myconfig, $form->{total}), 2);
-
- $main::lxdebug->leave_sub();
- return {};
-}
-
-sub get_accounts_ch {
- $main::lxdebug->enter_sub();
-
- my ($category) = @_;
- my ($inclusion);
-
- if ($category eq 'I') {
- $inclusion = "AND pos_er = NULL OR pos_er > '0' AND pos_er <= '5'";
- } elsif ($category eq 'E') {
- $inclusion = "AND pos_er = NULL OR pos_er >= '6' AND pos_er < '100'";
- } else {
- $inclusion = "";
- }
-
- my $query = qq|
- SELECT id, accno, description, category
- FROM chart
- WHERE category = ? $inclusion
- ORDER BY accno
- |;
- my $accounts = selectall_hashref_query($::form, $::form->get_standard_dbh, $query, $category);
-
- $main::lxdebug->leave_sub();
- return $accounts;
-}
-
-sub get_total_ch {
- $main::lxdebug->enter_sub();
-
- my ($chart_id, $fromdate, $todate) = @_;
- my $total = 0;
- my $query = qq|
- SELECT SUM(amount)
- FROM acc_trans
- WHERE chart_id = ?
- AND transdate >= ?
- AND transdate <= ?
- |;
- my $data = selectfirst_hashref_query($::form, $::form->get_standard_dbh, $query, $chart_id, $fromdate, $todate);
- $total += $data->{sum};
-
- $main::lxdebug->leave_sub();
- return $total;
-}
-
1;
# $form->parse_html_template('rp/html_report_susa')
my $rp_access_map = {
- 'projects' => 'report',
- 'ar_aging' => 'general_ledger',
- 'ap_aging' => 'general_ledger',
- 'receipts' => 'cash',
- 'payments' => 'cash',
- 'trial_balance' => 'report',
- 'income_statement' => 'report',
- 'erfolgsrechnung' => 'report',
- 'bwa' => 'report',
- 'balance_sheet' => 'report',
+ 'projects' => 'report',
+ 'ar_aging' => 'general_ledger',
+ 'ap_aging' => 'general_ledger',
+ 'receipts' => 'cash',
+ 'payments' => 'cash',
+ 'trial_balance' => 'report',
+ 'income_statement' => 'report',
+ 'bwa' => 'report',
+ 'balance_sheet' => 'report',
};
sub check_rp_access {
my %title = (
balance_sheet => $::locale->text('Balance Sheet'),
income_statement => $::locale->text('Income Statement'),
- erfolgsrechnung => $::locale->text('Erfolgsrechnung'),
trial_balance => $::locale->text('Trial Balance'),
ar_aging => $::locale->text('Search AR Aging'),
ap_aging => $::locale->text('Search AP Aging'),
$::form->{title} = $title{$::form->{report}};
$::request->{layout}->add_javascripts('autocomplete_customer.js');
- $::form->{fromdate} = DateTime->today->truncate(to => 'year')->to_kivitendo;
- $::form->{todate} = DateTime->today->truncate(to => 'year')->add(years => 1)->add(days => -1)->to_kivitendo;
# get departments
$::form->all_departments(\%::myconfig);
$::form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 1 });
- my $is_projects = $::form->{report} eq "projects";
- my $is_income_statement = $::form->{report} eq "income_statement";
- my $is_erfolgsrechnung = $::form->{report} eq "erfolgsrechnung";
- my $is_bwa = $::form->{report} eq "bwa";
- my $is_balance_sheet = $::form->{report} eq "balance_sheet";
- my $is_trial_balance = $::form->{report} eq "trial_balance";
- my $is_aging = $::form->{report} =~ /^a[rp]_aging$/;
- my $is_payments = $::form->{report} =~ /(receipts|payments)$/;
+ my $is_projects = $::form->{report} eq "projects";
+ my $is_income_statement = $::form->{report} eq "income_statement";
+ my $is_bwa = $::form->{report} eq "bwa";
+ my $is_balance_sheet = $::form->{report} eq "balance_sheet";
+ my $is_trial_balance = $::form->{report} eq "trial_balance";
+ my $is_aging = $::form->{report} =~ /^a[rp]_aging$/;
+ my $is_payments = $::form->{report} =~ /(receipts|payments)$/;
my ($label, $nextsub, $vc);
if ($is_aging) {
$::form->header;
print $::form->parse_html_template('rp/report', {
- paymentaccounts => $paymentaccounts,
- selection => $selection,
- is_aging => $is_aging,
- vc => $vc,
- label => $label,
- year => DateTime->today->year,
- today => DateTime->today,
- nextsub => $nextsub,
- is_payments => $is_payments,
- is_trial_balance => $is_trial_balance,
- is_balance_sheet => $is_balance_sheet,
- is_bwa => $is_bwa,
- is_income_statement => $is_income_statement,
- is_erfolgsrechnung => $is_erfolgsrechnung,
- is_projects => $is_projects,
+ paymentaccounts => $paymentaccounts,
+ selection => $selection,
+ is_aging => $is_aging,
+ vc => $vc,
+ label => $label,
+ year => DateTime->today->year,
+ today => DateTime->today,
+ nextsub => $nextsub,
+ is_payments => $is_payments,
+ is_trial_balance => $is_trial_balance,
+ is_balance_sheet => $is_balance_sheet,
+ is_bwa => $is_bwa,
+ is_income_statement => $is_income_statement,
+ is_projects => $is_projects,
});
$::lxdebug->leave_sub;
$main::lxdebug->leave_sub();
}
-sub generate_erfolgsrechnung {
- $::lxdebug->enter_sub;
- $::auth->assert('report');
-
- $::form->{decimalplaces} = $::form->{decimalplaces} * 1 || 2;
- $::form->{padding} = " ";
- $::form->{bold} = "<b>";
- $::form->{endbold} = "</b>";
- $::form->{br} = "<br>";
-
- my $data = RP->erfolgsrechnung(\%::myconfig, $::form);
-
- $::form->header();
- print $::form->parse_html_template('rp/erfolgsrechnung', $data);
-
- $::lxdebug->leave_sub;
-}
-
-
sub generate_balance_sheet {
$::lxdebug->enter_sub;
$::auth->assert('report');
+++ /dev/null
-[%- USE T8 %]
-[%- USE HTML %]
-[%- USE LxERP %]
-
-<h2 align="center">
- <br>[% company %]
- <br>[% address %]
- <p>[% 'ERFOLGSRECHNUNG' %]
- <br>[% fromdate %] bis [% todate %]
-</h2>
-<table border="0">
- <tr>
- <th align="left" width="400" colspan="2"><br></th>
- </tr>
- [%- FOREACH category = categories %]
- <tr valign="top">
- <th align="left" colspan="4">[% category.name %]<b><hr align="left" width="250" size="5" noshade></th>
- </tr>
- [%- FOREACH row = category.accounts %]
- <tr>
- <td align="left">[% row.accno %]</td>
- <td align="left">[% row.description %]</td>
- <td align="right">[% row.total %]</td>
- </tr>
- [%- END %]
- <tr>
- <td colspan="2"> </td>
- <td><hr noshade size="1"></td>
- <td><hr noshade size="1"></td>
- </tr>
- <tr valign="top">
- <th align="left" colspan="2">TOTAL</th>
- <td align="right">[% category.total %]<hr noshade size="2"></td>
- </tr>
- [%- END %]
- <tr valign="top">
- <th align="left" colspan="2">GEWINN/VERLUST</th>
- <td align="right">[% total %]<br><hr noshade size="2"></td>
- </tr>
-</table>
</tr>
<tr>
<th colspan=1>[% 'Year' | $T8 %]</th>
- <td>
- <input name=year size=11 title="[% 'YYYY' | $T8 %]" value="[% year %]" class="initial_focus" oninput='set_from_to(duetyp.value, this.value)'>
- </td>
+ <td><input name=year size=11 title="[% 'YYYY' | $T8 %]" value="[% year %]" class="initial_focus"></td>
</tr>
<tr>
<td align=right> <b>[% 'Yearly' | $T8 %]</b> </td>
<th align=left colspan=3>[% 'Monthly' | $T8 %]</th>
</tr>
<tr>
- <td align=right>
- <input name=duetyp class=radio type=radio value="13" onchange='set_from_to(this.value, year.value)'>
- </td>
- <td><input name=duetyp class=radio type=radio value="A" onchange='set_from_to(this.value, year.value)'>
- 1. [% 'Quarter' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="1" checked onchange='set_from_to(this.value, year.value)'>
- [% 'January' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="5" onchange='set_from_to(this.value, year.value)'>
- [% 'May' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="9" onchange='set_from_to(this.value, year.value)'>
- [% 'September' | $T8 %]
- </td>
+ <td align=right> <input name=duetyp class=radio type=radio value="13"></td>
+ <td><input name=duetyp class=radio type=radio value="A"> 1. [% 'Quarter' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="1" checked> [% 'January' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="5"> [% 'May' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="9"> [% 'September' | $T8 %]</td>
</tr>
<tr>
<td align= right> </td>
- <td><input name=duetyp class=radio type=radio value="B" onchange='set_from_to(this.value, year.value)'>
- 2. [% 'Quarter' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="2" onchange='set_from_to(this.value, year.value)'>
- [% 'February' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="6" onchange='set_from_to(this.value, year.value)'>
- [% 'June' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="10" onchange='set_from_to(this.value, year.value)'>
- [% 'October' | $T8 %]
- </td>
+ <td><input name=duetyp class=radio type=radio value="B"> 2. [% 'Quarter' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="2"> [% 'February' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="6"> [% 'June' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="10"> [% 'October' | $T8 %]</td>
</tr>
<tr>
<td> </td>
- <td><input name=duetyp class=radio type=radio value="C" onchange='set_from_to(this.value, year.value)'>
- 3. [% 'Quarter' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="3" onchange='set_from_to(this.value, year.value)'>
- [% 'March' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="7" onchange='set_from_to(this.value, year.value)'>
- [% 'July' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="11" onchange='set_from_to(this.value, year.value)'>
- [% 'November' | $T8 %]
- </td>
+ <td><input name=duetyp class=radio type=radio value="C"> 3. [% 'Quarter' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="3"> [% 'March' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="7"> [% 'July' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="11"> [% 'November' | $T8 %]</td>
</tr>
<tr>
<td> </td>
- <td><input name=duetyp class=radio type=radio value="D" onchange='set_from_to(this.value, year.value)'>
- 4. [% 'Quarter' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="4" onchange='set_from_to(this.value, year.value)'>
- [% 'April' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="8" onchange='set_from_to(this.value, year.value)'>
- [% 'August' | $T8 %]
- </td>
- <td><input name=duetyp class=radio type=radio value="12" onchange='set_from_to(this.value, year.value)'>
- [% 'December' | $T8 %]
- </td>
+ <td><input name=duetyp class=radio type=radio value="D"> 4. [% 'Quarter' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="4"> [% 'April' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="8"> [% 'August' | $T8 %]</td>
+ <td><input name=duetyp class=radio type=radio value="12"> [% 'December' | $T8 %]</td>
</tr>
<tr>
<td colspan=5><hr size=3 noshade></td>
<th align=left><input name=reporttype class=radio type=radio value="free">[% 'Free report period' | $T8 %]</th>
<td align=left colspan=4>
[% 'From' | $T8 %] [% L.date_tag('fromdate', fromdate) %]
- [% 'Bis' | $T8 %] [% L.date_tag('todate', todate) %]
+ [% 'Bis' | $T8 %] [% L.date_tag('todate') %]
</td>
</tr>
<tr>
</tr>
[%- END %]
-
[%- IF is_bwa %]
[%- PROCESS projectnumber %]
<input type=hidden name=nextsub value=generate_bwa>
</tr>
[%- END %]
-
-[%- IF is_erfolgsrechnung %]
- <input type=hidden name=nextsub value=generate_erfolgsrechnung>
-</table>
-<table>
-[%- PROCESS customized_report %]
-[%- END %]
-
-
[%- IF is_balance_sheet %]
<input type=hidden name=nextsub value=generate_balance_sheet>
<tr>
<input type=submit class=submit name=action value="[% 'Continue' | $T8 %]">
</form>
-
-<script type="text/javascript">
-function set_from_to(duetyp, year) {
- var date = {
- 1: [ 1, 1, 1, 31 ],
- 2: [ 2, 1, 2, new Date(year, 1, 29).getMonth() == 1 ? 29 : 28 ],
- 3: [ 3, 1, 3, 31 ],
- 4: [ 4, 1, 4, 30 ],
- 5: [ 5, 1, 5, 31 ],
- 6: [ 6, 1, 6, 30 ],
- 7: [ 7, 1, 7, 31 ],
- 8: [ 8, 1, 8, 31 ],
- 9: [ 9, 1, 9, 30 ],
- 10: [ 10, 1, 10, 31 ],
- 11: [ 11, 1, 11, 30 ],
- 12: [ 12, 1, 12, 31 ],
- 13: [ 1, 1, 12, 31 ],
- 'A': [ 1, 1, 3, 31 ],
- 'B': [ 4, 1, 6, 30 ],
- 'C': [ 7, 1, 9, 30 ],
- 'D': [ 10, 1, 12, 31 ]
- }[duetyp];
-
- $('#fromdate').val(kivi.format_date(new Date(year, date[0]-1, date[1])));
- $('#todate').val(kivi.format_date(new Date(year, date[2]-1, date[3])));
-
- return true;
-}
-</script>
-