X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fis.pl;h=cf3ac5768eabe14e835e3d60b138137926468a7f;hb=71a0f6e96621c680d5c592d57aedd5b450bea3f1;hp=66aa4b8f2583e313fff9e7eae7ffe9fe4b60b8d4;hpb=6fdf290898b160dd60af5e00fab9f5820394947d;p=kivitendo-erp.git diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 66aa4b8f2..cf3ac5768 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -36,8 +36,12 @@ use SL::IS; use SL::PE; use SL::OE; use Data::Dumper; +use DateTime; use List::Util qw(max sum); +use SL::DB::Default; +use SL::DB::Customer; + require "bin/mozilla/io.pl"; require "bin/mozilla/invoice_io.pl"; require "bin/mozilla/arap.pl"; @@ -73,8 +77,6 @@ sub add { $form->{callback} = "$form->{script}?action=add&type=$form->{type}" unless $form->{callback}; - $form->{jsscript} = "date"; - &invoice_links; &prepare_invoice; &display_form; @@ -90,6 +92,8 @@ sub edit { $main::auth->assert('invoice_edit'); + $form->{taxincluded_changed_by_user} = 1; + # show history button $form->{javascript} = qq||; #/show hhistory button @@ -133,7 +137,7 @@ sub invoice_links { $form->{vc} = 'customer'; # create links - $form->{webdav} = $::lx_office_conf{features}->{webdav}; + $form->{webdav} = $::instance_conf->get_webdav; $form->create_links("AR", \%myconfig, "customer"); @@ -146,7 +150,9 @@ sub invoice_links { my $editing = $form->{id}; - $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded currency cp_id intnotes id shipto_id)); + $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id + taxincluded currency cp_id intnotes id shipto_id + delivery_term_id)); IS->get_customer(\%myconfig, \%$form); @@ -158,7 +164,8 @@ sub invoice_links { $form->restore_vars(qw(id)); IS->retrieve_invoice(\%myconfig, \%$form); - $form->restore_vars(qw(payment_id language_id taxzone_id currency intnotes cp_id shipto_id)); + $form->restore_vars(qw(payment_id language_id taxzone_id currency intnotes + cp_id shipto_id delivery_term_id)); $form->restore_vars(qw(taxincluded)) if $form->{id}; $form->restore_vars(qw(salesman_id)) if $editing; @@ -348,8 +355,6 @@ sub form_header { $TMPL_VAR{creditwarning} = ($form->{creditlimit} != 0) && ($form->{creditremaining} < 0) && !$form->{update}; $TMPL_VAR{is_credit_remaining_negativ} = $form->{creditremaining} =~ /-/; - $form->{fokus} = "invoice.customer"; - my $follow_up_vc = $form->{customer}; $follow_up_vc =~ s/--\d*\s*$//; $TMPL_VAR{customer_name} = $follow_up_vc; @@ -373,10 +378,10 @@ sub form_header { shiptoname shiptostreet shiptozipcode shiptocity shiptocountry 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 + show_details ), @custom_hiddens, map { $_.'_rate', $_.'_description', $_.'_taxnumber' } split / /, $form->{taxaccounts}]; - $form->{jsscript} = 1; $form->header(); print $form->parse_html_template("is/form_header", \%TMPL_VAR); @@ -403,7 +408,12 @@ sub form_footer { # tax, total and subtotal calculations my ($tax, $subtotal); - $form->{taxaccounts_array} = [ split / /, $form->{taxaccounts} ]; + $form->{taxaccounts_array} = [ split(/ /, $form->{taxaccounts}) ]; + + if( $form->{customer_id} && !$form->{taxincluded_changed_by_user} ) { + my $customer = SL::DB::Customer->new(id => $form->{customer_id})->load(); + $form->{taxincluded} = defined($customer->taxincluded_checked) ? $customer->taxincluded_checked : $myconfig{taxincluded_checked}; + } foreach my $item (@{ $form->{taxaccounts_array} }) { if ($form->{"${item}_base"}) { @@ -434,10 +444,10 @@ sub form_footer { for my $i (1 .. $form->{paidaccounts}) { $form->{"changeable_$i"} = 1; - if ($::lx_office_conf{features}->{payments_changeable} == 0) { + if (SL::DB::Default->get->payments_changeable == 0) { # never $form->{"changeable_$i"} = ($form->{"acc_trans_id_$i"})? 0 : 1; - } elsif ($::lx_office_conf{features}->{payments_changeable} == 2) { + } elsif (SL::DB::Default->get->payments_changeable == 2) { # on the same day $form->{"changeable_$i"} = (($form->{"gldate_$i"} eq '') || ($form->current_date(\%myconfig) eq $form->{"gldate_$i"})); @@ -455,13 +465,17 @@ sub form_footer { $form->{oldinvtotal} = $form->{invtotal}; + $form->{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); + print $form->parse_html_template('is/form_footer', { is_type_credit_note => ($form->{type} eq "credit_note"), totalpaid => $totalpaid, paid_missing => $form->{invtotal} - $totalpaid, print_options => print_options(inline => 1), show_storno => $form->{id} && !$form->{storno} && !IS->has_storno(\%myconfig, $form, "ar") && !$totalpaid, - show_delete => ($form->current_date(\%myconfig) eq $form->{gldate}), + show_delete => ($::instance_conf->get_is_changeable == 2) + ? ($form->current_date(\%myconfig) eq $form->{gldate}) + : ($::instance_conf->get_is_changeable == 1), }); ##print $form->parse_html_template('is/_payments'); # parser ##print $form->parse_html_template('webdav/_list'); # parser @@ -509,6 +523,9 @@ sub update { for my $i (1 .. $form->{paidaccounts}) { next unless $form->{"paid_$i"}; map { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } qw(paid exchangerate); + if (!$form->{"forex_$i"}) { #read exchangerate from input field (not hidden) + $form->{exchangerate} = $form->{"exchangerate_$i"}; + } $form->{"forex_$i"} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{"datepaid_$i"}, 'buy'); $form->{"exchangerate_$i"} = $form->{"forex_$i"} if $form->{"forex_$i"}; } @@ -537,7 +554,10 @@ sub update { } if ($rows) { - $form->{"qty_$i"} = ($form->{"qty_$i"} * 1) ? $form->{"qty_$i"} : 1; + $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); + if( !$form->{"qty_$i"} ) { + $form->{"qty_$i"} = 1; + } if ($rows > 1) { @@ -701,6 +721,8 @@ sub post { my $closedto = $form->datetonum($form->{closedto}, \%myconfig); my $invdate = $form->datetonum($form->{invdate}, \%myconfig); + $form->error($locale->text('Cannot post transaction above the maximum future booking date!')) + if ($form->date_max_future($invdate, \%myconfig)); $form->error($locale->text('Cannot post invoice for a closed period!')) if ($invdate <= $closedto); @@ -729,7 +751,7 @@ sub post { ($form->{AR_paid}) = split /--/, $form->{AR_paid}; $form->{storno} ||= 0; - $form->{label} = $locale->text('Invoice'); + $form->{label} = $form->{type} eq 'credit_note' ? $locale->text('Credit Note') : $locale->text('Invoice'); $form->{id} = 0 if $form->{postasnew}; @@ -748,7 +770,7 @@ sub post { remove_draft() if $form->{remove_draft}; if(!exists $form->{addition}) { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{snumbers} = 'invnumber' .'_'. $form->{invnumber}; # ($form->{type} eq 'credit_note' ? 'cnnumber' : 'invnumber') .'_'. $form->{invnumber}; $form->{addition} = $form->{print_and_post} ? "PRINTED AND POSTED" : $form->{storno} ? "STORNO" : "POSTED"; @@ -783,7 +805,7 @@ sub print_and_post { } -sub use_as_template { +sub use_as_new { $main::lxdebug->enter_sub(); my $form = $main::form; @@ -791,12 +813,13 @@ sub use_as_template { $main::auth->assert('invoice_edit'); - map { delete $form->{$_} } qw(printed emailed queued invnumber invdate deliverydate id datepaid_1 gldate_1 acc_trans_id_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno); + delete @{ $form }{qw(printed emailed queued invnumber invdate deliverydate id datepaid_1 gldate_1 acc_trans_id_1 source_1 memo_1 paid_1 exchangerate_1 AP_paid_1 storno locked)}; $form->{paidaccounts} = 1; $form->{rowcount}--; $form->{invdate} = $form->current_date(\%myconfig); + $form->{duedate} = $form->get_duedate(\%myconfig, $form->{invdate}) || $form->{invdate}; - # remember pricegroups for "use as template" + # remember pricegroups for "use as new" IS->get_pricegroups_for_parts(\%myconfig, \%$form); set_pricegroup($_) for 1 .. $form->{rowcount}; @@ -821,8 +844,11 @@ sub storno { if (IS->has_storno(\%myconfig, $form, "ar")) { $form->error($locale->text("Invoice has already been storno'd!")); } + if ($form->datetonum($form->{invdate}, \%myconfig) <= $form->datetonum($form->{closedto}, \%myconfig)) { + $form->error($locale->text('Cannot storno invoice for a closed period!')); + } - map({ my $key = $_; delete($form->{$key}) unless (grep({ $key eq $_ } qw(id login password stylesheet type))); } keys(%{ $form })); + map({ my $key = $_; delete($form->{$key}) unless (grep({ $key eq $_ } qw(id login password type))); } keys(%{ $form })); invoice_links(); prepare_invoice(); @@ -836,6 +862,7 @@ sub storno { $form->{storno} = 1; $form->{id} = ""; $form->{invnumber} = "Storno zu " . $form->{invnumber}; + $form->{invdate} = DateTime->today->to_lxoffice; $form->{rowcount}++; post(); @@ -872,8 +899,6 @@ sub delete { $form->header; print qq| - -
|; @@ -985,7 +1010,7 @@ sub yes { if (IS->delete_invoice(\%myconfig, \%$form)) { # saving the history if(!exists $form->{addition}) { - $form->{snumbers} = qq|invnumber_| . $form->{invnumber}; + $form->{snumbers} = 'invnumber' .'_'. $form->{invnumber}; # ($form->{type} eq 'credit_note' ? 'cnnumber' : 'invnumber') .'_'. $form->{invnumber}; $form->{addition} = "DELETED"; $form->save_history; }