X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fap.pl;h=f961ead5d380b8efa05bce69566f5adff121c8b6;hb=6881b4bd6a669dd991b227ecf41c3e8662806595;hp=a6d5cdc5c1073cfbf6c21b9e956e7101fe66fa8d;hpb=dc8f62cf5df4a7f8473e7d76fdd98846cea5721f;p=kivitendo-erp.git diff --git a/bin/mozilla/ap.pl b/bin/mozilla/ap.pl index a6d5cdc5c..f961ead5d 100644 --- a/bin/mozilla/ap.pl +++ b/bin/mozilla/ap.pl @@ -92,7 +92,7 @@ sub add { $form->{title} = "Add"; - $form->{callback} = "ap.pl?action=add" unless $form->{callback}; + $form->{callback} = "ap.pl?action=add&DONT_LOAD_DRAFT=1" unless $form->{callback}; AP->get_transdate(\%myconfig, $form); $form->{initial_transdate} = $form->{transdate}; @@ -156,11 +156,9 @@ sub create_links { $form->{notes} = $form->{intnotes} unless $form->{notes}; # currencies - my @curr = split(/:/, $form->{currencies}); - chomp $curr[0]; - $form->{defaultcurrency} = $curr[0]; + $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); - map { $form->{selectcurrency} .= "$_\n" } @curr; + map { $form->{selectcurrency} .= "$_\n" } $form->get_all_currencies(\%myconfig); # vendors if (@{ $form->{all_vendor} || [] }) { @@ -197,7 +195,7 @@ sub form_header { my $form = $main::form; my %myconfig = %main::myconfig; my $locale = $main::locale; - my $cgi = $main::cgi; + my $cgi = $::request->{cgi}; $main::auth->assert('general_ledger'); @@ -246,22 +244,15 @@ sub form_header { $form->{forex} = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{transdate}, 'sell'); $form->{exchangerate} = $form->{forex} if $form->{forex}; - # format amounts - $form->{exchangerate} = - $form->format_amount(\%myconfig, $form->{exchangerate}); - if ($form->{exchangerate} == 0) { - $form->{exchangerate} = ""; - } - $form->{creditlimit} = - $form->format_amount(\%myconfig, $form->{creditlimit}, 0, "0"); - $form->{creditremaining} = - $form->format_amount(\%myconfig, $form->{creditremaining}, 0, "0"); + $form->{exchangerate} = $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"); my $exchangerate = qq| {forex}> |; - if ($form->{currency} ne $form->{defaultcurrency}) { + if ($form->{defaultcurrency} && ($form->{currency} ne $form->{defaultcurrency})) { if ($form->{forex}) { $exchangerate .= qq| @@ -294,7 +285,8 @@ sub form_header { my $notes = qq|$form->{notes}|; - my $department = qq| + my $department; + $department = qq| | . $locale->text('Department') . qq| $form->{selectdepartment} @@ -379,7 +371,7 @@ sub form_header { # with JavaScript Calendar $button1 = qq| - + text('button') . qq|> |; @@ -397,7 +389,7 @@ sub form_header { # without JavaScript Calendar $button1 = - qq||; + qq||; $button2 = qq||; } @@ -410,6 +402,12 @@ sub form_header { $form->{javascript} .= qq||; $form->{javascript} .= qq||; + my $globalprojectnumber = + NTI($cgi->popup_menu('-name' => "globalproject_id", + '-values' => \@project_values, + '-labels' => \%project_labels, + '-default' => $form->{"globalproject_id"} )); + $form->header; my $onload = qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; @@ -495,6 +493,10 @@ sub form_header { | . $locale->text('Due Date') . qq| $button2 + + | . $locale->text('Project Number') . qq| + $globalprojectnumber + @@ -639,7 +641,7 @@ $jsscript |; my @column_index; - if ($form->{currency} eq $form->{defaultcurrency}) { + if ($form->{defaultcurrency} && ($form->{currency} eq $form->{defaultcurrency})) { @column_index = qw(datepaid source memo paid AP_paid paid_project_id); } else { @column_index = qw(datepaid source memo paid exchangerate AP_paid paid_project_id); @@ -663,7 +665,7 @@ $jsscript "; my @triggers = (); - my $totalpaid = 0; + $form->{totalpaid} = 0; $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"}); for my $i (1 .. $form->{paidaccounts}) { @@ -678,27 +680,45 @@ $jsscript '-labels' => \%AP_paid_labels, '-default' => $form->{"AP_paid_$i"})); - $totalpaid += $form->{"paid_$i"}; + $form->{totalpaid} += $form->{"paid_$i"}; # format amounts if ($form->{"paid_$i"}) { $form->{"paid_$i"} = - $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2); + $form->format_amount(\%myconfig, $form->{"paid_$i"}, 2); } - $form->{"exchangerate_$i"} = - $form->format_amount(\%myconfig, $form->{"exchangerate_$i"}); if ($form->{"exchangerate_$i"} == 0) { $form->{"exchangerate_$i"} = ""; + } else { + $form->{"exchangerate_$i"} = + $form->format_amount(\%myconfig, $form->{"exchangerate_$i"}); + } + + print qq|{"acc_trans_id_$i"}>\n|; + print qq|{"gldate_$i"}>\n|; + my $changeable = 1; + if ($::lx_office_conf{features}->{payments_changeable} == 0) { + # never + $changeable = ($form->{"acc_trans_id_$i"})? 0 : 1; + } + if ($::lx_office_conf{features}->{payments_changeable} == 2) { + # on the same day + $changeable = (($form->{"gldate_$i"} eq '') || $form->current_date(\%myconfig) eq $form->{"gldate_$i"}); } $exchangerate = qq| |; - if ($form->{currency} ne $form->{defaultcurrency}) { + if ($form->{defaultcurrency} && ($form->{currency} ne $form->{defaultcurrency})) { if ($form->{"forex_$i"}) { $exchangerate = qq|{"exchangerate_$i"}>$form->{"exchangerate_$i"}|; } else { - $exchangerate = - qq|{"exchangerate_$i"}>|; + if ($changeable) { + $exchangerate = + qq|{"exchangerate_$i"}>|; + } else { + $exchangerate = + qq|{"exchangerate_$i"}>$form->{"exchangerate_$i"}|; + } } } @@ -706,42 +726,88 @@ $jsscript {"forex_$i"}> |; - $column_data{"paid_$i"} = - qq||; - $column_data{"AP_paid_$i"} = - qq|${selectAP_paid}|; - $column_data{"exchangerate_$i"} = qq|$exchangerate|; - $column_data{"datepaid_$i"} = - qq| + my $datepaid; + if ($changeable) { + $datepaid = qq| |; - $column_data{"source_$i"} = - qq||; - $column_data{"memo_$i"} = - qq||; - $column_data{"paid_project_id_$i"} = + } else { + $datepaid = qq|$form->{"datepaid_$i"}|. + qq|{"datepaid_$i"}>|; + } + + my $paid; + if ($changeable) { + $paid = qq||; + } else { + $paid = qq|$form->{"paid_$i"}|. + qq|{"paid_$i"}>|; + } + + my $source; + if ($changeable) { + $source = qq||; + } else { + $source = qq|$form->{"source_$i"}|. + qq|{"source_$i"}>|; + } + + my $memo; + if ($changeable) { + $memo = qq||; + } else { + $memo = qq|$form->{"memo_$i"}|. + qq|{"memo_$i"}>|; + } + + my $AP_paid; + if ($changeable) { + $AP_paid = qq|${selectAP_paid}|; + } else { + $AP_paid = qq|$form->{"AP_paid_$i"}|. + qq|{"AP_paid_$i"}>|; + } + + my $paid_project_id; + if ($changeable) { + $paid_project_id = qq|| . NTI($cgi->popup_menu('-name' => "paid_project_id_$i", '-values' => \@project_values, '-labels' => \%project_labels, '-default' => $form->{"paid_project_id_$i"} )) . qq||; + } else { + my $projectnumber = $project_labels{$form->{"paid_project_id_$i"}}; + $paid_project_id = qq|$projectnumber|. + qq|{"paid_project_id_$i"}>|; + } + + $column_data{"paid_$i"} = $paid; + $column_data{"AP_paid_$i"} = $AP_paid; + $column_data{"exchangerate_$i"} = qq|$exchangerate|; + $column_data{"datepaid_$i"} = $datepaid; + $column_data{"source_$i"} = $source; + $column_data{"memo_$i"} = $memo; + $column_data{"paid_project_id_$i"} = $paid_project_id; map { print qq|$column_data{"${_}_$i"}\n| } @column_index; print " "; - push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); + if ($changeable) { + push(@triggers, "datepaid_$i", "BL", "trigger_datepaid_$i"); + } } - my $paid_missing = $form->{invtotal_unformatted} - $totalpaid; + my $paid_missing = $form->{invtotal_unformatted} - $form->{totalpaid}; print qq| | . $locale->text('Total') . qq| - | . H($form->format_amount(\%myconfig, $totalpaid, 2)) . qq| + | . H($form->format_amount(\%myconfig, $form->{totalpaid}, 2)) . qq| @@ -766,91 +832,37 @@ $jsscript } sub form_footer { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - my $cgi = $main::cgi; + $::lxdebug->enter_sub; + $::auth->assert('general_ledger'); - $main::auth->assert('general_ledger'); + my $num_due; + my $num_follow_ups; + if ($::form->{id}) { + my $follow_ups = FU->follow_ups('trans_id' => $::form->{id}); - my $follow_ups_block; - if ($form->{id}) { - my $follow_ups = FU->follow_ups('trans_id' => $form->{id}); - - if (@{ $follow_ups} ) { - my $num_due = sum map { $_->{due} * 1 } @{ $follow_ups }; - $follow_ups_block = qq|| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq||; + if (@{ $follow_ups }) { + $num_due = sum map { $_->{due} * 1 } @{ $follow_ups }; + $num_follow_ups = scalar @{ $follow_ups } } } - print qq| - -$follow_ups_block - - - -| -. $cgi->hidden('-name' => 'draft_id', '-default' => [$form->{draft_id}]) -. $cgi->hidden('-name' => 'draft_description', '-default' => [$form->{draft_description}]) -. qq| - - -|; - - if (!$form->{id} && $form->{draft_id}) { - print(NTI($cgi->checkbox('-name' => 'remove_draft', '-id' => 'remove_draft', - '-value' => 1, '-checked' => $form->{remove_draft}, - '-label' => '')) . - qq| | . - $locale->text("Remove draft when posting") . - qq||); - } + my $transdate = $::form->datetonum($::form->{transdate}, \%::myconfig); + my $closedto = $::form->datetonum($::form->{closedto}, \%::myconfig); - my $transdate = $form->datetonum($form->{transdate}, \%myconfig); - my $closedto = $form->datetonum($form->{closedto}, \%myconfig); + my $storno = $::form->{id} + && !IS->has_storno(\%::myconfig, $::form, 'ap') + && !IS->is_storno( \%::myconfig, $::form, 'ap', $::form->{id}) + && ($::form->{totalpaid} == 0 || $::form->{totalpaid} eq ''); - print qq||; + $::form->header; + print $::form->parse_html_template('ap/form_footer', { + num_due => $num_due, + num_follow_ups => $num_follow_ups, + show_post_draft => ($transdate > $closedto) && !$::form->{id}, + show_storno => $storno, + }); - if ($form->{id}) { - if ($form->{radier}) { - print qq| - -|; - } - # ToDO: - insert a global check for stornos, so that a storno is only possible a limited time after saving it - our $total_paid; - print qq| | - if ($form->{id} && !IS->has_storno(\%myconfig, $form, 'ap') && !IS->is_storno(\%myconfig, $form, 'ap', $form->{id}) && (($total_paid == 0) || ($total_paid eq ""))); - - print qq| - - -|; - } elsif (($transdate > $closedto) && !$form->{id}) { - print qq| - | . - NTI($cgi->submit('-name' => 'action', '-value' => $locale->text('Save draft'), '-class' => 'submit')); - } - # button for saving history - if($form->{id} ne "") { - print qq| |; - } - # /button for saving history - # mark_as_paid button - if($form->{id} ne "") { - print qq| |; - } - # /mark_as_paid button - print " - - -
| . $locale->text("There are #1 unfinished follow-ups of which #2 are due.", scalar @{ $follow_ups }, $num_due) . qq|