+<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 path));
+
+ 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}&path=$form->{path}&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=path value=$form->{path}>
+<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('Buchungsgruppe hinzufügen')
+ # $locale->text('Buchungsgruppe bearbeiten')
+
+ 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('Erlöse Inland') . qq|</th>
+ <td><select name=income_accno_id_0>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Aufwand Inland') . 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('Erlöse EU m. UStId') . qq|</th>
+ <td><select name=income_accno_id_1>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Aufwand EU m 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('Erlöse EU o. UStId') . qq|</th>
+ <td><select name=income_accno_id_2>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Aufwand EU o. 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('Erlöse Ausland') . qq|</th>
+ <td><select name=income_accno_id_3>$form->{selectIC_income}</select></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Aufwand Ausland') . 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('Buchungsgruppe gespeichert!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub delete_buchungsgruppe {
+ $lxdebug->enter_sub();
+
+ AM->delete_buchungsgruppe(\%myconfig, \%$form);
+ $form->redirect($locale->text('Buchungsgruppe gelöscht!'));
+
+ $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&path=$form->{path}&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&path=$form->{path}&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}&path=$form->{path}&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=path value=$form->{path}>
+<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");
+
+ # $locale->text('Add Printer')
+ # $locale->text('Edit Printer')
+
+ $form->{printer_description} =~ s/\"/"/g;
+ $form->{template_code} =~ s/\"/"/g;
+ $form->{printer_command} =~ s/\"/"/g;
+
+
+ $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=printer>
+
+<table width=100%>
+ <tr>
+ <th class=listtop colspan=2>$form->{title}</th>
+ </tr>
+ <tr height="5"></tr>
+ <tr>
+ <th align=right>| . $locale->text('Printer') . qq|</th>
+ <td><input name=printer_description size=30 value="$form->{printer_description}"></td>
+ <tr>
+ <tr>
+ <th align=right>| . $locale->text('Printer Command') . qq|</th>
+ <td><input name=printer_command size=30 value="$form->{printer_command}"></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Template Code') . qq|</th>
+ <td><input name=template_code size=5 value="$form->{template_code}"></td>
+ </tr>
+ <td colspan=2><hr size=3 noshade></td>
+ </tr>
+</table>
+|;
+
+ $lxdebug->leave_sub();
+}
+
+sub save_printer {
+ $lxdebug->enter_sub();
+
+ $form->isblank("printer_description", $locale->text('Description missing!'));
+ $form->isblank("printer_command", $locale->text('Printer Command missing!'));
+ AM->save_printer(\%myconfig, \%$form);
+ $form->redirect($locale->text('Printer saved!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub delete_printer {
+ $lxdebug->enter_sub();
+
+ AM->delete_printer(\%myconfig, \%$form);
+ $form->redirect($locale->text('Printer deleted!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub add_payment {
+ $lxdebug->enter_sub();
+
+ $form->{title} = "Add";
+
+ $form->{callback} =
+ "$form->{script}?action=add_payment&path=$form->{path}&login=$form->{login}&password=$form->{password}"
+ unless $form->{callback};
+
+ $form->{terms_netto} = 0;
+ $form->{terms_skonto} = 0;
+ $form->{percent_skonto} = 0;
+ my @languages = AM->language(\%myconfig, $form, 1);
+ map({ $_->{"language"} = $_->{"description"};
+ $_->{"language_id"} = $_->{"id"}; } @languages);
+ $form->{"TRANSLATION"} = \@languages;
+ &payment_header;
+ &form_footer;
+
+ $lxdebug->leave_sub();
+}
+
+sub edit_payment {
+ $lxdebug->enter_sub();
+
+ $form->{title} = "Edit";
+
+ AM->get_payment(\%myconfig, $form);
+ $form->{percent_skonto} =
+ $form->format_amount(\%myconfig, $form->{percent_skonto} * 100);
+
+ &payment_header;
+
+ $form->{orphaned} = 1;
+ &form_footer;
+
+ $lxdebug->leave_sub();
+}
+
+sub list_payment {
+ $lxdebug->enter_sub();
+
+ AM->payment(\%myconfig, \%$form);
+
+ $form->{callback} = build_std_url("action=list_payment");
+
+ $callback = $form->escape($form->{callback});
+
+ $form->{title} = $locale->text('Payment Terms');
+
+ @column_index = qw(up down description description_long terms_netto
+ terms_skonto percent_skonto);
+
+ $column_header{up} =
+ qq|<th class="listheading" align="center" valign="center" width="16">|
+ . qq|<img src="image/up.png" alt="| . $locale->text("up") . qq|">|
+ . qq|</th>|;
+ $column_header{down} =
+ qq|<th class="listheading" align="center" valign="center" width="16">|
+ . qq|<img src="image/down.png" alt="| . $locale->text("down") . qq|">|
+ . qq|</th>|;
+ $column_header{description} =
+ qq|<th class=listheading>|
+ . $locale->text('Description')
+ . qq|</th>|;
+ $column_header{description_long} =
+ qq|<th class=listheading>|
+ . $locale->text('Long Description')
+ . qq|</th>|;
+ $column_header{terms_netto} =
+ qq|<th class=listheading>|
+ . $locale->text('Netto Terms')
+ . qq|</th>|;
+ $column_header{terms_skonto} =
+ qq|<th class=listheading>|
+ . $locale->text('Skonto Terms')
+ . qq|</th>|;
+ $column_header{percent_skonto} =
+ qq|<th class=listheading>|
+ . $locale->text('Skonto')
+ . 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>
+|;
+
+ my $swap_link = build_std_url("action=swap_payment_terms");
+
+ 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="| .
+ build_std_url("action=edit_payment", "id=$ref->{id}", "callback=$callback") .
+ qq|">| . H($ref->{description}) . qq|</a></td>|;
+ $column_data{description_long} =
+ qq|<td>| . H($ref->{description_long}) . qq|</td>|;
+ $column_data{terms_netto} =
+ qq|<td align=right>$ref->{terms_netto}</td>|;
+ $column_data{terms_skonto} =
+ qq|<td align=right>$ref->{terms_skonto}</td>|;
+ $column_data{percent_skonto} =
+ qq|<td align=right>| .
+ $form->format_amount(\%myconfig, $ref->{percent_skonto} * 100) .
+ qq|%</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=payment>
+
+<input type=hidden name=path value=$form->{path}>
+<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 payment_header {
+ $lxdebug->enter_sub();
+
+ $form->{title} = $locale->text("$form->{title} Payment Terms");
+
+ # $locale->text('Add Payment Terms')
+ # $locale->text('Edit Payment Terms')
+
+ $form->{description} =~ s/\"/"/g;
+
+
+
+ $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=payment>
+
+<table width=100%>
+ <tr>
+ <th class=listtop colspan=2>$form->{title}</th>
+ </tr>
+ <tr height="5"></tr>
+ <tr>
+ <th align=right>| . $locale->text('Description') . qq|</th>
+ <td><input name=description size=30 value="$form->{description}"></td>
+ <tr>
+ <tr>
+ <th align=right>| . $locale->text('Long Description') . qq|</th>
+ <td><input name=description_long size=50 value="$form->{description_long}"></td>
+ </tr>
+|;
+
+ foreach my $language (@{ $form->{"TRANSLATION"} }) {
+ print qq|
+ <tr>
+ <th align="right">| .
+ sprintf($locale->text('Translation (%s)'),
+ $language->{"language"})
+ . qq|</th>
+ <td><input name="description_long_$language->{language_id}" size="50"
+ value="| . Q($language->{"description_long"}) . qq|"></td>
+ </tr>
+|;
+ }
+
+ print qq|
+ <tr>
+ <th align=right>| . $locale->text('Netto Terms') . qq|</th>
+ <td><input name=terms_netto size=10 value="$form->{terms_netto}"></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Skonto Terms') . qq|</th>
+ <td><input name=terms_skonto size=10 value="$form->{terms_skonto}"></td>
+ </tr>
+ <tr>
+ <th align=right>| . $locale->text('Skonto') . qq| %</th>
+ <td><input name=percent_skonto size=10 value="$form->{percent_skonto}"></td>
+ </tr>
+ <td colspan=2><hr size=3 noshade></td>
+ </tr>
+</table>
+
+<p>| . $locale->text("You can use the following strings in the long " .
+ "description and all translations. They will be " .
+ "replaced by their actual values by Lx-Office " .
+ "before they're output.")
+. qq|</p>
+
+<ul>
+ <li>| . $locale->text("<%netto_date%> -- Date the payment is due in " .
+ "full")
+. qq|</li>
+ <li>| . $locale->text("<%skonto_date%> -- Date the payment is due " .
+ "with discount")
+. qq|</li>
+ <li>| . $locale->text("<%skonto_amount%> -- The deductible amount")
+. qq|</li>
+ <li>| . $locale->text("<%total%> -- Amount payable")
+. qq|</li>
+ <li>| . $locale->text("<%invtotal%> -- Invoice total")
+. qq|</li>
+ <li>| . $locale->text("<%currency%> -- The selected currency")
+. qq|</li>
+ <li>| . $locale->text("<%terms_netto%> -- The number of days for " .
+ "full payment")
+. qq|</li>
+ <li>| . $locale->text("<%account_number%> -- Your account number")
+. qq|</li>
+ <li>| . $locale->text("<%bank%> -- Your bank")
+. qq|</li>
+ <li>| . $locale->text("<%bank_code%> -- Your bank code")
+. qq|</li>
+</ul>|;
+
+ $lxdebug->leave_sub();
+}
+
+sub save_payment {
+ $lxdebug->enter_sub();
+
+ $form->isblank("description", $locale->text('Description missing!'));
+ $form->{"percent_skonto"} =
+ $form->parse_amount(\%myconfig, $form->{percent_skonto}) / 100;
+ AM->save_payment(\%myconfig, \%$form);
+ $form->redirect($locale->text('Payment Terms saved!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub delete_payment {
+ $lxdebug->enter_sub();
+
+ AM->delete_payment(\%myconfig, \%$form);
+ $form->redirect($locale->text('Payment terms deleted!'));
+
+ $lxdebug->leave_sub();
+}
+
+sub swap_payment_terms {
+ $lxdebug->enter_sub();
+
+ AM->swap_sortkeys(\%myconfig, $form, "payment_terms");
+ list_payment();
+
+ $lxdebug->leave_sub();
+}
+
+sub display_template {
+ $lxdebug->enter_sub();
+
+ $form->{edit} = 0;
+ display_template_form();
+
+ $lxdebug->leave_sub();
+}
+
+sub edit_template {
+ $lxdebug->enter_sub();
+
+ $form->{edit} = 1;
+ display_template_form();
+
+ $lxdebug->leave_sub();
+}
+
+sub save_template {
+ $lxdebug->enter_sub();
+
+ $form->isblank("formname", $locale->text("You're not editing a file.")) unless ($form->{type} eq "stylesheet");
+
+ my ($filename) = AM->prepare_template_filename(\%myconfig, $form);
+ if (my $error = AM->save_template($filename, $form->{content})) {
+ $form->error(sprintf($locale->text("Saving the file '%s' failed. OS error message: %s"), $filename, $error));
+ }
+
+ $form->{edit} = 0;
+ display_template_form();
+
+ $lxdebug->leave_sub();
+}
+
+sub display_template_form {
+ $lxdebug->enter_sub();
+
+ $form->{formname} =~ s|.*/||;
+ my $format = $form->{format} eq "html" ? "html" : "tex";
+
+ my $title = $form->{type} eq "stylesheet" ? $locale->text("Edit the stylesheet") : $locale->text("Edit templates");
+ $form->{title} = $title;
+
+ my $edit_options;
+
+ my @hidden = qw(login path password type format);
+
+ if (($form->{type} ne "stylesheet") && !$form->{edit}) {
+ $edit_options = "<p>";
+
+ my %formname_setup =
+ (
+ "balance_sheet" => { "translation" => $locale->text('Balance Sheet'), "html" => 1 },
+ "bin_list" => $locale->text('Bin List'),
+ "bwa" => { "translation" => $locale->text('BWA'), "html" => 1 },
+ "check" => { "translation" => $locale->text('Check'), "html" => 1 },
+ "credit_note" => $locale->text('Credit Note'),
+ "income_statement" => { "translation" => $locale->text('Income Statement'), "html" => 1 },
+ "invoice" => $locale->text('Invoice'),
+ "packing_list" => $locale->text('Packing List'),
+ "pick_list" => $locale->text('Pick List'),
+ "proforma" => $locale->text('Proforma Invoice'),
+ "purchase_order" => $locale->text('Purchase Order'),
+ "receipt" => { "translation" => $locale->text('Receipt'), "tex" => 1 },
+ "request_quotation" => $locale->text('RFQ'),
+ "sales_order" => $locale->text('Confirmation'),
+ "sales_quotation" => $locale->text('Quotation'),
+ "statement" => $locale->text('Statement'),
+ "storno_invoice" => $locale->text('Storno Invoice'),
+ "storno_packing_list" => $locale->text('Storno Packing List'),
+ "ustva-2004" => { "translation" => $locale->text("USTVA 2004"), "tex" => 1 },
+ "ustva-2005" => { "translation" => $locale->text("USTVA 2005"), "tex" => 1 },
+ "ustva-2006" => { "translation" => $locale->text("USTVA 2006"), "tex" => 1 },
+ "ustva-2007" => { "translation" => $locale->text("USTVA 2007"), "tex" => 1 },
+ "ustva" => $locale->text("USTVA"),
+ "zahlungserinnerung" => $locale->text('Payment Reminder'),
+ );
+
+ my (@values, %labels, $file, $setup);
+
+ while (($file, $setup) = each(%formname_setup)) {
+ next unless (!ref($setup) || $setup->{$format});
+
+ push(@values, $file);
+ $labels{$file} = ref($setup) ? $setup->{translation} : $setup;
+ }
+ @values = sort({ $labels{$a} cmp $labels{$b} } @values);
+
+ $edit_options .=
+ $locale->text("Template") . " " .
+ NTI($cgi->popup_menu("-name" => "formname", "-default" => $form->{formname},
+ "-values" => \@values, "-labels" => \%labels));
+
+ $form->get_lists("printers" => "ALL_PRINTERS",
+ "languages" => "ALL_LANGUAGES");
+
+ @values = ("");
+ %labels = ();
+
+ foreach my $item (@{ $form->{ALL_LANGUAGES} }) {
+ next unless ($item->{template_code});
+ my $key = "$item->{id}--$item->{template_code}";
+ push(@values, $key);
+ $labels{$key} = $item->{description};
+ }
+
+ if (1 != scalar(@values)) {
+ $edit_options .=
+ " " . $locale->text("Language") . " " .
+ NTI($cgi->popup_menu("-name" => "language", "-default" => $form->{language},
+ "-values" => \@values, "-labels" => \%labels));
+ }
+
+ @values = ("");
+ %labels = ();
+
+ foreach my $item (@{ $form->{ALL_PRINTERS} }) {
+ next unless ($item->{template_code});
+ my $key = "$item->{id}--$item->{template_code}";
+ push(@values, $key);
+ $labels{$key} = $item->{printer_description};
+ }
+
+ if (1 != scalar(@values)) {
+ $edit_options .=
+ " " . $locale->text("Printer") . " " .
+ NTI($cgi->popup_menu("-name" => "printer", "-default" => $form->{printer},
+ "-values" => \@values, "-labels" => \%labels));
+ }
+
+ $edit_options .= qq|
+
+ <input type="hidden" name="display_nextsub" value="display_template">
+
+ <input name="action" type="submit" class="submit" value="|
+ . $locale->text('Display') . qq|">
+
+ </p>
+
+ <hr>
+|;
+
+ } else {
+ push(@hidden, qw(formname language printer));
+ }
+
+ if ($form->{formname} || ($form->{type} eq "stylesheet")) {
+ my ($filename, $display_filename) = AM->prepare_template_filename(\%myconfig, $form);
+ my ($content, $lines) = AM->load_template($filename);
+
+ $body = qq|
+|;
+
+ if ($form->{edit}) {
+ $form->{fokus} = "Form.content";
+ $body = qq|\n<p><div class="listtop">| . $locale->text('Edit file') . " '" . H($display_filename) . qq|'</div></p>\n<p>|
+ . NTI($cgi->textarea("-name" => "content",
+ "-id" => "content",
+ "-default" => $content,
+ "-columns" => 100,
+ "-rows" => 25))
+ . qq|</p>
+
+ <p>
+ <input type="hidden" name="save_nextsub" value="save_template">
+
+ <input type="submit" name="action" value="| . $locale->text('Save') . qq|">
+ </p>