X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=f38ffe20a817ca48b6af5e9fcab301f693b1159c;hb=db68b6fd72b9f0d7d8be953746c0e7d6154f5eaf;hp=f935128082664954281ceb6d0feccc7d0a8eb651;hpb=2b89ec9756dc1d3525b6163fe4cf4f38af83f9d8;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index f93512808..f38ffe20a 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -1359,4 +1359,1020 @@ sub e_mail { $attachment_filename =~ s/ /_/g; my %umlaute = ( - " \ No newline at end of file + "ä" => "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->header; + + print qq| + + +
+ + + + + + + + + + + + + + + + + + +
$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| +

+ + + +
+ +
+ + + +|; + + $lxdebug->leave_sub(); +} + +sub send_email { + $lxdebug->enter_sub(); + + $old_form = new Form; + + map { $old_form->{$_} = $form->{$_} } keys %$form; + $old_form->{media} = $form->{oldmedia}; + + &print_form($old_form); + + $lxdebug->leave_sub(); +} + +sub print_options { + $lxdebug->enter_sub(); + $form->{sendmode} = "attachment"; + + $form->{"format"} = + $form->{"format"} ? $form->{"format"} : + $myconfig{"template_format"} ? $myconfig{"template_format"} : + "pdf"; + + $form->{"copies"} = + $form->{"copies"} ? $form->{"copies"} : + $myconfig{"copies"} ? $myconfig{"copies"} : + 3; + + $form->{"media"} = + $form->{"media"} ? $form->{"media"} : + $myconfig{"default_media"} ? $myconfig{"default_media"} : + "screen"; + + $form->{"printer_id"} = + defined($form->{"printer_id"}) ? $form->{"printer_id"} : + $myconfig{"default_printer_id"} ? $myconfig{"default_printer_id"} : + ""; + + $form->{PD}{ $form->{formname} } = "selected"; + $form->{DF}{ $form->{format} } = "selected"; + $form->{OP}{ $form->{media} } = "selected"; + $form->{SM}{ $form->{sendmode} } = "selected"; + + if ($form->{type} eq 'purchase_order') { + $type = qq| + |; + } + + if ($latex_templates) { + $format .= qq||; + } + + $format .= qq||; + + if ($latex_templates) { + $format .= qq||; + } + + if ($opendocument_templates) { + $format .= qq||; + } + $format .= qq||; + + if (scalar(keys (%{ $form->{languages} })) !=0) { + $language_select = qq| + |; + foreach $item (@{ $form->{printers} }) { + $selected = $item->{"id"} == $form->{"printer_id"} ? "selected" : ""; + $printer_select .= qq||; + } + } + + + + print qq| + + + + + +
+ + + |; + if (scalar(keys (%{ $form->{languages} })) !=0) { + print qq| + |; + } + print qq| + + |; + if (scalar(keys (%{ $form->{printers} })) !=0) { + print qq| + +|; + } + + if (scalar(keys (%{ $form->{printers} })) !=0 && $latex_templates && $form->{media} ne 'email') { + print qq| + +|; + } + + $form->{groupitems} = "checked" if $form->{groupitems}; + $form->{remove_draft} = "checked" if $form->{remove_draft}; + + print qq| + + |; + + print qq| + + | if (!$form->{id} && $form->{draft_id}); + print qq| + +
$type${language_select}$format$media$printer_select| . $locale->text('Copies') . qq| + {copies}>| . $locale->text('Group Items') . qq|{groupitems}>| . $locale->text('Remove Draft') . qq|{remove_draft}>
+
+ + +|; + + if ($form->{printed} =~ /$form->{formname}/) { + print qq| + +|; + } + + if ($form->{emailed} =~ /$form->{formname}/) { + print qq| + +|; + } + + if ($form->{queued} =~ /$form->{formname}/) { + print qq| + +|; + } + + print qq| + +
\|| . $locale->text('Printed') . qq|\|\|| . $locale->text('E-mailed') . qq|\|\|| . $locale->text('Queued') . qq|\|
+
+|; + + $lxdebug->leave_sub(); +} + +sub print { + $lxdebug->enter_sub(); + + # 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!')) + if ($form->{format} !~ /(postscript|pdf)/); + + $old_form = new Form; + 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(); +} + +sub print_form { + $lxdebug->enter_sub(); + my ($old_form) = @_; + + $inv = "inv"; + $due = "due"; + $numberfld = "invnumber"; + + $display_form = + ($form->{display_form}) ? $form->{display_form} : "display_form"; + + # $form->{"notes"} will be overridden by the customer's/vendor's "notes" field. So save it here. + $form->{ $form->{"formname"} . "notes" } = $form->{"notes"}; + + if ($form->{formname} eq "invoice") { + $form->{label} = $locale->text('Invoice'); + } + if ($form->{formname} eq "packing_list") { + + # this is from an invoice + $form->{label} = $locale->text('Packing List'); + } + if ($form->{formname} eq 'sales_order') { + $inv = "ord"; + $due = "req"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Sales Order'); + $numberfld = "sonumber"; + $order = 1; + } + + if (($form->{type} eq 'invoice') && ($form->{formname} eq 'proforma') ) { + $inv = "inv"; + $due = "due"; + $form->{"${inv}date"} = $form->{invdate}; + $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 + $inv = "ord"; + $due = "req"; + $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"; + $due = "req"; + $form->{"${inv}date"} = + ($form->{transdate}) ? $form->{transdate} : $form->{invdate}; + $form->{label} = $locale->text('Pick List'); + $order = 1 unless $form->{type} eq 'invoice'; + } + if ($form->{formname} eq 'purchase_order') { + $inv = "ord"; + $due = "req"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Purchase Order'); + $numberfld = "ponumber"; + $order = 1; + } + if ($form->{formname} eq 'bin_list') { + $inv = "ord"; + $due = "req"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Bin List'); + $order = 1; + } + if ($form->{formname} eq 'sales_quotation') { + $inv = "quo"; + $due = "req"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Quotation'); + $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"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Quotation'); + $numberfld = "rfqnumber"; + $order = 1; + } + + $form->isblank("email", $locale->text('E-mail address missing!')) + if ($form->{media} eq 'email'); + $form->isblank("${inv}date", + $locale->text($form->{label}) + . ": " + . $locale->text(' Date missing!')); + + # $locale->text('Invoice Number missing!') + # $locale->text('Invoice Date missing!') + # $locale->text('Packing List Number missing!') + # $locale->text('Packing List Date missing!') + # $locale->text('Order Number missing!') + # $locale->text('Order Date missing!') + # $locale->text('Quotation Number missing!') + # $locale->text('Quotation Date missing!') + + # assign number + $form->{what_done} = $form->{formname}; + if (!$form->{"${inv}number"} && !$form->{preview}) { + $form->{"${inv}number"} = $form->update_defaults(\%myconfig, $numberfld); + if ($form->{media} ne 'email') { + + # get pricegroups for parts + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + # build up html code for prices_$i + set_pricegroup($form->{rowcount}); + + $form->{rowcount}--; + + &{"$display_form"}; + # saving the history + if(!exists $form->{addition}) { + $form->{addition} = "PRINTED"; + $form->save_history($form->dbconnect(\%myconfig)); + } + # /saving the history + exit; + } + } + + &validate_items; + + # Save the email address given in the form because it should override the setting saved for the customer/vendor. + my ($saved_email, $saved_cc, $saved_bcc) = + ($form->{"email"}, $form->{"cc"}, $form->{"bcc"}); + + $language_saved = $form->{language_id}; + $payment_id_saved = $form->{payment_id}; + + &{"$form->{vc}_details"}(); + + $form->{language_id} = $language_saved; + $form->{payment_id} = $payment_id_saved; + + $form->{"email"} = $saved_email if ($saved_email); + $form->{"cc"} = $saved_cc if ($saved_cc); + $form->{"bcc"} = $saved_bcc if ($saved_bcc); + + my ($language_tc, $output_numberformat, $output_dateformat, $output_longdates); + if ($form->{"language_id"}) { + ($language_tc, $output_numberformat, $output_dateformat, $output_longdates) = + AM->get_language_details(\%myconfig, $form, $form->{language_id}); + } else { + $output_dateformat = $myconfig{"dateformat"}; + $output_numberformat = $myconfig{"numberformat"}; + $output_longdates = 1; + } + + ($form->{employee}) = split /--/, $form->{employee}; + + # create the form variables + if ($order) { + OE->order_details(\%myconfig, \%$form); + } else { + IS->invoice_details(\%myconfig, \%$form, $locale); + } + + if ($form->{shipto_id}) { + $form->get_shipto(\%myconfig); + } + + @a = qw(name street zipcode city country); + + $shipto = 1; + + # if there is no shipto fill it in from billto + foreach $item (@a) { + if ($form->{"shipto$item"}) { + $shipto = 0; + last; + } + } + + if ($shipto) { + if ( $form->{formname} eq 'purchase_order' + || $form->{formname} eq 'request_quotation') { + $form->{shiptoname} = $myconfig{company}; + $form->{shiptostreet} = $myconfig{address}; + } else { + map { $form->{"shipto$_"} = $form->{$_} } @a; + } + } + + $form->{notes} =~ s/^\s+//g; + + $form->{templates} = "$myconfig{templates}"; + + $form->{language} = $form->get_template_language(\%myconfig); + $form->{printer_code} = $form->get_printer_code(\%myconfig); + + if ($form->{language} ne "") { + map({ $form->{"unit"}->[$_] = + AM->translate_units($form, $form->{"language"}, + $form->{"unit"}->[$_], $form->{"qty"}->[$_]); } + (0..scalar(@{$form->{"unit"}}) - 1)); + $form->{language} = "_" . $form->{language}; + } + + # Format dates. + format_dates($output_dateformat, $output_longdates, + qw(invdate orddate quodate pldate duedate reqdate transdate + shippingdate deliverydate validitydate paymentdate + datepaid transdate_oe deliverydate_oe + employee_startdate employee_enddate + ), + grep({ /^datepaid_\d+$/ || + /^transdate_oe_\d+$/ || + /^deliverydate_oe_\d+$/ || + /^reqdate_\d+$/ || + /^deliverydate_\d+$/ || + /^transdate_\d+$/ + } keys(%{$form}))); + + reformat_numbers($output_numberformat, 2, + qw(invtotal ordtotal quototal subtotal linetotal + listprice sellprice netprice discount + tax taxbase), + grep({ /^linetotal_\d+$/ || + /^listprice_\d+$/ || + /^sellprice_\d+$/ || + /^netprice_\d+$/ || + /^taxbase_\d+$/ || + /^discount_\d+$/ || + /^tax_\d+$/ + } keys(%{$form}))); + + reformat_numbers($output_numberformat, undef, + qw(qty), + 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"; + if ($form->{format} eq 'postscript') { + $form->{postscript} = 1; + $form->{IN} =~ s/html$/tex/; + } elsif ($form->{"format"} =~ /pdf/) { + $form->{pdf} = 1; + 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} = "| $form->{printer_command} &>/dev/null"; + $form->{printed} .= " $form->{formname}"; + $form->{printed} =~ s/^ //; + } + $printed = $form->{printed}; + + if ($form->{media} eq 'email') { + $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}; + + if ($filename = $queued{ $form->{formname} }) { + $form->{queued} =~ s/$form->{formname} $filename//; + unlink "$spool/$filename"; + $filename =~ s/\..*$//g; + } else { + $filename = time; + $filename .= $$; + } + + $filename .= ($form->{postscript}) ? '.ps' : '.pdf'; + $form->{OUT} = ">$spool/$filename"; + + # add type + $form->{queued} .= " $form->{formname} $filename"; + + $form->{queued} =~ s/^ //; + } + $queued = $form->{queued}; + +# saving the history + if(!exists $form->{addition}) { + if($form->{media} =~ /printer/) { + $form->{addition} = "PRINTED"; + } + elsif($form->{media} =~ /email/) { + $form->{addition} = "MAILED"; + } + elsif($form->{media} =~ /queue/) { + $form->{addition} = "QUEUED"; + } + elsif($form->{media} =~ /screen/) { + $form->{addition} = "SCREENED"; + } + $form->save_history($form->dbconnect(\%myconfig)); + } + # /saving the history + + $form->parse_template(\%myconfig, $userspath); + + $form->{callback} = ""; + + if ($form->{media} eq 'email') { + $form->{message} = $locale->text('sent') unless $form->{message}; + } + $message = $form->{message}; + + # if we got back here restore the previous form + if ($form->{media} =~ /(printer|email|queue)/) { + + $form->update_status(\%myconfig) + if ($form->{media} eq 'queue' && $form->{id}); + + if ($old_form) { + + $old_form->{"${inv}number"} = $form->{"${inv}number"}; + + # restore and display form + map { $form->{$_} = $old_form->{$_} } keys %$old_form; + + $form->{queued} = $queued; + $form->{printed} = $printed; + $form->{emailed} = $emailed; + $form->{message} = $message; + + $form->{rowcount}--; + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } + qw(exchangerate creditlimit creditremaining); + + for $i (1 .. $form->{paidaccounts}) { + map { + $form->{"${_}_$i"} = + $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) + } qw(paid exchangerate); + } + + &{"$display_form"}; + exit; + } + + $msg = + ($form->{media} eq 'printer') + ? $locale->text('sent to printer') + : $locale->text('emailed to') . " $form->{email}"; + $form->redirect(qq|$form->{label} $form->{"${inv}number"} $msg|); + } + if ($form->{printing}) { + &{"$display_form"}; + exit; + } + + $lxdebug->leave_sub(); +} + +sub customer_details { + $lxdebug->enter_sub(); + IS->customer_details(\%myconfig, \%$form, @_); + $lxdebug->leave_sub(); +} + +sub vendor_details { + $lxdebug->enter_sub(); + + IR->vendor_details(\%myconfig, \%$form, @_); + + $lxdebug->leave_sub(); +} + +sub post_as_new { + $lxdebug->enter_sub(); + + $form->{postasnew} = 1; + map { delete $form->{$_} } qw(printed emailed queued); + + &post; + + $lxdebug->leave_sub(); +} + +sub ship_to { + $lxdebug->enter_sub(); + if ($form->{second_run}) { + $form->{print_and_post} = 0; + } + + $title = $form->{title}; + $form->{title} = $locale->text('Ship to'); + + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } + qw(exchangerate creditlimit creditremaining); + + my @shipto_vars = + qw(shiptoname shiptostreet shiptozipcode shiptocity shiptocountry + shiptocontact shiptophone shiptofax shiptoemail + shiptodepartment_1 shiptodepartment_2); + + my @addr_vars = + (qw(name department_1 department_2 street zipcode city country + contact email phone fax)); + + # get details for name + &{"$form->{vc}_details"}(@addr_vars); + + $number = + ($form->{vc} eq 'customer') + ? $locale->text('Customer Number') + : $locale->text('Vendor Number'); + + # get pricegroups for parts + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + # build up html code for prices_$i + set_pricegroup($form->{rowcount}); + + $nextsub = ($form->{display_form}) ? $form->{display_form} : "display_form"; + + $form->{rowcount}--; + + $form->header; + + print qq| + + +
{script}> + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| + . $locale->text('Billing Address') . qq|| + . $locale->text('Shipping Address') . qq|
$number$form->{"$form->{vc}number"}
| . $locale->text('Company Name') . qq|$form->{name}
| . $locale->text('Department') . qq|$form->{department_1}
 $form->{department_2}
| . $locale->text('Street') . qq|$form->{street}
| . $locale->text('Zipcode') . qq|$form->{zipcode}
| . $locale->text('City') . qq|$form->{city}
| . $locale->text('Country') . qq|$form->{country}
| . $locale->text('Contact') . qq|$form->{contact}
| . $locale->text('Phone') . qq|$form->{phone}
| . $locale->text('Fax') . qq|$form->{fax}
| . $locale->text('E-mail') . qq|$form->{email}
+
+ + +|; + + # delete shipto + map({ delete $form->{$_} } (@shipto_vars, qw(header))); + $form->{title} = $title; + + foreach $key (keys %$form) { + $form->{$key} =~ s/\"/"/g; + print qq|\n|; + } + + print qq| + +
+ +
+ +
+ + + +|; + + $lxdebug->leave_sub(); +} + +sub new_license { + $lxdebug->enter_sub(); + + my $row = shift; + + # change callback + $form->{old_callback} = $form->escape($form->{callback}, 1); + $form->{callback} = $form->escape("$form->{script}?action=display_form", 1); + $form->{old_callback} = $form->escape($form->{old_callback}, 1); + + # delete action + delete $form->{action}; + $customer = $form->{customer}; + map { $form->{"old_$_"} = $form->{"${_}_$row"} } qw(partnumber description); + + # save all other form variables in a previousform variable + $form->{row} = $row; + foreach $key (keys %$form) { + + # escape ampersands + $form->{$key} =~ s/&/%26/g; + $previousform .= qq|$key=$form->{$key}&|; + } + chop $previousform; + $previousform = $form->escape($previousform, 1); + + $form->{script} = "licenses.pl"; + + map { $form->{$_} = $form->{"old_$_"} } qw(partnumber description); + 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|; + $form->redirect; + + $lxdebug->leave_sub(); +} + +sub relink_accounts { + $lxdebug->enter_sub(); + + $form->{"taxaccounts"} =~ s/\s*$//; + $form->{"taxaccounts"} =~ s/^\s*//; + foreach my $accno (split(/\s*/, $form->{"taxaccounts"})) { + map({ delete($form->{"${accno}_${_}"}); } qw(rate description taxnumber)); + } + $form->{"taxaccounts"} = ""; + + for (my $i = 1; $i <= $form->{"rowcount"}; $i++) { + if ($form->{"id_$i"}) { + IC->retrieve_accounts(\%myconfig, $form, $form->{"id_$i"}, $i, 1); + } + } + + $lxdebug->leave_sub(); +} + +sub set_duedate { + $lxdebug->enter_sub(); + + $form->get_duedate(\%myconfig); + + my $q = new CGI; + $result = "$form->{duedate}"; + print $q->header(); + print $result; + $lxdebug->leave_sub(); + +} +