+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->{convert_from_do_ids} = join ' ', @do_ids;
+ $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();
+}
+