Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 454df69e

Von Moritz Bunkus vor fast 17 Jahren hinzugefügt

  • ID 454df69edeb9bfe5a1a9c06c2788d1e1175470db
  • Vorgänger 556a2137
  • Nachfolger c9696e31

Erstellen von Rechnungen aus mehreren Lieferscheinen heraus.

Unterschiede anzeigen:

SL/DO.pm
sub retrieve {
$main::lxdebug->enter_sub();
my ($self) = @_;
my $self = shift;
my %params = @_;
my $myconfig = \%main::myconfig;
my $form = $main::form;
......
my ($query, $query_add, @values, $sth, $ref);
if (!$form->{id}) {
my $vc = $params{vc} eq 'customer' ? 'customer' : 'vendor';
my $mode = !$params{ids} ? 'default' : ref $params{ids} eq 'ARRAY' ? 'multi' : 'single';
if ($mode eq 'default') {
$ref = selectfirst_hashref_query($form, $dbh, qq|SELECT current_date AS transdate, current_date AS reqdate|);
map { $form->{$_} = $ref->{$_} } keys %$ref;
# get last name used
$form->lastname_used($dbh, $myconfig, $vc) unless $form->{"${vc}_id"};
$main::lxdebug->leave_sub();
return 1;
}
my $vc = $form->{vc} eq "customer" ? "customer" : "vendor";
my @do_ids = map { conv_i($_) } ($mode eq 'multi' ? @{ $params{ids} } : ($params{ids}));
my $do_ids_placeholders = join(', ', ('?') x scalar(@do_ids));
if ($form->{id}) {
# retrieve order for single id
# NOTE: this query is intended to fetch all information only ONCE.
# so if any of these infos is important (or even different) for any item,
# it will be killed out and then has to be fetched from the item scope query further down
$query =
qq|SELECT dord.cp_id, dord.donumber, dord.ordnumber, dord.transdate, dord.reqdate,
dord.shippingpoint, dord.shipvia, dord.notes, dord.intnotes,
e.name AS employee, dord.employee_id, dord.salesman_id,
dord.${vc}_id, cv.name AS ${vc},
dord.closed, dord.reqdate, dord.department_id, dord.cusordnumber,
d.description AS department, dord.language_id,
dord.shipto_id,
dord.globalproject_id, dord.delivered, dord.transaction_description
FROM delivery_orders dord
JOIN ${vc} cv ON (dord.${vc}_id = cv.id)
LEFT JOIN employee e ON (dord.employee_id = e.id)
LEFT JOIN department d ON (dord.department_id = d.id)
WHERE dord.id IN ($do_ids_placeholders)|;
$sth = prepare_execute_query($form, $dbh, $query, @do_ids);
# retrieve order for single id
# NOTE: this query is intended to fetch all information only ONCE.
# so if any of these infos is important (or even different) for any item,
# it will be killed out and then has to be fetched from the item scope query further down
$query =
qq|SELECT dord.cp_id, dord.donumber, dord.ordnumber, dord.transdate, dord.reqdate,
dord.shippingpoint, dord.shipvia, dord.notes, dord.intnotes,
e.name AS employee, dord.employee_id, dord.salesman_id,
dord.${vc}_id, cv.name AS ${vc},
dord.closed, dord.reqdate, dord.department_id, dord.cusordnumber,
d.description AS department, dord.language_id,
dord.shipto_id,
dord.globalproject_id, dord.delivered, dord.transaction_description
FROM delivery_orders dord
JOIN ${vc} cv ON (dord.${vc}_id = cv.id)
LEFT JOIN employee e ON (dord.employee_id = e.id)
LEFT JOIN department d ON (dord.department_id = d.id)
WHERE dord.id = ?|;
$sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
$ref = $sth->fetchrow_hashref(NAME_lc);
$sth->finish();
delete $form->{"${vc}_id"};
while (my $ref = $sth->fetchrow_hashref(NAME_lc)) {
if ($form->{"${vc}_id"} && ($ref->{"${vc}_id"} != $form->{"${vc}_id"})) {
$sth->finish();
$main::lxdebug->leave_sub();
return 0;
}
map { $form->{$_} = $ref->{$_} } keys %$ref if ($ref);
}
$sth->finish();
$form->{saved_donumber} = $form->{donumber};
$form->{saved_donumber} = $form->{donumber};
# if not given, fill transdate with current_date
$form->{transdate} = $form->current_date($myconfig) unless $form->{transdate};
# if not given, fill transdate with current_date
$form->{transdate} = $form->current_date($myconfig) unless $form->{transdate};
if ($mode eq 'single') {
$query = qq|SELECT s.* FROM shipto s WHERE s.trans_id = ? AND s.module = 'DO'|;
$sth = prepare_execute_query($form, $dbh, $query, $form->{id});
$sth = prepare_execute_query($form, $dbh, $query, $form->{id});
$ref = $sth->fetchrow_hashref(NAME_lc);
delete($ref->{id});
$ref = $sth->fetchrow_hashref(NAME_lc);
delete $ref->{id};
map { $form->{$_} = $ref->{$_} } keys %$ref;
$sth->finish;
$sth->finish();
# get printed, emailed and queued
$query = qq|SELECT s.printed, s.emailed, s.spoolfile, s.formname FROM status s WHERE s.trans_id = ?|;
$sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
$sth = prepare_execute_query($form, $dbh, $query, conv_i($form->{id}));
while ($ref = $sth->fetchrow_hashref(NAME_lc)) {
$form->{printed} .= "$ref->{formname} " if $ref->{printed};
$form->{emailed} .= "$ref->{formname} " if $ref->{emailed};
$form->{queued} .= "$ref->{formname} $ref->{spoolfile} " if $ref->{spoolfile};
}
$sth->finish;
$sth->finish();
map { $form->{$_} =~ s/ +$//g } qw(printed emailed queued);
my %oid = ('Pg' => 'oid',
'Oracle' => 'rowid');
my $transdate = $form->{transdate} ? $dbh->quote($form->{transdate}) : "current_date";
} else {
delete $form->{id};
}
# retrieve individual items
# this query looks up all information about the items
# stuff different from the whole will not be overwritten, but saved with a suffix.
$query =
qq|SELECT doi.id AS delivery_order_items_id,
p.partnumber, p.assembly, doi.description, doi.qty,
doi.sellprice, doi.parts_id AS id, doi.unit, doi.discount, p.bin, p.notes AS partnotes,
doi.reqdate, doi.project_id, doi.serialnumber, doi.lastcost,
doi.ordnumber, doi.transdate, doi.cusordnumber, doi.longdescription,
doi.price_factor_id, doi.price_factor, doi.marge_price_factor,
pr.projectnumber,
pg.partsgroup
FROM delivery_order_items doi
JOIN parts p ON (doi.parts_id = p.id)
JOIN delivery_orders dord ON (doi.delivery_order_id = dord.id)
LEFT JOIN project pr ON (doi.project_id = pr.id)
LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id)
WHERE doi.delivery_order_id = ?
ORDER BY doi.$oid{$myconfig->{dbdriver}}|;
$form->{form_details} = selectall_hashref_query($form, $dbh, $query, conv_i($form->{id}));
my %oid = ('Pg' => 'oid',
'Oracle' => 'rowid');
# retrieve individual items
# this query looks up all information about the items
# stuff different from the whole will not be overwritten, but saved with a suffix.
$query =
qq|SELECT doi.id AS delivery_order_items_id,
p.partnumber, p.assembly, doi.description, doi.qty,
doi.sellprice, doi.parts_id AS id, doi.unit, doi.discount, p.bin, p.notes AS partnotes,
doi.reqdate, doi.project_id, doi.serialnumber, doi.lastcost,
doi.ordnumber, doi.transdate, doi.cusordnumber, doi.longdescription,
doi.price_factor_id, doi.price_factor, doi.marge_price_factor,
pr.projectnumber,
pg.partsgroup
FROM delivery_order_items doi
JOIN parts p ON (doi.parts_id = p.id)
JOIN delivery_orders dord ON (doi.delivery_order_id = dord.id)
LEFT JOIN project pr ON (doi.project_id = pr.id)
LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id)
WHERE doi.delivery_order_id IN ($do_ids_placeholders)
ORDER BY doi.$oid{$myconfig->{dbdriver}}|;
$form->{form_details} = selectall_hashref_query($form, $dbh, $query, @do_ids);
if ($mode eq 'single') {
my $in_out = $form->{type} =~ /^sales/ ? 'out' : 'in';
$query =
qq|SELECT qty, unit, bin_id, warehouse_id, chargenumber
FROM delivery_order_items_stock
WHERE delivery_order_item_id = ?|;
FROM delivery_order_items_stock
WHERE delivery_order_item_id = ?|;
my $sth = prepare_query($form, $dbh, $query);
foreach my $doi (@{ $form->{form_details} }) {
......
}
$sth->finish();
} else {
# get last name used
$form->lastname_used($dbh, $myconfig, $form->{vc}) unless $form->{"$form->{vc}_id"};
}
Common::webdav_folder($form) if ($main::webdav);
$main::lxdebug->leave_sub();
return 1;
}
sub order_details {
bin/mozilla/do.pl
my $editing = $form->{id};
DO->retrieve();
DO->retrieve('vc' => $form->{vc},
'ids' => $form->{id});
$payment_id = $form->{payment_id} if ($form->{payment_id});
$language_id = $form->{language_id} if ($form->{language_id});
......
$form->{rowcount} = scalar @{ $form->{DO} };
my @columns = qw(
transdate
ids transdate
id donumber
ordnumber
name employee
......
$form->{"l_type"} = "Y";
map { $column_defs{$_}->{visible} = $form->{"l_${_}"} ? 1 : 0 } @columns;
$column_defs{ids}->{visible} = $allow_multiple_orders ? 'HTML' : 0;
$column_defs{ids}->{visible} = 'HTML';
$report->set_columns(%column_defs);
$report->set_column_order(@columns);
......
push @options, $locale->text('Not delivered');
}
$report->set_options('top_info_text' => join("\n", @options),
'output_format' => 'HTML',
'title' => $form->{title},
'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time),
$report->set_options('top_info_text' => join("\n", @options),
'raw_top_info_text' => $form->parse_html_template('do/orders_top'),
'raw_bottom_info_text' => $form->parse_html_template('do/orders_bottom'),
'output_format' => 'HTML',
'title' => $form->{title},
'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time),
);
$report->set_options_from_form();
......
my $edit_url = build_std_url('action=edit', 'type', 'vc');
my $edit_order_url = build_std_url('script=oe.pl', 'type=' . ($form->{type} eq 'sales_delivery_order' ? 'sales_order' : 'purchase_order'), 'action=edit');
my $idx = 1;
foreach $dord (@{ $form->{DO} }) {
$dord->{open} = $dord->{closed} ? $locale->text('No') : $locale->text('Yes');
$dord->{delivered} = $dord->{delivered} ? $locale->text('Yes') : $locale->text('No');
my $row = { map { $_ => { 'data' => $dord->{$_} } } @columns };
$row->{ids} = {
'raw_data' => $cgi->hidden('-name' => "trans_id_${idx}", '-value' => $dord->{id})
. $cgi->checkbox('-name' => "multi_id_${idx}", '-value' => 1, '-label' => ''),
'valign' => 'center',
'align' => 'center',
};
$row->{donumber}->{link} = $edit_url . "&id=" . E($dord->{id}) . "&callback=${callback}";
$row->{ordnumber}->{link} = $edit_order_url . "&id=" . E($dord->{oe_id}) . "&callback=${callback}";
$report->add_data($row);
$idx++;
}
$report->generate_with_headers();
......
$lxdebug->leave_sub();
}
sub invoice_multi {
$lxdebug->enter_sub();
check_do_access();
$auth->assert($form->{type} eq 'sales_delivery_order' ? 'invoice_edit' : 'vendor_invoice_edit');
my @do_ids = map { $form->{"trans_id_$_"} } grep { $form->{"multi_id_$_"} } (1..$form->{rowcount});
if (!scalar @do_ids) {
$form->show_generic_error($locale->text('You have not selected any delivery order.'), 'back_button' => 1);
}
map { delete $form->{$_} } grep { m/^(?:trans|multi)_id_\d+/ } keys %{ $form };
if (!DO->retrieve('vc' => $form->{vc}, 'ids' => \@do_ids)) {
$form->show_generic_error($form->{vc} eq 'customer' ?
$locale->text('You cannot create an invoice for delivery orders for different customers.') :
$locale->text('You cannot create an invoice for delivery orders from different vendors.'),
'back_button' => 1);
}
$form->{deliverydate} = $form->{transdate};
$form->{transdate} = $form->current_date(\%myconfig);
$form->{duedate} = $form->current_date(\%myconfig, $form->{invdate}, $form->{terms} * 1);
$form->{type} = "invoice";
$form->{closed} = 0;
$form->{defaultcurrency} = $form->get_default_currency(\%myconfig);
my $buysell;
if ($form->{type} eq 'purchase_delivery_order') {
$form->{title} = $locale->text('Add Vendor Invoice');
$form->{script} = 'ir.pl';
$script = "ir";
$buysell = 'sell';
} else {
$form->{title} = $locale->text('Add Sales Invoice');
$form->{script} = 'is.pl';
$script = "is";
$buysell = 'buy';
}
map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued);
$form->{rowcount} = 0;
foreach my $ref (@{ $form->{form_details} }) {
$form->{rowcount}++;
map { $form->{"${_}_$form->{rowcount}"} = $ref->{$_} } keys %{ $ref };
map { $form->{"${_}_$form->{rowcount}"} = $form->format_amount(\%myconfig, $ref->{$_}) } qw(qty sellprice discount lastcost);
}
delete $form->{form_details};
$locale = new Locale "$myconfig{countrycode}", "$script";
require "bin/mozilla/$form->{script}";
invoice_links();
prepare_invoice();
display_form();
$lxdebug->leave_sub();
}
sub save_as_new {
$lxdebug->enter_sub();
locale/de/all
'New assembly' => 'Neues Erzeugnis',
'New contact' => 'Neuer Ansprechpartner',
'New customer' => 'Neuer Kunde',
'New invoice' => 'Neue Rechnung',
'New part' => 'Neue Ware',
'New sales order' => 'Neuer Auftrag',
'New service' => 'Neue Dienstleistung',
......
'You can use the following strings in the long description and all translations. They will be replaced by their actual values by Lx-Office before they\'re output.' => 'Sie können im Langtext und allen ?bersetzungen die folgenden Variablen benutzen, die vor der Ausgabe von Lx-Office automatisch ersetzt werden:',
'You cannot continue before all required modules are installed.' => 'Sie können nicht fortfahren, bevor alle benötigten Pakete installiert sind.',
'You cannot continue until all unknown units have been mapped to known ones.' => 'Sie können nicht fortfahren, bis alle unbekannten Einheiten in neue Einheiten umgewandelt wurden.',
'You cannot create an invoice for delivery orders for different customers.' => 'Sie k?nnen keine Rechnung zu Lieferscheinen f?r verschiedene Kunden erstellen.',
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie k?nnen keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.',
'You did not enter a name!' => 'Sie haben keinen Namen eingegeben!',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'You have entered or selected the following shipping address for this customer:' => 'Sie haben die folgende Lieferadresse eingegeben oder ausgewählt:',
'You have not selected any delivery order.' => 'Sie haben keinen Lieferschein ausgew?hlt.',
'You have to chose a dimension unit and a service unit which will then be assigned to those entries.' => 'Sie müssen eine Maß- und eine Dienstleistungseinheit auswählen, die diesen Waren und Dienstleistungen, denen noch keine Einheit zugeordnet ist, zugeordnet wird.',
'You have to chose which unit to save for each of them.' => 'Sie müssen für jeden Artikel die neue Einheit auswählen.',
'You have to create at least one group, grant it access to Lx-Office\'s functions and assign users to it.' => 'Sie müssen mindestens eine Benutzergruppe anlegen, ihr Zugriff auf die verschiedenen Funktionsbereiche von Lx-Office gewähren und Benutzer dieser Gruppe zuordnen.',
locale/de/ca
'AP' => 'Einkauf',
'AR' => 'Verkauf',
'Account' => 'Konto',
'Accrual' => 'Bilanzierung',
'Advance turnover tax return' => 'Umsatzsteuervoranmeldung',
'All reports' => 'Alle Berichte (Kontenübersicht, Summen- u. Saldenliste, GuV, BWA, Bilanz, Projektbuchungen)',
'Apr' => 'Apr',
......
'Bcc' => 'Bcc',
'Bin List' => 'Lagerliste',
'Binding to the LDAP server as "#1" failed. Please check config/authentication.pl.' => 'Die Anmeldung am LDAP-Server als "#1" schlug fehl. Bitte überprüfen Sie die Angaben in config/authentication.pl.',
'Bis' => 'bis',
'CANCELED' => 'Storniert',
'CSV export -- options' => 'CSV-Export -- Optionen',
'Cc' => 'Cc',
......
'Create and edit vendor invoices' => 'Eingangsrechnungen erfassen und bearbeiten',
'Credit' => 'Haben',
'Credit Note' => 'Gutschrift',
'Customized Report' => 'Vorgew?hlte Zeitr?ume',
'DATEV Export' => 'DATEV-Export',
'DELETED' => 'Gel?scht',
'DUNNING STARTED' => 'Mahnprozess gestartet',
......
'Debit' => 'Soll',
'Dec' => 'Dez',
'December' => 'Dezember',
'Decimalplaces' => 'Dezimalstellen',
'Delivery Order' => 'Lieferschein',
'Department' => 'Abteilung',
'Dependency loop detected:' => 'Schleife in den Abhängigkeiten entdeckt:',
'Description' => 'Beschreibung',
'Directory' => 'Verzeichnis',
'ELSE' => 'Zusatz',
'EUR' => 'E/?-Rechnung',
'Error in database control file \'%s\': %s' => 'Fehler in Datenbankupgradekontrolldatei \'%s\': %s',
'Falsches Datumsformat!' => 'Falsches Datumsformat!',
'Feb' => 'Feb',
'February' => 'Februar',
'File' => 'Datei',
'Free report period' => 'Freier Zeitraum',
'From' => 'Von',
'General ledger and cash' => 'Finanzbuchhaltung und Zahlungsverkehr',
'Include in Report' => 'In Bericht aufnehmen',
'Invoice' => 'Rechnung',
'Jan' => 'Jan',
'January' => 'Januar',
......
'May ' => 'Mai',
'May set the BCC field when sending emails' => 'Beim Verschicken von Emails das Feld \'BCC\' setzen',
'Message' => 'Nachricht',
'Method' => 'Verfahren',
'Missing \'description\' field.' => 'Fehlendes Feld \'description\'.',
'Missing \'tag\' field.' => 'Fehlendes Feld \'tag\'.',
'Missing parameter #1 in call to sub #2.' => 'Fehlernder Parameter \'#1\' in Funktionsaufruf \'#2\'.',
'Monthly' => 'monatlich',
'More than one control file with the tag \'%s\' exist.' => 'Es gibt mehr als eine Kontrolldatei mit dem Tag \'%s\'.',
'No or an unknown authenticantion module specified in "config/authentication.pl".' => 'Es wurde kein oder ein unbekanntes Authentifizierungsmodul in "config/authentication.pl" angegeben.',
'Nov' => 'Nov',
......
'Proforma Invoice' => 'Proformarechnung',
'Project Number' => 'Projektnummer',
'Purchase Order' => 'Lieferantenauftrag',
'Quarter' => 'Quartal',
'Quarterly' => 'quartalsweise',
'Quotation' => 'Angebot',
'RFQ' => 'Anfrage',
'Receipt, payment, reconciliation' => 'Zahlungseingang, Zahlungsausgang, Kontenabgleich',
......
'Storno Invoice' => 'Stornorechnung',
'Storno Packing List' => 'Stornolieferschein',
'Subject' => 'Betreff',
'Subtotal' => 'Zwischensumme',
'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 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.',
'To' => 'An',
'To (email)' => 'An',
'Transactions, AR transactions, AP transactions' => 'Dialogbuchen, Debitorenrechnungen, Kreditorenrechnungen',
'Unknown dependency \'%s\'.' => 'Unbekannte Abhängigkeit \'%s\'.',
'View warehouse content' => 'Lagerbestand ansehen',
'Warehouse management' => 'Lagerverwaltung/Bestandsver?nderung',
'YYYY' => 'JJJJ',
'Year' => 'Jahr',
'Yearly' => 'j?hrlich',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'[email]' => '[email]',
'bin_list' => 'Lagerliste',
'button' => '?',
'chart_of_accounts' => 'kontenuebersicht',
'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.',
......
'request_quotation' => 'Angebotsanforderung',
'sales_order' => 'Kundenauftrag',
'sales_quotation' => 'Verkaufsangebot',
'wrongformat' => 'Falsches Format',
};
$self->{subs} = {
locale/de/do
'View warehouse content' => 'Lagerbestand ansehen',
'Warehouse management' => 'Lagerverwaltung/Bestandsver?nderung',
'Yes' => 'Ja',
'You cannot create an invoice for delivery orders for different customers.' => 'Sie k?nnen keine Rechnung zu Lieferscheinen f?r verschiedene Kunden erstellen.',
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie k?nnen keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'You have not selected any delivery order.' => 'Sie haben keinen Lieferschein ausgew?hlt.',
'Zipcode' => 'PLZ',
'[email]' => '[email]',
'bin_list' => 'Lagerliste',
......
'format_dates' => 'format_dates',
'get_basic_bin_wh_info' => 'get_basic_bin_wh_info',
'invoice' => 'invoice',
'invoice_multi' => 'invoice_multi',
'invoicetotal' => 'invoicetotal',
'item_selected' => 'item_selected',
'mark_as_paid_common' => 'mark_as_paid_common',
locale/de/login
'Workflow sales_quotation' => 'Workflow Angebot',
'Yes' => 'Ja',
'You are logged out!' => 'Auf Wiedersehen!',
'You cannot create an invoice for delivery orders for different customers.' => 'Sie k?nnen keine Rechnung zu Lieferscheinen f?r verschiedene Kunden erstellen.',
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie k?nnen keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.',
'You did not enter a name!' => 'Sie haben keinen Namen eingegeben!',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'You have not selected any delivery order.' => 'Sie haben keinen Lieferschein ausgew?hlt.',
'You must chose a user.' => 'Sie müssen einen Benutzer auswählen.',
'Zipcode' => 'PLZ',
'[email]' => '[email]',
......
'format_dates' => 'format_dates',
'get_basic_bin_wh_info' => 'get_basic_bin_wh_info',
'invoice' => 'invoice',
'invoice_multi' => 'invoice_multi',
'invoicetotal' => 'invoicetotal',
'item_selected' => 'item_selected',
'login' => 'login',
locale/de/oe
'Workflow sales_order' => 'Workflow Auftrag',
'Workflow sales_quotation' => 'Workflow Angebot',
'Yes' => 'Ja',
'You cannot create an invoice for delivery orders for different customers.' => 'Sie k?nnen keine Rechnung zu Lieferscheinen f?r verschiedene Kunden erstellen.',
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie k?nnen keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'You have not selected any delivery order.' => 'Sie haben keinen Lieferschein ausgew?hlt.',
'Zipcode' => 'PLZ',
'[email]' => '[email]',
'bin_list' => 'Lagerliste',
......
'format_dates' => 'format_dates',
'get_basic_bin_wh_info' => 'get_basic_bin_wh_info',
'invoice' => 'invoice',
'invoice_multi' => 'invoice_multi',
'invoicetotal' => 'invoicetotal',
'item_selected' => 'item_selected',
'mark_as_paid_common' => 'mark_as_paid_common',
locale/de/todo
'Workflow sales_order' => 'Workflow Auftrag',
'Workflow sales_quotation' => 'Workflow Angebot',
'Yes' => 'Ja',
'You cannot create an invoice for delivery orders for different customers.' => 'Sie k?nnen keine Rechnung zu Lieferscheinen f?r verschiedene Kunden erstellen.',
'You cannot create an invoice for delivery orders from different vendors.' => 'Sie k?nnen keine Rechnung aus Lieferscheinen von verschiedenen Lieferanten erstellen.',
'You do not have the permissions to access this function.' => 'Sie verfügen nicht über die notwendigen Rechte, um auf diese Funktion zuzugreifen.',
'You have not selected any delivery order.' => 'Sie haben keinen Lieferschein ausgew?hlt.',
'You must chose a user.' => 'Sie müssen einen Benutzer auswählen.',
'Zipcode' => 'PLZ',
'[email]' => '[email]',
......
'format_dates' => 'format_dates',
'get_basic_bin_wh_info' => 'get_basic_bin_wh_info',
'invoice' => 'invoice',
'invoice_multi' => 'invoice_multi',
'invoicetotal' => 'invoicetotal',
'item_selected' => 'item_selected',
'mark_as_paid_common' => 'mark_as_paid_common',
templates/webpages/do/orders_bottom_de.html
[% USE HTML %]
Neue Rechnung<br>
<input class="submit" type="submit" name="action" value="Weiter">
<input type="hidden" name="nextsub" value="invoice_multi">
<input type="hidden" name="type" value="[% HTML.escape(type) %]">
<input type="hidden" name="vc" value="[% HTML.escape(vc) %]">
<input type="hidden" name="callback" value="[% HTML.escape(callback) %]">
<input type="hidden" name="rowcount" value="[% HTML.escape(rowcount) %]">
</form>
templates/webpages/do/orders_bottom_master.html
[% USE HTML %]
<translate>New invoice</translate><br>
<input class="submit" type="submit" name="action" value="<translate>Continue</translate>">
<input type="hidden" name="nextsub" value="invoice_multi">
<input type="hidden" name="type" value="[% HTML.escape(type) %]">
<input type="hidden" name="vc" value="[% HTML.escape(vc) %]">
<input type="hidden" name="callback" value="[% HTML.escape(callback) %]">
<input type="hidden" name="rowcount" value="[% HTML.escape(rowcount) %]">
</form>
templates/webpages/do/orders_top_de.html
<form method="post" action="do.pl">
templates/webpages/do/orders_top_master.html
<form method="post" action="do.pl">

Auch abrufbar als: Unified diff