X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fir.pl;h=1b5840f30c4582ebb7528e72ed6ccb8e3ed0b141;hb=9985655a1d5ae8577901aec2f5052e1d357c52a3;hp=bf752b764ca07535e7f87d31149b6c4510288dd4;hpb=049e49fea3e4a3c7c78d7aebf055936b3cab40c5;p=kivitendo-erp.git diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index bf752b764..1b5840f30 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -207,6 +207,8 @@ sub prepare_invoice { $main::auth->assert('vendor_invoice_edit'); + $form->{type} = "purchase_invoice"; + if ($form->{id}) { map { $form->{$_} =~ s/\"/"/g } qw(invnumber ordnumber quonumber); @@ -331,11 +333,14 @@ sub form_header { max_dunning_level dunning_amount shiptoname shiptostreet shiptozipcode shiptocity shiptocountry 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 + convert_from_do_ids convert_from_oe_ids show_details gldate useasnew ), @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)); + $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)); $form->header(); @@ -482,12 +487,18 @@ sub update { my $rows = scalar @{ $form->{item_list} }; + $form->{"discount_$i"} = $form->parse_amount(\%myconfig, $form->{"discount_$i"}) / 100.0; + $form->{"discount_$i"} ||= $form->{vendor_discount}; + if ($rows) { - $form->{"qty_$i"} = 1 unless $form->parse_amount(\%myconfig, $form->{"qty_$i"}); + $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); + if( !$form->{"qty_$i"} ) { + $form->{"qty_$i"} = 1; + } if ($rows > 1) { - select_item(mode => 'IR'); + select_item(mode => 'IR', pre_entered_qty => $form->{"qty_$i"}); ::end_of_request(); } else { @@ -495,8 +506,6 @@ sub update { # override sellprice if there is one entered my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - # ergaenzung fuer bug 736 Lieferanten-Rabatt auch in Einkaufsrechnungen vorbelegen jb - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{vendor_discount} * 100 ); map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit); map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; @@ -509,14 +518,29 @@ sub update { if ($sellprice) { $form->{"sellprice_$i"} = $sellprice; } else { + my $record = _make_record(); + my $price_source = SL::PriceSource->new(record_item => $record->items->[$i-1], record => $record); + my $best_price = $price_source->best_price; + my $best_discount = $price_source->best_discount; + + if ($best_price) { + $::form->{"sellprice_$i"} = $best_price->price; + $::form->{"active_price_source_$i"} = $best_price->source; + } + if ($best_discount) { + $::form->{"discount_$i"} = $best_discount->discount; + $::form->{"active_discount_source_$i"} = $best_discount->source; + } + # if there is an exchange rate adjust sellprice $form->{"sellprice_$i"} /= $exchangerate; } - my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); + my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"}); $form->{creditremaining} -= $amount; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } &display_form; @@ -570,6 +594,8 @@ sub storno { # Payments must not be recorded for the new storno invoice. $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 }; + # set new ids for storno invoice + delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"}; # saving the history if(!exists $form->{addition} && $form->{id} ne "") { @@ -602,6 +628,10 @@ sub use_as_new { $form->{paidaccounts} = 1; $form->{rowcount}--; $form->{invdate} = $form->current_date(\%myconfig); + + $form->{"converted_from_invoice_id_$_"} = delete $form->{"invoice_id_$_"} for 1 .. $form->{"rowcount"}; + + $form->{useasnew} = 1; &display_form; $main::lxdebug->leave_sub();