X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FCT.pm;h=e6a14e3cab016639b76778fa37d6687b93773e87;hb=c692dae18a650bc62c89ca658603d0e0ab2f9a86;hp=9b2b79f13886798e5ef75de57b7e18c934d50c0c;hpb=d744e4f26701cc7b07bfd822a6a7af690d94c565;p=kivitendo-erp.git diff --git a/SL/CT.pm b/SL/CT.pm index 9b2b79f13..e6a14e3ca 100644 --- a/SL/CT.pm +++ b/SL/CT.pm @@ -45,6 +45,8 @@ use SL::DBUtils; use SL::FU; use SL::Notes; +use strict; + sub get_tuple { $main::lxdebug->enter_sub(); @@ -694,8 +696,10 @@ sub search { my @values; my %allowed_sort_columns = - map({ $_, 1 } qw(id customernumber vendornumber name contact phone fax email - taxnumber business invnumber ordnumber quonumber)); + map { $_, 1 } qw( + id customernumber vendornumber name contact phone fax email street + taxnumber business invnumber ordnumber quonumber + ); my $sortorder = $form->{sort} && $allowed_sort_columns{$form->{sort}} ? $form->{sort} : "name"; $form->{sort} = $sortorder; my $sortdir = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC'; @@ -939,7 +943,7 @@ sub get_delivery { qq|SELECT s.shiptoname, i.qty $qty_sign, | . qq| ${arap}.id, ${arap}.transdate, ${arap}.invnumber, ${arap}.ordnumber, | . qq| i.description, i.unit, i.sellprice, | . - qq| oe.id AS oe_id | . + qq| oe.id AS oe_id, invoice | . qq|FROM $arap | . qq|LEFT JOIN shipto s ON | . ($arap eq "ar" @@ -1069,7 +1073,7 @@ sub get_bank_info { my $table = $params{vc} eq 'customer' ? 'customer' : 'vendor'; my @ids = ref $params{id} eq 'ARRAY' ? @{ $params{id} } : ($params{id}); - my $placeholders = ('?') x scalar @ids; + my $placeholders = join ", ", ('?') x scalar @ids; my $query = qq|SELECT id, name, account_number, bank, bank_code, iban, bic FROM ${table} WHERE id IN (${placeholders})|; @@ -1087,4 +1091,80 @@ sub get_bank_info { return $result; } +sub parse_excel_file { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form) = @_; + my $locale = $main::locale; + + $form->{formname} = 'sales_quotation'; + $form->{type} = 'sales_quotation'; + $form->{format} = 'excel'; + $form->{media} = 'screen'; + $form->{quonumber} = 1; + + + # $form->{"notes"} will be overridden by the customer's/vendor's "notes" field. So save it here. + $form->{ $form->{"formname"} . "notes" } = $form->{"notes"}; + + my $inv = "quo"; + my $due = "req"; + $form->{"${inv}date"} = $form->{transdate}; + $form->{label} = $locale->text('Quotation'); + my $numberfld = "sqnumber"; + my $order = 1; + + # assign number + $form->{what_done} = $form->{formname}; + + map({ delete($form->{$_}); } grep(/^cp_/, keys(%{ $form }))); + + my $output_dateformat = $myconfig->{"dateformat"}; + my $output_numberformat = $myconfig->{"numberformat"}; + my $output_longdates = 1; + + # map login user variables + map { $form->{"login_$_"} = $myconfig->{$_} } ("name", "email", "fax", "tel", "company"); + + # 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); + } + + $form->{notes} =~ s/^\s+//g; + + $form->{templates} = $myconfig->{templates}; + + delete $form->{printer_command}; + + $form->get_employee_info($myconfig); + + my ($cvar_date_fields, $cvar_number_fields) = CVar->get_field_format_list('module' => 'CT', 'prefix' => 'vc_'); + + if (scalar @{ $cvar_date_fields }) { + format_dates($output_dateformat, $output_longdates, @{ $cvar_date_fields }); + } + + while (my ($precision, $field_list) = each %{ $cvar_number_fields }) { + reformat_numbers($output_numberformat, $precision, @{ $field_list }); + } + + $form->{excel} = 1; + my $extension = 'xls'; + + $form->{IN} = "$form->{formname}.${extension}"; + + delete $form->{OUT}; + + $form->parse_template($myconfig, $main::userspath); + + $main::lxdebug->leave_sub(); +} + 1;