X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Foe.pl;h=20bb0fd28e5e86914f9e6b948bb06ec94ab7019d;hb=ce498a747292baeaf103118b5073061196d981e4;hp=9cc570ace09482ffa3cc9f9e129bfcffb4cb9772;hpb=9bd3030a376850c427c102c6e0c54f19bd19332e;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 9cc570ace..20bb0fd28 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -50,8 +50,7 @@ require "bin/mozilla/reportgenerator.pl"; use strict; -my $print_post; -my %TMPL_VAR; +our %TMPL_VAR; 1; @@ -283,6 +282,7 @@ sub prepare_order { $form->{"reqdate_$i"} ||= $form->{"deliverydate_$i"}; $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * ($format_discounts ? 100 : 1)); $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}); + $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); } @@ -300,8 +300,9 @@ sub form_header { check_oe_access(); - # Container for template variables. Unfortunately this has to be visible in form_footer too, so not my. - our %TMPL_VAR = (); + # Container for template variables. Unfortunately this has to be + # visible in form_footer too, so package local level and not my here. + %TMPL_VAR = (); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); @@ -518,12 +519,8 @@ sub update { map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate) unless $recursive_call; $form->{update} = 1; - my $payment_id = $form->{payment_id} if $form->{payment_id}; - &check_name($form->{vc}); - $form->{payment_id} = $payment_id if $form->{payment_id} eq ""; - my $buysell = 'buy'; $buysell = 'sell' if ($form->{vc} eq 'vendor'); $form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{transdate}, $buysell); @@ -557,13 +554,15 @@ sub update { # select discount as customer_discount from customer $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"$form->{vc}_discount"} * 100); + $form->{"lastcost_$i"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$i"}); + if ($rows) { - $form->{"qty_$i"} = 1 unless ($form->{"qty_$i"}); + $form->{"qty_$i"} = 1 unless ($form->parse_amount(\%myconfig, $form->{"qty_$i"})); if ($rows > 1) { &select_item; - exit; + ::end_of_request(); } else { @@ -602,6 +601,7 @@ sub update { $form->{creditremaining} -= $amount; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); + $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); # get pricegroups for parts @@ -689,7 +689,10 @@ sub search { $form->header(); - print $form->parse_html_template('oe/search', { %myconfig }); + print $form->parse_html_template('oe/search', { + %myconfig, + is_order => $form->{type} =~ /_order/, + }); $main::lxdebug->leave_sub(); } @@ -790,7 +793,7 @@ sub orders { my %column_defs = ( 'ids' => { 'text' => '', }, 'transdate' => { 'text' => $locale->text('Date'), }, - 'reqdate' => { 'text' => $locale->text('Required by'), }, + 'reqdate' => { 'text' => $form->{type} =~ /_order/ ? $locale->text('Required by') : $locale->text('Valid until') }, 'id' => { 'text' => $locale->text('ID'), }, 'ordnumber' => { 'text' => $locale->text('Order'), }, 'quonumber' => { 'text' => $form->{type} eq "request_quotation" ? $locale->text('RFQ') : $locale->text('Quotation'), }, @@ -1006,7 +1009,7 @@ sub save_and_close { $form->{payment_id} = $payment_id; } &update; - exit; + ::end_of_request(); } $form->{id} = 0 if $form->{saveasnew}; @@ -1060,7 +1063,7 @@ sub save_and_close { if(!exists $form->{addition}) { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; - $form->save_history($form->dbconnect(\%myconfig)); + $form->save_history; } # /saving the history @@ -1101,6 +1104,7 @@ sub save { $form->isblank("exchangerate", $locale->text('Exchangerate missing!')) if ($form->{currency} ne $form->{defaultcurrency}); + remove_emptied_rows(); &validate_items; my $payment_id; @@ -1114,7 +1118,7 @@ sub save { $form->{payment_id} = $payment_id; } &update; - exit; + ::end_of_request(); } $form->{id} = 0 if $form->{saveasnew}; @@ -1167,7 +1171,7 @@ sub save { if(!exists $form->{addition}) { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; - $form->save_history($form->dbconnect(\%myconfig)); + $form->save_history; } # /saving the history @@ -1175,7 +1179,7 @@ sub save { if(!$form->{print_and_save}) { delete @{$form}{ary_diff([keys %{ $form }], [qw(login stylesheet id script type cursor_fokus)])}; edit(); - exit; + ::end_of_request(); } $main::lxdebug->leave_sub(); } @@ -1255,11 +1259,11 @@ sub delete_order_quotation { if(!exists $form->{addition}) { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "DELETED"; - $form->save_history($form->dbconnect(\%myconfig)); + $form->save_history; } # /saving the history $form->info($msg); - exit(); + ::end_of_request(); } $form->error($err); @@ -1305,7 +1309,7 @@ sub invoice { if (&check_name($form->{vc})) { $form->{payment_id} = $payment_id if $form->{payment_id} eq ""; &update; - exit; + ::end_of_request(); } $form->{cp_id} *= 1; @@ -1328,7 +1332,7 @@ sub invoice { if (!$exchangerate) { &backorder_exchangerate($orddate, $buysell); - exit; + ::end_of_request(); } } @@ -1676,7 +1680,7 @@ sub check_for_direct_delivery { $main::lxdebug->leave_sub(); - exit 0; + ::end_of_request(); } sub purchase_order { @@ -1688,7 +1692,9 @@ sub purchase_order { check_oe_access(); $main::auth->assert('purchase_order_edit'); + $form->{sales_order_to_purchase_order} = 0; if ($form->{type} eq 'sales_order') { + $form->{sales_order_to_purchase_order} = 1; check_for_direct_delivery(); } @@ -1706,6 +1712,8 @@ sub purchase_order { &poso; + delete $form->{sales_order_to_purchase_order}; + $main::lxdebug->leave_sub(); } @@ -1754,8 +1762,14 @@ sub poso { $form->{old_salesman_id} = $form->{salesman_id}; # reset - map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered - ordnumber); + map { delete $form->{$_} } qw(id subject message cc bcc printed emailed queued customer vendor creditlimit creditremaining discount tradediscount oldinvtotal delivered ordnumber); + + # if purchase_order was generated from sales_order, use lastcost_$i as sellprice_$i + if ( $form->{sales_order_to_purchase_order} ) { + for my $i (1 .. $form->{rowcount}) { + $form->{"sellprice_${i}"} = $form->format_amount(\%myconfig,$form->{"lastcost_${i}"}); + }; + }; for my $i (1 .. $form->{rowcount}) { map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice basefactor discount); @@ -1767,19 +1781,16 @@ sub poso { map { $form->{$_} = $saved_vars{$_} } keys %saved_vars; - &prepare_order; - # prepare_order assumes that the discount is in db-notation (0.05) and not user-notation (5) - # and therefore multiplies the values by 100 in the case of reading from db or making an order from several quotation, so we convert this back into percent-notation for the user interface by multiplying with 0.01 + # and therefore multiplies the values by 100 in the case of reading from db or making an order + # from several quotation, so we convert this back into percent-notation for the user interface by multiplying with 0.01 + # ergänzung 03.10.2010 muss vor prepare_order passieren (s.a. Svens Kommentar zu Bug 1017) + # das parse_amount wird oben schon ausgeführt, deswegen an dieser stelle raus (wichtig: kommawerte bei discount testen) for my $i (1 .. $form->{rowcount}) { - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 0.01); + $form->{"discount_$i"} /=100; }; - # format amounts - for my $i (1 .. $form->{rowcount} - 1) { - map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description unit); - } - + &prepare_order; &update; $main::lxdebug->leave_sub(); @@ -1821,7 +1832,7 @@ sub delivery_order { delete @{$form}{qw(id subject message cc bcc printed emailed queued creditlimit creditremaining discount tradediscount oldinvtotal closed delivered)}; for my $i (1 .. $form->{rowcount}) { - map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice basefactor discount); + map { $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"}) if ($form->{"${_}_${i}"}) } qw(ship qty sellprice listprice lastcost basefactor discount); } my %old_values = map { $_ => $form->{$_} } qw(customer_id oldcustomer customer vendor_id oldvendor vendor); @@ -1846,8 +1857,6 @@ sub e_mail { $form->{print_and_save} = 1; - $print_post = 1; - my $saved_form = save_form(); save(); @@ -1887,9 +1896,7 @@ sub display_form { } $form->{"taxaccounts"} = ""; - for my $i (1 .. $form->{"rowcount"}) { - IC->retrieve_accounts(\%myconfig, $form, $form->{"id_$i"}, $i, 1) if $form->{"id_$i"}; - } + IC->retrieve_accounts(\%myconfig, $form, map { $_ => $form->{"id_$_"} } 1 .. $form->{rowcount}); $form->{rowcount}++; $form->{"project_id_$form->{rowcount}"} = $form->{globalproject_id};