+ $main::lxdebug->leave_sub();
+}
+
+sub check_params {
+ my $params = shift;
+
+ foreach my $key (@_) {
+ if ((ref $key eq '') && !defined $params->{$key}) {
+ my $subroutine = (caller(1))[3];
+ $main::lxdebug->message(LXDebug->BACKTRACE_ON_ERROR, "[Common::check_params] failed, params object dumped below");
+ $main::lxdebug->message(LXDebug->BACKTRACE_ON_ERROR, Dumper($params));
+ $main::form->error($main::locale->text("Missing parameter #1 in call to sub #2.", $key, $subroutine));
+
+ } elsif (ref $key eq 'ARRAY') {
+ my $found = 0;
+ foreach my $subkey (@{ $key }) {
+ if (defined $params->{$subkey}) {
+ $found = 1;
+ last;
+ }
+ }
+
+ if (!$found) {
+ my $subroutine = (caller(1))[3];
+ $main::lxdebug->message(LXDebug->BACKTRACE_ON_ERROR, "[Common::check_params] failed, params object dumped below");
+ $main::lxdebug->message(LXDebug->BACKTRACE_ON_ERROR, Dumper($params));
+ $main::form->error($main::locale->text("Missing parameter (at least one of #1) in call to sub #2.", join(', ', @{ $key }), $subroutine));
+ }
+ }
+ }
+}
+
+sub check_params_x {
+ my $params = shift;
+
+ foreach my $key (@_) {
+ if ((ref $key eq '') && !exists $params->{$key}) {
+ my $subroutine = (caller(1))[3];
+ $main::form->error($main::locale->text("Missing parameter #1 in call to sub #2.", $key, $subroutine));
+
+ } elsif (ref $key eq 'ARRAY') {
+ my $found = 0;
+ foreach my $subkey (@{ $key }) {
+ if (exists $params->{$subkey}) {
+ $found = 1;
+ last;
+ }
+ }
+
+ if (!$found) {
+ my $subroutine = (caller(1))[3];
+ $main::form->error($main::locale->text("Missing parameter (at least one of #1) in call to sub #2.", join(', ', @{ $key }), $subroutine));
+ }
+ }
+ }
+}
+
+sub get_webdav_folder {
+ $main::lxdebug->enter_sub();
+
+ my ($form) = @_;
+
+ croak "No client set in \$::auth" unless $::auth->client;
+
+ my ($path, $number);
+
+ # dispatch table
+ if ($form->{type} eq "sales_quotation") {
+ ($path, $number) = ("angebote", $form->{quonumber});
+ } elsif ($form->{type} eq "sales_order") {
+ ($path, $number) = ("bestellungen", $form->{ordnumber});
+ } elsif ($form->{type} eq "request_quotation") {
+ ($path, $number) = ("anfragen", $form->{quonumber});
+ } elsif ($form->{type} eq "purchase_order") {
+ ($path, $number) = ("lieferantenbestellungen", $form->{ordnumber});
+ } elsif ($form->{type} eq "sales_delivery_order") {
+ ($path, $number) = ("verkaufslieferscheine", $form->{donumber});
+ } elsif ($form->{type} eq "purchase_delivery_order") {
+ ($path, $number) = ("einkaufslieferscheine", $form->{donumber});
+ } elsif ($form->{type} eq "credit_note") {
+ ($path, $number) = ("gutschriften", $form->{invnumber});
+ } elsif ($form->{type} eq "letter") {
+ ($path, $number) = ("briefe", $form->{letternumber} );
+ } elsif ($form->{vc} eq "customer") {
+ ($path, $number) = ("rechnungen", $form->{invnumber});
+ } elsif ($form->{vc} eq "vendor") {
+ ($path, $number) = ("einkaufsrechnungen", $form->{invnumber});
+ } else {
+ $main::lxdebug->leave_sub();
+ return undef;
+ }
+
+ $number =~ s|[/\\]|_|g;
+
+ $path = "webdav/" . $::auth->client->{id} . "/${path}/${number}";