From: Sven Schöling Date: Fri, 6 Nov 2009 11:57:29 +0000 (+0100) Subject: Verkaufsrechnungstemplates X-Git-Tag: release-2.6.1beta1~113 X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/commitdiff_plain/09fe7f33a735ecc3f4a3112ad716f674983b00cc?hp=8f1fb2d695599019da043422cc3314b2a3f4fede Verkaufsrechnungstemplates Merge branch 'is_template' Conflicts: bin/mozilla/is.pl --- diff --git a/SL/Template/Plugin/LxERP.pm b/SL/Template/Plugin/LxERP.pm index 66f32689b..c26988beb 100644 --- a/SL/Template/Plugin/LxERP.pm +++ b/SL/Template/Plugin/LxERP.pm @@ -23,6 +23,13 @@ sub format_amount { 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) = @_; diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 6beb17c80..d6c5d8b1b 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -45,7 +45,6 @@ require "bin/mozilla/drafts.pl"; use strict; my $edit; -my $payment; my $print_post; 1; @@ -89,6 +88,7 @@ sub edit { $main::lxdebug->enter_sub(); my $form = $main::form; + my $locale = $main::locale; $main::auth->assert('invoice_edit'); @@ -96,7 +96,14 @@ sub edit { $form->{javascript} = qq||; #/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"; @@ -139,65 +146,30 @@ sub invoice_links { } } - 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} = "\n" - } (@{ $form->{all_departments} || [] }); - } + $form->{selectcustomer} = 1; $form->{employee} = "$form->{employee}--$form->{employee_id}"; @@ -207,41 +179,35 @@ sub invoice_links { foreach my $key (keys %{ $form->{AR_links} }) { foreach my $ref (@{ $form->{AR_links}{$key} }) { - $form->{"select$key"} .= -"\n"; + $form->{"select$key"} .= "\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(); } @@ -303,34 +269,18 @@ sub form_header { $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||; - foreach my $item (@{ $form->{payment_terms} }) { - if ($form->{payment_id} eq $item->{id}) { - $payment .= qq||; - } else { - $payment .= qq||; - } - } - 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"}; @@ -340,473 +290,71 @@ sub form_header { "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| - - | . $locale->text('Contact Person') . qq| - | . NTI($cgi->popup_menu('-name' => 'cp_id', '-values' => \@values, '-style' => 'width: 250px', - '-labels' => \%labels, '-default' => $form->{"cp_id"})) . qq| - - |; - } - - %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| - - | . $locale->text('Employee') . qq| - | . NTI($cgi->popup_menu('-name' => 'employee_id', '-default' => $form->{"employee_id"}, - '-values' => \@values, '-labels' => \%labels)) . qq| - - |; - - - %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| - | . $locale->text('Customer') . qq| - | . - (($myconfig{vclimit} <= scalar(@values)) - ? qq|| - : (NTI($cgi->popup_menu('-name' => 'customer', '-default' => $form->{oldcustomer}, - '-onChange' => 'document.getElementById(\'update_button\').click();', - '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px')))) . qq| - - |; - - %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| - - | . $locale->text('Shipping Address') . qq| - | . NTI($cgi->popup_menu('-name' => 'shipto_id', '-values' => \@values, '-style' => 'width: 250px', - '-labels' => \%labels, '-default' => $form->{"shipto_id"})). qq| - |; - } + $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| - - | . $locale->text('Currency') . qq| - | . NTI($cgi->popup_menu('-name' => 'currency', '-default' => $form->{"currency"}, - '-values' => \@values, '-labels' => \%labels)) . qq| - - |; - } - - %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| | . $locale->text('Salesman') . qq| - | . NTI($cgi->popup_menu('-name' => 'salesman_id', '-values' => \@values, '-labels' => \%labels, - '-default' => $form->{salesman_id} ? $form->{salesman_id} : $form->{employee_id})) . qq| - - |; - - %labels = (); - @values = (); - foreach my $item (@{ $form->{"ALL_TAXZONES"} }) { - push(@values, $item->{"id"}); - $labels{$item->{"id"}} = $item->{"description"}; - } - - my $taxzone; - if (!$form->{"id"}) { - $taxzone = qq| - - | . $locale->text('Steuersatz') . qq| - | . NTI($cgi->popup_menu('-name' => 'taxzone_id', '-default' => $form->{"taxzone_id"}, - '-values' => \@values, '-labels' => \%labels, '-style' => 'width: 250px',)) . qq| - - |; + $form->{fokus} = "invoice.customer"; - } else { - $taxzone = qq| - - | . $locale->text('Steuersatz') . qq| - - - | . H($labels{$form->{"taxzone_id"}}) . qq| - - |; - } + 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|| . $locale->text('Exchangerate') . qq| - $form->{exchangerate}|; - } else { - $exchangerate .= qq|| . $locale->text('Exchangerate') . qq| - |; - } - } - $exchangerate .= qq|\n\n|; - - my $department = qq| - - | . $locale->text('Department') . qq| - - - - -| if $form->{selectdepartment}; - - my $n = ($form->{creditremaining} =~ /-/) ? "0" : "1"; - - my $business; - if ($form->{business}) { - $business = qq| - - | . $locale->text('Customer type') . qq| - $form->{business}; | . $locale->text('Trade Discount') . qq| | - . $form->format_amount(\%myconfig, $form->{tradediscount} * 100) - . qq| % - -|; - } - - my $dunning; - if ($form->{max_dunning_level}) { - $dunning = qq| - - | . $locale->text('Max. Dunning Level') . qq|: - - $form->{max_dunning_level}; - | . $locale->text('Dunning Amount') . qq|: | - . $form->format_amount(\%myconfig, $form->{dunning_amount},2) - . qq| - - -|; - } - - $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| - - |; - - #write Trigger - $jsscript = - Form->write_trigger(\%myconfig, "1", - "invdate", "BL", - "trigger1"); - } else { - $button1 = qq| - - - |; - $button2 = qq| - - - |; - $button3 = qq| - - - |; - - #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||; - $form->{javascript} .= qq||; - - $jsscript .= - $form->write_trigger(\%myconfig, 2, - "orddate", "BL", "trigger_orddate", - "quodate", "BL", "trigger_quodate"); - # show history button js - $form->{javascript} .= qq||; - #/show history button js - $form->header; - - print qq| - - - - - - - -
-| ; - - $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|

$form->{saved_message}

| if $form->{saved_message}; - - print qq| - - - - - - - - -
$form->{title}
- - - - - - -
- - - $customers - - - - - - $contact - $shipto - - - - - $dunning - $business - - - - - - $taxzone - $department - - $currencies - - - $exchangerate - - - - - - - - - - - - - |; -# -# -# -print qq|
| . $locale->text('Credit Limit') . qq|$form->{creditlimit}; | . $locale->text('Remaining') . qq| $form->{creditremaining}
| . $locale->text('Record in') . qq|
| . $locale->text('Shipping Point') . qq| | . - $cgi->textfield("-name" => "shippingpoint", "-size" => 35, "-value" => $form->{shippingpoint}) . - qq|
| . $locale->text('Ship via') . qq| | . - $cgi->textfield("-name" => "shipvia", "-size" => 35, "-value" => $form->{shipvia}) . - qq|
| . $locale->text('Transaction description') . qq|| . $cgi->textfield("-name" => "transaction_description", "-size" => 35, "-value" => $form->{transaction_description}) . qq|
-# -# -# -# -# -# -# -# -# -#
-# -# -#
-# -# -#
-#
-
- - $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| - - - - - - $button1 - |; -} else { -print qq| - - - - - - $button1 - - - - $button2 - - - - - - - - $button3 - |; -} -print qq| - - - - - - - - - - - - - - - - - - - - - - - -
| . $locale->text('Credit Note Number') . qq| |. - $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) . - qq|
| . $locale->text('Credit Note Date') . qq|
| . $locale->text('Invoice Number') . qq| |. - $cgi->textfield("-name" => "invnumber", "-size" => 11, "-value" => $form->{invnumber}) . - qq|
| . $locale->text('Invoice Date') . qq|
| . $locale->text('Due Date') . qq|
| . $locale->text('Delivery Order Number') . qq| |. - $cgi->textfield("-name" => "donumber", "-size" => 11, "-value" => $form->{donumber}) . - qq|
| . $locale->text('Delivery Date') . qq|
| . $locale->text('Order Number') . qq| |. - $cgi->textfield("-name" => "ordnumber", "-size" => 11, "-value" => $form->{ordnumber}) . - qq|
| . $locale->text('Order Date') . qq| -
| . $locale->text('Quotation Number') . qq| |. - $cgi->textfield("-name" => "quonumber", "-size" => 11, "-value" => $form->{quonumber}) . - qq|
| . $locale->text('Quotation Date') . qq| -
| . $locale->text('Customer Order Number') . qq| |. - $cgi->textfield("-name" => "cusordnumber", "-size" => 11, "-value" => $form->{cusordnumber}) . - qq|
| . $locale->text('Project Number') . qq|$globalprojectnumber
-
- - - - - - - $jsscript -|; - print qq||; + print $form->parse_html_template("is/form_header", \%TMPL_VAR); $main::lxdebug->leave_sub(); } @@ -817,438 +365,62 @@ sub form_footer { 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||; - my $intnotes = - qq||; - - $form->{taxincluded} = ($form->{taxincluded} ? "checked" : ""); - - my $taxincluded = ""; - if ($form->{taxaccounts}) { - $taxincluded = qq| - {taxincluded}> | - . $locale->text('Tax Included') . qq|

|; - } + # 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| - - $form->{"${item}_description"} | - . $form->{"${item}_rate"} * 100 .qq|% - $form->{"${item}_total"} - -|; - } - } - - $form->{invsubtotal} = - $form->format_amount(\%myconfig, $form->{invsubtotal}, 2, 0); - - $subtotal = qq| - - | . $locale->text('Subtotal') . qq| - $form->{invsubtotal} - -|; - - } - - 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| - - Enthaltene $form->{"${item}_description"} | - . $form->{"${item}_rate"} * 100 .qq|% - $form->{"${item}_total"} - - - Nettobetrag - $form->{"${item}_netto"} - -|; } } - } - $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| - - | . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq| - -|; - } - } - - print qq| - - - - - - - - -
- - - - - - - - - - - - $follow_ups_block -
| . $locale->text('Notes') . qq|| . $locale->text('Internal Notes') . qq|| . $locale->text('Payment Terms') . qq|
$notes$intnotes
-
- - - - - - - - - - - -
| . $locale->text('Ertrag') . qq|| . $form->format_amount(\%myconfig, $form->{marge_total}, 2, 0) . qq|
| . $locale->text('Ertrag prozentual') . qq|| . $form->format_amount(\%myconfig, $form->{marge_percent}, 2, 0) . qq| %
-
- $taxincluded - - $subtotal - $tax - - - - -
| . $locale->text('Total') . qq|$form->{invtotal}
-
- - -|; - my $webdav_list; - if ($main::webdav) { - $webdav_list = qq| - -
- - - Dokumente im Webdav-Repository - - - - -|; - foreach my $file (@{ $form->{WEBDAV} }) { - $webdav_list .= qq| - - - - -|; - } - $webdav_list .= qq| -
DateinameWebdavlink
$file->{name}$file->{type}
- -|; - - print $webdav_list; - } -if ($form->{type} eq "credit_note") { - print qq| - - - - - - -|; -} else { - print qq| - - - - - - - - - -
| - . $locale->text('Payments') . qq|
- - - - -|; -} - - 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} = ""; - $column_data{paid} = ""; - $column_data{exchangerate} = ""; - $column_data{AR_paid} = ""; - $column_data{source} = ""; - $column_data{memo} = ""; - - print " - -"; - map { print "$column_data{$_}\n" } @column_index; - print " - -"; - - my @triggers = (); + # payments my $totalpaid = 0; - $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"}); - for my $i (1 .. $form->{paidaccounts}) { - - print " - \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|$form->{"exchangerate_$i"}|; - } else { - $exchangerate = qq||; - } - } - - $exchangerate .= qq||; - - $column_data{"paid_$i"} = - qq||; - $column_data{"exchangerate_$i"} = qq||; - $column_data{"AR_paid_$i"} = - qq||; - $column_data{"datepaid_$i"} = - qq||; - $column_data{"source_$i"} = - qq||; - $column_data{"memo_$i"} = - qq||; - - map { print qq|$column_data{"${_}_$i"}\n| } @column_index; - print " - \n"; - push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); } - my $paid_missing = $form->{oldinvtotal} - $totalpaid; - - print qq| - - - - - - - - - - - - -|; - - map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } qw(paidaccounts selectAR_paid oldinvtotal)); - print qq| -
| - . $locale->text('Incoming Payments') . qq|
" . $locale->text('Date') . "" . $locale->text('Amount') . "" . $locale->text('Exch') . "" . $locale->text('Account') . "" . $locale->text('Source') . "" . $locale->text('Memo') . "
$exchangerate -
| . $locale->text('Total') . qq|| . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq|
| . $locale->text('Missing amount') . qq|| . H($form->format_amount(\%myconfig, $paid_missing, 2)) . qq|
-

