X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fir.pl;h=e08c4355dbeb52420c9001e104074b03f0781290;hb=fc2f81b98f7a7308d71202c47d98611df6be1a7e;hp=3571bbfbb3d89616812cb3378fda700bfac3f509;hpb=7a98647b06d8fe8eb71a40d20e25d84d9faa3ed9;p=kivitendo-erp.git diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index 3571bbfbb..e08c4355d 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -36,13 +36,13 @@ use SL::IR; use SL::IS; use SL::PE; use SL::DB::Default; +use SL::DB::PurchaseInvoice; use List::Util qw(max sum); +use List::UtilsBy qw(sort_by); 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"; use strict; @@ -62,7 +62,7 @@ sub add { $::form->show_generic_error($::locale->text("You do not have the permissions to access this function.")); } - return $main::lxdebug->leave_sub() if (load_draft_maybe()); + $form->{show_details} = $::myconfig{show_form_details}; $form->{title} = $locale->text('Record Vendor Invoice'); @@ -81,6 +81,8 @@ sub edit { $main::auth->assert('vendor_invoice_edit'); + $form->{show_details} = $::myconfig{show_form_details}; + # show history button $form->{javascript} = qq||; #/show hhistory button @@ -105,8 +107,6 @@ sub invoice_links { $form->{vc} = 'vendor'; # create links - $form->{webdav} = $::instance_conf->get_webdav; - $form->create_links("AP", \%myconfig, "vendor"); #quote all_vendor Bug 133 @@ -258,6 +258,7 @@ sub form_header { my %TMPL_VAR = (); my @custom_hiddens; + $TMPL_VAR{invoice_obj} = SL::DB::PurchaseInvoice->new(id => $form->{id})->load if $form->{id}; $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; @@ -331,7 +332,7 @@ sub form_header { id action 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 - shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax + shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptogln shiptocontact shiptophone shiptofax shiptoemail shiptodepartment_1 shiptodepartment_2 message email subject cc bcc taxaccounts cursor_fokus convert_from_do_ids convert_from_oe_ids show_details gldate useasnew ), @custom_hiddens, @@ -340,7 +341,7 @@ sub form_header { $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}; - $::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)); $form->header(); @@ -349,6 +350,25 @@ sub form_header { $main::lxdebug->leave_sub(); } +sub _sort_payments { + my @fields = qw(acc_trans_id gldate datepaid source memo paid AP_paid); + my @payments = + grep { $_->{paid} != 0 } + map { + my $idx = $_; + +{ map { ($_ => delete($::form->{"${_}_${idx}"})) } @fields } + } (1..$::form->{paidaccounts}); + + @payments = sort_by { DateTime->from_kivitendo($_->{datepaid}) } @payments; + + $::form->{paidaccounts} = max scalar(@payments), 1; + + foreach my $idx (1 .. scalar(@payments)) { + my $payment = $payments[$idx - 1]; + $::form->{"${_}_${idx}"} = $payment->{$_} for @fields; + } +} + sub form_footer { $main::lxdebug->enter_sub(); @@ -391,6 +411,8 @@ sub form_footer { } # payments + _sort_payments(); + my $totalpaid = 0; $form->{paidaccounts}++ if ($form->{"paid_$form->{paidaccounts}"}); $form->{paid_indices} = [ 1 .. $form->{paidaccounts} ]; @@ -409,6 +431,14 @@ sub form_footer { ($form->current_date(\%myconfig) eq $form->{"gldate_$i"})); } + $form->error($locale->text('Cannot post transaction above the maximum future booking date!')) + if ($form->date_max_future($form->{"datepaid_$i"}, \%myconfig)); + + #deaktivieren von Zahlungen ausserhalb der Bücherkontrolle + if ($form->date_closed($form->{"gldate_$i"})) { + $form->{"changeable_$i"} = 0; + } + $form->{"selectAP_paid_$i"} = $form->{selectAP_paid}; if (!$form->{"AP_paid_$i"}) { $form->{"selectAP_paid_$i"} =~ s/option>$accno_arap--(.*?)>/option selected>$accno_arap--$1>/; @@ -429,6 +459,7 @@ sub form_footer { show_delete => ($::instance_conf->get_ir_changeable == 2) ? ($form->current_date(\%myconfig) eq $form->{gldate}) : ($::instance_conf->get_ir_changeable == 1), + today => DateTime->today, }); ##print $form->parse_html_template('ir/_payments'); # parser ##print $form->parse_html_template('webdav/_list'); # parser @@ -499,7 +530,7 @@ sub update { if ($rows > 1) { select_item(mode => 'IR', pre_entered_qty => $form->{"qty_$i"}); - ::end_of_request(); + $::dispatcher->end_request; } else { @@ -599,8 +630,9 @@ sub storno { # saving the history if(!exists $form->{addition} && $form->{id} ne "") { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; - $form->{addition} = "CANCELED"; + $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{what_done} = "invoice"; + $form->{addition} = "CANCELED"; $form->save_history; } # /saving the history @@ -646,6 +678,7 @@ sub post_payment { $main::auth->assert('vendor_invoice_edit'); + $form->mtime_ischanged('ap') ; $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); for my $i (1 .. $form->{paidaccounts}) { if ($form->{"paid_$i"}) { @@ -653,8 +686,13 @@ sub post_payment { $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} if ($invdate == $datepaid); # invdate isn't set here @@ -705,6 +743,7 @@ sub post { $main::auth->assert('vendor_invoice_edit'); + $form->mtime_ischanged('ap'); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); $form->isblank("invdate", $locale->text('Invoice Date missing!')); @@ -717,7 +756,7 @@ sub post { # if the vendor changed get new values if (&check_name('vendor')) { &update; - ::end_of_request(); + $::dispatcher->end_request; } if ($myconfig{mandatory_departments} && !$form->{department_id}) { @@ -748,8 +787,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} @@ -771,13 +815,12 @@ sub post { if (IR->post_invoice(\%myconfig, \%$form)){ # saving the history if(!exists $form->{addition} && $form->{id} ne "") { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; - $form->{addition} = "POSTED"; - #$form->{what_done} = $locale->text("Rechnungsnummer") . qq| | . $form->{invnumber}; + $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{addition} = "POSTED"; + $form->{what_done} = 'invoice'; $form->save_history; } # /saving the history - remove_draft() if $form->{remove_draft}; $form->redirect( $locale->text('Invoice') . " $form->{invnumber} " . $locale->text('posted!')); @@ -824,6 +867,27 @@ sub delete { $main::lxdebug->leave_sub(); } +sub display_form { + $::lxdebug->enter_sub; + + $::auth->assert('vendor_invoice_edit'); + + relink_accounts(); + + my $new_rowcount = $::form->{"rowcount"} * 1 + 1; + $::form->{"project_id_${new_rowcount}"} = $::form->{"globalproject_id"}; + + $::form->language_payment(\%::myconfig); + + Common::webdav_folder($::form); + + form_header(); + display_row(++$::form->{rowcount}); + form_footer(); + + $::lxdebug->leave_sub; +} + sub yes { $main::lxdebug->enter_sub();