X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fir.pl;h=8a8df0ba2ddf9330f1142c1e30cfacf3d7b49993;hb=98ccfccb26e831dd0a12dcae229eabb33744ed8b;hp=f6df8494ba2ad69230f6c984ab28a53a41e5b97a;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index f6df8494b..8a8df0ba2 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -31,833 +31,815 @@ # #====================================================================== - +use SL::FU; use SL::IR; +use SL::IS; use SL::PE; +use List::Util qw(max sum); +require "bin/mozilla/io.pl"; +require "bin/mozilla/invoice_io.pl"; +require "bin/mozilla/arap.pl"; +require "bin/mozilla/common.pl"; +require "bin/mozilla/drafts.pl"; -require "$form->{path}/io.pl"; -require "$form->{path}/arap.pl"; +use strict; 1; + # end of main +sub add { + $main::lxdebug->enter_sub(); + my $form = $main::form; + my $locale = $main::locale; -sub add { - $lxdebug->enter_sub(); + $main::auth->assert('vendor_invoice_edit'); - $form->{title} = $locale->text('Add Vendor Invoice'); + return $main::lxdebug->leave_sub() if (load_draft_maybe()); + + $form->{title} = $locale->text('Record Vendor Invoice'); &invoice_links; &prepare_invoice; &display_form; - - $lxdebug->leave_sub(); -} + $main::lxdebug->leave_sub(); +} sub edit { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; + + $main::auth->assert('vendor_invoice_edit'); + + # show history button + $form->{javascript} = qq||; + #/show hhistory button $form->{title} = $locale->text('Edit Vendor Invoice'); &invoice_links; &prepare_invoice; &display_form; - - $lxdebug->leave_sub(); -} + $main::lxdebug->leave_sub(); +} sub invoice_links { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + + $main::auth->assert('vendor_invoice_edit'); + + $form->{vc} = 'vendor'; # create links - $form->{webdav} = $webdav; - - # set jscalendar - $form->{jscalendar} = $jscalendar; - + $form->{webdav} = $::lx_office_conf{features}->{webdav}; + $form->{jsscript} = 1; + $form->create_links("AP", \%myconfig, "vendor"); + #quote all_vendor Bug 133 + foreach my $ref (@{ $form->{all_vendor} }) { + $ref->{name} = $form->quote($ref->{name}); + } + if ($form->{all_vendor}) { unless ($form->{vendor_id}) { $form->{vendor_id} = $form->{all_vendor}->[0]->{id}; } } - - $cp_id = $form->{cp_id}; + + my ($payment_id, $language_id, $taxzone_id, $currency); + if ($form->{payment_id}) { + $payment_id = $form->{payment_id}; + } + if ($form->{language_id}) { + $language_id = $form->{language_id}; + } + if ($form->{taxzone_id}) { + $taxzone_id = $form->{taxzone_id}; + } + if ($form->{currency}) { + $currency = $form->{currency}; + } + + my $cp_id = $form->{cp_id}; IR->get_vendor(\%myconfig, \%$form); IR->retrieve_invoice(\%myconfig, \%$form); $form->{cp_id} = $cp_id; - - # currencies - @curr = split /:/, $form->{currencies}; - chomp $curr[0]; - $form->{defaultcurrency} = $curr[0]; + if ($payment_id) { + $form->{payment_id} = $payment_id; + } + if ($language_id) { + $form->{language_id} = $language_id; + } + if ($taxzone_id) { + $form->{taxzone_id} = $taxzone_id; + } + if ($currency) { + $form->{currency} = $currency; + } + + my @curr = split(/:/, $form->{currencies}); #seems to be missing map { $form->{selectcurrency} .= ""; } + next unless $form->{acc_trans}{$key}; + if ($key eq "AP_paid") { - for $i (1 .. scalar @{ $form->{acc_trans}{$key} }) { - $form->{"AP_paid_$i"} = "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}"; - # reverse paid - $form->{"paid_$i"} = $form->{acc_trans}{$key}->[$i-1]->{amount}; - $form->{"datepaid_$i"} = $form->{acc_trans}{$key}->[$i-1]->{transdate}; - $form->{"forex_$i"} = $form->{"exchangerate_$i"} = $form->{acc_trans}{$key}->[$i-1]->{exchangerate}; - $form->{"source_$i"} = $form->{acc_trans}{$key}->[$i-1]->{source}; - $form->{"memo_$i"} = $form->{acc_trans}{$key}->[$i-1]->{memo}; - - $form->{paidaccounts} = $i; + for my $i (1 .. scalar @{ $form->{acc_trans}{$key} }) { + $form->{"AP_paid_$i"} = + "$form->{acc_trans}{$key}->[$i-1]->{accno}--$form->{acc_trans}{$key}->[$i-1]->{description}"; + + $form->{"acc_trans_id_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{acc_trans_id}; + # reverse paid + $form->{"paid_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{amount}; + $form->{"datepaid_$i"} = + $form->{acc_trans}{$key}->[$i - 1]->{transdate}; + $form->{"gldate_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{gldate}; + $form->{"forex_$i"} = $form->{"exchangerate_$i"} = + $form->{acc_trans}{$key}->[$i - 1]->{exchangerate}; + $form->{"source_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{source}; + $form->{"memo_$i"} = $form->{acc_trans}{$key}->[$i - 1]->{memo}; + + $form->{paidaccounts} = $i; } } else { - $form->{$key} = "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}"; + $form->{$key} = + "$form->{acc_trans}{$key}->[0]->{accno}--$form->{acc_trans}{$key}->[0]->{description}"; } - + } $form->{paidaccounts} = 1 unless (exists $form->{paidaccounts}); $form->{AP} = $form->{AP_1} unless $form->{id}; - $form->{locked} = ($form->datetonum($form->{invdate}, \%myconfig) <= $form->datetonum($form->{closedto}, \%myconfig)); - - $lxdebug->leave_sub(); + $form->{locked} = + ($form->datetonum($form->{invdate}, \%myconfig) <= + $form->datetonum($form->{closedto}, \%myconfig)); + + $main::lxdebug->leave_sub(); } +sub prepare_invoice { + $main::lxdebug->enter_sub(); + my $form = $main::form; + my %myconfig = %main::myconfig; -sub prepare_invoice { - $lxdebug->enter_sub(); + $main::auth->assert('vendor_invoice_edit'); if ($form->{id}) { - + map { $form->{$_} =~ s/\"/"/g } qw(invnumber ordnumber quonumber); - foreach $ref (@{ $form->{invoice_details} }) { + my $i = 0; + foreach my $ref (@{ $form->{invoice_details} }) { $i++; - map { $form->{"${_}_$i"} = $ref->{$_} } keys %{ $ref }; - - ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/); - $dec = length $dec; - $decimalplaces = ($dec > 2) ? $dec : 2; - - $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); - $form->{"qty_$i"} = $form->format_amount(\%myconfig, ($form->{"qty_$i"} * -1)); + map { $form->{"${_}_$i"} = $ref->{$_} } keys %{$ref}; + # übernommen aus is.pl Fix für Bug 1642. Nebenwirkungen? jb 12.5.2011 + # getestet: Lieferantenauftrag -> Rechnung i.O. + # Lieferantenauftrag -> Lieferschein -> Rechnung i.O. + # Werte: 20% (Lieferantenrabatt), 12,4% individuell und 0,4 individuell s.a. + # Screenshot zu Bug 1642 + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100); - $form->{rowcount} = $i; - } - } - - $lxdebug->leave_sub(); -} + my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/); + $dec = length $dec; + my $decimalplaces = ($dec > 2) ? $dec : 2; + $form->{"sellprice_$i"} = + $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, + $decimalplaces); + (my $dec_qty) = ($form->{"qty_$i"} =~ /\.(\d+)/); + $dec_qty = length $dec_qty; -sub form_header { - $lxdebug->enter_sub(); + $form->{"qty_$i"} = + $form->format_amount(\%myconfig, ($form->{"qty_$i"} * -1), $dec_qty); - # set option selected - foreach $item (qw(AP vendor currency department contact)) { - $form->{"select$item"} =~ s/ selected//; - $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; - } - - $form->{exchangerate} = $form->format_amount(\%myconfig, $form->{exchangerate}); - - $form->{creditlimit} = $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0"); - $form->{creditremaining} = $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0"); - - #build contacts - if ($form->{all_contacts}) { - - $form->{selectcontact} = ""; - foreach $item (@{$form->{all_contacts}}) { - if ($form->{cp_id} == $item->{cp_id}) - { - $form->{selectcontact} .= "