-|; - - print_options(); - - print qq| -
-|; - - 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| - - - - |; - print qq| | if ($show_storno); - print qq| -|; - print qq| -|; - if ($form->{id} && !($form->{type} eq "credit_note")) { - print qq| - -|; - } - if ($form->{radier}) { - print qq| - -|; - } - - - if ($invdate > $closedto) { - print qq| - -|; - } - - print qq| - |; - - } else { - if ($invdate > $closedto) { - print qq| - - - - - | . - NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'), - '-class' => 'submit')); - } - } - - # button for saving history - if($form->{id} ne "") { - print qq| - |; - } - # /button for saving history - - # mark_as_paid button - if($form->{id} ne "") { - print qq||; - } - # /mark_as_paid button - print $form->write_trigger(\%myconfig, scalar(@triggers) / 3, @triggers) . - qq| - - -| . -$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| -
- - - - -|; + 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(); } diff --git a/locale/de/all b/locale/de/all index 557892970..e5733ff08 100644 --- a/locale/de/all +++ b/locale/de/all @@ -1355,6 +1355,7 @@ $self->{texts} = { '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', @@ -1640,7 +1641,7 @@ $self->{texts} = { '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.', diff --git a/locale/de/ap b/locale/de/ap index 7de98d5fe..51fd1a07f 100644 --- a/locale/de/ap +++ b/locale/de/ap @@ -239,7 +239,7 @@ $self->{texts} = { '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.', diff --git a/locale/de/ar b/locale/de/ar index 268db0a03..e2ebb2420 100644 --- a/locale/de/ar +++ b/locale/de/ar @@ -244,7 +244,7 @@ $self->{texts} = { '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.', diff --git a/locale/de/gl b/locale/de/gl index eb06e9bc4..5801178f5 100644 --- a/locale/de/gl +++ b/locale/de/gl @@ -227,7 +227,7 @@ $self->{texts} = { '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.', diff --git a/locale/de/ir b/locale/de/ir index 07797d627..10ed04dae 100644 --- a/locale/de/ir +++ b/locale/de/ir @@ -281,7 +281,7 @@ $self->{texts} = { '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', diff --git a/locale/de/is b/locale/de/is index ff1936e00..f38b4db2d 100644 --- a/locale/de/is +++ b/locale/de/is @@ -9,7 +9,6 @@ $self->{texts} = { 'AP Transaction' => 'Kreditorenbuchung', 'AR' => 'Verkauf', 'AR Transaction' => 'Debitorenbuchung', - 'Account' => 'Konto', 'Add Credit Note' => 'Gutschrift erfassen', 'Add Purchase Order' => 'Lieferantenauftrag erfassen', 'Add Quotation' => 'Angebot erfassen', @@ -20,7 +19,6 @@ $self->{texts} = { '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:', @@ -57,14 +55,11 @@ $self->{texts} = { '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', @@ -79,20 +74,13 @@ $self->{texts} = { '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', @@ -101,22 +89,17 @@ $self->{texts} = { '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', @@ -125,33 +108,23 @@ $self->{texts} = { '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.', @@ -171,15 +144,12 @@ $self->{texts} = { '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\'.', @@ -193,7 +163,6 @@ $self->{texts} = { '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', @@ -202,10 +171,7 @@ $self->{texts} = { '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', @@ -220,41 +186,30 @@ $self->{texts} = { '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', @@ -266,8 +221,6 @@ $self->{texts} = { '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', @@ -283,20 +236,14 @@ $self->{texts} = { '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:', @@ -305,18 +252,12 @@ $self->{texts} = { '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', @@ -333,16 +274,13 @@ $self->{texts} = { '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', @@ -356,7 +294,6 @@ $self->{texts} = { 'sent' => 'gesendet', 'sent to printer' => 'an Drucker geschickt', 'vendor' => 'Lieferant', - 'wrongformat' => 'Falsches Format', 'yes' => 'ja', }; @@ -461,6 +398,7 @@ $self->{subs} = { 'drucken' => 'print', 'drucken_und_buchen' => 'print_and_post', 'entwurf_speichern' => 'save_draft', + 'entwurf_speichern' => 'save_draft', 'lieferadresse' => 'ship_to', 'Überspringen' => 'skip', 'storno' => 'storno', diff --git a/templates/webpages/generic/multibox.html b/templates/webpages/generic/multibox.html index b78f1bc04..7225b0347 100644 --- a/templates/webpages/generic/multibox.html +++ b/templates/webpages/generic/multibox.html @@ -23,6 +23,7 @@ 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 @@ -44,6 +45,7 @@ [%- 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 -%] @@ -54,6 +56,7 @@ [%- 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 %] diff --git a/templates/webpages/is/_payments_de.html b/templates/webpages/is/_payments_de.html new file mode 100644 index 000000000..51dee5189 --- /dev/null +++ b/templates/webpages/is/_payments_de.html @@ -0,0 +1,88 @@ +[%- USE LxERP %] + + + + +[% IF is_type_credit_note %] + +[% ELSE %] + +[%- END %] + + + + + + + + +[% IF show_exchangerate %] + +[% END %] + + + + +[% 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 %] + + + + + + + +[% IF show_exchangerate %] + +[% END %] + + + +[%# push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %] + + +[% END # foreach %] + + + + + + + + + + + + + + + + + + + +
ZahlungsausgängeZahlungseingänge
DatumBelegMemoBetragWechselkurs.Konto
+ + + + [% SET row.forex = 'forex_' _ i %] + [% SET row.exchangerate = 'exchangerate_' _ i %] + [% IF row.forex %] + + [% LxERP.format_amount(row.exchangerate, 2) %] + [% ELSE %] + + [% END %] + ; +
Summe[% LxERP.foramt_amount(totalpaid, 2) | html %]
Fehlbetrag[% LxERP.format_amount(paid_missing, 2) | html %]
+ + + diff --git a/templates/webpages/is/_payments_master.html b/templates/webpages/is/_payments_master.html new file mode 100644 index 000000000..6cfdb5790 --- /dev/null +++ b/templates/webpages/is/_payments_master.html @@ -0,0 +1,88 @@ +[%- USE LxERP %] + + + + +[% IF is_type_credit_note %] + +[% ELSE %] + +[%- END %] + + + + + + + + +[% IF show_exchangerate %] + +[% END %] + + + + +[% 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 %] + + + + + + + +[% IF show_exchangerate %] + +[% END %] + + + +[%# push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); %] + + +[% END # foreach %] + + + + + + + + + + + + + + + + + + + +
PaymentsIncoming Payments
DateSourceMemoAmountExchAccount
+ + + + [% SET row.forex = 'forex_' _ i %] + [% SET row.exchangerate = 'exchangerate_' _ i %] + [% IF row.forex %] + + [% LxERP.format_amount(row.exchangerate, 2) %] + [% ELSE %] + + [% END %] + ; +
Total[% LxERP.foramt_amount(totalpaid, 2) | html %]
Missing amount[% LxERP.format_amount(paid_missing, 2) | html %]
+ + + diff --git a/templates/webpages/is/form_footer_de.html b/templates/webpages/is/form_footer_de.html new file mode 100644 index 000000000..66283ec77 --- /dev/null +++ b/templates/webpages/is/form_footer_de.html @@ -0,0 +1,176 @@ +[%- USE HTML %] +[%- USE LxERP %] + + + + + + + + +
+ + + + + + + + + + + +[%- IF id %] + + +[%- END %] +
Bemerkungeninterne BemerkungenZahlungskonditionen
+ + + + + [%- 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 -%] + +
+ [%- LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', + follow_ups.size, follow_ups_unfinished) | html + %] + +
+
+ + + + + + + + + + + +
Ertrag[% LxERP.format_amount(marge_total, 2, 0) %]
Ertrag prozentual[% LxERP.format_amount(marge_percent, 2, 0) %] %
+
+ [%- IF taxaccounts %] + + Steuer im Preis inbegriffen +
+
+ [%- END %] + + +[%#- subtotal %] +[%- UNLESS taxincluded %] + + + + +[%- 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' %] + + + + + [%- IF taxincluded %] + + + + + [%- END %] +[%- END %] + + + + + +
Zwischensumme[% LxERP.format_amount(invsubtotal, 2) %]
Enthaltene [% $description_ref | html %] [% $rate_ref * 100 %]%[% LxERP.format_amount($total_ref, 2) %]
Nettobetrag[% LxERP.format_amount($netto_ref, 2) %]
Summe[% LxERP.format_amount(invtotal, 2) %]
+
+ + + +[% PROCESS 'webdav/_list_de.html' %] + +[% PROCESS 'is/_payments_de.html' %] + + +
+ + + +[% print_options %] + + + + + + + [% IF id %] + + + + + +[% IF show_storno %] + +[% END %] + + + +[% IF id && is_type_credit_note %] + +[% END %] +[% IF show_delete %] + +[% END %] + + [%- UNLESS locked %] + + [%- END %] + + + + [% ELSE # no id %] + [% UNLESS locked %] + + + + + + + + [%- END %] + [% END # id %] + + [% IF id %] + [%#- button for saving history %] + + + + [% END %] + + + + + + + + + + + + diff --git a/templates/webpages/is/form_footer_master.html b/templates/webpages/is/form_footer_master.html new file mode 100644 index 000000000..a3d53fd5a --- /dev/null +++ b/templates/webpages/is/form_footer_master.html @@ -0,0 +1,176 @@ +[%- USE HTML %] +[%- USE LxERP %] + + + + + + + + +
+ + + + + + + + + + + +[%- IF id %] + + +[%- END %] +
NotesInternal NotesPayment Terms
+ + + + + [%- 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 -%] + +
+ [%- LxERP.format_string('There are #1 unfinished follow-ups of which #2 are due.', + follow_ups.size, follow_ups_unfinished) | html + %] + +
+
+ + + + + + + + + + + +
Ertrag[% LxERP.format_amount(marge_total, 2, 0) %]
Ertrag prozentual[% LxERP.format_amount(marge_percent, 2, 0) %] %
+
+ [%- IF taxaccounts %] + + Tax Included +
+
+ [%- END %] + + +[%#- subtotal %] +[%- UNLESS taxincluded %] + + + + +[%- 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' %] + + + + + [%- IF taxincluded %] + + + + + [%- END %] +[%- END %] + + + + + +
Subtotal[% LxERP.format_amount(invsubtotal, 2) %]
Enthaltene [% $description_ref | html %] [% $rate_ref * 100 %]%[% LxERP.format_amount($total_ref, 2) %]
Nettobetrag[% LxERP.format_amount($netto_ref, 2) %]
Total[% LxERP.format_amount(invtotal, 2) %]
+
+ + + +[% PROCESS 'webdav/_list_master.html' %] + +[% PROCESS 'is/_payments_master.html' %] + + +
+ + + +[% print_options %] + + + + + + + [% IF id %] + + + + + +[% IF show_storno %] + +[% END %] + + + +[% IF id && is_type_credit_note %] + +[% END %] +[% IF show_delete %] + +[% END %] + + [%- UNLESS locked %] + + [%- END %] + + + + [% ELSE # no id %] + [% UNLESS locked %] + + + + + + + + [%- END %] + [% END # id %] + + [% IF id %] + [%#- button for saving history %] + + + + [% END %] + + + + + + + + + + + + diff --git a/templates/webpages/is/form_header_de.html b/templates/webpages/is/form_header_de.html new file mode 100644 index 000000000..6cab7ad6b --- /dev/null +++ b/templates/webpages/is/form_header_de.html @@ -0,0 +1,311 @@ +[%- USE HTML %] +[%- USE LxERP %] +[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %] + + + + + + + +
+ +

[% saved_message %]

+ +[%- FOREACH key = HIDDENS %] + +[%- END %] + + + + + + + +

[% title %]

+ + + + + + +
+ + + + + + + + + +[%- IF ALL_CONTACTS.size %] + + + + +[%- END %] +[%- IF ALL_SHIPTO.size %] + + + + +[%- END %] + + + + +[%- IF max_dunning_level %] + + + + +[%- END %] +[%- IF business %] + + + + +[%- END %] + + + + + + + + + +[%- IF all_departments %] + + + + +[%- END %] +[%- IF currencies %] + + + + +[%- END %] + + +[%- IF show_exchangerate %] + + + + +[%- END %] + + + + + + + + + + + + +
Kunde + [%- 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();" -%] + +
Ansprechpartner + [%- INCLUDE 'generic/multibox.html' + name = 'cp_id', + style = 'width: 250px', + DATA = ALL_CONTACTS, + id_key = 'cp_id', + label_sub = 'contact_labels', + show_empty = 1 -%] +
Lieferadresse + [%- 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();" -%] +
Kreditlimit + [% LxERP.format_amount(creditlimit, 0, '0') %]; Rest + [% LxERP.format_amount(creditremaining,0 ,'0') %] +
höchste Mahnstufe: + [% max_dunning_level %]; gemahnter Betrag: [% LxERP.format_amount(dunning_amount,2) %] +
Kundentyp[% business %]; Rabatt [% LxERP.format_amount(tradediscount * 100) %] %
Buchen auf
Steuersatz + [%- INCLUDE 'generic/multibox.html' + name = 'taxzone_id' + stype = '250px' + DATA = ALL_TAXZONES + id_key = 'id' + readonly = (id ? 1 : 0) + label_key = 'description' -%] +
Abteilung + [%- INCLUDE 'generic/multibox.html' + name = 'department_id', + style = 'width: 250px', + DATA = all_departments, + id_key = 'id', + label_sub = 'department_labels', + show_empty = 1 -%] +
Währung[% currencies %]
Wechselkurs + [%- IF forex %] + [% LxERP.format_amount(exchangerate, 2) %] + [%- ELSE %] + + [%- END %] +
Versandort
Transportmittel
Vorgangsbezeichnung
+
+ + + + + +[%- IF ALL_SALESMEN.size %] + + + + +[%- END %] + +[%- IF is_type_credit_note %] + + + + + + + + +[%- ELSE %] + + + + + + + + + + + + + + + + + + + + +[%- END %] + + + + + + + + + + + + + + + + + + + + + + + + + +
Bearbeiter + [%- INCLUDE 'generic/multibox.html' + name = 'employee_id', + DATA = ALL_EMPLOYEES, + id_key = 'id', + label_sub = 'sales_employee_labels' -%] +
Verkäufer/in + [%- 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' -%] +
Gutschriftnummer
Gutschriftdatum + + +
Rechnungsnummer
Rechnungsdatum + + +
Fälligkeitsdatum + + +
Lieferscheinnummer
Lieferdatum + + +
Auftragsnummer
Auftragsdatum +
Angebotsnummer
Angebotsdatum +
Bestellnummer des Kunden
Projektnummer + [%- 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();" -%] +
+
+ + + + + + + + + + + + + diff --git a/templates/webpages/is/form_header_master.html b/templates/webpages/is/form_header_master.html new file mode 100644 index 000000000..3b9d87ca5 --- /dev/null +++ b/templates/webpages/is/form_header_master.html @@ -0,0 +1,311 @@ +[%- USE HTML %] +[%- USE LxERP %] +[%- SET follow_up_trans_info = invnumber _ ' (' _ customer_name _ ')' %] + + + + + + + + + +

[% saved_message %]

+ +[%- FOREACH key = HIDDENS %] + +[%- END %] + + + + + + + +

[% title %]

+ + + + + + +
+ + + + + + + + + +[%- IF ALL_CONTACTS.size %] + + + + +[%- END %] +[%- IF ALL_SHIPTO.size %] + + + + +[%- END %] + + + + +[%- IF max_dunning_level %] + + + + +[%- END %] +[%- IF business %] + + + + +[%- END %] + + + + + + + + + +[%- IF all_departments %] + + + + +[%- END %] +[%- IF currencies %] + + + + +[%- END %] + + +[%- IF show_exchangerate %] + + + + +[%- END %] + + + + + + + + + + + + +
Customer + [%- 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();" -%] + +
Contact Person + [%- INCLUDE 'generic/multibox.html' + name = 'cp_id', + style = 'width: 250px', + DATA = ALL_CONTACTS, + id_key = 'cp_id', + label_sub = 'contact_labels', + show_empty = 1 -%] +
Shipping Address + [%- 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();" -%] +
Credit Limit + [% LxERP.format_amount(creditlimit, 0, '0') %]; Remaining + [% LxERP.format_amount(creditremaining,0 ,'0') %] +
Max. Dunning Level: + [% max_dunning_level %]; Dunning Amount: [% LxERP.format_amount(dunning_amount,2) %] +
Customer type[% business %]; Trade Discount [% LxERP.format_amount(tradediscount * 100) %] %
Record in
Steuersatz + [%- INCLUDE 'generic/multibox.html' + name = 'taxzone_id' + stype = '250px' + DATA = ALL_TAXZONES + id_key = 'id' + readonly = (id ? 1 : 0) + label_key = 'description' -%] +
Department + [%- INCLUDE 'generic/multibox.html' + name = 'department_id', + style = 'width: 250px', + DATA = all_departments, + id_key = 'id', + label_sub = 'department_labels', + show_empty = 1 -%] +
Currency[% currencies %]
Exchangerate + [%- IF forex %] + [% LxERP.format_amount(exchangerate, 2) %] + [%- ELSE %] + + [%- END %] +
Shipping Point
Ship via
Transaction description
+
+ + + + + +[%- IF ALL_SALESMEN.size %] + + + + +[%- END %] + +[%- IF is_type_credit_note %] + + + + + + + + +[%- ELSE %] + + + + + + + + + + + + + + + + + + + + +[%- END %] + + + + + + + + + + + + + + + + + + + + + + + + + +
Employee + [%- INCLUDE 'generic/multibox.html' + name = 'employee_id', + DATA = ALL_EMPLOYEES, + id_key = 'id', + label_sub = 'sales_employee_labels' -%] +
Salesman + [%- 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' -%] +
Credit Note Number
Credit Note Date + + +
Invoice Number
Invoice Date + + +
Due Date + + +
Delivery Order Number
Delivery Date + + +
Order Number
Order Date +
Quotation Number
Quotation Date +
Customer Order Number
Project Number + [%- 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();" -%] +
+
+ + + + + + + + + + + + + diff --git a/templates/webpages/oe/form_footer_de.html b/templates/webpages/oe/form_footer_de.html index 0247b59c6..e2c2e96cc 100644 --- a/templates/webpages/oe/form_footer_de.html +++ b/templates/webpages/oe/form_footer_de.html @@ -28,7 +28,7 @@ [%- IF id && num_follow_ups %] - [% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', num_follow_ups, num_due_follow_ups) %] + [% LxERP.format_string('Es gibt #1 Wiedervorlage(n), von denen #2 fällig ist/sind.', num_follow_ups, num_due_follow_ups) %] [%- END %] @@ -91,7 +91,7 @@ Dateiname Webdavlink - [%- FOREACH file=WEBDAV %] + [%- FOREACH file = WEBDAV %] [% HTML.escape(file.name) %] [% HTML.escape(file.type) %] diff --git a/templates/webpages/oe/form_footer_master.html b/templates/webpages/oe/form_footer_master.html index c77c993d2..9de093919 100644 --- a/templates/webpages/oe/form_footer_master.html +++ b/templates/webpages/oe/form_footer_master.html @@ -91,7 +91,7 @@ Dateiname Webdavlink - [%- FOREACH file=WEBDAV %] + [%- FOREACH file = WEBDAV %] [% HTML.escape(file.name) %] [% HTML.escape(file.type) %] diff --git a/templates/webpages/webdav/_list_de.html b/templates/webpages/webdav/_list_de.html new file mode 100644 index 000000000..3432fc614 --- /dev/null +++ b/templates/webpages/webdav/_list_de.html @@ -0,0 +1,22 @@ + +[%- IF webdav %] + +
+ + + Dokumente im Webdav-Repository + + + + + + + [%- FOREACH file = WEBDAV %] + + + + + [%- END %] +
DateinameWebdavlink
[% file.name %][% file.type %]
+ +[% END %] diff --git a/templates/webpages/webdav/_list_master.html b/templates/webpages/webdav/_list_master.html new file mode 100644 index 000000000..3432fc614 --- /dev/null +++ b/templates/webpages/webdav/_list_master.html @@ -0,0 +1,22 @@ + +[%- IF webdav %] + +
+ + + Dokumente im Webdav-Repository + + + + + + + [%- FOREACH file = WEBDAV %] + + + + + [%- END %] +
DateinameWebdavlink
[% file.name %][% file.type %]
+ +[% END %]