X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=SL%2FCommon.pm;h=9c83c7d174de0b2cce7dbd5bf733f03da22f8b87;hb=8626a95d5b7c1a13b53ac8d3d486bf62be149885;hp=826581e74cce409050a148f12eb44f85f37e417c;hpb=c0f83f3e043b85921c3e74daed7d0a2b069f459d;p=kivitendo-erp.git diff --git a/SL/Common.pm b/SL/Common.pm index 826581e74..9c83c7d17 100644 --- a/SL/Common.pm +++ b/SL/Common.pm @@ -10,6 +10,28 @@ package Common; use Time::HiRes qw(gettimeofday); +use SL::DBUtils; + +use vars qw(@db_encodings %db_encoding_to_charset); + +@db_encodings = ( + { "label" => "ASCII", "dbencoding" => "SQL_ASCII", "charset" => "ASCII" }, + { "label" => "UTF-8 Unicode", "dbencoding" => "UNICODE", "charset" => "UTF-8" }, + { "label" => "ISO 8859-1", "dbencoding" => "LATIN1", "charset" => "ISO-8859-1" }, + { "label" => "ISO 8859-2", "dbencoding" => "LATIN2", "charset" => "ISO-8859-2" }, + { "label" => "ISO 8859-3", "dbencoding" => "LATIN3", "charset" => "ISO-8859-3" }, + { "label" => "ISO 8859-4", "dbencoding" => "LATIN4", "charset" => "ISO-8859-4" }, + { "label" => "ISO 8859-5", "dbencoding" => "LATIN5", "charset" => "ISO-8859-5" }, + { "label" => "ISO 8859-15", "dbencoding" => "LATIN9", "charset" => "ISO-8859-15" }, + { "label" => "KOI8-R", "dbencoding" => "KOI8", "charset" => "KOI8-R" }, + { "label" => "Windows CP1251", "dbencoding" => "WIN", "charset" => "CP1251" }, + { "label" => "Windows CP866", "dbencoding" => "ALT", "charset" => "CP866" }, +); + +%db_encoding_to_charset = map { $_->{dbencoding}, $_->{charset} } @db_encodings; + +use constant DEFAULT_CHARSET => 'ISO-8859-15'; + sub unique_id { my ($a, $b) = gettimeofday(); return "${a}-${b}-${$}"; @@ -258,6 +280,8 @@ sub webdav_folder { return $main::lxdebug->leave_sub() unless ($path && $number); + $number =~ s|[/\\]|_|g; + $path = "webdav/${path}/${number}"; if (!-d $path) { @@ -279,4 +303,70 @@ sub webdav_folder { $main::lxdebug->leave_sub(); } +sub get_vc_details { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form, $vc, $vc_id) = @_; + + $vc = $vc eq "customer" ? "customer" : "vendor"; + + my $dbh = $form->dbconnect($myconfig); + + my $query; + + $query = + qq|SELECT + vc.*, + pt.description AS payment_terms, + b.description AS business, + l.description AS language + FROM ${vc} vc + LEFT JOIN payment_terms pt ON (vc.payment_id = pt.id) + LEFT JOIN business b ON (vc.business_id = b.id) + LEFT JOIN language l ON (vc.language_id = l.id) + WHERE vc.id = ?|; + my $ref = selectfirst_hashref_query($form, $dbh, $query, $vc_id); + + if (!$ref) { + $dbh->disconnect(); + $main::lxdebug->leave_sub(); + return 0; + } + + map { $form->{$_} = $ref->{$_} } keys %{ $ref }; + + map { $form->{$_} = $form->format_amount($myconfig, $form->{$_} * 1) } qw(discount creditlimit); + + $query = qq|SELECT * FROM shipto WHERE (trans_id = ?)|; + $form->{SHIPTO} = selectall_hashref_query($form, $dbh, $query, $vc_id); + + $query = qq|SELECT * FROM contacts WHERE (cp_cv_id = ?)|; + $form->{CONTACTS} = selectall_hashref_query($form, $dbh, $query, $vc_id); + + $dbh->disconnect(); + + $main::lxdebug->leave_sub(); + + return 1; +} + +sub get_shipto_by_id { + $main::lxdebug->enter_sub(); + + my ($self, $myconfig, $form, $shipto_id, $prefix) = @_; + + $prefix ||= ""; + + my $dbh = $form->dbconnect($myconfig); + + my $query = qq|SELECT * FROM shipto WHERE shipto_id = ?|; + my $ref = selectfirst_hashref_query($form, $dbh, $query, $shipto_id); + + map { $form->{"${prefix}${_}"} = $ref->{$_} } keys %{ $ref } if $ref; + + $dbh->disconnect(); + + $main::lxdebug->leave_sub(); +} + 1;