X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/0409db7c50da81e1eb613bd33663fb5b07935a01..cf63992efd6843a38de948fc509cdcc3bf51f1b6:/bin/mozilla/io.pl diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 49e352894..565b3c5fd 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -44,6 +44,7 @@ use List::Util qw(min max first); use SL::CVar; use SL::Common; use SL::CT; +use SL::Locale::String qw(t8); use SL::IC; use SL::IO; use SL::PriceSource; @@ -234,7 +235,7 @@ sub display_row { $form->{"sellprice_$i"} = $form->{"price_new_$i"}; } - my $record_item = $record->items->[$i-1]; + my $record_item = $record->id && $record->items ? $record->items->[$i-1] : _make_record_item($i); # unit begin $form->{"unit_old_$i"} ||= $form->{"unit_$i"}; @@ -322,11 +323,17 @@ sub display_row { $column_data{weight} = $form->format_amount(\%myconfig, $form->{"qty_$i"} * $form->{"weight_$i"}, 3) . ' ' . $defaults->{weightunit} if $defaults->{show_weight}; - if ($form->{"id_${i}"}) { + if ($form->{"id_${i}"} && !$is_delivery_order) { my $price_source = SL::PriceSource->new(record_item => $record_item, record => $record); my $price = $price_source->price_from_source($::form->{"active_price_source_$i"}); - $::form->{price_sources}[$i] = $price_source; - $column_data{price_source} .= $cgi->button(-value => $price->full_description, -onClick => "toggle_price_source($i)"); + $column_data{price_source} .= $cgi->button(-value => $price->source_description, -onClick => "kivi.io.price_chooser($i)"); + if ($price->source) { + $column_data{price_source} .= ' ' . $cgi->img({src => 'image/flag-red.png', alt => $price->invalid, title => $price->invalid }) if $price->invalid; + $column_data{price_source} .= ' ' . $cgi->img({src => 'image/flag-red.png', alt => $price->missing, title => $price->missing }) if $price->missing; + $column_data{price_source} .= ' ' . $cgi->img({src => 'image/up.png', alt => t8('This price has since gone up'), title => t8('This price has since gone up' ) }) if $price->price > $record_item->sellprice; + $column_data{price_source} .= ' ' . $cgi->img({src => 'image/down.png', alt => t8('This price has since gone down'), title => t8('This price has since gone down') }) if $price->price < $record_item->sellprice; + $column_data{price_source} .= ' ' . $cgi->img({src => 'image/ok.png', alt => t8('There is a better price available'), title => t8('There is a better price available') }) if $price->source ne $price_source->best_price->source; + } } if ($is_delivery_order) { @@ -520,6 +527,16 @@ sub item_selected { map { $form->{"${_}_$i"} = $new_item->{$_} } @new_fields; + 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; + + if ($best_price) { + $::form->{"sellprice_$i"} = $best_price->price; + $::form->{"active_price_source_$i"} = $best_price->source; + } + + $form->{"marge_price_factor_$i"} = $new_item->{price_factor}; if ($form->{"part_payment_id_$i"} ne "") { @@ -692,7 +709,8 @@ sub remove_emptied_rows { price_old price_new unit_old ordnumber donumber transdate longdescription basefactor marge_total marge_percent marge_price_factor lastcost price_factor_id partnotes - stock_out stock_in has_sernumber reqdate orderitems_id); + stock_out stock_in has_sernumber reqdate orderitems_id + active_price_source); my $ic_cvar_configs = CVar->get_configs(module => 'IC'); push @flds, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs }; @@ -1922,7 +1940,7 @@ sub _make_record_item { if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) { $obj->${\"$method\_as_date"}($::form->{"$method\_$row"}); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Numeric|Float|DoublePrecsion)$/) { - $obj->${\"$method\_as\_number"}($::form->{$method}); + $obj->${\"$method\_as_number"}($::form->{"$method\_$row"}); } else { $obj->$method($::form->{"$method\_$row"}); } @@ -1941,12 +1959,16 @@ sub _make_record { purchase_oder => 'Order', sales_quotation => 'Order', request_quotation => 'Order', - invoice => 'Invoice', - purchase_invoice => 'PurchaseInvoice', purchase_delivery_order => 'DeliveryOrder', sales_delivery_order => 'DeliveryOrder', }->{$::form->{type}}; + if ($::form->{type} =~ /invoice|credit_note/) { + $class = $::form->{vc} eq 'customer' ? 'Invoice' + : $::form->{vc} eq 'vendor' ? 'PurchaseInvoice' + : do { die 'unknown invoice type' }; + } + return unless $class; $class = 'SL::DB::' . $class; @@ -1964,7 +1986,7 @@ sub _make_record { if ($obj->meta->column($method)->isa('Rose::DB::Object::Metadata::Column::Date')) { $obj->${\"$method\_as_date"}($::form->{$method}); } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::(?:Numeric|Float|DoublePrecsion)$/) { - $obj->${\"$method\_as\_number"}($::form->{$method}); + $obj->${\"$method\_as_number"}($::form->{$method}); } else { $obj->$method($::form->{$method}); } @@ -1976,7 +1998,7 @@ sub _make_record { push @items, _make_record_item($i) } - $obj->orderitems(@items); + $obj->items(@items) if @items; return $obj; }