X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fis.pl;h=5db9b9cf1dbaacab10ea4086052fa7ccca9a0fc3;hb=af9a1f44788ded346d8510511d26a760d996ba14;hp=631262e0de412d0600006462c68841a5390d17ae;hpb=030c208648ddd8137d8fab33bb8b2eb87f5c080f;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 631262e0d..5db9b9cf1 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -24,7 +24,8 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1335, USA. #====================================================================== # # Inventory invoicing module @@ -33,7 +34,6 @@ use SL::FU; use SL::IS; -use SL::PE; use SL::OE; use SL::MoreCommon qw(restore_form save_form); use Data::Dumper; @@ -45,6 +45,7 @@ use English qw(-no_match_vars); use SL::DB::Default; use SL::DB::Customer; +use SL::DB::Invoice; use SL::DB::PaymentTerm; require "bin/mozilla/io.pl"; @@ -302,9 +303,10 @@ sub form_header { $form->get_lists("taxzones" => ($form->{id} ? "ALL_TAXZONES" : "ALL_ACTIVE_TAXZONES"), "currencies" => "ALL_CURRENCIES", "customers" => "ALL_CUSTOMERS", - "departments" => "all_departments", "price_factors" => "ALL_PRICE_FACTORS"); + $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all; + # Projects my @old_project_ids = uniq grep { $_ } map { $_ * 1 } ($form->{"globalproject_id"}, map { $form->{"project_id_$_"} } 1..$form->{"rowcount"}); my @old_ids_cond = @old_project_ids ? (id => \@old_project_ids) : (); @@ -382,7 +384,7 @@ sub form_header { # 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 shiptogln shiptocontact shiptophone shiptofax @@ -472,7 +474,7 @@ sub form_footer { # 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; } @@ -497,6 +499,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--$1enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; + $::auth->assert('invoice_edit'); - $main::auth->assert('invoice_edit'); + SL::DB::Invoice->new(id => $::form->{id})->load->mark_as_paid; - &mark_as_paid_common(\%myconfig,"ar"); + $::form->redirect($::locale->text("Marked as paid")); +} - $main::lxdebug->leave_sub(); +sub show_draft { + update(); } sub update { @@ -706,20 +712,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}; @@ -792,8 +793,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} @@ -961,6 +967,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 +976,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();