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 {
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();
'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.',
'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} = {
'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',
'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',
'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',
'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',
--- /dev/null
+[% 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>
--- /dev/null
+[% 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>
--- /dev/null
+<form method="post" action="do.pl">
--- /dev/null
+<form method="post" action="do.pl">