X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fis.pl;h=502525782e9220b9f863467ca5c0b7cd4ff85be9;hb=6768ddad54d2a675939e1167536f4943628de2bb;hp=457ba3fe0fe68e86f252a6f3795d62db689bdaab;hpb=519f43a20addf13a264c270f3a4d442f2c187be5;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 457ba3fe0..502525782 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -35,6 +35,7 @@ use SL::FU; use SL::IS; use SL::PE; use SL::OE; +use SL::MoreCommon qw(restore_form save_form); use Data::Dumper; use DateTime; use List::MoreUtils qw(uniq); @@ -48,7 +49,6 @@ use SL::DB::PaymentTerm; require "bin/mozilla/io.pl"; require "bin/mozilla/arap.pl"; -require "bin/mozilla/drafts.pl"; use strict; @@ -64,8 +64,6 @@ sub add { $main::auth->assert('invoice_edit'); - return $main::lxdebug->leave_sub() if (load_draft_maybe()); - $form->{show_details} = $::myconfig{show_form_details}; if ($form->{type} eq "credit_note") { @@ -380,12 +378,14 @@ sub form_header { $TMPL_VAR{dateformat} = $myconfig{dateformat}; $TMPL_VAR{numberformat} = $myconfig{numberformat}; + push @custom_hiddens, map { "shiptocvar_" . $_->name } @{ SL::DB::Manager::CustomVariableConfig->get_all(where => [ module => 'ShipTo' ]) }; + # hiddens $TMPL_VAR{HIDDENS} = [qw( - id action type media format queued printed emailed title vc discount + id type media format queued printed emailed title vc discount title creditlimit creditremaining tradediscount business closedto locked shipped storno storno_id max_dunning_level dunning_amount dunning_description - shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax + shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptogln shiptocontact shiptophone shiptofax shiptoemail shiptodepartment_1 shiptodepartment_2 shiptocp_gender message email subject cc bcc taxaccounts cursor_fokus convert_from_do_ids convert_from_oe_ids convert_from_ar_ids useasnew invoice_id @@ -393,10 +393,10 @@ sub form_header { ), @custom_hiddens, map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}]; - $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.SalesPurchase ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part client_js)); + $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.Draft kivi.SalesPurchase ckeditor/ckeditor ckeditor/adapters/jquery kivi.io autocomplete_customer autocomplete_part client_js)); $TMPL_VAR{payment_terms_obj} = get_payment_terms_for_invoice(); - $form->{duedate} = $TMPL_VAR{payment_terms_obj}->calc_date(reference_date => $form->{invdate}, due_date => $form->{due_due})->to_kivitendo if $TMPL_VAR{payment_terms_obj}; + $form->{duedate} = $TMPL_VAR{payment_terms_obj}->calc_date(reference_date => $form->{invdate}, due_date => $form->{duedate})->to_kivitendo if $TMPL_VAR{payment_terms_obj}; $form->header(); @@ -463,14 +463,16 @@ sub form_footer { } } + my $grossamount = $form->{invtotal}; + $form->{invtotal} = $form->round_amount( $form->{invtotal}, 2, 1 ); $form->{rounding} = $form->round_amount( - $form->round_amount($form->{invtotal}, 2, 1) - $form->round_amount($form->{invtotal}, 2), 2 + $form->{invtotal} - $form->round_amount($grossamount, 2), + 2 ); - $form->{invtotal} = $form->round_amount( $form->{invtotal}, 2, 1 ); # follow ups if ($form->{id}) { - $form->{follow_ups} = FU->follow_ups('trans_id' => $form->{id}) || []; + $form->{follow_ups} = FU->follow_ups('trans_id' => $form->{id}, 'not_done' => 1) || []; $form->{follow_ups_unfinished} = ( sum map { $_->{due} * 1 } @{ $form->{follow_ups} } ) || 0; } @@ -495,6 +497,11 @@ sub form_footer { ($form->current_date(\%myconfig) eq $form->{"gldate_$i"})); } + #deaktivieren von gebuchten Zahlungen ausserhalb der Bücherkontrolle, vorher prüfen ob heute eingegeben + if ($form->date_closed($form->{"gldate_$i"})) { + $form->{"changeable_$i"} = 0; + } + $form->{"selectAR_paid_$i"} = $form->{selectAR_paid}; if (!$form->{"AR_paid_$i"}) { $form->{"selectAR_paid_$i"} =~ s/option>$accno_arap--(.*?)$accno_arap--$1; @@ -602,7 +609,7 @@ sub update { if ($rows > 1) { select_item(mode => 'IS', pre_entered_qty => $form->{"qty_$i"}); - ::end_of_request(); + $::dispatcher->end_request; } else { @@ -704,20 +711,15 @@ sub post_payment { $form->isblank("exchangerate_$i", $locale->text('Exchangerate for payment missing!')); } + $form->error($locale->text('Cannot post transaction above the maximum future booking date!')) + if ($form->date_max_future($form->{"datepaid_$i"}, \%myconfig)); + + #Zusätzlich noch das Buchungsdatum in die Bücherkontrolle einbeziehen + # (Dient zur Prüfung ob ZE oder ZA geprüft werden soll) + $form->error($locale->text('Cannot post payment for a closed period!')) + if ($form->date_closed($form->{"datepaid_$i"}) && !$form->date_closed($form->{"gldate_$i"}, \%myconfig)); } } - # Abgeschlossene Zeiträume nur für den letzten (aktuellen) Zahlungseingang prüfen - # Details s.a. Bug 1502 - # Das Problem ist jetzt, dass man Zahlungseingänge nachträglich ändern kann - # Wobei dies für Installationen die sowieso nicht mit Bücherkontrolle arbeiten keinen - # keinen Unterschied macht. - # Optimal wäre, wenn gegen einen Zeitstempel des Zahlungsfelds geprüft würde ... - # Das Problem hierbei ist, dass in IS.pm post_invoice IMMER alle Zahlungseingänge aus $form - # erneut gespeichert werden. Prinzipiell wäre es besser NUR die Ãnderungen des Rechnungs- - # belegs (neue Zahlung aber nichts anderes) zu speichern ... - # Vielleicht könnte man ähnlich wie bei Rechnung löschen verfahren - $form->error($locale->text('Cannot post payment for a closed period!')) - if ($form->date_closed($form->{"datepaid_$form->{paidaccounts}"}, \%myconfig)); ($form->{AR}) = split /--/, $form->{AR}; ($form->{AR_paid}) = split /--/, $form->{AR_paid}; @@ -757,7 +759,7 @@ sub post { # if oldcustomer ne customer redo form if (&check_name('customer')) { &update; - ::end_of_request(); + $::dispatcher->end_request; } if ($myconfig{mandatory_departments} && !$form->{department_id}) { @@ -790,8 +792,13 @@ sub post { $form->isblank("datepaid_$i", $locale->text('Payment date missing!')); + $form->error($locale->text('Cannot post transaction above the maximum future booking date!')) + if ($form->date_max_future($form->{"datepaid_$i"}, \%myconfig)); + + #Zusätzlich noch das Buchungsdatum in die Bücherkontrolle einbeziehen + # (Dient zur Prüfung ob ZE oder ZA geprüft werden soll) $form->error($locale->text('Cannot post payment for a closed period!')) - if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig)); + if ($form->date_closed($form->{"datepaid_$i"}) && !$form->date_closed($form->{"gldate_$i"}, \%myconfig)); if ($form->{currency} ne $form->{defaultcurrency}) { $form->{"exchangerate_$i"} = $form->{exchangerate} @@ -860,8 +867,6 @@ sub post { } } - remove_draft() if $form->{remove_draft}; - if(!exists $form->{addition}) { $form->{snumbers} = 'invnumber' .'_'. $form->{invnumber}; # ($form->{type} eq 'credit_note' ? 'cnnumber' : 'invnumber') .'_'. $form->{invnumber}; $form->{what_done} = 'invoice'; @@ -961,6 +966,8 @@ sub storno { $form->{paidaccounts} = 0; map { my $key = $_; delete $form->{$key} if grep { $key =~ /^$_/ } qw(datepaid_ gldate_ acc_trans_id_ source_ memo_ paid_ exchangerate_ AR_paid_) } keys %{ $form }; + # record link invoice to storno + $form->{convert_from_ar_ids} = $form->{id}; $form->{storno_id} = $form->{id}; $form->{storno} = 1; $form->{id} = ""; @@ -968,7 +975,8 @@ sub storno { $form->{invdate} = DateTime->today->to_lxoffice; $form->{rowcount}++; # set new ids for storno invoice - delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"}; + # set new persistent ids for storno invoice items + $form->{"converted_from_invoice_id_$_"} = delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"}; post(); $main::lxdebug->leave_sub(); @@ -990,49 +998,6 @@ sub preview { } -sub delete { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my $locale = $main::locale; - - $main::auth->assert('invoice_edit'); - - if ($form->{second_run}) { - $form->{print_and_post} = 0; - } - $form->header; - - print qq| -
-|; - - $main::lxdebug->leave_sub(); -} - sub credit_note { $main::lxdebug->enter_sub(); @@ -1121,29 +1086,21 @@ sub display_form { $::lxdebug->leave_sub; } -sub yes { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - - $main::auth->assert('invoice_edit'); +sub delete { + $::auth->assert('invoice_edit'); - if (IS->delete_invoice(\%myconfig, \%$form)) { + if (IS->delete_invoice(\%::myconfig, $::form)) { # saving the history - if(!exists $form->{addition}) { - $form->{snumbers} = 'invnumber' .'_'. $form->{invnumber}; # ($form->{type} eq 'credit_note' ? 'cnnumber' : 'invnumber') .'_'. $form->{invnumber}; - $form->{what_done} = 'invoice'; - $form->{addition} = "DELETED"; - $form->save_history; + if(!exists $::form->{addition}) { + $::form->{snumbers} = 'invnumber' .'_'. $::form->{invnumber}; + $::form->{what_done} = 'invoice'; + $::form->{addition} = "DELETED"; + $::form->save_history; } # /saving the history - $form->redirect($locale->text('Invoice deleted!')); + $::form->redirect($::locale->text('Invoice deleted!')); } - $form->error($locale->text('Cannot delete invoice!')); - - $main::lxdebug->leave_sub(); + $::form->error($::locale->text('Cannot delete invoice!')); } sub post_and_e_mail { @@ -1171,3 +1128,18 @@ sub e_mail { $main::lxdebug->leave_sub(); } + +sub dispatcher { + for my $action (qw( + print update ship_to e_mail storno post_payment use_as_new credit_note + delete post order preview post_and_e_mail print_and_post + mark_as_paid + )) { + if ($::form->{"action_$action"}) { + call_sub($action); + return; + } + } + + $::form->error($::locale->text('No action defined.')); +}