+<table width=100%>
+ <tr>
+ <th class=listtop>$form->{title}</th>
+ </tr>
+ <tr height="5"></tr>
+ <tr>
+ <td>
+ <table width=100%>
+ <tr class=listheading>
+|;
+
+ map { print "$column_header{$_}\n" } @column_index;
+
+ print qq|
+ </tr>
+|;
+
+ my $swap_link = qq|$form->{script}?action=swap_buchungsgruppen&|;
+ map({ $swap_link .= $_ . "=" . $form->escape($form->{$_}) . "&" }
+ qw(login password));
+
+ my $row = 0;
+ foreach $ref (@{ $form->{ALL} }) {
+
+ $i++;
+ $i %= 2;
+
+ print qq|
+ <tr valign=top class=listrow$i>
+|;
+
+ if ($row) {
+ my $pref = $form->{ALL}->[$row - 1];
+ $column_data{up} =
+ qq|<td align="center" valign="center" width="16">| .
+ qq|<a href="${swap_link}id1=$ref->{id}&id2=$pref->{id}">| .
+ qq|<img border="0" src="image/up.png" alt="| . $locale->text("up") . qq|">| .
+ qq|</a></td>|;
+ } else {
+ $column_data{up} = qq|<td width="16"> </td>|;
+ }
+
+ if ($row == (scalar(@{ $form->{ALL} }) - 1)) {
+ $column_data{down} = qq|<td width="16"> </td>|;
+ } else {
+ my $nref = $form->{ALL}->[$row + 1];
+ $column_data{down} =
+ qq|<td align="center" valign="center" width="16">| .
+ qq|<a href="${swap_link}id1=$ref->{id}&id2=$nref->{id}">| .
+ qq|<img border="0" src="image/down.png" alt="| . $locale->text("down") . qq|">| .
+ qq|</a></td>|;
+ }
+
+ $column_data{description} =
+ qq|<td><a href=$form->{script}?action=edit_buchungsgruppe&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{description}</td>|;
+ $column_data{inventory_accno} = qq|<td align=right>$ref->{inventory_accno}</td>|;
+ $column_data{income_accno_0} =
+ qq|<td align=right>$ref->{income_accno_0}</td>|;
+ $column_data{expense_accno_0} = qq|<td align=right>$ref->{expense_accno_0}</td>|;
+ $column_data{income_accno_1} =
+ qq|<td align=right>$ref->{income_accno_1}</td>|;
+ $column_data{expense_accno_1} = qq|<td align=right>$ref->{expense_accno_1}</td>|;
+ $column_data{income_accno_2} =
+ qq|<td align=right>$ref->{income_accno_2}</td>|;
+ $column_data{expense_accno_2} = qq|<td align=right>$ref->{expense_accno_2}</td>|;
+ $column_data{income_accno_3} =
+ qq|<td align=right>$ref->{income_accno_3}</td>|;
+ $column_data{expense_accno_3} = qq|<td align=right>$ref->{expense_accno_3}</td>|;
+
+ map { print "$column_data{$_}\n" } @column_index;
+
+ print qq|
+ </tr>
+|;
+
+ $row++;
+ }
+
+ print qq|
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><hr size=3 noshade></td>
+ </tr>
+</table>
+
+<br>
+<form method=post action=$form->{script}>
+
+<input name=callback type=hidden value="$form->{callback}">
+
+<input type=hidden name=type value=buchungsgruppe>
+
+<input type=hidden name=login value=$form->{login}>
+<input type=hidden name=password value=$form->{password}>
+
+<input class=submit type=submit name=action value="|
+ . $locale->text('Add') . qq|">
+
+ </form>
+
+ </body>
+ </html>
+|;
+
+ $lxdebug->leave_sub();
+}
+
+sub buchungsgruppe_header {
+ $lxdebug->enter_sub();
+
+ $form->{title} = $locale->text("$form->{title} Buchungsgruppe");
+
+ # $locale->text('Add Accounting Group')
+ # $locale->text('Edit Accounting Group')
+
+ my ($acc_inventory, $acc_income, $acc_expense) = ({}, {}, {});
+ my %acc_type_map = (
+ "IC" => $acc_inventory,
+ "IC_income" => $acc_income,
+ "IC_sale" => $acc_income,
+ "IC_expense" => $acc_expense,
+ "IC_cogs" => $acc_expense,
+ );
+
+ foreach $key (keys(%acc_type_map)) {
+ foreach $ref (@{ $form->{IC_links}{$key} }) {
+ $acc_type_map{$key}->{$ref->{"id"}} = $ref;
+ }
+ }
+
+ foreach my $type (qw(IC IC_income IC_expense)) {
+ $form->{"select$type"} =
+ join("",
+ map({ "<option value=$_->{id} $_->{selected}>" .
+ "$_->{accno}--" . H($_->{description}) . "</option>" }
+ sort({ $a->{"accno"} cmp $b->{"accno"} }
+ values(%{$acc_type_map{$type}}))));
+ }
+
+ if ($form->{id}) {
+ $form->{selectIC} =~ s/selected//g;
+ $form->{selectIC} =~ s/ value=$form->{inventory_accno_id}/ value=$form->{inventory_accno_id} selected/;
+ $form->{selectIC_income} =~ s/selected//g;
+ $form->{selectIC_income} =~ s/ value=$form->{income_accno_id_0}/ value=$form->{income_accno_id_0} selected/;
+ $form->{selectIC_expense} =~ s/selected//g;
+ $form->{selectIC_expense} =~ s/ value=$form->{expense_accno_id_0}/ value=$form->{expense_accno_id_0} selected/;
+ }
+
+ if (!$eur) {
+ $linkaccounts = qq|
+ <tr>
+ <th align=right>| . $locale->text('Inventory') . qq|</th>
+ <td><select name=inventory_accno_id>$form->{selectIC}</select></td>
+ <input name=selectIC type=hidden value="$form->{selectIC}">
+ </tr>|;
+ } else {
+ $linkaccounts = qq|
+ <input type=hidden name=inventory_accno_id value=$form->{inventory_accno_id}>|;
+ }
+
+
+ $linkaccounts .= qq|
+ <tr>
+ <th align=right>| . $locale->text('National Revenues') . qq|</th>
+ <td><select name=income_accno_id_0>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('National Expenses') . qq|</th>
+ <td><select name=expense_accno_id_0>$form->{selectIC_expense}</select></td>
+ </tr>|;
+ if ($form->{id}) {
+ $form->{selectIC_income} =~ s/selected//g;
+ $form->{selectIC_income} =~ s/ value=$form->{income_accno_id_1}/ value=$form->{income_accno_id_1} selected/;
+ $form->{selectIC_expense} =~ s/selected//g;
+ $form->{selectIC_expense} =~ s/ value=$form->{expense_accno_id_1}/ value=$form->{expense_accno_id_1} selected/;
+ }
+ $linkaccounts .= qq| <tr>
+ <th align=right>| . $locale->text('Revenues EU with UStId') . qq|</th>
+ <td><select name=income_accno_id_1>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Expenses EU with UStId') . qq|</th>
+ <td><select name=expense_accno_id_1>$form->{selectIC_expense}</select></td>
+ </tr>|;
+
+ if ($form->{id}) {
+ $form->{selectIC_income} =~ s/selected//g;
+ $form->{selectIC_income} =~ s/ value=$form->{income_accno_id_2}/ value=$form->{income_accno_id_2} selected/;
+ $form->{selectIC_expense} =~ s/selected//g;
+ $form->{selectIC_expense} =~ s/ value=$form->{expense_accno_id_2}/ value=$form->{expense_accno_id_2} selected/;
+ }
+
+ $linkaccounts .= qq| <tr>
+ <th align=right>| . $locale->text('Revenues EU without UStId') . qq|</th>
+ <td><select name=income_accno_id_2>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Expenses EU without UStId') . qq|</th>
+ <td><select name=expense_accno_id_2>$form->{selectIC_expense}</select></td>
+ </tr>|;
+
+ if ($form->{id}) {
+ $form->{selectIC_income} =~ s/selected//g;
+ $form->{selectIC_income} =~ s/ value=$form->{income_accno_id_3}/ value=$form->{income_accno_id_3} selected/;
+ $form->{selectIC_expense} =~ s/selected//g;
+ $form->{selectIC_expense} =~ s/ value=$form->{expense_accno_id_3}/ value=$form->{expense_accno_id_3} selected/;
+ }
+
+ $linkaccounts .= qq| <tr>
+ <th align=right>| . $locale->text('Foreign Revenues') . qq|</th>
+ <td><select name=income_accno_id_3>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Foreign Expenses') . qq|</th>
+ <td><select name=expense_accno_id_3>$form->{selectIC_expense}</select></td>
+ </tr>
+|;
+
+
+ $form->header;
+
+ print qq|
+<body>
+
+<form method=post action=$form->{script}>
+
+<input type=hidden name=id value=$form->{id}>
+<input type=hidden name=type value=buchungsgruppe>
+
+<table width=100%>
+ <tr>
+ <th class=listtop colspan=2>$form->{title}</th>
+ </tr>
+ <tr height="5"></tr>
+ <tr>
+ <th align=right>| . $locale->text('Buchungsgruppe') . qq|</th>
+ <td><input name=description size=30 value="| . $form->quote($form->{description}) . qq|"></td>
+ <tr>
+ $linkaccounts
+ <td colspan=2><hr size=3 noshade></td>
+ </tr>
+</table>
+|;
+
+ $lxdebug->leave_sub();
+}
+
+sub save_buchungsgruppe {
+ $lxdebug->enter_sub();
+
+ $form->isblank("description", $locale->text('Description missing!'));
+
+ AM->save_buchungsgruppe(\%myconfig, \%$form);
+ $form->redirect($locale->text('Accounting Group saved!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub delete_buchungsgruppe {
+ $lxdebug->enter_sub();
+
+ AM->delete_buchungsgruppe(\%myconfig, \%$form);
+ $form->redirect($locale->text('Accounting Group deleted!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub swap_buchungsgruppen {
+ $lxdebug->enter_sub();
+
+ AM->swap_sortkeys(\%myconfig, $form, "buchungsgruppen");
+ list_buchungsgruppe();
+
+ $lxdebug->leave_sub();
+}
+
+
+sub add_printer {
+ $lxdebug->enter_sub();
+
+ $form->{title} = "Add";
+
+ $form->{callback} =
+ "$form->{script}?action=add_printer&login=$form->{login}&password=$form->{password}"
+ unless $form->{callback};
+
+ &printer_header;
+ &form_footer;
+
+ $lxdebug->leave_sub();
+}
+
+sub edit_printer {
+ $lxdebug->enter_sub();
+
+ $form->{title} = "Edit";
+
+ AM->get_printer(\%myconfig, \%$form);
+
+ &printer_header;
+
+ $form->{orphaned} = 1;
+ &form_footer;
+
+ $lxdebug->leave_sub();
+}
+
+sub list_printer {
+ $lxdebug->enter_sub();
+
+ AM->printer(\%myconfig, \%$form);
+
+ $form->{callback} =
+ "$form->{script}?action=list_printer&login=$form->{login}&password=$form->{password}";
+
+ $callback = $form->escape($form->{callback});
+
+ $form->{title} = $locale->text('Printer');
+
+ @column_index = qw(printer_description printer_command template_code);
+
+ $column_header{printer_description} =
+ qq|<th class=listheading width=60%>|
+ . $locale->text('Printer Description')
+ . qq|</th>|;
+ $column_header{printer_command} =
+ qq|<th class=listheading width=10%>|
+ . $locale->text('Printer Command')
+ . qq|</th>|;
+ $column_header{template_code} =
+ qq|<th class=listheading>|
+ . $locale->text('Template Code')
+ . qq|</th>|;
+
+ $form->header;
+
+ print qq|
+<body>
+
+<table width=100%>
+ <tr>
+ <th class=listtop>$form->{title}</th>
+ </tr>
+ <tr height="5"></tr>
+ <tr>
+ <td>
+ <table width=100%>
+ <tr class=listheading>
+|;
+
+ map { print "$column_header{$_}\n" } @column_index;
+
+ print qq|
+ </tr>
+|;
+
+ foreach $ref (@{ $form->{ALL} }) {
+
+ $i++;
+ $i %= 2;
+
+ print qq|
+ <tr valign=top class=listrow$i>
+|;
+
+
+ $column_data{printer_description} =
+ qq|<td><a href=$form->{script}?action=edit_printer&id=$ref->{id}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{printer_description}</td>|;
+ $column_data{printer_command} = qq|<td align=right>$ref->{printer_command}</td>|;
+ $column_data{template_code} =
+ qq|<td align=right>$ref->{template_code}</td>|;
+
+ map { print "$column_data{$_}\n" } @column_index;
+
+ print qq|
+ </tr>
+|;
+ }
+
+ print qq|
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><hr size=3 noshade></td>
+ </tr>
+</table>
+
+<br>
+<form method=post action=$form->{script}>
+
+<input name=callback type=hidden value="$form->{callback}">
+
+<input type=hidden name=type value=printer>
+
+<input type=hidden name=login value=$form->{login}>
+<input type=hidden name=password value=$form->{password}>
+
+<input class=submit type=submit name=action value="|
+ . $locale->text('Add') . qq|">
+
+ </form>
+
+ </body>
+ </html>
+|;
+
+ $lxdebug->leave_sub();
+}
+
+sub printer_header {
+ $lxdebug->enter_sub();
+
+ $form->{title} = $locale->text("$form->{title} Printer");