return '';
}
+sub round_amount {
+ my ($self, $var, $places, $skip_zero) = @_;
+
+ return $main::form->round_amount($var * 1, $places) unless $skip_zero && $var == 0;
+ return '';
+}
+
sub format_amount_units {
my ($self, $amount, $amount_unit, $part_unit) = @_;
use strict;
my $edit;
-my $payment;
my $print_post;
1;
$main::lxdebug->enter_sub();
my $form = $main::form;
+ my $locale = $main::locale;
$main::auth->assert('invoice_edit');
$form->{javascript} = qq|<script type="text/javascript" src="js/show_history.js"></script>|;
#/show hhistory button
- $edit = 1;
+ if ($form->{type} eq "credit_note") {
+ $form->{title} = $locale->text('Edit Credit Note');
+ $form->{title} = $locale->text('Edit Storno Credit Note') if $form->{storno};
+ } else {
+ $form->{title} = $locale->text('Edit Sales Invoice');
+ $form->{title} = $locale->text('Edit Storno Invoice') if $form->{storno};
+ }
+
my ($language_id, $printer_id);
if ($form->{print_and_post}) {
$form->{action} = "print";
}
}
- my $payment_id;
- if ($form->{payment_id}) {
- $payment_id = $form->{payment_id};
- }
- my $language_id;
- if ($form->{language_id}) {
- $language_id = $form->{language_id};
- }
- my $taxzone_id;
- if ($form->{taxzone_id}) {
- $taxzone_id = $form->{taxzone_id};
- }
- my $id;
- if ($form->{id}) {
- $id = $form->{id};
- }
- my $shipto_id;
- if ($form->{shipto_id}) {
- $shipto_id = $form->{shipto_id};
- }
+ $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes id shipto_id));
- my $cp_id = $form->{cp_id};
IS->get_customer(\%myconfig, \%$form);
#quote all_customer Bug 133
foreach my $ref (@{ $form->{all_customer} }) {
$ref->{name} = $form->quote($ref->{name});
}
- if ($id) {
- $form->{id} = $id;
- }
+
+ $form->restore_vars(qw(id));
+
IS->retrieve_invoice(\%myconfig, \%$form);
- $form->{cp_id} = $cp_id;
+ $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id shipto_id));
+ $form->restore_vars(qw(taxincluded)) if $form->{id};
+ $form->restore_vars(qw(salesman_id)) if $main::editing;
- if ($payment_id) {
- $form->{payment_id} = $payment_id;
- }
- if ($language_id) {
- $form->{language_id} = $language_id;
- }
- if ($taxzone_id) {
- $form->{taxzone_id} = $taxzone_id;
- }
- if ($shipto_id) {
- $form->{shipto_id} = $shipto_id;
+ # build vendor/customer drop down comatibility... don't ask
+ if (@{ $form->{"all_customer"} }) {
+ $form->{"selectcustomer"} = 1;
+ $form->{customer} = qq|$form->{customer}--$form->{"customer_id"}|;
}
$form->{oldcustomer} = "$form->{customer}--$form->{customer_id}";
-
- # departments
- if ($form->{all_departments}) {
- $form->{selectdepartment} = "<option>\n";
- $form->{department} = "$form->{department}--$form->{department_id}";
-
- map {
- $form->{selectdepartment} .=
- "<option>$_->{description}--$_->{id}</option>\n"
- } (@{ $form->{all_departments} || [] });
- }
+ $form->{selectcustomer} = 1;
$form->{employee} = "$form->{employee}--$form->{employee_id}";
foreach my $key (keys %{ $form->{AR_links} }) {
foreach my $ref (@{ $form->{AR_links}{$key} }) {
- $form->{"select$key"} .=
-"<option>$ref->{accno}--$ref->{description}</option>\n";
+ $form->{"select$key"} .= "<option>$ref->{accno}--$ref->{description}</option>\n";
}
if ($key eq "AR_paid") {
next unless $form->{acc_trans}{$key};
for my $i (1 .. scalar @{ $form->{acc_trans}{$key} }) {
- $form->{"AR_paid_$i"} =
- "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
+ $form->{"AR_paid_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}";
# reverse paid
- $form->{"paid_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{amount} * -1;
- $form->{"datepaid_$i"} =
- $form->{acc_trans}{$key}->[$i - 1]->{transdate};
- $form->{"forex_$i"} = $form->{"exchangerate_$i"} =
- $form->{acc_trans}{$key}->[$i - 1]->{exchangerate};
- $form->{"source_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{source};
- $form->{"memo_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{memo};
+ $form->{"paid_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{amount} * -1;
+ $form->{"datepaid_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{transdate};
+ $form->{"exchangerate_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{exchangerate};
+ $form->{"forex_$i"} = $form->{"exchangerate_$i"};
+ $form->{"source_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{source};
+ $form->{"memo_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{memo};
$form->{paidaccounts} = $i;
}
} else {
- $form->{$key} =
- "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}";
+ $form->{$key} = "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}";
}
-
}
$form->{paidaccounts} = 1 unless (exists $form->{paidaccounts});
$form->{AR} = $form->{AR_1} unless $form->{id};
- $form->{locked} =
- ($form->datetonum($form->{invdate}, \%myconfig) <=
- $form->datetonum($form->{closedto}, \%myconfig));
+ $form->{locked} = ($form->datetonum($form->{invdate}, \%myconfig)
+ <= $form->datetonum($form->{closedto}, \%myconfig));
$main::lxdebug->leave_sub();
}
$main::auth->assert('invoice_edit');
+ our %TMPL_VAR = ();
+ my @custom_hiddens;
+
$form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id};
$form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id};
- if ($edit) {
- if ($form->{type} eq "credit_note") {
- $form->{title} = $locale->text('Edit Credit Note');
- $form->{title} = $locale->text('Edit Storno Credit Note') if $form->{storno};
- } else {
- $form->{title} = $locale->text('Edit Sales Invoice');
- $form->{title} = $locale->text('Edit Storno Invoice') if $form->{storno};
- }
- }
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
$form->{radier} = ($form->current_date(\%myconfig) eq $form->{gldate}) ? 1 : 0;
- $payment = qq|<option value=""></option>|;
- foreach my $item (@{ $form->{payment_terms} }) {
- if ($form->{payment_id} eq $item->{id}) {
- $payment .= qq|<option value="$item->{id}" selected>$item->{description}</option>|;
- } else {
- $payment .= qq|<option value="$item->{id}">$item->{description}</option>|;
- }
- }
-
my $set_duedate_url = "$form->{script}?action=set_duedate";
- my $pjx = new CGI::Ajax( 'set_duedate' => $set_duedate_url );
- push(@ { $form->{AJAX} }, $pjx);
+ push @ { $form->{AJAX} }, new CGI::Ajax( 'set_duedate' => $set_duedate_url );
my @old_project_ids = ($form->{"globalproject_id"});
map { push @old_project_ids, $form->{"project_id_$_"} if $form->{"project_id_$_"}; } 1..$form->{"rowcount"};
"projects" => { "key" => "ALL_PROJECTS",
"all" => 0,
"old_id" => \@old_project_ids },
- "employees" => "ALL_SALESMEN",
+ "employees" => "ALL_EMPLOYEES",
+ "salesmen" => "ALL_SALESMEN",
"taxzones" => "ALL_TAXZONES",
"currencies" => "ALL_CURRENCIES",
"customers" => "ALL_CUSTOMERS",
"price_factors" => "ALL_PRICE_FACTORS");
- my %labels;
- my @values = (undef);
- foreach my $item (@{ $form->{"ALL_CONTACTS"} }) {
- push(@values, $item->{"cp_id"});
- $labels{$item->{"cp_id"}} = join(',', $item->{"cp_name"}, $item->{"cp_givenname"}) . ($item->{"cp_abteilung"} ? " ($item->{cp_abteilung})" : "");
- }
- my $contact;
- if (scalar @values > 1) {
- $contact = qq|
- <tr>
- <th align="right">| . $locale->text('Contact Person') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px',
- '-labels' => \%labels, '-default' => $form->{"cp_id"})) . qq|
- </td>
- </tr>|;
- }
-
- %labels = ();
- @values = ();
- foreach my $item (@{ $form->{"ALL_SALESMEN"} }) {
- push(@values, $item->{"id"});
- $labels{$item->{id}} = $item->{name} ne "" ? $item->{name} : $item->{login};
- }
-
- my $employees = qq|
- <tr>
- <th align="right">| . $locale->text('Employee') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"},
- '-values' => \@values, '-labels' => \%labels)) . qq|
- </td>
- </tr>|;
-
-
- %labels = ();
- @values = ();
- foreach my $item (@{ $form->{"ALL_CUSTOMERS"} }) {
- push(@values, $item->{name}.qq|--|.$item->{"id"});
- $labels{$item->{name}.qq|--|.$item->{"id"}} = $item->{"name"};
- }
-
- $form->{selectcustomer} = ($myconfig{vclimit} > scalar(@values));
-
- my $customers = qq|
- <th align="right">| . $locale->text('Customer') . qq|</th>
- <td>| .
- (($myconfig{vclimit} <= scalar(@values))
- ? qq|<input type="text" value="| . H($form->{customer}) . qq|" name="customer">|
- : (NTI($cgi->popup_menu('-name' => 'customer', '-default' => $form->{oldcustomer},
- '-onChange' => 'document.getElementById(\'update_button\').click();',
- '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq|
- <input type="button" value="| . $locale->text('Details (one letter abbreviation)') . qq|" onclick="show_vc_details('customer')">
- </td>|;
-
- %labels = ();
- @values = ("");
- foreach my $item (@{ $form->{"ALL_SHIPTO"} }) {
- push(@values, $item->{"shipto_id"});
- $labels{$item->{"shipto_id"}} = join "; ", grep { $_ } map { $item->{"shipto${_}" } } qw(name department_1 street city);
- }
-
- my $shipto;
- if (scalar @values > 1) {
- $shipto = qq|
- <tr>
- <th align="right">| . $locale->text('Shipping Address') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px',
- '-labels' => \%labels, '-default' => $form->{"shipto_id"})). qq|
- </td>|;
- }
+ $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} };
+ $TMPL_VAR{shipto_labels} = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) };
+ $TMPL_VAR{contact_labels} = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") };
+ $TMPL_VAR{department_labels} = sub { "$_[0]->{description}--$_[0]->{id}" };
+
+ # customer
+ $TMPL_VAR{vc_keys} = sub { "$_[0]->{name}--$_[0]->{id}" };
+ $TMPL_VAR{vclimit} = $myconfig{vclimit};
+ $TMPL_VAR{vc_select} = "customer_or_vendor_selection_window('customer', '', 0, 0)";
+ push @custom_hiddens, "customer_id";
+ push @custom_hiddens, "oldcustomer";
+ push @custom_hiddens, "selectcustomer";
+
+ # currencies and exchangerate
+ my @values = map { $_ } @{ $form->{ALL_CURRENCIES} };
+ my %labels = map { $_ => $_ } @{ $form->{ALL_CURRENCIES} };
+ $form->{currency} = $form->{defaultcurrency} unless $form->{currency};
+ $TMPL_VAR{show_exchangerate} = $form->{currency} ne $form->{defaultcurrency};
+ $TMPL_VAR{currencies} = NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
+ '-values' => \@values, '-labels' => \%labels)) if scalar @values;
+ push @custom_hiddens, "forex";
+ push @custom_hiddens, "exchangerate" if $form->{forex};
+
+ $TMPL_VAR{creditwarning} = ($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update};
+ $TMPL_VAR{is_credit_remaining_negativ} = $form->{creditremaining} =~ /-/;
- %labels = ();
- @values = ();
- foreach my $item (@{ $form->{"ALL_CURRENCIES"} }) {
- push(@values, $item);
- $labels{$item} = $item;
- }
-
- $form->{currency} = $form->{defaultcurrency} unless $form->{currency};
- my $currencies;
- if (scalar @values) {
- $currencies = qq|
- <tr>
- <th align="right">| . $locale->text('Currency') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"},
- '-values' => \@values, '-labels' => \%labels)) . qq|
- </td>
- </tr>|;
- }
-
- %labels = ();
- @values = ("");
- foreach my $item (@{ $form->{"ALL_PROJECTS"} }) {
- push(@values, $item->{"id"});
- $labels{$item->{"id"}} = $item->{"projectnumber"};
- }
- my $globalprojectnumber = NTI($cgi->popup_menu('-name' => 'globalproject_id', '-values' => \@values,
- '-labels' => \%labels,
- '-default' => $form->{"globalproject_id"}));
-
- %labels = ();
- @values = ();
- foreach my $item (@{ $form->{ALL_SALESMEN} }) {
- push(@values, $item->{id});
- $labels{$item->{id}} = $item->{name} ne "" ? $item->{name} : $item->{login};
- }
-
- my $salesman =
- qq|<tr> <th align="right">| . $locale->text('Salesman') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'salesman_id', '-values' => \@values, '-labels' => \%labels,
- '-default' => $form->{salesman_id} ? $form->{salesman_id} : $form->{employee_id})) . qq|
- </td>
- </tr>|;
-
- %labels = ();
- @values = ();
- foreach my $item (@{ $form->{"ALL_TAXZONES"} }) {
- push(@values, $item->{"id"});
- $labels{$item->{"id"}} = $item->{"description"};
- }
-
- my $taxzone;
- if (!$form->{"id"}) {
- $taxzone = qq|
- <tr>
- <th align="right">| . $locale->text('Steuersatz') . qq|</th>
- <td>| . NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"},
- '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px',)) . qq|
- </td>
- </tr>|;
+ $form->{fokus} = "invoice.customer";
- } else {
- $taxzone = qq|
- <tr>
- <th align="right">| . $locale->text('Steuersatz') . qq|</th>
- <td>
- <input type="hidden" name="taxzone_id" value="| . H($form->{"taxzone_id"}) . qq|">
- | . H($labels{$form->{"taxzone_id"}}) . qq|
- </td>
- </tr>|;
- }
+ my $follow_up_vc = $form->{customer};
+ $follow_up_vc =~ s/--\d*\s*$//;
+ $TMPL_VAR{customer_name} = $follow_up_vc;
- # set option selected
- foreach my $item (qw(AR customer currency department employee)) {
+# set option selected
+ foreach my $item (qw(AR)) {
$form->{"select$item"} =~ s/ selected//;
$form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/;
}
- my $creditwarning = (($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}) ? 1 : 0;
+ $TMPL_VAR{is_type_credit_note} = $form->{type} eq "credit_note";
+ $TMPL_VAR{is_format_html} = $form->{format} eq 'html';
+ $TMPL_VAR{dateformat} = $myconfig{dateformat};
+ $TMPL_VAR{numberformat} = $myconfig{numberformat};
- $form->{exchangerate} = $form->format_amount(\%myconfig, $form->{exchangerate});
- $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0");
- $form->{creditremaining} = $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0");
+ # hiddens
+ $TMPL_VAR{HIDDENS} = [qw(
+ id action type media format queued printed emailed title vc discount
+ title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
+ max_dunning_level dunning_amount
+ shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax
+ shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus
+ convert_from_do_ids convert_from_oe_ids
+ ), @custom_hiddens,
+ map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}];
- my $exchangerate = "";
- if ($form->{currency} ne $form->{defaultcurrency}) {
- if ($form->{forex}) {
- $exchangerate .= qq|<th align="right">| . $locale->text('Exchangerate') . qq|</th>
- <td>$form->{exchangerate}<input type="hidden" name="exchangerate" value="$form->{exchangerate}"></td>|;
- } else {
- $exchangerate .= qq|<th align="right">| . $locale->text('Exchangerate') . qq|</th>
- <td><input name="exchangerate" size="10" value="$form->{exchangerate}"></td>|;
- }
- }
- $exchangerate .= qq|\n<input type="hidden" name="forex" value="$form->{forex}">\n|;
-
- my $department = qq|
- <tr>
- <th align="right" nowrap>| . $locale->text('Department') . qq|</th>
- <td colspan="3"><select name="department" style="width: 250px">$form->{selectdepartment}</select>
- <input type="hidden" name="selectdepartment" value="$form->{selectdepartment}">
- </td>
- </tr>
-| if $form->{selectdepartment};
-
- my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1";
-
- my $business;
- if ($form->{business}) {
- $business = qq|
- <tr>
- <th align="right">| . $locale->text('Customer type') . qq|</th>
- <td>$form->{business}; | . $locale->text('Trade Discount') . qq| |
- . $form->format_amount(\%myconfig, $form->{tradediscount} * 100)
- . qq| %</td>
- </tr>
-|;
- }
-
- my $dunning;
- if ($form->{max_dunning_level}) {
- $dunning = qq|
- <tr>
- <th align="right">| . $locale->text('Max. Dunning Level') . qq|:</th>
- <td>
- <b>$form->{max_dunning_level}</b>;
- | . $locale->text('Dunning Amount') . qq|: <b>|
- . $form->format_amount(\%myconfig, $form->{dunning_amount},2)
- . qq|</b>
- </td>
- </tr>
-|;
- }
-
- $form->{fokus} = "invoice.customer";
-
- # use JavaScript Calendar or not
$form->{jsscript} = 1;
- my $jsscript = "";
- my ($button1, $button2, $button3);
- if ($form->{type} eq "credit_note") {
- $button1 = qq|
- <td nowrap><input name="invdate" id="invdate" size="11" title="$myconfig{dateformat}" value="$form->{invdate}" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="invdate_button" id="trigger1" value="|
- . $locale->text('button') . qq|"></td>|;
-
- #write Trigger
- $jsscript =
- Form->write_trigger(\%myconfig, "1",
- "invdate", "BL",
- "trigger1");
- } else {
- $button1 = qq|
- <td nowrap><input name="invdate" id="invdate" size="11" title="$myconfig{dateformat}" value="$form->{invdate}" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="invdate_button" id="trigger1" value="|
- . $locale->text('button') . qq|"></td>
- |;
- $button2 = qq|
- <td width="13"><input name="duedate" id="duedate" size="11" title="$myconfig{dateformat}" value="$form->{duedate}" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="duedate_button" id="trigger2" value="|
- . $locale->text('button') . qq|"></td>
- |;
- $button3 = qq|
- <td width="13"><input name="deliverydate" id="deliverydate" size="11" title="$myconfig{dateformat}" value="$form->{deliverydate}" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="deliverydate_button" id="trigger3" value="|
- . $locale->text('button') . qq|"></td>
- |;
-
- #write Trigger
- $jsscript =
- Form->write_trigger(\%myconfig, "3",
- "invdate", "BL", "trigger1",
- "duedate", "BL", "trigger2",
- "deliverydate", "BL", "trigger3");
- }
+ $form->header();
- my $credittext = $locale->text('Credit Limit exceeded!!!');
-
- my $follow_up_vc = $form->{customer};
- $follow_up_vc =~ s/--\d*\s*$//;
- my $follow_up_trans_info = "$form->{invnumber} ($follow_up_vc)";
-
- my $onload = ($form->{resubmit} && ($form->{format} eq "html")) ? qq|window.open('about:blank','Beleg'); document.invoice.target = 'Beleg';document.invoice.submit()|
- : ($form->{resubmit}) ? qq|document.invoice.submit()|
- : ($creditwarning) ? qq|alert('$credittext')|
- : "focus()";
- $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
- $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
-
- $form->{javascript} .= qq|<script type="text/javascript" src="js/show_form_details.js"></script>|;
- $form->{javascript} .= qq|<script type="text/javascript" src="js/show_vc_details.js"></script>|;
-
- $jsscript .=
- $form->write_trigger(\%myconfig, 2,
- "orddate", "BL", "trigger_orddate",
- "quodate", "BL", "trigger_quodate");
- # show history button js
- $form->{javascript} .= qq|<script type="text/javascript" src="js/show_history.js"></script>|;
- #/show history button js
- $form->header;
-
- print qq|
-<body onLoad="$onload">
-<script type="text/javascript" src="js/common.js"></script>
-<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
-<script type="text/javascript" src="js/vendor_selection.js"></script>
-<script type="text/javascript" src="js/calculate_qty.js"></script>
-<script type="text/javascript" src="js/follow_up.js"></script>
-
-<form method="post" name="invoice" action="$form->{script}">
-| ;
-
- $form->hide_form(qw(id action type media format queued printed emailed title vc discount
- creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id
- max_dunning_level dunning_amount
- shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax
- shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus
- convert_from_do_ids convert_from_oe_ids),
- map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts} );
-
- print qq|<p>$form->{saved_message}</p>| if $form->{saved_message};
-
- print qq|
-
-<input type="hidden" name="follow_up_trans_id_1" value="| . H($form->{id}) . qq|">
-<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
-<input type="hidden" name="follow_up_trans_info_1" value="| . H($follow_up_trans_info) . qq|">
-<input type="hidden" name="follow_up_rowcount" value="1">
-
-<input type="hidden" name="lizenzen" value="$main::lizenzen">
-
-<div class="listtop" width="100%">$form->{title}</div>
-
-<table width="100%">
- <tr>
- <td valign="top">
- <table>
- <tr>
- $customers
- <input type="hidden" name="customer_klass" value="| . H($form->{customer_klass}) . qq|">
- <input type="hidden" name="customer_id" value="| . H($form->{customer_id}) . qq|">
- <input type="hidden" name="oldcustomer" value="| . H($form->{oldcustomer}) . qq|">
- <input type="hidden" name="selectcustomer" value="| . H($form->{selectcustomer}) . qq|">
- </tr>
- $contact
- $shipto
- <tr>
- <td align="right">| . $locale->text('Credit Limit') . qq|</td>
- <td>$form->{creditlimit}; | . $locale->text('Remaining') . qq| <span class="plus$n">$form->{creditremaining}</span></td>
- </tr>
- $dunning
- $business
- <tr>
- <th align="right" nowrap>| . $locale->text('Record in') . qq|</th>
- <td colspan="3"><select name="AR" style="width:250px;">$form->{selectAR}</select></td>
- <input type="hidden" name="selectAR" value="$form->{selectAR}">
- </tr>
- $taxzone
- $department
- <tr>
- $currencies
- <input type="hidden" name="fxgain_accno" value="$form->{fxgain_accno}">
- <input type="hidden" name="fxloss_accno" value="$form->{fxloss_accno}">
- $exchangerate
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Shipping Point') . qq|</th>
- <td colspan="3"> | .
- $cgi->textfield("-name" => "shippingpoint", "-size" => 35, "-value" => $form->{shippingpoint}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Ship via') . qq|</th>
- <td colspan="3"> | .
- $cgi->textfield("-name" => "shipvia", "-size" => 35, "-value" => $form->{shipvia}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right">| . $locale->text('Transaction description') . qq|</th>
- <td colspan="3">| . $cgi->textfield("-name" => "transaction_description", "-size" => 35, "-value" => $form->{transaction_description}) . qq|</td>
- </tr>|;
-# <tr>
-# <td colspan=4>
-# <table>
-# <tr>
-# <td colspan=2>
-# <button type="button" onclick="delivery_customer_selection_window('delivery_customer_string','delivery_customer_id')">| . $locale->text('Choose Customer') . qq|</button>
-# </td>
-# <td colspan=2><input type=hidden name=delivery_customer_id value="$form->{delivery_customer_id}">
-# <input size=45 id=delivery_customer_string name=delivery_customer_string value="$form->{delivery_customer_string}"></td>
-# </tr>
-# <tr>
-# <td colspan=2>
-# <button type="button" onclick="vendor_selection_window('delivery_vendor_string','delivery_vendor_id')">| . $locale->text('Choose Vendor') . qq|</button>
-# </td>
-# <td colspan=2><input type=hidden name=delivery_vendor_id value="$form->{delivery_vendor_id}">
-# <input size=45 id=delivery_vendor_string name=delivery_vendor_string value="$form->{delivery_vendor_string}"></td>
-# </tr>
-# </table>
-# </td>
-# </tr>
-print qq| </table>
- </td>
- <td align="right" valign="top">
- <table>
- $employees
- $salesman
-|;
-
-#ergänzung in der maske um das feld Lieferscheinnummer (Delivery Order Number), meiner meinung nach sinnvoll ueber dem feld lieferscheindatum 12.02.2009 jb
-if ($form->{type} eq "credit_note") {
-print qq| <tr>
- <th align="right" nowrap>| . $locale->text('Credit Note Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right">| . $locale->text('Credit Note Date') . qq|</th>
- $button1
- </tr>|;
-} else {
-print qq| <tr>
- <th align="right" nowrap>| . $locale->text('Invoice Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right">| . $locale->text('Invoice Date') . qq|</th>
- $button1
- </tr>
- <tr>
- <th align="right">| . $locale->text('Due Date') . qq|</th>
- $button2
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Delivery Order Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "donumber", "-size" => 11, "-value" => $form->{donumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right">| . $locale->text('Delivery Date') . qq|</th>
- $button3
- </tr>|;
-}
-print qq| <tr>
- <th align="right" nowrap>| . $locale->text('Order Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "ordnumber", "-size" => 11, "-value" => $form->{ordnumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Order Date') . qq|</th>
- <td><input name="orddate" id="orddate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{orddate}) . qq|" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Quotation Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "quonumber", "-size" => 11, "-value" => $form->{quonumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Quotation Date') . qq|</th>
- <td><input name="quodate" id="quodate" size="11" title="$myconfig{dateformat}" value="| . Q($form->{quodate}) . qq|" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Customer Order Number') . qq|</th>
- <td> |.
- $cgi->textfield("-name" => "cusordnumber", "-size" => 11, "-value" => $form->{cusordnumber}) .
- qq| </td>
- </tr>
- <tr>
- <th align="right" nowrap>| . $locale->text('Project Number') . qq|</th>
- <td>$globalprojectnumber</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- </td>
- </tr>
- $jsscript
-|;
- print qq|<input type="hidden" name="webdav" value="$main::webdav">|;
+ print $form->parse_html_template("is/form_header", \%TMPL_VAR);
$main::lxdebug->leave_sub();
}
my $form = $main::form;
my %myconfig = %main::myconfig;
my $locale = $main::locale;
- my $cgi = $main::cgi;
$main::auth->assert('invoice_edit');
- $form->{invtotal} = $form->{invsubtotal};
+ $form->{invtotal} = $form->{invsubtotal};
+ $form->{oldinvtotal} = $form->{invtotal};
+
+ # note rows
+ $form->{rows} = max 2,
+ $form->numtextrows($form->{notes}, 26, 8),
+ $form->numtextrows($form->{intnotes}, 35, 8);
- my ($rows, $introws);
- if (($rows = $form->numtextrows($form->{notes}, 26, 8)) < 2) {
- $rows = 2;
- }
- if (($introws = $form->numtextrows($form->{intnotes}, 35, 8)) < 2) {
- $introws = 2;
- }
- $rows = ($rows > $introws) ? $rows : $introws;
- my $notes =
- qq|<textarea name="notes" rows="$rows" cols="26" wrap="soft">$form->{notes}</textarea>|;
- my $intnotes =
- qq|<textarea name="intnotes" rows="$rows" cols="35" wrap="soft">$form->{intnotes}</textarea>|;
-
- $form->{taxincluded} = ($form->{taxincluded} ? "checked" : "");
-
- my $taxincluded = "";
- if ($form->{taxaccounts}) {
- $taxincluded = qq|
- <input name="taxincluded" class="checkbox" type="checkbox" $form->{taxincluded}> <b>|
- . $locale->text('Tax Included') . qq|</b><br><br>|;
- }
+ # tax, total and subtotal calculations
my ($tax, $subtotal);
- if (!$form->{taxincluded}) {
-
- foreach my $item (split / /, $form->{taxaccounts}) {
- if ($form->{"${item}_base"}) {
- $form->{"${item}_total"} =
- $form->round_amount(
- $form->{"${item}_base"} * $form->{"${item}_rate"},
- 2);
+ $form->{taxaccounts_array} = [ split / /, $form->{taxaccounts} ];
+
+ foreach my $item (@{ $form->{taxaccounts_array} }) {
+ if ($form->{"${item}_base"}) {
+ if ($form->{taxincluded}) {
+ $form->{"${item}_total"} = $form->round_amount( ($form->{"${item}_base"} * $form->{"${item}_rate"}
+ / (1 + $form->{"${item}_rate"})), 2);
+ $form->{"${item}_netto"} = $form->round_amount( ($form->{"${item}_base"} - $form->{"${item}_total"}), 2);
+ } else {
+ $form->{"${item}_total"} = $form->round_amount( $form->{"${item}_base"} * $form->{"${item}_rate"}, 2);
$form->{invtotal} += $form->{"${item}_total"};
- $form->{"${item}_total"} =
- $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
-
- $tax .= qq|
- <tr>
- <th align="right">$form->{"${item}_description"} |
- . $form->{"${item}_rate"} * 100 .qq|%</th>
- <td align="right">$form->{"${item}_total"}</td>
- </tr>
-|;
- }
- }
-
- $form->{invsubtotal} =
- $form->format_amount(\%myconfig, $form->{invsubtotal}, 2, 0);
-
- $subtotal = qq|
- <tr>
- <th align="right">| . $locale->text('Subtotal') . qq|</th>
- <td align="right">$form->{invsubtotal}</td>
- </tr>
-|;
-
- }
-
- if ($form->{taxincluded}) {
- foreach my $item (split / /, $form->{taxaccounts}) {
- if ($form->{"${item}_base"}) {
- $form->{"${item}_total"} =
- $form->round_amount(
- ($form->{"${item}_base"} * $form->{"${item}_rate"} /
- (1 + $form->{"${item}_rate"})
- ),
- 2);
- $form->{"${item}_netto"} =
- $form->round_amount(
- ($form->{"${item}_base"} - $form->{"${item}_total"}),
- 2);
- $form->{"${item}_total"} =
- $form->format_amount(\%myconfig, $form->{"${item}_total"}, 2);
- $form->{"${item}_netto"} =
- $form->format_amount(\%myconfig, $form->{"${item}_netto"}, 2);
-
- $tax .= qq|
- <tr>
- <th align="right">Enthaltene $form->{"${item}_description"} |
- . $form->{"${item}_rate"} * 100 .qq|%</th>
- <td align="right">$form->{"${item}_total"}</td>
- </tr>
- <tr>
- <th align="right">Nettobetrag</th>
- <td align="right">$form->{"${item}_netto"}</td>
- </tr>
-|;
}
}
-
}
- $form->{oldinvtotal} = $form->{invtotal};
- $form->{invtotal} =
- $form->format_amount(\%myconfig, $form->{invtotal}, 2, 0);
-
- my $follow_ups_block;
+ # follow ups
if ($form->{id}) {
- my $follow_ups = FU->follow_ups('trans_id' => $form->{id});
-
- if (@{ $follow_ups} ) {
- my $num_due = sum map { $_->{due} * 1 } @{ $follow_ups };
- $follow_ups_block = qq|
- <tr>
- <td colspan="2">| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq|</td>
- </tr>
-|;
- }
- }
-
- print qq|
- <tr>
- <td>
- <table width="100%">
- <tr valign="bottom">
- <td>
- <table>
- <tr>
- <th align="left">| . $locale->text('Notes') . qq|</th>
- <th align="left">| . $locale->text('Internal Notes') . qq|</th>
- <th align="right">| . $locale->text('Payment Terms') . qq|</th>
- </tr>
- <tr valign="top">
- <td>$notes</td>
- <td>$intnotes</td>
- <td><select name="payment_id" onChange="if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])">$payment
- </select></td>
- </tr>
- $follow_ups_block
- </table>
- </td>
- <td>
- <table>
- <tr>
- <th align=left>| . $locale->text('Ertrag') . qq|</th>
- <td>| . $form->format_amount(\%myconfig, $form->{marge_total}, 2, 0) . qq|</td>
- </tr>
- <tr>
- <th align=left>| . $locale->text('Ertrag prozentual') . qq|</th>
- <td>| . $form->format_amount(\%myconfig, $form->{marge_percent}, 2, 0) . qq| %</td>
- </tr>
- <input type=hidden name="marge_total" value="$form->{"marge_total"}">
- <input type=hidden name="marge_percent" value="$form->{"marge_percent"}">
- </table>
- </td>
- <td align="right">
- $taxincluded
- <table>
- $subtotal
- $tax
- <tr>
- <th align="right">| . $locale->text('Total') . qq|</th>
- <td align="right">$form->{invtotal}</td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-|;
- my $webdav_list;
- if ($main::webdav) {
- $webdav_list = qq|
- <tr>
- <td><hr size="3" noshade></td>
- </tr>
- <tr>
- <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
- </tr>
- <table width="100%">
- <td align="left" width="30%"><b>Dateiname</b></td>
- <td align="left" width="70%"><b>Webdavlink</b></td>
-|;
- foreach my $file (@{ $form->{WEBDAV} }) {
- $webdav_list .= qq|
- <tr>
- <td align="left">$file->{name}</td>
- <td align="left"><a href="$file->{link}">$file->{type}</a></td>
- </tr>
-|;
- }
- $webdav_list .= qq|
- </table>
- </tr>
-|;
-
- print $webdav_list;
- }
-if ($form->{type} eq "credit_note") {
- print qq|
- <tr>
- <td>
- <table width="100%">
- <tr class="listheading">
- <th colspan="6" class="listheading">|
- . $locale->text('Payments') . qq|</th>
- </tr>
-|;
-} else {
- print qq|
- <tr>
- <td>
- <table width="100%">
- <tr class="listheading">
- <th colspan="6" class="listheading">|
- . $locale->text('Incoming Payments') . qq|</th>
- </tr>
-|;
-}
-
- my @column_index;
- if ($form->{currency} eq $form->{defaultcurrency}) {
- @column_index = qw(datepaid source memo paid AR_paid);
- } else {
- @column_index = qw(datepaid source memo paid exchangerate AR_paid);
+ $form->{follow_ups} = FU->follow_ups('trans_id' => $form->{id}) || [];
+ $form->{follow_ups_unfinished} = sum map { $_->{due} * 1 } @{ $form->{follow_ups} };
}
- my %column_data;
- $column_data{datepaid} = "<th>" . $locale->text('Date') . "</th>";
- $column_data{paid} = "<th>" . $locale->text('Amount') . "</th>";
- $column_data{exchangerate} = "<th>" . $locale->text('Exch') . "</th>";
- $column_data{AR_paid} = "<th>" . $locale->text('Account') . "</th>";
- $column_data{source} = "<th>" . $locale->text('Source') . "</th>";
- $column_data{memo} = "<th>" . $locale->text('Memo') . "</th>";
-
- print "
- <tr>
-";
- map { print "$column_data{$_}\n" } @column_index;
- print "
- </tr>
-";
-
- my @triggers = ();
+ # payments
my $totalpaid = 0;
-
$form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"});
- for my $i (1 .. $form->{paidaccounts}) {
-
- print "
- <tr>\n";
+ $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ];
+ for my $i (1 .. $form->{paidaccounts}) {
$form->{"selectAR_paid_$i"} = $form->{selectAR_paid};
- $form->{"selectAR_paid_$i"} =~
- s/option>\Q$form->{"AR_paid_$i"}\E/option selected>$form->{"AR_paid_$i"}/;
-
- # format amounts
+ $form->{"selectAR_paid_$i"} =~ s/option>\Q$form->{"AR_paid_$i"}\E/option selected>$form->{"AR_paid_$i"}/;
$totalpaid += $form->{"paid_$i"};
- if ($form->{"paid_$i"}) {
- $form->{"paid_$i"} =
- $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2);
- }
- $form->{"exchangerate_$i"} =
- $form->format_amount(\%myconfig, $form->{"exchangerate_$i"});
-
- if ($form->{"exchangerate_$i"} == 0) {
- $form->{"exchangerate_$i"} = "";
- }
- my $exchangerate = qq| |;
- if ($form->{currency} ne $form->{defaultcurrency}) {
- if ($form->{"forex_$i"}) {
- $exchangerate = qq|<input type="hidden" name="exchangerate_$i" value="$form->{"exchangerate_$i"}">$form->{"exchangerate_$i"}|;
- } else {
- $exchangerate = qq|<input name="exchangerate_$i" size="10" value="$form->{"exchangerate_$i"}">|;
- }
- }
-
- $exchangerate .= qq|<input type="hidden" name="forex_$i" value="$form->{"forex_$i"}">|;
-
- $column_data{"paid_$i"} =
- qq|<td align="center"><input name="paid_$i" size="11" value="$form->{"paid_$i"}" onBlur=\"check_right_number_format(this)\"></td>|;
- $column_data{"exchangerate_$i"} = qq|<td align="center">$exchangerate</td>|;
- $column_data{"AR_paid_$i"} =
- qq|<td align="center"><select name="AR_paid_$i">$form->{"selectAR_paid_$i"}</select></td>|;
- $column_data{"datepaid_$i"} =
- qq|<td align="center"><input id="datepaid_$i" name="datepaid_$i" size="11" title="$myconfig{dateformat}" value="$form->{"datepaid_$i"}" onBlur=\"check_right_date_format(this)\">
- <input type="button" name="datepaid_$i" id="trigger_datepaid_$i" value="?"></td>|;
- $column_data{"source_$i"} =
- qq|<td align=center><input name="source_$i" size="11" value="$form->{"source_$i"}"></td>|;
- $column_data{"memo_$i"} =
- qq|<td align="center"><input name="memo_$i" size="11" value="$form->{"memo_$i"}"></td>|;
-
- map { print qq|$column_data{"${_}_$i"}\n| } @column_index;
- print "
- </tr>\n";
- push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i");
}
- my $paid_missing = $form->{oldinvtotal} - $totalpaid;
-
- print qq|
- <tr>
- <td></td>
- <td></td>
- <td align="center">| . $locale->text('Total') . qq|</td>
- <td align="center">| . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq|</td>
- </tr>
- <tr>
- <td></td>
- <td></td>
- <td align="center">| . $locale->text('Missing amount') . qq|</td>
- <td align="center">| . H($form->format_amount(\%myconfig, $paid_missing, 2)) . qq|</td>
- </tr>
-|;
-
- map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } qw(paidaccounts selectAR_paid oldinvtotal));
- print qq|<input type="hidden" name="oldtotalpaid" value="$totalpaid">
- </table>
- </td>
- </tr>
- <tr>
- <td><hr size="3" noshade></td>
- </tr>
- <tr>
- <td>
-|;
-
- print_options();
-
- print qq|
- </td>
- </tr>
-</table>
-|;
-
- my $invdate = $form->datetonum($form->{invdate}, \%myconfig);
- my $closedto = $form->datetonum($form->{closedto}, \%myconfig);
-
- if ($form->{id}) {
- my $show_storno = !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && (($totalpaid == 0) || ($totalpaid eq ""));
-
- print qq|
- <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="|
- . $locale->text('Update') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Ship to') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Print') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('E-mail') . qq|"> |;
- print qq|<input class="submit" type="submit" name="action" value="|
- . $locale->text('Storno') . qq|"> | if ($show_storno);
- print qq|<input class="submit" type="submit" name="action" value="|
- . $locale->text('Post Payment') . qq|">
-|;
- print qq|<input class="submit" type="submit" name="action" value="|
- . $locale->text('Use As Template') . qq|">
-|;
- if ($form->{id} && !($form->{type} eq "credit_note")) {
- print qq|
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Credit Note') . qq|">
-|;
- }
- if ($form->{radier}) {
- print qq|
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Delete') . qq|">
-|;
- }
-
-
- if ($invdate > $closedto) {
- print qq|
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Order') . qq|">
-|;
- }
-
- print qq|
- <input type="button" class="submit" onclick="follow_up_window()" value="|
- . $locale->text('Follow-Up')
- . qq|">|;
-
- } else {
- if ($invdate > $closedto) {
- print qq|<input class="submit" type="submit" name="action" id="update_button" value="|
- . $locale->text('Update') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Ship to') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Preview') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('E-mail') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Print and Post') . qq|">
- <input class="submit" type="submit" name="action" value="|
- . $locale->text('Post') . qq|"> | .
- NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'),
- '-class' => 'submit'));
- }
- }
-
- # button for saving history
- if($form->{id} ne "") {
- print qq|
- <input type="button" class="submit" onclick="set_history_window(|
- . Q($form->{id})
- . qq|);" name="history" id="history" value="|
- . $locale->text('history')
- . qq|"> |;
- }
- # /button for saving history
-
- # mark_as_paid button
- if($form->{id} ne "") {
- print qq|<input type="submit" class="submit" name="action" value="|
- . $locale->text('mark as paid') . qq|">|;
- }
- # /mark_as_paid button
- print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers) .
- qq|
-
-<input type="hidden" name="rowcount" value="$form->{rowcount}">
-| .
-$cgi->hidden("-name" => "callback", "-value" => $form->{callback})
-. $cgi->hidden('-name' => 'draft_id', '-default' => [$form->{draft_id}])
-. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}])
-. $cgi->hidden('-name' => 'customer_discount', '-value' => [$form->{customer_discount}])
-. qq|
-</form>
-
-</body>
-
- </html>
-|;
+ print $form->parse_html_template('is/form_footer', {
+ is_type_credit_note => ($form->{type} eq "credit_note"),
+ totalpaid => $totalpaid,
+ paid_missing => $form->{invtotal} - $totalpaid,
+ print_options => print_options(inline => 1),
+ show_storno => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid,
+ show_delete => ($form->current_date(\%myconfig) eq $form->{gldate}),
+ });
+##print $form->parse_html_template('is/_payments'); # parser
+##print $form->parse_html_template('webdav/_list'); # parser
$main::lxdebug->leave_sub();
}
'Sat. Phone' => 'Sat. Tel.',
'Satz %' => 'Satz %',
'Save' => 'Speichern',
+ 'Save Draft' => 'Entwurf speichern',
'Save account first to insert taxkeys' => 'Einstellungen sind nach
dem Speichern des Kontos verfügbar...',
'Save and AP Transaction' => 'Speichern und Kreditorenbuchung erfassen',
'The wrong taxkeys for AP and AR transactions have been fixed.' => 'Die Probleme mit falschen Steuerschlüssel bei Kreditoren- und Debitorenbuchungen wurden behoben.',
'The wrong taxkeys for inventory transactions for sales and purchase invoices have been fixed.' => 'Die falschen Steuerschlüssel für Warenbestandsbuchungen bei Einkaufs- und Verkaufsrechnungen wurden behoben.',
'The wrong taxkeys have been fixed.' => 'Die Steuerschlüssel wurden nach Ihrer Auswahl korrigiert.',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'There are four tax zones.' => 'Es gibt vier Steuerzonen.',
'There are no items in stock.' => 'Dieser Artikel ist nicht eingelagert.',
'There are no items on your TODO list at the moment.' => 'Ihre Aufgabenliste enthält momentan keine Einträge.',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
'The list has been printed.' => 'Die Liste wurde ausgedruckt.',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'To (email)' => 'An',
'Total' => 'Summe',
'Transaction %d cancelled.' => 'Buchung %d erfolgreich storniert.',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
'The list has been printed.' => 'Die Liste wurde ausgedruckt.',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'To (email)' => 'An',
'Total' => 'Summe',
'Transaction %d cancelled.' => 'Buchung %d erfolgreich storniert.',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
'The list has been printed.' => 'Die Liste wurde ausgedruckt.',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'To (email)' => 'An',
'To (time)' => 'Bis',
'Transaction %d cancelled.' => 'Buchung %d erfolgreich storniert.',
'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'To (email)' => 'An',
'Total' => 'Summe',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'AP Transaction' => 'Kreditorenbuchung',
'AR' => 'Verkauf',
'AR Transaction' => 'Debitorenbuchung',
- 'Account' => 'Konto',
'Add Credit Note' => 'Gutschrift erfassen',
'Add Purchase Order' => 'Lieferantenauftrag erfassen',
'Add Quotation' => 'Angebot erfassen',
'Address' => 'Adresse',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
- 'Amount' => 'Betrag',
'Apr' => 'Apr',
'April' => 'April',
'Are you sure you want to delete Invoice Number' => 'Soll die Rechnung mit folgender Nummer wirklich gelöscht werden:',
'Cannot storno storno invoice!' => 'Kann eine Stornorechnung nicht stornieren',
'Cc' => 'Cc',
'Change Lx-Office installation settings (all menu entries beneath \'System\')' => 'Verändern der Lx-Office-Installationseinstellungen (Menüpunkte unterhalb von \'System\')',
- 'Choose Customer' => 'Endkunde wählen:',
- 'Choose Vendor' => 'Händler wählen',
'City' => 'Stadt',
'Company Name' => 'Firmenname',
'Confirm!' => 'Bestätigen Sie!',
'Confirmation' => 'Auftragsbestätigung',
'Contact' => 'Kontakt',
- 'Contact Person' => 'Ansprechpartner',
'Continue' => 'Weiter',
'Country' => 'Land',
'Create and edit RFQs' => 'Lieferantenanfragen erfassen und bearbeiten',
'Create and edit sales orders' => 'Auftragsbestätigungen erfassen und bearbeiten',
'Create and edit sales quotations' => 'Angebote erfassen und bearbeiten',
'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
- 'Credit Limit' => 'Kreditlimit',
- 'Credit Limit exceeded!!!' => 'Kreditlimit überschritten!',
'Credit Note' => 'Gutschrift',
- 'Credit Note Date' => 'Gutschriftdatum',
- 'Credit Note Number' => 'Gutschriftnummer',
- 'Currency' => 'Währung',
'Customer' => 'Kunde',
'Customer Number' => 'Kundennummer',
- 'Customer Order Number' => 'Bestellnummer des Kunden',
'Customer details' => 'Kundendetails',
'Customer missing!' => 'Kundenname fehlt!',
'Customer not on file or locked!' => 'Dieser Kunde existiert nicht oder ist gesperrt.',
'Customer not on file!' => 'Kunde ist nicht in der Datenbank!',
- 'Customer type' => 'Kundentyp',
'DATEV Export' => 'DATEV-Export',
'DELETED' => 'Gelöscht',
'DR' => 'S',
'Date' => 'Datum',
'Dec' => 'Dez',
'December' => 'Dezember',
- 'Delete' => 'Löschen',
'Delete drafts' => 'Entwürfe löschen',
'Delivered' => 'Geliefert',
'Delivery Date' => 'Lieferdatum',
'Delivery Order' => 'Lieferschein',
- 'Delivery Order Number' => 'Lieferscheinnummer',
'Department' => 'Abteilung',
'Dependency loop detected:' => 'Schleife in den Abhängigkeiten entdeckt:',
'Description' => 'Beschreibung',
- 'Details (one letter abbreviation)' => 'D',
'Directory' => 'Verzeichnis',
'Discount' => 'Rabatt',
'Draft saved.' => 'Entwurf gespeichert.',
- 'Due Date' => 'Fälligkeitsdatum',
'Dunning' => 'Mahnung',
- 'Dunning Amount' => 'gemahnter Betrag',
'E-mail' => 'eMail',
'E-mail address missing!' => 'E-Mail-Adresse fehlt!',
'EK' => 'EK',
'Edit Sales Invoice' => 'Rechnung bearbeiten',
'Edit Storno Credit Note' => 'Storno Gutschrift bearbeiten',
'Edit Storno Invoice' => 'Stornorechnung bearbeiten',
- 'Employee' => 'Bearbeiter',
'Enter longdescription' => 'Langtext eingeben',
'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
'Ertrag' => 'Ertrag',
- 'Ertrag prozentual' => 'Ertrag prozentual',
- 'Exch' => 'Wechselkurs.',
- 'Exchangerate' => 'Wechselkurs',
'Exchangerate for payment missing!' => 'Es fehlt der Wechselkurs für die Bezahlung!',
'Exchangerate missing!' => 'Es fehlt der Wechselkurs!',
'Extended' => 'Gesamt',
- 'Falsches Datumsformat!' => 'Falsches Datumsformat!',
'Fax' => 'Fax',
'Feb' => 'Feb',
'February' => 'Februar',
'File' => 'Datei',
- 'Follow-Up' => 'Wiedervorlage',
'GL Transaction' => 'Dialogbuchung',
'General ledger and cash' => 'Finanzbuchhaltung und Zahlungsverkehr',
'Group' => 'Warengruppe',
'History' => 'Historie',
'In-line' => 'im Text',
- 'Incoming Payments' => 'Zahlungseingänge',
- 'Internal Notes' => 'interne Bemerkungen',
'Invoice' => 'Rechnung',
- 'Invoice Date' => 'Rechnungsdatum',
'Invoice Date missing!' => 'Rechnungsdatum fehlt!',
- 'Invoice Number' => 'Rechnungsnummer',
'Invoice Number missing!' => 'Rechnungsnummer fehlt!',
'Invoice deleted!' => 'Rechnung gelöscht!',
'Invoice has already been storno\'d!' => 'Diese Rechnung wurde bereits storniert.',
'Mark as paid?' => 'Als bezahlt markieren?',
'Marked as paid' => 'Als bezahlt markiert',
'Master Data' => 'Stammdaten',
- 'Max. Dunning Level' => 'höchste Mahnstufe',
'May' => 'Mai',
'May ' => 'Mai',
'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen',
- 'Memo' => 'Memo',
'Message' => 'Nachricht',
'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.',
'Missing \'tag\' field.' => 'Fehlendes Feld \'tag\'.',
- 'Missing amount' => 'Fehlbetrag',
'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
'Missing parameter (at least one of #1) in call to sub #2.' => 'Fehlernder Parameter (mindestens einer aus \'#1\') in Funktionsaufruf \'#2\'.',
'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
'No part was found matching the search parameters.' => 'Es wurde kein Artikel gefunden, auf den die Suchparameter zutreffen.',
'No vendor has been selected yet.' => 'Es wurde noch kein Lieferant ausgewählt.',
'No.' => 'Position',
- 'Notes' => 'Bemerkungen',
'Nov' => 'Nov',
'November' => 'November',
'Number' => 'Nummer',
'October' => 'Oktober',
'On Hand' => 'Auf Lager',
'OpenDocument/OASIS' => 'OpenDocument/OASIS',
- 'Order' => 'Auftrag',
- 'Order Date' => 'Auftragsdatum',
'Order Date missing!' => 'Auftragsdatum fehlt!',
- 'Order Number' => 'Auftragsnummer',
'Order Number missing!' => 'Auftragsnummer fehlt!',
'Others' => 'Andere',
'PAYMENT POSTED' => 'Rechung gebucht',
'Part Description' => 'Artikelbeschreibung',
'Part Number' => 'Artikelnummer',
'Part description' => 'Artikelbeschreibung',
- 'Payment Terms' => 'Zahlungskonditionen',
'Payment date missing!' => 'Tag der Zahlung fehlt!',
'Payment posted!' => 'Zahlung gebucht!',
- 'Payments' => 'Zahlungsausgänge',
'Phone' => 'Telefon',
'Pick List' => 'Sammelliste',
'Please enter values' => 'Bitte Werte eingeben',
- 'Post' => 'Buchen',
- 'Post Payment' => 'Zahlung buchen',
'Postscript' => 'Postscript',
'Preview' => 'Druckvorschau',
'Price' => 'Preis',
'Price Factor' => 'Preisfaktor',
'Pricegroup' => 'Preisgruppe',
- 'Print' => 'Drucken',
- 'Print and Post' => 'Drucken und Buchen',
'Printer' => 'Drucker',
'Proforma Invoice' => 'Proformarechnung',
'Project' => 'Projekt',
- 'Project Number' => 'Projektnummer',
'Project not on file!' => 'Dieses Projekt ist nicht in der Datenbank!',
'Purchase Order' => 'Lieferantenauftrag',
'Qty' => 'Menge',
'Queue' => 'Warteschlange',
'Quotation' => 'Angebot',
- 'Quotation Date' => 'Angebotsdatum',
'Quotation Date missing!' => 'Angebotsdatum fehlt!',
- 'Quotation Number' => 'Angebotsnummer',
'Quotation Number missing!' => 'Angebotsnummer fehlt!',
'RFQ' => 'Anfrage',
'ROP' => 'Mindestlagerbestand',
'Receipt, payment, reconciliation' => 'Zahlungseingang, Zahlungsausgang, Kontenabgleich',
- 'Record in' => 'Buchen auf',
'Release From Stock' => 'Lagerausgang',
- 'Remaining' => 'Rest',
'Reports' => 'Berichte',
'Reqdate' => 'Lieferdatum',
'Request for Quotation' => 'Anfrage',
'Sales Invoice' => 'Rechnung',
'Sales Order' => 'Kundenauftrag',
'Sales quotation' => 'Angebot',
- 'Salesman' => 'Verkäufer/in',
- 'Save draft' => 'Entwurf speichern',
'Screen' => 'Bildschirm',
'Select a Customer' => 'Endkunde auswählen',
'Select a customer' => 'Einen Kunden auswählen',
'Ship' => 'Lagerausgang',
'Ship rcvd' => 'Lagereingang',
'Ship to' => 'Lieferadresse',
- 'Ship via' => 'Transportmittel',
'Shipping Address' => 'Lieferadresse',
- 'Shipping Point' => 'Versandort',
'Show details' => 'Details anzeigen',
'Skip' => 'Überspringen',
- 'Source' => 'Beleg',
- 'Steuersatz' => 'Steuersatz',
- 'Storno' => 'Storno',
'Storno Invoice' => 'Stornorechnung',
'Storno Packing List' => 'Stornolieferschein',
'Street' => 'Straße',
'Subject' => 'Betreff',
'Subtotal' => 'Zwischensumme',
- 'Tax Included' => 'Steuer im Preis inbegriffen',
'The \'tag\' field must only consist of alphanumeric characters or the carachters - _ ( )' => 'Das Feld \'tag\' darf nur aus alphanumerischen Zeichen und den Zeichen - _ ( ) bestehen.',
'The LDAP server "#1:#2" is unreachable. Please check config/authentication.pl.' => 'Der LDAP-Server "#1:#2" ist nicht erreichbar. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
'The config file "config/authentication.pl" contained invalid Perl code:' => 'Die Konfigurationsdatei "config/authentication.pl" enthielt ungütigen Perl-Code:',
'The connection to the authentication database failed:' => 'Die Verbindung zur Authentifizierungsdatenbank schlug fehl:',
'The connection to the template database failed:' => 'Die Verbindung zur Vorlagendatenbank schlug fehl:',
'The creation of the authentication database failed:' => 'Das Anlegen der Authentifizierungsdatenbank schlug fehl:',
- 'There are #1 unfinished follow-ups of which #2 are due.' => 'Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
'To (email)' => 'An',
- 'Total' => 'Summe',
- 'Trade Discount' => 'Rabatt',
- 'Transaction description' => 'Vorgangsbezeichnung',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'Transfer To Stock' => 'Lagereingang',
'Trying to call a sub without a name' => 'Es wurde versucht, eine Unterfunktion ohne Namen aufzurufen.',
'Unit' => 'Einheit',
'Unknown dependency \'%s\'.' => 'Unbekannte Abhängigkeit \'%s\'.',
- 'Update' => 'Erneuern',
- 'Use As Template' => 'Als Vorlage verwenden',
'Value' => 'Wert',
'Variable' => 'Variable',
'Vendor' => 'Lieferant',
'Zipcode' => 'PLZ',
'[email]' => '[email]',
'bin_list' => 'Lagerliste',
- 'button' => '?',
'config/authentication.pl: Key "DB_config" is missing.' => 'config/authentication.pl: Das Schlüsselwort "DB_config" fehlt.',
'config/authentication.pl: Key "LDAP_config" is missing.' => 'config/authentication.pl: Der Schlüssel "LDAP_config" fehlt.',
'config/authentication.pl: Missing parameters in "DB_config". Required parameters are "host", "db" and "user".' => 'config/authentication.pl: Fehlende Parameter in "DB_config". Benötigte Parameter sind "host", "db" und "user".',
'config/authentication.pl: Missing parameters in "LDAP_config". Required parameters are "host", "attribute" and "base_dn".' => 'config/authentication.pl: Fehlende Parameter in "LDAP_config". Benötigt werden "host", "attribute" und "base_dn".',
'customer' => 'Kunde',
'emailed to' => 'gemailt an',
- 'history' => 'Historie',
'invoice' => 'Rechnung',
- 'mark as paid' => 'als bezahlt markieren',
'no' => 'nein',
'none (pricegroup)' => 'keine',
'packing_list' => 'Versandliste',
'sent' => 'gesendet',
'sent to printer' => 'an Drucker geschickt',
'vendor' => 'Lieferant',
- 'wrongformat' => 'Falsches Format',
'yes' => 'ja',
};
'drucken' => 'print',
'drucken_und_buchen' => 'print_and_post',
'entwurf_speichern' => 'save_draft',
+ 'entwurf_speichern' => 'save_draft',
'lieferadresse' => 'ship_to',
'Überspringen' => 'skip',
'storno' => 'storno',
select : java function call for a selection popup or other magic
allow_textbox : allow to display a textbox instead of a drop down box if there are more entries than 'limit' entries.
limit : defines the limit of entries, after which a textbox is generated. defaults to vclimit, or, failing to find that, 200.
+ readonly : softly prevents modification
-%]
[%- DEFAULT
limit = limit != '' ? limit : vclimit != '' ? vclimit : 200
[%- IF id %] id="[% HTML.escape(id) %]"[% END -%]
[%- IF default %] value="[% HTML.escape(default) %]"[% END -%]
[%- IF style %] style="[% HTML.escape(style) %]"[% END -%]
+ [%- IF readonly %] readonly[% END -%]
[%- -%]>
[%- IF select -%]
<input type="button" onclick="[% select %]" value="?">
[%- IF id %] id="[% HTML.escape(id) %]"[% END -%]
[%- IF style %] style="[% HTML.escape(style) %]"[% END -%]
[%- IF onChange %] onChange="[% HTML.escape(onChange) %]"[% END -%]
+ [%- IF readonly %] disabled[% END -%]
[%- -%]>
[%- IF show_empty %]
<option value=""></option>
--- /dev/null
+[%- USE LxERP %]
+ <tr>
+ <td>
+ <table width="100%">
+ <tr class="listheading">
+[% IF is_type_credit_note %]
+ <th colspan="6" class="listheading">Zahlungsausgänge</th>
+[% ELSE %]
+ <th colspan="6" class="listheading">Zahlungseingänge</th>
+[%- END %]
+ </tr>
+
+
+ <tr>
+ <th>Datum</th>
+ <th>Beleg</th>
+ <th>Memo</th>
+ <th>Betrag</th>
+[% IF show_exchangerate %]
+ <th>Wechselkurs.</th>
+[% END %]
+ <th>Konto</th>
+ </tr>
+
+
+[% FOREACH i = paid_indices %]
+ [% SET datepaid = 'datepaid_' _ i %]
+ [% SET source = 'source_' _ i %]
+ [% SET memo = 'memo_' _ i %]
+ [% SET paid = 'paid_' _ i %]
+ [% SET selectAR_paid_ref = 'selectAR_paid_' _ i %]
+
+ <tr>
+
+ <td align="center">
+ <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+ <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+ </td>
+ <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+ <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+ <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+ <td align="center">
+ [% SET row.forex = 'forex_' _ i %]
+ [% SET row.exchangerate = 'exchangerate_' _ i %]
+ [% IF row.forex %]
+ <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+ [% LxERP.format_amount(row.exchangerate, 2) %]
+ [% ELSE %]
+ <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+ [% END %]
+ <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+ </td>
+[% END %]
+ <td align="center"><select name="AR_paid_$i">[% $selectAR_paid_ref %]</select></td>
+
+ </tr>
+[%# push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %]
+ <script type='text/javascript'>
+ Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+ $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+ $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+ </script>
+
+[% END # foreach %]
+
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center">Summe</td>
+ <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center">Fehlbetrag</td>
+ <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+ </tr>
+
+ <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+ <input type="hidden" name="selectAR_paid" value="[% selectAR_paid %]">
+ <input type="hidden" name="oldinvtotal" value="[% rowcount %]">
+
+ <input type="hidden" name="oldtotalpaid" value="$totalpaid">
+ </table>
+
+ </td>
+ </tr>
--- /dev/null
+[%- USE LxERP %]
+ <tr>
+ <td>
+ <table width="100%">
+ <tr class="listheading">
+[% IF is_type_credit_note %]
+ <th colspan="6" class="listheading"><translate>Payments</translate></th>
+[% ELSE %]
+ <th colspan="6" class="listheading"><translate>Incoming Payments</translate></th>
+[%- END %]
+ </tr>
+
+
+ <tr>
+ <th><translate>Date</translate></th>
+ <th><translate>Source</translate></th>
+ <th><translate>Memo</translate></th>
+ <th><translate>Amount</translate></th>
+[% IF show_exchangerate %]
+ <th><translate>Exch</translate></th>
+[% END %]
+ <th><translate>Account</translate></th>
+ </tr>
+
+
+[% FOREACH i = paid_indices %]
+ [% SET datepaid = 'datepaid_' _ i %]
+ [% SET source = 'source_' _ i %]
+ [% SET memo = 'memo_' _ i %]
+ [% SET paid = 'paid_' _ i %]
+ [% SET selectAR_paid_ref = 'selectAR_paid_' _ i %]
+
+ <tr>
+
+ <td align="center">
+ <input id="datepaid_[% i %]" name="datepaid_[% i %]" size="11" title="[% dateformat %]" value="[% $datepaid %]">
+ <input type="button" name="datepaid_[% i %]" id="trigger_datepaid_[% i %]" value="?">
+ </td>
+ <td align=center><input name="source_[% i %]" size="11" value="[% $source %]"></td>
+ <td align="center"><input name="memo_[% i %]" size="11" value="[% $memo %]"></td>
+ <td align="center"><input name="paid_[% i %]" size="11" value="[% LxERP.format_amount($paid, 2, 1) %]"></td>
+[% IF show_exchangerate %]
+ <td align="center">
+ [% SET row.forex = 'forex_' _ i %]
+ [% SET row.exchangerate = 'exchangerate_' _ i %]
+ [% IF row.forex %]
+ <input type="hidden" name="exchangerate_[% i %]" value="[% LxERP.format_amount($exchangerate, 2) %]">
+ [% LxERP.format_amount(row.exchangerate, 2) %]
+ [% ELSE %]
+ <input name="exchangerate_[% i %]" size="10" value="[% LxERP.format_amount($exchangerate, 2, 1) %]">
+ [% END %]
+ <input type="hidden" name="forex_[% i %]" value="[% $forex %]">;
+ </td>
+[% END %]
+ <td align="center"><select name="AR_paid_$i">[% $selectAR_paid_ref %]</select></td>
+
+ </tr>
+[%# push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %]
+ <script type='text/javascript'>
+ Calendar.setup({ inputField : "datepaid_[% i %]", ifFormat :"[% myconfig_jsc_dateformat %]", align : "TR", button : "trigger_datepaid_[% i %]" });
+ $('input[name="paid_[% i %]"]').blur(function(){ check_right_number_format(this) });
+ $('#datepaid_[% i %]').blur(function(){ check_right_date_format(this) });
+ </script>
+
+[% END # foreach %]
+
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center"><translate>Total</translate></td>
+ <td align="center">[% LxERP.foramt_amount(totalpaid, 2) | html %]</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td align="center"><translate>Missing amount</translate></td>
+ <td align="center">[% LxERP.format_amount(paid_missing, 2) | html %]</td>
+ </tr>
+
+ <input type="hidden" name="paidaccounts" value="[% paidaccounts %]">
+ <input type="hidden" name="selectAR_paid" value="[% selectAR_paid %]">
+ <input type="hidden" name="oldinvtotal" value="[% rowcount %]">
+
+ <input type="hidden" name="oldtotalpaid" value="$totalpaid">
+ </table>
+
+ </td>
+ </tr>
--- /dev/null
+[%- USE HTML %]
+[%- USE LxERP %]
+ <tr>
+ <td>
+ <table width="100%">
+ <tr valign="bottom">
+ <td>
+ <table>
+ <tr>
+ <th align="left">Bemerkungen</th>
+ <th align="left">interne Bemerkungen</th>
+ <th align="right">Zahlungskonditionen</th>
+ </tr>
+ <tr valign="top">
+ <td>
+ <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+ </td>
+ <td>
+ <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+ </td>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'payment_id',
+ style = 'width: 250px',
+ DATA = payment_terms,
+ id_key = 'id',
+ label_key = 'description',
+ show_empty = 1
+ allow_textbox = 0 -%]
+ <script type='text/javascript'>$('#payment_id').change(function(){
+ if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])})
+ </script>
+ </td>
+ </tr>
+[%- IF id %]
+ <tr>
+ <td colspan="2">
+ [%- LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.',
+ follow_ups.size, follow_ups_unfinished) | html
+ %]
+ <td>
+ </tr>
+[%- END %]
+ </table>
+ </td>
+ <td>
+ <table>
+ <tr>
+ <th align=left>Ertrag</th>
+ <td>[% LxERP.format_amount(marge_total, 2, 0) %]</td>
+ </tr>
+ <tr>
+ <th align=left>Ertrag prozentual</th>
+ <td>[% LxERP.format_amount(marge_percent, 2, 0) %] %</td>
+ </tr>
+ <input type=hidden name="marge_total" value="[% marge_total %]">
+ <input type=hidden name="marge_percent" value="[% marge_percent %]">
+ </table>
+ </td>
+ <td align="right">
+ [%- IF taxaccounts %]
+ <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+ <b>Steuer im Preis inbegriffen</b>
+ <br>
+ <br>
+ [%- END %]
+ <table>
+
+[%#- subtotal %]
+[%- UNLESS taxincluded %]
+ <tr>
+ <th align="right">Zwischensumme</th>
+ <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+ </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref = item _ '_rate' %]
+[% SET total_ref = item _ '_total' %]
+[% SET netto_ref = item _ '_netto' %]
+ <tr>
+ <th align="right">Enthaltene [% $description_ref | html %] [% $rate_ref * 100 %]%</th>
+ <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+ </tr>
+ [%- IF taxincluded %]
+ <tr>
+ <th align="right">Nettobetrag</th>
+ <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+ </tr>
+ [%- END %]
+[%- END %]
+
+ <tr>
+ <th align="right">Summe</th>
+ <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+[% PROCESS 'webdav/_list_de.html' %]
+
+[% PROCESS 'is/_payments_de.html' %]
+
+ <tr>
+ <td><hr size="3" noshade></td>
+ </tr>
+ <tr>
+ <td>
+[% print_options %]
+ </td>
+ </tr>
+ </table>
+
+
+
+ [% IF id %]
+
+ <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="Erneuern">
+ <input class="submit" type="submit" name="action" value="Lieferadresse">
+ <input class="submit" type="submit" name="action" value="Drucken">
+ <input class="submit" type="submit" name="action" value="eMail">
+[% IF show_storno %]
+ <input class="submit" type="submit" name="action" value="Storno">
+[% END %]
+ <input class="submit" type="submit" name="action" value="Zahlung buchen">
+ <input class="submit" type="submit" name="action" value="Als Vorlage verwenden">
+
+[% IF id && is_type_credit_note %]
+ <input class="submit" type="submit" name="action" value="Gutschrift">
+[% END %]
+[% IF show_delete %]
+ <input class="submit" type="submit" name="action" value="Löschen">
+[% END %]
+
+ [%- UNLESS locked %]
+ <input class="submit" type="submit" name="action" value="Auftrag">
+ [%- END %]
+
+ <input type="button" class="submit" onclick="follow_up_window()" value="Wiedervorlage">
+
+ [% ELSE # no id %]
+ [% UNLESS locked %]
+ <input class="submit" type="submit" name="action" id="update_button" value="Erneuern">
+ <input class="submit" type="submit" name="action" value="Lieferadresse">
+ <input class="submit" type="submit" name="action" value="Druckvorschau">
+ <input class="submit" type="submit" name="action" value="eMail">
+ <input class="submit" type="submit" name="action" value="Drucken und Buchen">
+ <input class="submit" type="submit" name="action" value="Buchen">
+ <input class="submit" type="submit" name="action" value="Entwurf speichern">
+ [%- END %]
+ [% END # id %]
+
+ [% IF id %]
+ [%#- button for saving history %]
+ <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="Historie">
+
+ <input type="submit" class="submit" name="action" value="als bezahlt markieren">
+ [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="customer_discount" value="[% customer_discount %]">
+
+</form>
+
+</body>
+
+</html>
--- /dev/null
+[%- USE HTML %]
+[%- USE LxERP %]
+ <tr>
+ <td>
+ <table width="100%">
+ <tr valign="bottom">
+ <td>
+ <table>
+ <tr>
+ <th align="left"><translate>Notes</translate></th>
+ <th align="left"><translate>Internal Notes</translate></th>
+ <th align="right"><translate>Payment Terms</translate></th>
+ </tr>
+ <tr valign="top">
+ <td>
+ <textarea name="notes" rows="[% rows %]" cols="26" wrap="soft">[% notes %]</textarea>
+ </td>
+ <td>
+ <textarea name="intnotes" rows="[% rows %]" cols="35" wrap="soft">[% intnotes %]</textarea>
+ </td>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'payment_id',
+ style = 'width: 250px',
+ DATA = payment_terms,
+ id_key = 'id',
+ label_key = 'description',
+ show_empty = 1
+ allow_textbox = 0 -%]
+ <script type='text/javascript'>$('#payment_id').change(function(){
+ if (this.value) set_duedate(['payment_id__' + this.value, 'invdate__' + invdate.value],['duedate'])})
+ </script>
+ </td>
+ </tr>
+[%- IF id %]
+ <tr>
+ <td colspan="2">
+ [%- LxERP.format_string('<translate>There are #1 unfinished follow-ups of which #2 are due.</translate>',
+ follow_ups.size, follow_ups_unfinished) | html
+ %]
+ <td>
+ </tr>
+[%- END %]
+ </table>
+ </td>
+ <td>
+ <table>
+ <tr>
+ <th align=left><translate>Ertrag</translate></th>
+ <td>[% LxERP.format_amount(marge_total, 2, 0) %]</td>
+ </tr>
+ <tr>
+ <th align=left><translate>Ertrag prozentual</translate></th>
+ <td>[% LxERP.format_amount(marge_percent, 2, 0) %] %</td>
+ </tr>
+ <input type=hidden name="marge_total" value="[% marge_total %]">
+ <input type=hidden name="marge_percent" value="[% marge_percent %]">
+ </table>
+ </td>
+ <td align="right">
+ [%- IF taxaccounts %]
+ <input name="taxincluded" class="checkbox" type="checkbox" [% IF taxincluded %]checked[% END %]>
+ <b><translate>Tax Included</translate></b>
+ <br>
+ <br>
+ [%- END %]
+ <table>
+
+[%#- subtotal %]
+[%- UNLESS taxincluded %]
+ <tr>
+ <th align="right"><translate>Subtotal</translate></th>
+ <td align="right">[% LxERP.format_amount(invsubtotal, 2) %]</td>
+ </tr>
+[%- END %]
+
+[%# tax %]
+[% FOREACH item = taxaccounts_array %]
+[% SET description_ref = item _ '_description' %]
+[% SET rate_ref = item _ '_rate' %]
+[% SET total_ref = item _ '_total' %]
+[% SET netto_ref = item _ '_netto' %]
+ <tr>
+ <th align="right">Enthaltene [% $description_ref | html %] [% $rate_ref * 100 %]%</th>
+ <td align="right">[% LxERP.format_amount($total_ref, 2) %]</td>
+ </tr>
+ [%- IF taxincluded %]
+ <tr>
+ <th align="right">Nettobetrag</th>
+ <td align="right">[% LxERP.format_amount($netto_ref, 2) %]</td>
+ </tr>
+ [%- END %]
+[%- END %]
+
+ <tr>
+ <th align="right"><translate>Total</translate></th>
+ <td align="right">[% LxERP.format_amount(invtotal, 2) %]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+[% PROCESS 'webdav/_list_<translate>master</translate>.html' %]
+
+[% PROCESS 'is/_payments_<translate>master</translate>.html' %]
+
+ <tr>
+ <td><hr size="3" noshade></td>
+ </tr>
+ <tr>
+ <td>
+[% print_options %]
+ </td>
+ </tr>
+ </table>
+
+
+
+ [% IF id %]
+
+ <input class="submit" type="submit" accesskey="u" name="action" id="update_button" value="<translate>Update</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Ship to</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Print</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>E-mail</translate>">
+[% IF show_storno %]
+ <input class="submit" type="submit" name="action" value="<translate>Storno</translate>">
+[% END %]
+ <input class="submit" type="submit" name="action" value="<translate>Post Payment</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Use As Template</translate>">
+
+[% IF id && is_type_credit_note %]
+ <input class="submit" type="submit" name="action" value="<translate>Credit Note</translate>">
+[% END %]
+[% IF show_delete %]
+ <input class="submit" type="submit" name="action" value="<translate>Delete</translate>">
+[% END %]
+
+ [%- UNLESS locked %]
+ <input class="submit" type="submit" name="action" value="<translate>Order</translate>">
+ [%- END %]
+
+ <input type="button" class="submit" onclick="follow_up_window()" value="<translate>Follow-Up</translate>">
+
+ [% ELSE # no id %]
+ [% UNLESS locked %]
+ <input class="submit" type="submit" name="action" id="update_button" value="<translate>Update</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Ship to</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Preview</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>E-mail</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Print and Post</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Post</translate>">
+ <input class="submit" type="submit" name="action" value="<translate>Save Draft</translate>">
+ [%- END %]
+ [% END # id %]
+
+ [% IF id %]
+ [%#- button for saving history %]
+ <input type="button" class="submit" onclick="set_history_window([% id | html %]);" name="history" id="history" value="<translate>history</translate>">
+
+ <input type="submit" class="submit" name="action" value="<translate>mark as paid</translate>">
+ [% END %]
+
+<input type="hidden" name="rowcount" value="[% rowcount %]">
+<input type="hidden" name="callback" value="[% callback %]">
+<input type="hidden" name="draft_id" value="[% draft_id %]">
+<input type="hidden" name="draft_description" value="[% draft_description %]">
+<input type="hidden" name="customer_discount" value="[% customer_discount %]">
+
+</form>
+
+</body>
+
+</html>
--- /dev/null
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key) %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+ <tr>
+ <td valign="top">
+ <table>
+ <tr>
+ <th align="right">Kunde</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'customer',
+ style = 'width: 250px',
+ DATA = ALL_CUSTOMERS,
+ id_sub = 'vc_keys',
+ label_key = 'name',
+ select = vc_select,
+ limit = vclimit,
+ allow_textbox = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ <input type="button" value="D" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+ </td>
+ <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
+ <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
+ <input type="hidden" name="oldcustomer" value="[% HTML.escape(oldcustomer) %]">
+ <input type="hidden" name="selectcustomer" value="[% HTML.escape(selectcustomer) %]">
+ </tr>
+[%- IF ALL_CONTACTS.size %]
+ <tr>
+ <th align="right">Ansprechpartner</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'cp_id',
+ style = 'width: 250px',
+ DATA = ALL_CONTACTS,
+ id_key = 'cp_id',
+ label_sub = 'contact_labels',
+ show_empty = 1 -%]
+ </td>
+ </tr>
+[%- END %]
+[%- IF ALL_SHIPTO.size %]
+ <tr>
+ <th align="right">Lieferadresse</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'shipto_id',
+ style = 'width: 250px',
+ DATA = ALL_SHIPTO,
+ id_key = 'shipto_id',
+ label_sub = 'shipto_labels',
+ show_empty = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ </td>
+ </tr>
+[%- END %]
+ <tr>
+ <td align="right">Kreditlimit</td>
+ <td>
+ [% LxERP.format_amount(creditlimit, 0, '0') %]; Rest
+ <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+ </td>
+ </tr>
+[%- IF max_dunning_level %]
+ <tr>
+ <th align="right">höchste Mahnstufe:</th>
+ <td>
+ <b>[% max_dunning_level %]</b>; gemahnter Betrag: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+ </td>
+ </tr>
+[%- END %]
+[%- IF business %]
+ <tr>
+ <th align="right">Kundentyp</th>
+ <td>[% business %]; Rabatt [% LxERP.format_amount(tradediscount * 100) %] %</td>
+ </tr>
+[%- END %]
+ <tr>
+ <th align="right" nowrap>Buchen auf</th>
+ <td colspan="3"><select name="AR" style="width:250px;">[% selectAR %]</select></td>
+ <input type="hidden" name="selectAR" value="[% selectAR %]">
+ </tr>
+ <tr>
+ <th align="right">Steuersatz</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'taxzone_id'
+ stype = '250px'
+ DATA = ALL_TAXZONES
+ id_key = 'id'
+ readonly = (id ? 1 : 0)
+ label_key = 'description' -%]
+ </td>
+ </tr>
+[%- IF all_departments %]
+ <tr>
+ <th align="right" nowrap>Abteilung</th>
+ <td colspan="3">
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'department_id',
+ style = 'width: 250px',
+ DATA = all_departments,
+ id_key = 'id',
+ label_sub = 'department_labels',
+ show_empty = 1 -%]
+ </td>
+ </tr>
+[%- END %]
+[%- IF currencies %]
+ <tr>
+ <th align="right">Währung</th>
+ <td>[% currencies %]</td>
+ </tr>
+[%- END %]
+ <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+ <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+ <tr>
+ <th align="right">Wechselkurs</th>
+ <td>
+ [%- IF forex %]
+ [% LxERP.format_amount(exchangerate, 2) %]
+ [%- ELSE %]
+ <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+ [%- END %]
+ </td>
+ </tr>
+[%- END %]
+ <tr>
+ <th align="right" nowrap>Versandort</th>
+ <td colspan="3"><input size='35' name="shippingpoint" value="[% HTML.escape(shippingpoint) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Transportmittel</th>
+ <td colspan="3"><input size='35' name="shipvia" value="[% HTML.escape(shipvia) %]"></td>
+ </tr>
+ <tr>
+ <th align="right">Vorgangsbezeichnung</th>
+ <td colspan="3"><input size='35' name="transaction_description" value="[% HTML.escape(transaction_description) %]"></td>
+ </tr>
+ </table>
+ </td>
+ <td align="right" valign="top">
+ <table>
+ <tr>
+ <th align="right">Bearbeiter</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'employee_id',
+ DATA = ALL_EMPLOYEES,
+ id_key = 'id',
+ label_sub = 'sales_employee_labels' -%]
+ </td>
+ </tr>
+[%- IF ALL_SALESMEN.size %]
+ <tr>
+ <th align="right">Verkäufer/in</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'salesman_id',
+ default = salesman_id ? salesman_id : employee_id,
+ DATA = ALL_SALESMEN,
+ id_key = 'id',
+ label_sub = 'sales_employee_labels' -%]
+ </td>
+ </tr>
+[%- END %]
+
+[%- IF is_type_credit_note %]
+ <tr>
+ <th align="right" nowrap>Gutschriftnummer</th>
+ <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right">Gutschriftdatum</th>
+ <td nowrap>
+ <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="invdate_button" id="trigger1" value="?">
+ </td>
+ </tr>
+[%- ELSE %]
+ <tr>
+ <th align="right" nowrap>Rechnungsnummer</th>
+ <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right">Rechnungsdatum</th>
+ <td nowrap>
+ <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="invdate_button" id="trigger1" value="?">
+ </td>
+ </tr>
+ <tr>
+ <th align="right">Fälligkeitsdatum</th>
+ <td width="13">
+ <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="duedate_button" id="trigger2" value="?">
+ </td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Lieferscheinnummer</th>
+ <td colspan="3"><input size='11' name="donumber" value="[% HTML.escape(donumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right">Lieferdatum</th>
+ <td width="13">
+ <input name="deliverydate" id="deliverydate" size="11" title="[% dateformat %]" value="[% deliverydate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="deliverydate_button" id="trigger3" value="?">
+ </td>
+ </tr>
+[%- END %]
+
+ <tr>
+ <th align="right" nowrap>Auftragsnummer</th>
+ <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Auftragsdatum</th>
+ <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Angebotsnummer</th>
+ <td colspan="3"><input size='11' name="quonumber" value="[% HTML.escape(quonumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Angebotsdatum</th>
+ <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Bestellnummer des Kunden</th>
+ <td colspan="3"><input size='11' name="cusordnumber" value="[% HTML.escape(cusordnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap>Projektnummer</th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'globalproject_id',
+ DATA = ALL_PROJECTS,
+ id_key = 'id',
+ label_key = 'projectnumber',
+ show_empty = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ </tr>
+ <script type="text/javascript" src="js/show_form_details.js"></script>
+ <script type="text/javascript" src="js/show_vc_details.js"></script>
+ <script type="text/javascript" src="js/show_history.js"></script>
+ <script type="text/javascript" src="js/jquery.js"></script>
+ <script type="text/javascript">
+ <!--
+ Calendar.setup({ inputField : "invdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+[% IF !is_type_credit_note %]
+ Calendar.setup({ inputField : "duedate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+ Calendar.setup({ inputField : "deliverydate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger3" });
+[% END %]
+ Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+ Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+ $('document').ready(function(){
+[% IF resubmit && is_format_html %]
+ window.open('about:blank','Beleg');
+ document.invoice.target = 'Beleg';
+ document.invoice.submit();
+[% ELSIF resubmit %]
+ document.invoice.submit();
+[% ELSIF creditwarning != '' %]
+ alert('Kreditlimit überschritten!');
+[% ELSE %]
+ focus();
+[% END %]
+ setupDateFormat('[% dateformat %]', 'Falsches Datumsformat!');
+ setupPoints('[% numberformat %]', 'Falsches Format');
+ });
+ //-->
+ </script>
+
+ <input type="hidden" name="webdav" value="[% webdav %]">
--- /dev/null
+[%- USE HTML %]
+[%- USE LxERP %]
+[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %]
+<body>
+<script type="text/javascript" src="js/common.js"></script>
+<script type="text/javascript" src="js/delivery_customer_selection.js"></script>
+<script type="text/javascript" src="js/vendor_selection.js"></script>
+<script type="text/javascript" src="js/calculate_qty.js"></script>
+<script type="text/javascript" src="js/follow_up.js"></script>
+
+<form method="post" name="invoice" action="[% script %]">
+
+<p>[% saved_message %]</p>
+
+[%- FOREACH key = HIDDENS %]
+<input type="hidden" name="[% HTML.escape(key) %]" value="[% HTML.escape($key) %]">
+[%- END %]
+<input type="hidden" name="follow_up_trans_id_1" value="[% id %]">
+<input type="hidden" name="follow_up_trans_type_1" value="sales_invoice">
+<input type="hidden" name="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
+<input type="hidden" name="follow_up_rowcount" value="1">
+
+<input type="hidden" name="lizenzen" value="[% lizenzen %]">
+
+<p><div class="listtop" width="100%">[% title %]</div></p>
+
+<table width="100%">
+ <tr>
+ <td valign="top">
+ <table>
+ <tr>
+ <th align="right"><translate>Customer</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'customer',
+ style = 'width: 250px',
+ DATA = ALL_CUSTOMERS,
+ id_sub = 'vc_keys',
+ label_key = 'name',
+ select = vc_select,
+ limit = vclimit,
+ allow_textbox = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ <input type="button" value="<translate>Details (one letter abbreviation)</translate>" onclick="show_vc_details('[% HTML.escape(vc) %]')">
+ </td>
+ <input type="hidden" name="customer_klass" value="[% HTML.escape(customer_klass) %]">
+ <input type="hidden" name="customer_id" value="[% HTML.escape(customer_id) %]">
+ <input type="hidden" name="oldcustomer" value="[% HTML.escape(oldcustomer) %]">
+ <input type="hidden" name="selectcustomer" value="[% HTML.escape(selectcustomer) %]">
+ </tr>
+[%- IF ALL_CONTACTS.size %]
+ <tr>
+ <th align="right"><translate>Contact Person</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'cp_id',
+ style = 'width: 250px',
+ DATA = ALL_CONTACTS,
+ id_key = 'cp_id',
+ label_sub = 'contact_labels',
+ show_empty = 1 -%]
+ </td>
+ </tr>
+[%- END %]
+[%- IF ALL_SHIPTO.size %]
+ <tr>
+ <th align="right"><translate>Shipping Address</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'shipto_id',
+ style = 'width: 250px',
+ DATA = ALL_SHIPTO,
+ id_key = 'shipto_id',
+ label_sub = 'shipto_labels',
+ show_empty = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ </td>
+ </tr>
+[%- END %]
+ <tr>
+ <td align="right"><translate>Credit Limit</translate></td>
+ <td>
+ [% LxERP.format_amount(creditlimit, 0, '0') %]; <translate>Remaining</translate>
+ <span class="plus[% IF is_credit_remaining_negativ %]0[% ELSE %]1[% END %]">[% LxERP.format_amount(creditremaining,0 ,'0') %]</span>
+ </td>
+ </tr>
+[%- IF max_dunning_level %]
+ <tr>
+ <th align="right"><translate>Max. Dunning Level</translate>:</th>
+ <td>
+ <b>[% max_dunning_level %]</b>; <translate>Dunning Amount</translate>: <b>[% LxERP.format_amount(dunning_amount,2) %]</b>
+ </td>
+ </tr>
+[%- END %]
+[%- IF business %]
+ <tr>
+ <th align="right"><translate>Customer type</translate></th>
+ <td>[% business %]; <translate>Trade Discount</translate> [% LxERP.format_amount(tradediscount * 100) %] %</td>
+ </tr>
+[%- END %]
+ <tr>
+ <th align="right" nowrap><translate>Record in</translate></th>
+ <td colspan="3"><select name="AR" style="width:250px;">[% selectAR %]</select></td>
+ <input type="hidden" name="selectAR" value="[% selectAR %]">
+ </tr>
+ <tr>
+ <th align="right"><translate>Steuersatz</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'taxzone_id'
+ stype = '250px'
+ DATA = ALL_TAXZONES
+ id_key = 'id'
+ readonly = (id ? 1 : 0)
+ label_key = 'description' -%]
+ </td>
+ </tr>
+[%- IF all_departments %]
+ <tr>
+ <th align="right" nowrap><translate>Department</translate></th>
+ <td colspan="3">
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'department_id',
+ style = 'width: 250px',
+ DATA = all_departments,
+ id_key = 'id',
+ label_sub = 'department_labels',
+ show_empty = 1 -%]
+ </td>
+ </tr>
+[%- END %]
+[%- IF currencies %]
+ <tr>
+ <th align="right"><translate>Currency</translate></th>
+ <td>[% currencies %]</td>
+ </tr>
+[%- END %]
+ <input type="hidden" name="fxgain_accno" value="[% fxgain_accno %]">
+ <input type="hidden" name="fxloss_accno" value="[% fxloss_accno %]">
+[%- IF show_exchangerate %]
+ <tr>
+ <th align="right"><translate>Exchangerate</translate></th>
+ <td>
+ [%- IF forex %]
+ [% LxERP.format_amount(exchangerate, 2) %]
+ [%- ELSE %]
+ <input name="exchangerate" size="10" value="[% HTML.escape(LxERP.format_amount(exchangerate)) %]">
+ [%- END %]
+ </td>
+ </tr>
+[%- END %]
+ <tr>
+ <th align="right" nowrap><translate>Shipping Point</translate></th>
+ <td colspan="3"><input size='35' name="shippingpoint" value="[% HTML.escape(shippingpoint) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Ship via</translate></th>
+ <td colspan="3"><input size='35' name="shipvia" value="[% HTML.escape(shipvia) %]"></td>
+ </tr>
+ <tr>
+ <th align="right"><translate>Transaction description</translate></th>
+ <td colspan="3"><input size='35' name="transaction_description" value="[% HTML.escape(transaction_description) %]"></td>
+ </tr>
+ </table>
+ </td>
+ <td align="right" valign="top">
+ <table>
+ <tr>
+ <th align="right"><translate>Employee</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'employee_id',
+ DATA = ALL_EMPLOYEES,
+ id_key = 'id',
+ label_sub = 'sales_employee_labels' -%]
+ </td>
+ </tr>
+[%- IF ALL_SALESMEN.size %]
+ <tr>
+ <th align="right"><translate>Salesman</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'salesman_id',
+ default = salesman_id ? salesman_id : employee_id,
+ DATA = ALL_SALESMEN,
+ id_key = 'id',
+ label_sub = 'sales_employee_labels' -%]
+ </td>
+ </tr>
+[%- END %]
+
+[%- IF is_type_credit_note %]
+ <tr>
+ <th align="right" nowrap><translate>Credit Note Number</translate></th>
+ <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right"><translate>Credit Note Date</translate></th>
+ <td nowrap>
+ <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+ </td>
+ </tr>
+[%- ELSE %]
+ <tr>
+ <th align="right" nowrap><translate>Invoice Number</translate></th>
+ <td colspan="3"><input size='11' name="invnumber" value="[% HTML.escape(invnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right"><translate>Invoice Date</translate></th>
+ <td nowrap>
+ <input name="invdate" id="invdate" size="11" title="[% dateformat %]" value="[% invdate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="invdate_button" id="trigger1" value="<translate>button</translate>">
+ </td>
+ </tr>
+ <tr>
+ <th align="right"><translate>Due Date</translate></th>
+ <td width="13">
+ <input name="duedate" id="duedate" size="11" title="[% dateformat %]" value="[% duedate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="duedate_button" id="trigger2" value="<translate>button</translate>">
+ </td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Delivery Order Number</translate></th>
+ <td colspan="3"><input size='11' name="donumber" value="[% HTML.escape(donumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right"><translate>Delivery Date</translate></th>
+ <td width="13">
+ <input name="deliverydate" id="deliverydate" size="11" title="[% dateformat %]" value="[% deliverydate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="deliverydate_button" id="trigger3" value="<translate>button</translate>">
+ </td>
+ </tr>
+[%- END %]
+
+ <tr>
+ <th align="right" nowrap><translate>Order Number</translate></th>
+ <td colspan="3"><input size='11' name="ordnumber" value="[% HTML.escape(ordnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Order Date</translate></th>
+ <td><input name="orddate" id="orddate" size="11" title="[% dateformat %]" value="[% orddate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="b_orddate" id="trigger_orddate" value="?"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Quotation Number</translate></th>
+ <td colspan="3"><input size='11' name="quonumber" value="[% HTML.escape(quonumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Quotation Date</translate></th>
+ <td><input name="quodate" id="quodate" size="11" title="[% dateformat %]" value="[% quodate %]" onBlur="check_right_date_format(this)">
+ <input type="button" name="b_quodate" id="trigger_quodate" value="?"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Customer Order Number</translate></th>
+ <td colspan="3"><input size='11' name="cusordnumber" value="[% HTML.escape(cusordnumber) %]"></td>
+ </tr>
+ <tr>
+ <th align="right" nowrap><translate>Project Number</translate></th>
+ <td>
+ [%- INCLUDE 'generic/multibox.html'
+ name = 'globalproject_id',
+ DATA = ALL_PROJECTS,
+ id_key = 'id',
+ label_key = 'projectnumber',
+ show_empty = 1,
+ onChange = "document.getElementById('update_button').click();" -%]
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ </td>
+ </tr>
+ <script type="text/javascript" src="js/show_form_details.js"></script>
+ <script type="text/javascript" src="js/show_vc_details.js"></script>
+ <script type="text/javascript" src="js/show_history.js"></script>
+ <script type="text/javascript" src="js/jquery.js"></script>
+ <script type="text/javascript">
+ <!--
+ Calendar.setup({ inputField : "invdate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger1" });
+[% IF !is_type_credit_note %]
+ Calendar.setup({ inputField : "duedate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger2" });
+ Calendar.setup({ inputField : "deliverydate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger3" });
+[% END %]
+ Calendar.setup({ inputField : "orddate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_orddate" });
+ Calendar.setup({ inputField : "quodate", ifFormat :"[% myconfig_jsc_dateformat %]", align : "BL", button : "trigger_quodate" });
+ $('document').ready(function(){
+[% IF resubmit && is_format_html %]
+ window.open('about:blank','Beleg');
+ document.invoice.target = 'Beleg';
+ document.invoice.submit();
+[% ELSIF resubmit %]
+ document.invoice.submit();
+[% ELSIF creditwarning != '' %]
+ alert('<translate>Credit Limit exceeded!!!</translate>');
+[% ELSE %]
+ focus();
+[% END %]
+ setupDateFormat('[% dateformat %]', '<translate>Falsches Datumsformat!</translate>');
+ setupPoints('[% numberformat %]', '<translate>wrongformat</translate>');
+ });
+ //-->
+ </script>
+
+ <input type="hidden" name="webdav" value="[% webdav %]">
</tr>
[%- IF id && num_follow_ups %]
<tr>
- <td colspan="2">[% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', num_follow_ups, num_due_follow_ups) %]</td>
+ <td colspan="2">[% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', num_follow_ups, num_due_follow_ups) %]</td>
</tr>
[%- END %]
</table>
<td align="left" width="30%"><b>Dateiname</b></td>
<td align="left" width="70%"><b>Webdavlink</b></td>
</tr>
- [%- FOREACH file=WEBDAV %]
+ [%- FOREACH file = WEBDAV %]
<tr>
<td align="left">[% HTML.escape(file.name) %]</td>
<td align="left"><a href="[% file.link %]">[% HTML.escape(file.type) %]</a></td>
<td align="left" width="30%"><b>Dateiname</b></td>
<td align="left" width="70%"><b>Webdavlink</b></td>
</tr>
- [%- FOREACH file=WEBDAV %]
+ [%- FOREACH file = WEBDAV %]
<tr>
<td align="left">[% HTML.escape(file.name) %]</td>
<td align="left"><a href="[% file.link %]">[% HTML.escape(file.type) %]</a></td>
--- /dev/null
+
+[%- IF webdav %]
+ <tr>
+ <td><hr size="3" noshade></td>
+ </tr>
+ <tr>
+ <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
+ </tr>
+ <table width="100%">
+ <tr>
+ <td align="left" width="30%"><b>Dateiname</b></td>
+ <td align="left" width="70%"><b>Webdavlink</b></td>
+ </tr>
+ [%- FOREACH file = WEBDAV %]
+ <tr>
+ <td align="left">[% file.name %]</td>
+ <td align="left"><a href="[% file.link %]">[% file.type %]</a></td>
+ </tr>
+ [%- END %]
+ </table>
+ </tr>
+[% END %]
--- /dev/null
+
+[%- IF webdav %]
+ <tr>
+ <td><hr size="3" noshade></td>
+ </tr>
+ <tr>
+ <th class="listtop" align="left">Dokumente im Webdav-Repository</th>
+ </tr>
+ <table width="100%">
+ <tr>
+ <td align="left" width="30%"><b>Dateiname</b></td>
+ <td align="left" width="70%"><b>Webdavlink</b></td>
+ </tr>
+ [%- FOREACH file = WEBDAV %]
+ <tr>
+ <td align="left">[% file.name %]</td>
+ <td align="left"><a href="[% file.link %]">[% file.type %]</a></td>
+ </tr>
+ [%- END %]
+ </table>
+ </tr>
+[% END %]