X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/223e6d0cf51b9847fd164b76c5a7fb77219f1855..refs/heads/b-3.3.0:/SL/Controller/PriceSource.pm diff --git a/SL/Controller/PriceSource.pm b/SL/Controller/PriceSource.pm index b7ee8bded..10763ce55 100644 --- a/SL/Controller/PriceSource.pm +++ b/SL/Controller/PriceSource.pm @@ -25,6 +25,12 @@ sub action_price_popup { my ($self) = @_; my $record_item = _make_record_item($::form->{row}); + my $old_unit; + if (($old_unit = $record_item->{__additional_form_attributes}{unit_old}) && $old_unit ne $record_item->unit) { + # reset unit changes. the way these interact on update breaks stuff + $record_item->unit_obj(SL::DB::Manager::Unit->find_by(name => $old_unit)); + $self->js->val("select[name='unit_$::form->{row}']", $old_unit); + } $self->render_price_dialog($record_item); } @@ -93,15 +99,18 @@ sub _make_record_item { : $class->new; for my $method (apply { s/_$row$// } grep { /_$row$/ } keys %$::form) { - next unless $obj->meta->column($method); - 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\_$row"}); - } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) { - $obj->$method(!!$::form->{$method}); + if ($obj->meta->column($method)) { + 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\_$row"}); + } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) { + $obj->$method(!!$::form->{$method}); + } else { + $obj->$method($::form->{"$method\_$row"}); + } } else { - $obj->$method($::form->{"$method\_$row"}); + $obj->{__additional_form_attributes}{$method} = $::form->{"$method\_$row"}; } }