- $type
- $language
+ $type |;
+ if (scalar(keys (%{ $form->{languages} })) !=0) {
+ print qq|
+ ${language_select} |;
+ }
+ print qq|
$format
- $media
+ $media |;
+ if (scalar(keys (%{ $form->{printers} })) !=0) {
+ print qq|
+ $printer_select
|;
+ }
- if ($myconfig{printer} && $latex && $form->{media} ne 'email') {
+ if (scalar(keys (%{ $form->{printers} })) !=0 && $latex_templates && $form->{media} ne 'email') {
print qq|
| . $locale->text('Copies') . qq|
{copies}>
@@ -1413,9 +1568,6 @@ sub print_options {
sub print {
$lxdebug->enter_sub();
- if ($form->{second_run}) {
- $form->{print_and_post} = 0;
- }
# if this goes to the printer pass through
if ($form->{media} eq 'printer' || $form->{media} eq 'queue') {
@@ -1426,6 +1578,18 @@ sub print {
map { $old_form->{$_} = $form->{$_} } keys %$form;
}
+ if (!$form->{id} || (($form->{formname} eq "proforma") && !$form->{proforma} && (($form->{type} =~ /_order$/) || ($form->{type} =~ /_quotation$/)))) {
+ if ($form->{formname} eq "proforma") {
+ $form->{proforma} = 1;
+ }
+ $form->{print_and_save} = 1;
+ my $formname = $form->{formname};
+ &save();
+ $form->{formname} = $formname;
+ &edit();
+ exit;
+ }
+
&print_form($old_form);
$lxdebug->leave_sub();
@@ -1453,7 +1617,7 @@ sub print_form {
# this is from an invoice
$form->{label} = $locale->text('Packing List');
}
- if ($form->{formname} eq 'sales_order') {
+ if (($form->{formname} eq 'sales_order') || ($form->{formname} eq 'agb') || ($form->{formname} eq 'bunker_receipt')) {
$inv = "ord";
$due = "req";
$form->{"${inv}date"} = $form->{transdate};
@@ -1461,6 +1625,28 @@ sub print_form {
$numberfld = "sonumber";
$order = 1;
}
+
+ if (($form->{type} eq 'invoice') && ($form->{formname} eq 'proforma') ) {
+ $inv = "inv";
+ $due = "due";
+ $form->{"${inv}date"} = $form->{transdate};
+ $form->{"invdate"} = $form->{transdate};
+ $form->{label} = $locale->text('Proforma Invoice');
+ $numberfld = "sonumber";
+ $order = 0;
+ }
+
+ if (($form->{type} eq 'sales_order') && ($form->{formname} eq 'proforma') ) {
+ $inv = "inv";
+ $due = "due";
+ $form->{"${inv}date"} = $form->{transdate};
+ $form->{"invdate"} = $form->{transdate};
+ $form->{invnumber} = $form->{ordnumber};
+ $form->{label} = $locale->text('Proforma Invoice');
+ $numberfld = "sonumber";
+ $order = 1;
+ }
+
if ($form->{formname} eq 'packing_list' && $form->{type} ne 'invoice') {
# we use the same packing list as from an invoice
@@ -1469,6 +1655,8 @@ sub print_form {
$form->{invdate} = $form->{"${inv}date"} = $form->{transdate};
$form->{label} = $locale->text('Packing List');
$order = 1;
+ # set invnumber for template packing_list
+ $form->{invnumber} = $form->{ordnumber};
}
if ($form->{formname} eq 'pick_list') {
$inv = "ord";
@@ -1501,6 +1689,17 @@ sub print_form {
$numberfld = "sqnumber";
$order = 1;
}
+
+ if (($form->{type} eq 'sales_quotation') && ($form->{formname} eq 'proforma') ) {
+ $inv = "quo";
+ $due = "req";
+ $form->{"${inv}date"} = $form->{transdate};
+ $form->{"invdate"} = $form->{transdate};
+ $form->{label} = $locale->text('Proforma Invoice');
+ $numberfld = "sqnumber";
+ $order = 1;
+ }
+
if ($form->{formname} eq 'request_quotation') {
$inv = "quo";
$due = "req";
@@ -1548,35 +1747,19 @@ sub print_form {
my ($saved_email, $saved_cc, $saved_bcc) =
($form->{"email"}, $form->{"cc"}, $form->{"bcc"});
- $language = $form->{language};
+ $language_saved = $form->{language_id};
&{"$form->{vc}_details"};
- $form->{language} = $language;
+ $form->{language_id} = $language_saved;
$form->{"email"} = $saved_email if ($saved_email);
$form->{"cc"} = $saved_cc if ($saved_cc);
$form->{"bcc"} = $saved_bcc if ($saved_bcc);
- @a = ();
- foreach $i (1 .. $form->{rowcount}) {
- push @a,
- ("partnumber_$i", "description_$i",
- "partsgroup_$i", "serialnumber_$i",
- "bin_$i", "unit_$i",
- "transdate_$i", "ordnumber_$i");
- }
- map { push @a, "${_}_description" } split / /, $form->{taxaccounts};
-
- $ARAP = ($form->{vc} eq 'customer') ? "AR" : "AP";
- push @a, $ARAP;
-
# format payment dates
for $i (1 .. $form->{paidaccounts} - 1) {
$form->{"datepaid_$i"} = $locale->date(\%myconfig, $form->{"datepaid_$i"});
- push @a, "${ARAP}_paid_$i", "source_$i", "memo_$i";
}
- $form->format_string(@a);
-
($form->{employee}) = split /--/, $form->{employee};
($form->{warehouse}, $form->{warehouse_id}) = split /--/, $form->{warehouse};
@@ -1587,8 +1770,20 @@ sub print_form {
IS->invoice_details(\%myconfig, \%$form, $locale);
}
+ # format global dates
map { $form->{$_} = $locale->date(\%myconfig, $form->{$_}, 1) }
- ("${inv}date", "${due}date", "shippingdate");
+ ("${inv}date", "${due}date", "shippingdate", "deliverydate");
+
+ # format item dates
+ for my $field (qw(transdate_oe deliverydate_oe)) {
+ map {
+ $form->{$field}[$_] = $locale->date(\%myconfig, $form->{$field}[$_], 1);
+ } 0 .. $#{ $form->{$field} };
+ }
+
+ if ($form->{shipto_id}) {
+ $form->get_shipto(\%myconfig);
+ }
@a = qw(name street zipcode city country);
@@ -1614,31 +1809,37 @@ sub print_form {
$form->{notes} =~ s/^\s+//g;
- # some of the stuff could have umlauts so we translate them
- push @a,
- qw(shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptoemail shippingpoint shipvia company address signature employee contact department_1 department_2);
-
- push @a, ("${inv}date", "${due}date", email, cc, bcc);
+ $form->{templates} = "$myconfig{templates}";
- $form->format_string(@a);
+ $form->{language} = $form->get_template_language(\%myconfig);
+ $form->{printer_code} = $form->get_printer_code(\%myconfig);
- $form->{templates} = "$myconfig{templates}";
if ($form->{language} ne "") {
$form->{language} = "_" . $form->{language};
}
- $form->{IN} = "$form->{formname}$form->{language}.html";
+ if ($form->{printer_code} ne "") {
+ $form->{printer_code} = "_" . $form->{printer_code};
+ }
+
+ $form->{IN} = "$form->{formname}$form->{language}$form->{printer_code}.html";
if ($form->{format} eq 'postscript') {
$form->{postscript} = 1;
$form->{IN} =~ s/html$/tex/;
- }
- if ($form->{format} eq 'pdf') {
+ } elsif ($form->{"format"} =~ /pdf/) {
$form->{pdf} = 1;
- $form->{IN} =~ s/html$/tex/;
+ if ($form->{"format"} =~ /opendocument/) {
+ $form->{IN} =~ s/html$/odt/;
+ } else {
+ $form->{IN} =~ s/html$/tex/;
+ }
+ } elsif ($form->{"format"} =~ /opendocument/) {
+ $form->{"opendocument"} = 1;
+ $form->{"IN"} =~ s/html$/odt/;
}
if ($form->{media} eq 'printer') {
- $form->{OUT} = "| $myconfig{printer}";
+ $form->{OUT} = "| $form->{printer_command} &>/dev/null";
$form->{printed} .= " $form->{formname}";
$form->{printed} =~ s/^ //;
}
@@ -1724,8 +1925,10 @@ sub print_form {
? $locale->text('sent to printer')
: $locale->text('emailed to') . " $form->{email}";
$form->redirect(qq|$form->{label} $form->{"${inv}number"} $msg|);
- } else {
- &{"$display_form"};
+ }
+ if ($form->{printing}) {
+ &{"$display_form"};
+ exit;
}
$lxdebug->leave_sub();