X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=de350c51345f7f3d711ea72af12225eefd85e36a;hb=8b5efb772c54921ce86998882177cf2f75d3d493;hp=8a892f1cf5b298fe7425df6d1994800bf1c13d8e;hpb=bdec34af6be9befc4b4a890f41954f45da788d94;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 8a892f1cf..de350c513 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -33,19 +33,20 @@ # ####################################################################### +use SL::Common; use SL::CT; use SL::IC; use CGI::Ajax; use CGI; -require "$form->{path}/common.pl"; +require "bin/mozilla/common.pl"; # any custom scripts for this one -if (-f "$form->{path}/custom_io.pl") { - eval { require "$form->{path}/custom_io.pl"; }; +if (-f "bin/mozilla/custom_io.pl") { + eval { require "bin/mozilla/custom_io.pl"; }; } -if (-f "$form->{path}/$form->{login}_io.pl") { - eval { require "$form->{path}/$form->{login}_io.pl"; }; +if (-f "bin/mozilla/$form->{login}_io.pl") { + eval { require "bin/mozilla/$form->{login}_io.pl"; }; } 1; @@ -91,6 +92,11 @@ sub display_row { $lxdebug->enter_sub(); my $numrows = shift; + my $is_sales = + (substr($form->{type}, 0, 6) eq "sales_") + || (($form->{type} eq "invoice") && ($form->{script} eq "is.pl")) + || ($form->{type} eq 'credit_note'); + if ($lizenzen && $form->{vc} eq "customer") { if ($form->{type} =~ /sales_order/) { @column_index = (runningnumber, partnumber, description, ship, qty); @@ -241,6 +247,9 @@ sub display_row { $delvar = 'reqdate'; } + $form->{marge_total} = 0; + $form->{sellprice_total} = 0; + $form->{lastcost_total} = 0; my %projectnumber_labels = (); my @projectnumber_values = (""); foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { @@ -300,6 +309,34 @@ sub display_row { $linetotal = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces); $linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2); + my $real_sellprice = $form->{"sellprice_$i"} - $discount; + + # marge calculations + my ($marge_font_start, $marge_font_end); + + $form->{"lastcost_$i"} *= 1; + + if ($real_sellprice && ($form->{"qty_$i"} * 1)) { + $form->{"marge_percent_$i"} = ($real_sellprice - $form->{"lastcost_$i"}) * 100 / $real_sellprice; + $myconfig{"marge_percent_warn"} = 15 unless (defined($myconfig{"marge_percent_warn"})); + + if ($form->{"id_$i"} && + ($form->{"marge_percent_$i"} < (1 * $myconfig{"marge_percent_warn"}))) { + $marge_font_start = ""; + $marge_font_end = ""; + } + + } else { + $form->{"marge_percent_$i"} = 0; + } + + my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1; + $form->{"marge_absolut_$i"} = ($real_sellprice - $form->{"lastcost_$i"}) * $form->{"qty_$i"} * $marge_adjust_credit_note; + $form->{"marge_total"} += $form->{"marge_absolut_$i"}; + $form->{"lastcost_total"} += $form->{"lastcost_$i"} * $form->{"qty_$i"}; + $form->{"sellprice_total"} += $real_sellprice * $form->{"qty_$i"}; + + map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent); # convert " to " map { $form->{"${_}_$i"} =~ s/\"/"/g } @@ -331,9 +368,10 @@ sub display_row { qq||; if ($form->{"formel_$i"}) { - $column_data{qty} .= qq|| . - $cgi->hidden("-name" => "formel_$i", "-value" => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"}). qq||; + $column_data{qty} .= qq|| + . $cgi->hidden("-name" => "formel_$i", "-value" => $form->{"formel_$i"}) . $cgi->hidden("-name" => "alu_$i", "-value" => $form->{"alu_$i"}); } + $column_data{qty} .= qq||; $column_data{ship} = qq||; + qq||; $column_data{sellprice} = - qq||; + qq||; } else { # for last row and report @@ -388,10 +426,10 @@ sub display_row { # for last row $column_data{sellprice_pg} = qq| |; - } - + } + $column_data{sellprice} = - qq||; @@ -439,7 +477,7 @@ sub display_row { "id_$i", "inventory_accno_$i", "bin_$i", "partsgroup_$i", "partnotes_$i", "income_accno_$i", "expense_accno_$i", "listprice_$i", "assembly_$i", "taxaccounts_$i", "ordnumber_$i", "transdate_$i", "cusordnumber_$i", - "longdescription_$i", "basefactor_$i")); + "longdescription_$i", "basefactor_$i", "marge_absolut_$i", "marge_percent_$i", "lastcost_$i")); ######################################## # Eintrag fuer Version 2.2.0 geaendert # @@ -486,15 +524,24 @@ sub display_row { ? 'deliverydate' : 'reqdate'; # invoice uses a different term for the same thing. print qq| - ${$reqdate_term}  + ${$reqdate_term}  |; } my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : ""; print qq| - |.$locale->text('Subtotal').qq|  + |.$locale->text('Subtotal').qq|  +|; + + if ($form->{"id_$i"} && $is_sales) { + print qq| + ${marge_font_start}| . $locale->text('Ertrag') . qq| $form->{"marge_absolut_$i"}  $form->{"marge_percent_$i"} % ${marge_font_end} +  | . $locale->text('LP') . qq| | . $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2) . qq| +  | . $locale->text('EK') . qq| | . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2); + } + + print qq| - |; ############## ENDE Neueintrag ################## @@ -511,6 +558,10 @@ sub display_row { |; + if (0 != ($form->{sellprice_total} * 1)) { + $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100; + } + $lxdebug->leave_sub(); } @@ -583,7 +634,7 @@ sub select_item { $colspan = $#column_index + 1; print qq| - +
@@ -646,12 +697,12 @@ sub select_item { my @new_fields = qw(bin listprice inventory_accno income_accno expense_accno unit weight - assembly taxaccounts partsgroup formel logdescription not_discountable - part_payment_id partnodes id); + assembly taxaccounts partsgroup formel longdescription not_discountable + part_payment_id partnotes id lastcost); push(@new_fields, "lizenzen") if ($lizenzen); - map({ print($cgi->hidden("-name" => "new_${_}_$i", - "-value" => $ref->{$_})); } @new_fields); + print join "\n", map { $cgi->hidden("-name" => "new_${_}_$i", "-value" => $ref->{$_}) } @new_fields; + print "\n"; } print qq| @@ -706,7 +757,7 @@ sub item_selected { map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(id partnumber description sellprice listprice inventory_accno income_accno expense_accno bin unit weight assembly taxaccounts - partsgroup formel longdescription not_discountable partnotes); + partsgroup formel longdescription not_discountable partnotes lastcost); if ($form->{"part_payment_id_$i"} ne "") { $form->{payment_id} = $form->{"part_payment_id_$i"}; } @@ -820,12 +871,11 @@ sub new_item { . $locale->text('Part') . qq|
 | . $locale->text('Service'); -print $cgi->hidden("-name" => "previousform", "-value" => $previousform); -map({ print($cgi->hidden("-name" => $_, "-value" => $form->{$_})); } - ("rowcount", "vc", "path", "login", "password")); - map({ print($cgi->hidden("-name" => $_, "-value" => $form->{"$__$i"})); } - ("partnumber", "description")); -print $cgi->hidden("-name" => "taxaccount2", "-value" => $form->{taxaccounts}); + + print $cgi->hidden("-name" => "previousform", "-value" => $previousform); + map { print $cgi->hidden("-name" => $_, "-value" => $form->{$_}); } qw(rowcount vc login password); + map { print $cgi->hidden("-name" => $_, "-value" => $form->{"${_}_$i"}); } qw(partnumber description unit sellprice); + print $cgi->hidden("-name" => "taxaccount2", "-value" => $form->{taxaccounts}); print qq| @@ -854,7 +904,7 @@ sub display_form { # if we have a display_form if ($form->{display_form}) { - &{"$form->{display_form}"}; + call_sub($form->{"display_form"}); exit; } @@ -946,7 +996,7 @@ sub check_form { my @a = (); my $count = 0; my @flds = ( - qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor) + qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor marge_absolut marge_percent lastcost ) ); @@ -1018,6 +1068,9 @@ sub check_form { $form->redo_rows(\@flds, \@a, $count, $form->{makemodel_rows}); $form->{makemodel_rows} = $count; + } elsif ($form->{item} eq 'service') { + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(listprice sellprice lastcost); + } else { # this section applies to invoices and orders @@ -1129,6 +1182,9 @@ sub order { } $form->{ordnumber} = $form->{invnumber}; + $form->{old_employee_id} = $form->{employee_id}; + $form->{old_salesman_id} = $form->{salesman_id}; + map { delete $form->{$_} } qw(id printed emailed queued); if ($form->{script} eq 'ir.pl' || $form->{type} eq 'request_quotation') { $form->{title} = $locale->text('Add Purchase Order'); @@ -1150,7 +1206,7 @@ sub order { $form->{cp_id} *= 1; - require "$form->{path}/$form->{script}"; + require "bin/mozilla/$form->{script}"; my $script = $form->{"script"}; $script =~ s|.*/||; $script =~ s|.pl$||; @@ -1214,7 +1270,7 @@ sub quotation { $form->{rowcount}--; - require "$form->{path}/$form->{script}"; + require "bin/mozilla/$form->{script}"; map { $form->{"select$_"} = "" } ($form->{vc}, currency); @@ -1256,166 +1312,35 @@ sub edit_e_mail { $form->{print_and_post} = 0; $form->{resubmit} = 0; } - if ($myconfig{role} eq 'admin') { - $bcc = qq| - - | . $locale->text('Bcc') . qq| - - -|; - } - if ($form->{formname} =~ /(pick|packing|bin)_list/) { - $form->{email} = $form->{shiptoemail} if $form->{shiptoemail}; - } + $form->{email} = $form->{shiptoemail} if $form->{shiptoemail} && $form->{formname} =~ /(pick|packing|bin)_list/; if ($form->{"cp_id"} && !$form->{"email"}) { CT->get_contact(\%myconfig, $form); $form->{"email"} = $form->{"cp_email"}; } - $name = $form->{ $form->{vc} }; - $name =~ s/--.*//g; - $title = $locale->text('E-mail') . " $name"; + $title = $locale->text('E-mail') . " " . $form->get_formname_translation(); $form->{oldmedia} = $form->{media}; $form->{media} = "email"; - my %formname_translations = - ( - "bin_list" => $locale->text('Bin List'), - "credit_note" => $locale->text('Credit Note'), - "invoice" => $locale->text('Invoice'), - "packing_list" => $locale->text('Packing List'), - "pick_list" => $locale->text('Pick List'), - "proforma" => $locale->text('Proforma Invoice'), - "purchase_order" => $locale->text('Purchase Order'), - "request_quotation" => $locale->text('RFQ'), - "sales_order" => $locale->text('Confirmation'), - "sales_quotation" => $locale->text('Quotation'), - "storno_invoice" => $locale->text('Storno Invoice'), - "storno_packing_list" => $locale->text('Storno Packing List'), - ); - - my $attachment_filename = $formname_translations{$form->{"formname"}}; - my $prefix; + my $attachment_filename = $form->generate_attachment_filename(); - if (grep({ $form->{"type"} eq $_ } qw(invoice credit_note))) { - $prefix = "inv"; - } elsif ($form->{"type"} =~ /_quotation$/) { - $prefix = "quo"; - } else { - $prefix = "ord"; - } - - if ($attachment_filename && $form->{"${prefix}number"}) { - $attachment_filename .= "_" . $form->{"${prefix}number"} . - ($form->{"format"} =~ /pdf/i ? ".pdf" : - $form->{"format"} =~ /postscript/i ? ".ps" : - $form->{"format"} =~ /opendocument/i ? ".odt" : - $form->{"format"} =~ /html/i ? ".html" : ""); - $attachment_filename =~ s/ /_/g; - my %umlaute = - ( - "ä" => "ae", "ö" => "oe", "ü" => "ue", - "Ä" => "Ae", "Ö" => "Oe", "Ü" => "Ue", - "ß" => "ss" - ); - map({ $attachment_filename =~ s/$_/$umlaute{$_}/g; } keys(%umlaute)); - } else { - $attachment_filename = ""; - } - - if ($form->{"email"}) { - $form->{"fokus"} = "Form.subject"; - } else { - $form->{"fokus"} = "Form.email"; - } + $form->{"fokus"} = $form->{"email"} ? "Form.subject" : "Form.email"; $form->header; - print qq| - + my (@dont_hide_key_list, %dont_hide_key, @hidden_keys); + @dont_hide_key_list = qw(action email cc bcc subject message formname sendmode format header override); + @dont_hide_key{@dont_hide_key_list} = (1) x @dont_hide_key_list; + @hidden_keys = grep { !$dont_hide_key{$_} } grep { !ref $form->{$_} } keys %$form; - - - - - - - - - - - - - - - - - - - -
$title
- - - - - - - - - - $bcc - - - - - - - -
| . $locale->text('To') . qq|
| . $locale->text('Cc') . qq|
| . $locale->text('Subject') . qq|
| . $locale->text('Attachment name') . - qq|
-
- - - - - - - -
| . $locale->text('Message') . qq|
-
-|; - - &print_options; - - map { delete $form->{$_} } - qw(action email cc bcc subject message formname sendmode format header override); - - # save all other variables - foreach $key (keys %$form) { - $form->{$key} =~ s/\"/"/g; - print qq|\n|; - } - - print qq| -

- - - -
- -
- - - -|; + print $form->parse_html_template('generic/edit_email', + { title => $title, + a_filename => $attachment_filename, + _print_options_ => print_options({ 'inline' => 1 }), + HIDDEN => [ map +{ name => $_, value => $form->{$_} }, @hidden_keys ], + SHOW_BCC => $myconfig{role} eq 'admin' }); $lxdebug->leave_sub(); } @@ -1425,10 +1350,12 @@ sub send_email { my $callback = $form->{script} . "?action=edit"; map({ $callback .= "\&${_}=" . E($form->{$_}); } - qw(login password path type id)); + qw(login password type id)); print_form("return"); + Common->save_email_status(\%myconfig, $form); + $form->{callback} = $callback; $form->redirect(); @@ -1445,7 +1372,11 @@ sub send_email { # # the inline options is untested, but intended to be used later in metatemplating sub print_options { - $lxdebug->enter_sub() and my ($inline) = @_; + $lxdebug->enter_sub(); + + my ($options) = @_; + + $options ||= { }; # names 3 parameters and returns a hashref, for use in templates sub opthash { +{ value => shift, selected => shift, oname => shift } } @@ -1498,43 +1429,50 @@ sub print_options { push @MEDIA, grep $_, opthash("screen", $form->{OP}{screen}, $locale->text('Screen')), - (scalar keys %{ $form->{printers} } && $latex_templates) ? + (scalar @{ $form->{printers} } && $latex_templates) ? opthash("printer", $form->{OP}{printer}, $locale->text('Printer')) : undef, - ($latex_templates) ? + ($latex_templates && !$options->{no_queue}) ? opthash("queue", $form->{OP}{queue}, $locale->text('Queue')) : undef if ($form->{media} ne 'email'); push @FORMAT, grep $_, - ($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin)) ? + ($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin) + && !$options->{no_opendocument_pdf}) ? opthash("opendocument_pdf", $form->{DF}{"opendocument_pdf"}, $locale->text("PDF (OpenDocument/OASIS)")) : undef, - ($latex_templates) ? ( - opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')), - opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) - ) : undef, - opthash("html", $form->{DF}{html}, "HTML"), - ($opendocument_templates) ? + ($latex_templates) ? + opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')) : undef, + ($latex_templates && !$options->{no_postscript}) ? + opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) : undef, + (!$options->{no_html}) ? + opthash("html", $form->{DF}{html}, "HTML") : undef, + ($opendocument_templates && !$options->{no_opendocument}) ? opthash("opendocument", $form->{DF}{opendocument}, $locale->text("OpenDocument/OASIS")) : undef; push @LANGUAGE_ID, - map { opthash($_->{id}, ($_->{id} eq $form->{language} ? 'selected' : ''), $_->{description}) } +{}, @{ $form->{languages} } + map { opthash($_->{id}, ($_->{id} eq $form->{language_id} ? 'selected' : ''), $_->{description}) } +{}, @{ $form->{languages} } if (ref $form->{languages} eq 'ARRAY'); push @PRINTER_ID, map { opthash($_->{id}, ($_->{id} eq $form->{printer_id} ? 'selected' : ''), $_->{printer_description}) } +{}, @{ $form->{printers} } - if (ref $form->{printers} eq 'ARRAY'); + if ((ref $form->{printers} eq 'ARRAY') && scalar @{ $form->{printers } }); @SELECTS = map { sname => lc $_, DATA => \@$_, show => scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID); + my %dont_display_groupitems = ( + 'dunning' => 1, + ); + %template_vars = ( - display_copies => scalar keys %{ $form->{printers} } && $latex_templates && $form->{media} ne 'email', + display_copies => scalar @{ $form->{printers} } && $latex_templates && $form->{media} ne 'email', display_remove_draft => (!$form->{id} && $form->{draft_id}), + display_groupitems => !$dont_display_groupitems{$form->{type}}, groupitems_checked => $form->{groupitems} ? "checked" : '', remove_draft_checked => $form->{remove_draft} ? "checked" : '' ); my $print_options = $form->parse_html_template("generic/print_options", { SELECTS => \@SELECTS, %template_vars } ); - if ($inline) { + if ($options->{inline}) { $lxdebug->leave_sub() and return $print_options; } else { print $print_options; $lxdebug->leave_sub(); @@ -1544,6 +1482,12 @@ sub print_options { sub print { $lxdebug->enter_sub(); + if ($form->{print_nextsub}) { + call_sub($form->{print_nextsub}); + $lxdebug->leave_sub(); + return; + } + # if this goes to the printer pass through if ($form->{media} eq 'printer' || $form->{media} eq 'queue') { $form->error($locale->text('Select postscript or PDF!')) @@ -1596,7 +1540,7 @@ sub print_form { $inv = "ord"; $due = "req"; $form->{"${inv}date"} = $form->{transdate}; - $form->{label} = $locale->text('Sales Order'); + $form->{label} = $locale->text('Confirmation'); $numberfld = "sonumber"; $order = 1; } @@ -1678,7 +1622,7 @@ sub print_form { $inv = "quo"; $due = "req"; $form->{"${inv}date"} = $form->{transdate}; - $form->{label} = $locale->text('Quotation'); + $form->{label} = $locale->text('RFQ'); $numberfld = "rfqnumber"; $order = 1; } @@ -1713,9 +1657,10 @@ sub print_form { $form->{rowcount}--; - &{"$display_form"}; + call_sub($display_form); # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "PRINTED"; $form->save_history($form->dbconnect(\%myconfig)); } @@ -1735,7 +1680,7 @@ sub print_form { $salesman_id_saved = $form->{salesman_id}; $cp_id_saved = $form->{cp_id}; - &{"$form->{vc}_details"}(); + call_sub("$form->{vc}_details"); $form->{language_id} = $language_saved; $form->{payment_id} = $payment_id_saved; @@ -1802,8 +1747,17 @@ sub print_form { $form->{templates} = "$myconfig{templates}"; + delete $form->{printer_command}; + $form->{language} = $form->get_template_language(\%myconfig); - $form->{printer_code} = $form->get_printer_code(\%myconfig); + + my $printer_code; + if ($form->{media} ne 'email') { + $printer_code = $form->get_printer_code(\%myconfig); + if ($printer_code ne "") { + $printer_code = "_" . $printer_code; + } + } if ($form->{language} ne "") { map({ $form->{"unit"}->[$_] = @@ -1831,13 +1785,16 @@ sub print_form { reformat_numbers($output_numberformat, 2, qw(invtotal ordtotal quototal subtotal linetotal listprice sellprice netprice discount - tax taxbase), + tax taxbase total paid), grep({ /^linetotal_\d+$/ || /^listprice_\d+$/ || /^sellprice_\d+$/ || /^netprice_\d+$/ || /^taxbase_\d+$/ || /^discount_\d+$/ || + /^paid_\d+$/ || + /^subtotal_\d+$/ || + /^total_\d+$/ || /^tax_\d+$/ } keys(%{$form}))); @@ -1846,11 +1803,7 @@ sub print_form { grep({ /^qty_\d+$/ } keys(%{$form}))); - if ($form->{printer_code} ne "") { - $form->{printer_code} = "_" . $form->{printer_code}; - } - - $form->{IN} = "$form->{formname}$form->{language}$form->{printer_code}.html"; + $form->{IN} = "$form->{formname}$form->{language}${printer_code}.html"; if ($form->{format} eq 'postscript') { $form->{postscript} = 1; $form->{IN} =~ s/html$/tex/; @@ -1866,6 +1819,8 @@ sub print_form { $form->{"IN"} =~ s/html$/odt/; } + delete $form->{OUT}; + if ($form->{media} eq 'printer') { $form->{OUT} = "| $form->{printer_command} &>/dev/null"; $form->{printed} .= " $form->{formname}"; @@ -1877,15 +1832,13 @@ sub print_form { $form->{subject} = qq|$form->{label} $form->{"${inv}number"}| unless $form->{subject}; - $form->{OUT} = "$sendmail"; - $form->{emailed} .= " $form->{formname}"; $form->{emailed} =~ s/^ //; } $emailed = $form->{emailed}; if ($form->{media} eq 'queue') { - %queued = split / /, $form->{queued}; + %queued = map { s|.*/|| } split / /, $form->{queued}; if ($filename = $queued{ $form->{formname} }) { $form->{queued} =~ s/$form->{formname} $filename//; @@ -1908,6 +1861,7 @@ sub print_form { # saving the history if(!exists $form->{addition}) { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; if($form->{media} =~ /printer/) { $form->{addition} = "PRINTED"; } @@ -1964,7 +1918,7 @@ sub print_form { } qw(paid exchangerate); } - &{"$display_form"}; + call_sub($display_form); exit; } @@ -1975,7 +1929,7 @@ sub print_form { $form->redirect(qq|$form->{label} $form->{"${inv}number"} $msg|); } if ($form->{printing}) { - &{"$display_form"}; + call_sub($display_form); exit; } @@ -2029,7 +1983,7 @@ sub ship_to { contact email phone fax)); # get details for name - &{"$form->{vc}_details"}(@addr_vars); + call_sub("$form->{vc}_details", @addr_vars); $number = ($form->{vc} eq 'customer') @@ -2189,7 +2143,7 @@ sub new_license { map { $form->{$_} = $form->escape($form->{$_}, 1) } qw(partnumber description); $form->{callback} = - qq|$form->{script}?login=$form->{login}&path=$form->{path}&password=$form->{password}&action=add&vc=$form->{db}&$form->{db}_id=$form->{id}&$form->{db}=$name&type=$form->{type}&customer=$customer&partnumber=$form->{partnumber}&description=$form->{description}&previousform="$previousform"&initial=1|; + qq|$form->{script}?login=$form->{login}&password=$form->{password}&action=add&vc=$form->{db}&$form->{db}_id=$form->{id}&$form->{db}=$name&type=$form->{type}&customer=$customer&partnumber=$form->{partnumber}&description=$form->{description}&previousform="$previousform"&initial=1|; $form->redirect; $lxdebug->leave_sub();