}
sub report {
- $main::lxdebug->enter_sub();
+ $::lxdebug->enter_sub;
check_rp_access();
- my $form = $main::form;
- my %myconfig = %main::myconfig;
- my $locale = $main::locale;
-
my %title = (
- 'balance_sheet' => 'Balance Sheet',
- 'income_statement' => 'Income Statement',
- 'trial_balance' => 'Trial Balance',
- 'ar_aging' => 'Search AR Aging',
- 'ap_aging' => 'Search AP Aging',
- 'tax_collected' => 'Tax collected',
- 'tax_paid' => 'Tax paid',
- 'nontaxable_sales' => 'Non-taxable Sales',
- 'nontaxable_purchases' => 'Non-taxable Purchases',
- 'receipts' => 'Receipts',
- 'payments' => 'Payments',
- 'projects' => 'Project Transactions',
- 'bwa' => 'Business evaluation',
+ balance_sheet => $::locale->text('Balance Sheet'),
+ income_statement => $::locale->text('Income Statement'),
+ trial_balance => $::locale->text('Trial Balance'),
+ ar_aging => $::locale->text('Search AR Aging'),
+ ap_aging => $::locale->text('Search AP Aging'),
+ tax_collected => $::locale->text('Tax collected'),
+ tax_paid => $::locale->text('Tax paid'),
+ nontaxable_sales => $::locale->text('Non-taxable Sales'),
+ nontaxable_purchases => $::locale->text('Non-taxable Purchases'),
+ receipts => $::locale->text('Receipts'),
+ payments => $::locale->text('Payments'),
+ projects => $::locale->text('Project Transactions'),
+ bwa => $::locale->text('Business evaluation'),
);
- $form->{title} = $locale->text($title{ $form->{report} });
-
- my $accrual = $::instance_conf->get_accounting_method eq 'cash' ? "" : "checked";
- my $cash = $::instance_conf->get_accounting_method eq 'cash' ? "checked" : "";
-
- my $year = (localtime)[5] + 1900;
+ $::form->{title} = $title{$::form->{report}};
# get departments
- $form->all_departments(\%myconfig);
- if (@{ $form->{all_departments} || [] }) {
- $form->{selectdepartment} = "<option>\n";
- map { $form->{selectdepartment} .= "<option>$_->{description}--$_->{id}\n" } @{ $form->{all_departments} || [] };
+ $::form->all_departments(\%::myconfig);
+ if (@{ $::form->{all_departments} || [] }) {
+ $::form->{selectdepartment} = "<option>\n";
+ map { $::form->{selectdepartment} .= "<option>$_->{description}--$_->{id}\n" } @{ $::form->{all_departments} || [] };
}
- my $department;
- $department = qq|
- <tr>
- <th align=right nowrap>| . $locale->text('Department') . qq|</th>
- <td colspan=3><select name=department>$form->{selectdepartment}</select></td>
- </tr>
-| if $form->{selectdepartment};
+ $::form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 1 });
- $form->get_lists("projects" => { "key" => "ALL_PROJECTS",
- "all" => 1 });
-
- my %project_labels = ();
- my @project_values = ("");
- foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
- push(@project_values, $item->{"id"});
- $project_labels{$item->{"id"}} = $item->{"projectnumber"};
- }
-
- my $projectnumber =
- NTI($::request->{cgi}->popup_menu('-name' => "project_id",
- '-values' => \@project_values,
- '-labels' => \%project_labels));
-
- # use JavaScript Calendar or not
- $form->{jsscript} = 1;
- my $jsscript = "";
- my ( $name_1, $id_1, $value_1, $trigger_1, $name_2, $id_2, $value_2, $trigger_2, );
- if ($form->{report} eq "balance_sheet") {
- $name_1 = "asofdate";
- $id_1 = "asofdate";
- $value_1 = "$form->{asofdate}";
- $trigger_1 = "trigger1";
- $name_2 = "compareasofdate";
- $id_2 = "compareasofdate";
- $value_2 = "$form->{compareasofdate}";
- $trigger_2 = "trigger2";
- } elsif ($form->{report} =~ /(receipts|payments)$/) {
- $name_1 = "fromdate";
- $id_1 = "fromdate";
- $value_1 = "$form->{fromdate}";
- $trigger_1 = "trigger1";
- $name_2 = "todate";
- $id_2 = "todate";
- $value_2 = "";
- $trigger_2 = "trigger2";
- } elsif (($form->{report} eq "ar_aging") || ($form->{report} eq "ap_aging")) {
- $name_1 = "fromdate";
- $id_1 = "fromdate";
- $value_1 = "$form->{fromdate}";
- $trigger_1 = "trigger1";
- $name_2 = "todate";
- $id_2 = "todate";
- $value_2 = "";
- $trigger_2 = "trigger2";
-
- } else {
- $name_1 = "fromdate";
- $id_1 = "fromdate";
- $value_1 = "$form->{fromdate}";
- $trigger_1 = "trigger1";
- $name_2 = "todate";
- $id_2 = "todate";
- $value_2 = "";
- $trigger_2 = "trigger2";
- }
-
- my ($button1, $button1_2, $button2, $button2_2);
- my $checked;
-
- # with JavaScript Calendar
- if ($form->{jsscript}) {
- if ($name_1 eq "") {
- $button1 = qq| <input name=$name_2 id=$id_2 size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">|;
- $button1_2 = qq| <input type=button name=$name_2 id="$trigger_2" value=| . $locale->text('button') . qq|>|;
-
- #write Trigger
- $jsscript = Form->write_trigger(\%myconfig, "1", "$name_2", "BR", "$trigger_2");
- } else {
- $button1 = qq| <input name=$name_1 id=$id_1 size=11 title="$myconfig{dateformat}" value="$value_1" onBlur=\"check_right_date_format(this)\">|;
- $button1_2 = qq| <input type=button name=$name_1 id="$trigger_1" value=| . $locale->text('button') . qq|>|;
- $button2 = qq| <input name=$name_2 id=$id_2 size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">|;
- $button2_2 = qq| <input type=button name=$name_2 id="$trigger_2" value=| . $locale->text('button') . qq|> |;
-
- #write Trigger
- $jsscript = Form->write_trigger(\%myconfig, "2", "$name_1", "BR", "$trigger_1", "$name_2", "BL", "$trigger_2");
- }
- } else {
-
- # without JavaScript Calendar
- if ($name_1 eq "") {
- $button1 = qq|<input name=$name_2 id=$id_2 size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">|;
- } else {
- $button1 = qq|<input name=$name_1 id=$id_1 size=11 title="$myconfig{dateformat}" value=$value_1 onBlur=\"check_right_date_format(this)\">|;
- $button2 = qq|<input name=$name_2 id=$id_2 size=11 title="$myconfig{dateformat}" onBlur=\"check_right_date_format(this)\">|;
- }
- }
- $form->{javascript} .= qq|<script type="text/javascript" src="js/common.js"></script>|;
- $form->header;
my $onload = qq|focus()|;
- $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
- $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
- print qq|
-<body onLoad="$onload">
-
-<form method=post action=$form->{script}>
-
-<input type=hidden name=title value="$form->{title}">
-
-<table width=100% border="0">
- <tr>
- <th class=listtop>$form->{title}</th>
- </tr>
- <tr height="5"></tr>
- <tr>
- <td>
- <table border="0">
- $department
-|;
-
- if ($form->{report} eq "projects") {
- print qq|
- <tr>
- <th align=right nowrap>| . $locale->text('Project') . qq|</th>
- <td colspan=5><input name=projectnumber size=25</td>
- </tr>
- <input type=hidden name=nextsub value=generate_projects>
- <tr>
- <th align=right>| . $locale->text('From') . qq|</th>
- <td>$button1</td>
- <td>$button1_2</td>
- <th align=right>| . $locale->text('Bis') . qq|</th>
- <td>$button2</td>
- <td>$button2_2</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table>
- <tr>
- <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
- <td><input name=l_heading class=checkbox type=checkbox value=Y> | . $locale->text('Heading') . qq|
- <input name=l_subtotal class=checkbox type=checkbox value=Y> | . $locale->text('Subtotal') . qq|</td>
- </tr>
-
-$jsscript
-|;
- }
-
- if ($form->{report} eq "income_statement") {
- print qq|
- <tr>
- <th align=right nowrap>| . $locale->text('Project') . qq|</th>
- <td colspan=3>$projectnumber</td>
- </tr>
- <input type=hidden name=nextsub value=generate_income_statement>
-</table>
-<table>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
- </tr>
- <tr>
- <th colspan=1>| . $locale->text('Year') . qq|</th>
- <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
- </tr>
-|;
-
- print qq|
- <tr>
- <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
- <th align=left>| . $locale->text('Quarterly') . qq|</th>
- <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
- </tr>
- <tr>
- <td align=right> <input name=duetyp class=radio type=radio value="13" "checked"></td>
- <td><input name=duetyp class=radio type=radio value="A" $checked > 1. | . $locale->text('Quarter') . qq|</td>
-|;
- $checked = "";
- print qq|
- <td><input name=duetyp class=radio type=radio value="1" $checked > | . $locale->text('January') . qq|</td>
-|;
- $checked = "";
- print qq|
- <td><input name=duetyp class=radio type=radio value="5" $checked > | . $locale->text('May') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="9" $checked > | . $locale->text('September') . qq|</td>
-
- </tr>
- <tr>
- <td align= right> </td>
- <td><input name=duetyp class=radio type=radio value="B" $checked> 2. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="2" $checked > | . $locale->text('February') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="6" $checked > | . $locale->text('June') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="10" $checked > | . $locale->text('October') . qq|</td>
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="C" $checked> 3. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="3" $checked > | . $locale->text('March') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="7" $checked > | . $locale->text('July') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="11" $checked > | . $locale->text('November') . qq|</td>
-
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="D" $checked> 4. | . $locale->text('Quarter') . qq| </td>
- <td><input name=duetyp class=radio type=radio value="4" $checked > | . $locale->text('April') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="8" $checked > | . $locale->text('August') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="12" $checked > | . $locale->text('December') . qq|</td>
-
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
- <td align=left colspan=4>| . $locale->text('From') . qq|
- $button1
- $button1_2
- | . $locale->text('Bis') . qq|
- $button2
- $button2_2
- </td>
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=leftt>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
- </tr>
-
-$jsscript
-|;
- }
-
- if ($form->{report} eq "bwa") {
- print qq|
- <tr>
- <th align=right nowrap>| . $locale->text('Project') . qq|</th>
- <td colspan=3>$projectnumber</td>
- </tr>
- <input type=hidden name=nextsub value=generate_bwa>
-</table>
-<table>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
- </tr>
- <tr>
- <th colspan=1>| . $locale->text('Year') . qq|</th>
- <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
- </tr>
-|;
-
- print qq|
- <tr>
- <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
- <th align=left>| . $locale->text('Quarterly') . qq|</th>
- <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
- </tr>
- <tr>
- <td align=right> <input name=duetyp class=radio type=radio value="13"
-$checked></td>
- <td><input name=duetyp class=radio type=radio value="A" $checked > 1. | . $locale->text('Quarter') . qq|</td>
-|;
- $checked = "checked";
- print qq|
- <td><input name=duetyp class=radio type=radio value="1" $checked > | . $locale->text('January') . qq|</td>
-|;
- $checked = "";
- print qq|
- <td><input name=duetyp class=radio type=radio value="5" $checked > | . $locale->text('May') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="9" $checked > | . $locale->text('September') . qq|</td>
-
- </tr>
- <tr>
- <td align= right> </td>
- <td><input name=duetyp class=radio type=radio value="B" $checked> 2. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="2" $checked > | . $locale->text('February') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="6" $checked > | . $locale->text('June') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="10" $checked > | . $locale->text('October') . qq|</td>
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="C" $checked> 3. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="3" $checked > | . $locale->text('March') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="7" $checked > | . $locale->text('July') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="11" $checked > | . $locale->text('November') . qq|</td>
-
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="D" $checked> 4. | . $locale->text('Quarter') . qq| </td>
- <td><input name=duetyp class=radio type=radio value="4" $checked > | . $locale->text('April') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="8" $checked > | . $locale->text('August') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="12" $checked > | . $locale->text('December') . qq|</td>
-
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
- <td align=left colspan=4>| . $locale->text('From') . qq|
- $button1
- $button1_2
- | . $locale->text('Bis') . qq|
- $button2
- $button2_2
- </td>
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=leftt>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
- </tr>
- <tr>
- <th align=right colspan=4>| . $locale->text('Decimalplaces') . qq|</th>
- <td><input name=decimalplaces size=3 value="2"></td>
- </tr>
-
-$jsscript
-|;
- }
-
- if ($form->{report} eq "balance_sheet") {
- print qq|
- <input type=hidden name=nextsub value=generate_balance_sheet>
- <tr>
- <th align=right>| . $locale->text('as at') . qq|</th>
- <td>
- $button1
- $button1_2
- </td>
- <th align=right nowrap>| . $locale->text('Compare to') . qq|</th>
- <td>
- $button2
- $button2_2
- </td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Decimalplaces') . qq|</th>
- <td><input name=decimalplaces size=3 value="2"></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table>
- <tr>
- <th align=right>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
- </tr>
-
- <tr>
- <th align=right nowrap>| . $locale->text('Include in Report') . qq|</th>
- <td><input name=l_heading class=checkbox type=checkbox value=Y> | . $locale->text('Heading') . qq|
- <input name=l_subtotal class=checkbox type=checkbox value=Y> | . $locale->text('Subtotal') . qq|
- <input name=l_accno class=checkbox type=checkbox value=Y> | . $locale->text('Account Number') . qq|</td>
- </tr>
-
-$jsscript
-|;
- }
-
- if ($form->{report} eq "trial_balance") {
- print qq|
- <tr>
- <th align=right nowrap>| . $locale->text('Project') . qq|</th>
- <td colspan=3>$projectnumber</td>
- </tr>
- <input type=hidden name=nextsub value=generate_trial_balance>
-</table>
-<table>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="custom" checked> | . $locale->text('Customized Report') . qq|</th>
- </tr>
- <tr>
- <th colspan=1>| . $locale->text('Year') . qq|</th>
- <td><input name=year size=11 title="| . $locale->text('YYYY') . qq|" value="$year"></td>
- </tr>
-|;
-
- print qq|
- <tr>
- <td align=right> <b> | . $locale->text('Yearly') . qq|</b> </td>
- <th align=left>| . $locale->text('Quarterly') . qq|</th>
- <th align=left colspan=3>| . $locale->text('Monthly') . qq|</th>
- </tr>
- <tr>
- <td align=right> <input name=duetyp class=radio type=radio value="13" $checked></td>
- <td><input name=duetyp class=radio type=radio value="A" $checked > 1. | . $locale->text('Quarter') . qq|</td>
-|;
- $checked = "checked";
- print qq|
- <td><input name=duetyp class=radio type=radio value="1" $checked > | . $locale->text('January') . qq|</td>
-|;
- $checked = "";
- print qq|
- <td><input name=duetyp class=radio type=radio value="5" $checked > | . $locale->text('May') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="9" $checked > | . $locale->text('September') . qq|</td>
-
- </tr>
- <tr>
- <td align= right> </td>
- <td><input name=duetyp class=radio type=radio value="B" $checked> 2. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="2" $checked > | . $locale->text('February') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="6" $checked > | . $locale->text('June') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="10" $checked > | . $locale->text('October') . qq|</td>
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="C" $checked> 3. | . $locale->text('Quarter') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="3" $checked > | . $locale->text('March') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="7" $checked > | . $locale->text('July') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="11" $checked > | . $locale->text('November') . qq|</td>
-
- </tr>
- <tr>
- <td> </td>
- <td><input name=duetyp class=radio type=radio value="D" $checked> 4. | . $locale->text('Quarter') . qq| </td>
- <td><input name=duetyp class=radio type=radio value="4" $checked > | . $locale->text('April') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="8" $checked > | . $locale->text('August') . qq|</td>
- <td><input name=duetyp class=radio type=radio value="12" $checked > | . $locale->text('December') . qq|</td>
-
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=left><input name=reporttype class=radio type=radio value="free" $checked> | . $locale->text('Free report period') . qq|</th>
- <td align=left colspan=4>| . $locale->text('From') . qq|
- $button1
- $button1_2
- | . $locale->text('Bis') . qq|
- $button2
- $button2_2
- </td>
- </tr>
- <tr>
- <td colspan=5><hr size=3 noshade></td>
- </tr>
- <tr>
- <th align=leftt>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
- </tr>
- <tr>
- <th align=right colspan=4>| . $locale->text('All Accounts') . qq|</th>
- <td><input name=all_accounts type=checkbox value=1></td>
- </tr>
- <tr>
- <th align=right colspan=4>| . $locale->text('Decimalplaces') . qq|</th>
- <td><input name=decimalplaces size=3 value="2"></td>
- </tr>
-
-$jsscript
-|;
- }
-
- if ($form->{report} =~ /^tax_/) {
- $form->{db} = ($form->{report} =~ /_collected/) ? "ar" : "ap";
-
- RP->get_taxaccounts(\%myconfig, \%$form);
-
- print qq|
- <input type=hidden name=nextsub value=generate_tax_report>
- <tr>
- <th align=right>| . $locale->text('From') . qq|</th>
- <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
- <th align=right>| . $locale->text('Bis') . qq|</th>
- <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Report for') . qq|</th>
- <td colspan=3>
-|;
-
- $checked = "checked";
- foreach my $ref (@{ $form->{taxaccounts} }) {
-
- print
- qq|<input name=accno class=radio type=radio value=$ref->{accno} $checked> $ref->{description}
-
- <input name="$ref->{accno}_description" type=hidden value="$ref->{description}">
- <input name="$ref->{accno}_rate" type=hidden value="$ref->{rate}">|;
-
- $checked = "";
-
- }
-
- print qq|
- <input type=hidden name=db value=$form->{db}>
- <input type=hidden name=sort value=transdate>
-
- </td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>| . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>| . $locale->text('EUR') . qq|</td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table>
- <tr>
- <th align=right>| . $locale->text('Include in Report') . qq|</th>
- <td>
- <table>
- <tr>
- <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('ID') . qq|</td>
- <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Invoice') . qq|</td>
- <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Date') . qq|</td>
- </tr>
- <tr>
- <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
- <td>|;
-
- if ($form->{db} eq 'ar') {
- print $locale->text('Customer');
- }
- if ($form->{db} eq 'ap') {
- print $locale->text('Vendor');
- }
-
- print qq|</td>
- <td><input name="l_netamount" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Amount') . qq|</td>
- <td><input name="l_tax" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Tax') . qq|</td>
- <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('Total') . qq|</td>
- </tr>
- <tr>
- <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('Subtotal') . qq|</td>
- </tr>
- </table>
- </td>
- </tr>
-|;
-
- }
-
- if ($form->{report} =~ /^nontaxable_/) {
- $form->{db} = ($form->{report} =~ /_sales/) ? "ar" : "ap";
-
- print qq|
- <input type=hidden name=nextsub value=generate_tax_report>
-
- <input type=hidden name=db value=$form->{db}>
- <input type=hidden name=sort value=transdate>
- <input type=hidden name=report value=$form->{report}>
-
- <tr>
- <th align=right>| . $locale->text('From') . qq|</th>
- <td><input name=fromdate size=11 title="$myconfig{dateformat}" value=$form->{fromdate}></td>
- <th align=right>| . $locale->text('Bis') . qq|</th>
- <td><input name=todate size=11 title="$myconfig{dateformat}"></td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Method') . qq|</th>
- <td colspan=3><input name=method class=radio type=radio value=accrual $accrual>|
- . $locale->text('Accrual') . qq|
- <input name=method class=radio type=radio value=cash $cash>|
- . $locale->text('EUR') . qq|</td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Include in Report') . qq|</th>
- <td colspan=3>
- <table>
- <tr>
- <td><input name="l_id" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('ID') . qq|</td>
- <td><input name="l_invnumber" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Invoice') . qq|</td>
- <td><input name="l_transdate" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Date') . qq|</td>
- </tr>
- <tr>
- <td><input name="l_name" class=checkbox type=checkbox value=Y checked></td>
- <td>|;
-
- if ($form->{db} eq 'ar') {
- print $locale->text('Customer');
- }
- if ($form->{db} eq 'ap') {
- print $locale->text('Vendor');
- }
- print qq|</td>
- <td><input name="l_netamount" class=checkbox type=checkbox value=Y checked></td>
- <td>| . $locale->text('Amount') . qq|</td>
- <td><input name="l_amount" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('Total') . qq|</td>
- </tr>
- <tr>
- <td><input name="l_subtotal" class=checkbox type=checkbox value=Y></td>
- <td>| . $locale->text('Subtotal') . qq|</td>
- </tr>
- </table>
- </td>
- </tr>
-|;
-
- }
+ 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_taxreport = $::form->{report} =~ /^tax_/;
+ my $is_nontaxable = $::form->{report} =~ /^nontaxable_/;
+ my $is_aging = $::form->{report} =~ /^a[rp]_aging$/;
+ my $is_payments = $::form->{report} =~ /(receipts|payments)$/;
+
+# if (is_taxreport) {
+# $::form->{db} = ($::form->{report} =~ /_collected/) ? "ar" : "ap";
+# RP->get_taxaccounts(\%::myconfig, $::form);
+# }
+#
+# if ($is_nontaxable) {
+# $::form->{db} = ($::form->{report} =~ /_sales/) ? "ar" : "ap";
+# }
my ($label, $nextsub, $vc);
- if (($form->{report} eq "ar_aging") || ($form->{report} eq "ap_aging")) {
- if ($form->{report} eq 'ar_aging') {
- $label = $locale->text('Customer');
- $form->{vc} = 'customer';
- } else {
- $label = $locale->text('Vendor');
- $form->{vc} = 'vendor';
- }
+ if ($is_aging) {
+ my $is_sales = $::form->{report} eq 'ar_aging';
+ $label = $is_sales ? $::locale->text('Customer') : $::locale->text('Vendor');
+ $::form->{vc} = $is_sales ? 'customer' : 'vendor';
- $nextsub = "generate_$form->{report}";
+ $nextsub = "generate_$::form->{report}";
# setup vc selection
- $form->all_vc(\%myconfig, $form->{vc},
- ($form->{vc} eq 'customer') ? "AR" : "AP");
-
- map { $vc .= "<option>$_->{name}--$_->{id}\n" }
- @{ $form->{"all_$form->{vc}"} };
-
- $vc =
- ($vc)
- ? qq|<select name=$form->{vc}><option>\n$vc</select>|
- : qq|<input name=$form->{vc} size=35>|;
-
- print qq|
- <tr>
- <th align=right>| . $locale->text($label) . qq|</th>
- <td>$vc</td>
- </tr>
- <tr>
- <td>| . $locale->text('Review of Aging list') . qq|</td>
- <td><select name="review_of_aging_list">
- <option></option>
- <option>0-30</option>
- <option>30-60</option>
- <option>60-90</option>
- <option>90-120</option>
- <option>> 120</option>
- </select>
- </td>
- </tr>
- <tr>
- <td align=left colspan=4>| . $locale->text('From') . qq|
- $button1
- $button1_2
- | . $locale->text('Bis') . qq|
- $button2
- $button2_2
- </td>
- </tr>
- <input type=hidden name=type value=statement>
- <input type=hidden name=format value=html>
- <input type=hidden name=media value=screen>
-
- <input type=hidden name=nextsub value=$nextsub>
- <input type=hidden name=action value=$nextsub>
-
-$jsscript
-|;
+ $::form->all_vc(\%::myconfig, $::form->{vc}, $is_sales ? "AR" : "AP");
+ $vc .= "<option>$_->{name}--$_->{id}\n" for @{ $::form->{"all_$::form->{vc}"} };
+ $vc = ($vc)
+ ? qq|<select name=$::form->{vc}><option>\n$vc</select>|
+ : qq|<input name=$::form->{vc} size=35>|;
}
- # above action can be removed if there is more than one input field
-
my ($selection, $paymentaccounts);
- if ($form->{report} =~ /(receipts|payments)$/) {
- $form->{db} = ($form->{report} =~ /payments$/) ? "ap" : "ar";
+ if ($is_payments) {
+ $::form->{db} = $::form->{report} =~ /payments$/ ? "ap" : "ar";
- RP->paymentaccounts(\%myconfig, \%$form);
+ RP->paymentaccounts(\%::myconfig, $::form);
$selection = "<option>\n";
- foreach my $ref (@{ $form->{PR} }) {
+ for my $ref (@{ $::form->{PR} }) {
$paymentaccounts .= "$ref->{accno} ";
$selection .= "<option>$ref->{accno}--$ref->{description}\n";
}
-
- chop $paymentaccounts;
-
- print qq|
- <input type=hidden name=nextsub value=list_payments>
- <tr>
- <th align=right nowrap>| . $locale->text('Account') . qq|</th>
- <td colspan=3><select name=account>$selection</select>
- <input type=hidden name=paymentaccounts value="$paymentaccounts">
- </td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('Reference') . qq|</th>
- <td colspan=3><input name=reference></td>
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Source') . qq|</th>
- <td colspan=3><input name=source></td>
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Memo') . qq|</th>
- <td colspan=3><input name=memo size=30></td>
- </tr>
- <tr>
- <th align=right>| . $locale->text('From') . qq|</th>
- <td>
- $button1
- $button1_2
- </td>
- <th align=right>| . $locale->text('Bis') . qq|</th>
- <td>
- $button2
- $button2_2
- </td>
- </tr>
- <tr>
- <td align=right><input type=checkbox style=checkbox name=fx_transaction value=1 checked></td>
- <th align=left colspan=3>| . $locale->text('Include Exchangerate Difference') . qq|</td>
- </tr>
-
-$jsscript
-
- <input type=hidden name=db value=$form->{db}>
- <input type=hidden name=sort value=transdate>
-|;
-
}
- print qq|
-
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size=3 noshade></td>
- </tr>
-</table>
-
-<br>
-<input type=submit class=submit name=action value="| . $locale->text('Continue') . qq|">
-
-</form>
-
-</body>
-</html>
-|;
+ $::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,
+ onload => $onload,
+ nextsub => $nextsub,
+ accrual => $::instance_conf->get_accounting_method ne 'cash',
+ cash => $::instance_conf->get_accounting_method eq 'cash',
+ 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,
+ });
- $main::lxdebug->leave_sub();
+ $::lxdebug->leave_sub;
}
sub continue { call_sub($main::form->{"nextsub"}); }
}
sub e_mail {
- $main::lxdebug->enter_sub();
-
- $main::auth->assert('general_ledger');
-
- my $form = $main::form;
- my %myconfig = %main::myconfig;
- my $locale = $main::locale;
+ $::lxdebug->enter_sub;
+ $::auth->assert('general_ledger');
# get name and email addresses
my $selected = 0;
- for my $i (1 .. $form->{rowcount}) {
- if ($form->{"statement_$i"}) {
- $form->{"$form->{ct}_id"} = $form->{"$form->{ct}_id_$i"};
- RP->get_customer(\%myconfig, \%$form);
- $selected = 1;
- last;
- }
- }
-
- $form->error($locale->text('Nothing selected!')) unless $selected;
-
- my $bcc = '';
- if ($myconfig{role} eq 'admin') {
- $bcc = qq|
- <th align=right nowrap=true>| . $locale->text('Bcc') . qq|</th>
- <td><input name=bcc size=30 value="$form->{bcc}"></td>
-|;
+ for my $i (1 .. $::form->{rowcount}) {
+ next unless $::form->{"statement_$i"};
+ $::form->{"$::form->{ct}_id"} = $::form->{"$::form->{ct}_id_$i"};
+ RP->get_customer(\%::myconfig, $::form);
+ $selected = 1;
+ last;
}
- my $title = $locale->text('E-mail Statement to') . " $form->{$form->{ct}}";
-
- $form->{media} = "email";
-
- $form->header;
-
- print qq|
-<body>
-
-<form method=post action=$form->{script}>
-
-<table width=100%>
- <tr class=listtop>
- <th>$title</th>
- </tr>
- <tr height="5"></tr>
- <tr>
- <td>
- <table width=100%>
- <tr>
- <th align=right nowrap>| . $locale->text('E-mail') . qq|</th>
- <td><input name=email size=30 value="$form->{email}"></td>
- <th align=right nowrap>| . $locale->text('Cc') . qq|</th>
- <td><input name=cc size=30 value="$form->{cc}"></td>
- </tr>
- <tr>
- <th align=right nowrap>| . $locale->text('Subject') . qq|</th>
- <td><input name=subject size=30 value="$form->{subject}"></td>
- $bcc
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <table width=100%>
- <tr>
- <th align=left nowrap>| . $locale->text('Message') . qq|</th>
- </tr>
- <tr>
- <td><textarea name=message rows=15 cols=60 wrap=soft>$form->{message}</textarea></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
-|;
-
- &print_options;
+ $::form->error($::locale->text('Nothing selected!')) unless $selected;
- map { delete $form->{$_} }
- qw(action email cc bcc subject message type sendmode format header);
+ $::form->{media} = "email";
# save all other variables
- foreach my $key (keys %$form) {
- next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
- $form->{$key} =~ s/\"/"/g;
- print qq|<input type=hidden name=$key value="$form->{$key}">\n|;
+ my @hidden_values;
+ for my $key (keys %$::form) {
+ next if any { $key eq $_ } qw(login password action email cc bcc subject message type sendmode format header);
+ next unless '' eq ref $::form->{$key};
+ push @hidden_values, $key;
}
- print qq|
- </td>
- </tr>
- <tr>
- <td><hr size=3 noshade></td>
- </tr>
-</table>
-
-<input type=hidden name=nextsub value=send_email>
-
-<br>
-<input name=action class=submit type=submit value="|
- . $locale->text('Continue') . qq|">
-</form>
-
-</body>
-</html>
-|;
+ $::form->header;
+ print $::form->parse_html_template('rp/e_mail', {
+ show_bcc => $::auth->assert('email_bcc', 'may fail'),
+ print_options => print_options(inline => 1),
+ hidden_values => \@hidden_values,
+ });
- $main::lxdebug->leave_sub();
+ $::lxdebug->leave_sub;
}
sub send_email {
}
sub print_options {
- $main::lxdebug->enter_sub();
+ $::lxdebug->enter_sub;
my ($dont_print) = @_;
- my $form = $main::form;
- my %myconfig = %main::myconfig;
- my $locale = $main::locale;
-
- $form->{sendmode} = "attachment";
+ $::form->{sendmode} = "attachment";
+ $::form->{format} ||= $::myconfig{template_format} || "pdf";
+ $::form->{copies} ||= $::myconfig{copies} || 2;
- $form->{"format"} =
- $form->{"format"} ? $form->{"format"} :
- $myconfig{"template_format"} ? $myconfig{"template_format"} :
- "pdf";
+ $::form->{PD}{ $::form->{type} } = "selected";
+ $::form->{DF}{ $::form->{format} } = "selected";
+ $::form->{OP}{ $::form->{media} } = "selected";
+ $::form->{SM}{ $::form->{sendmode} } = "selected";
- $form->{"copies"} =
- $form->{"copies"} ? $form->{"copies"} :
- $myconfig{"copies"} ? $myconfig{"copies"} :
- 2;
-
- $form->{PD}{ $form->{type} } = "selected";
- $form->{DF}{ $form->{format} } = "selected";
- $form->{OP}{ $form->{media} } = "selected";
- $form->{SM}{ $form->{sendmode} } = "selected";
-
- my ($media);
- my $type = qq|
- <option value=statement $form->{PD}{statement}>| . $locale->text('Statement');
-
- if ($form->{media} eq 'email') {
- $media = qq|
- <option value=attachment $form->{SM}{attachment}>| . $locale->text('Attachment') . qq|
- <option value=inline $form->{SM}{inline}>| . $locale->text('In-line');
- } else {
- $media = qq|
- <option value=screen $form->{OP}{screen}>| . $locale->text('Screen');
- if ($myconfig{printer} && $::lx_office_conf{print_templates}->{latex}) {
- $media .= qq|
- <option value=printer $form->{OP}{printer}>| . $locale->text('Printer');
- }
- }
-
- my $format;
- if ($::lx_office_conf{print_templates}->{latex}) {
- $format .= qq|
- <option value=html $form->{DF}{html}>| . $locale->text('HTML')
- . qq| <option value=pdf $form->{DF}{pdf}>| . $locale->text('PDF')
- . qq| <option value=postscript $form->{DF}{postscript}>| . $locale->text('Postscript');
- }
-
- my $output = qq|
-<table>
- <tr>
- <td><select name=type>$type</select></td>
- <td><select name=format>$format</select></td>
- <td><select name=media>$media</select></td>
-|;
-
- if ($myconfig{printer} && $::lx_office_conf{print_templates}->{latex} && $form->{media} ne 'email') {
- $output .= qq|
- <td>| . $locale->text('Copies') . qq|
- <input name=copies size=2 value=$form->{copies}></td>
-|;
- }
-
- $output .= qq|
- </tr>
-</table>
-|;
+ my $output = $::form->parse_html_template('rp/print_options', {
+ got_printer => $::myconfig{printer},
+ show_latex => $::lx_office_conf{print_templates}->{latex},
+ is_email => $::form->{media} eq 'email',
+ });
print $output unless $dont_print;
- $main::lxdebug->leave_sub();
+ $::lxdebug->leave_sub;
return $output;
}