X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/049e49fea3e4a3c7c78d7aebf055936b3cab40c5..1904d8c63b2ab4172b36b117ec476c81c690ca86:/SL/Controller/PriceSource.pm diff --git a/SL/Controller/PriceSource.pm b/SL/Controller/PriceSource.pm index baed7d40b..0c3eb877a 100644 --- a/SL/Controller/PriceSource.pm +++ b/SL/Controller/PriceSource.pm @@ -72,11 +72,12 @@ sub _make_record_item { my $class = { sales_order => 'OrderItem', - purchase_oder => 'OrderItem', + purchase_order => 'OrderItem', sales_quotation => 'OrderItem', request_quotation => 'OrderItem', invoice => 'InvoiceItem', purchase_invoice => 'InvoiceItem', + credit_note => 'InvoiceItem', purchase_delivery_order => 'DeliveryOrderItem', sales_delivery_order => 'DeliveryOrderItem', }->{$::form->{type}}; @@ -92,13 +93,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"}); + 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"}; } } @@ -114,14 +120,15 @@ sub _make_record { my $class = { sales_order => 'Order', - purchase_oder => 'Order', + purchase_order => 'Order', sales_quotation => 'Order', request_quotation => 'Order', + purchase_invoice => 'PurchaseInvoice', purchase_delivery_order => 'DeliveryOrder', sales_delivery_order => 'DeliveryOrder', }->{$::form->{type}}; - if ($::form->{type} eq 'invoice') { + if ($::form->{type} =~ /invoice|credit_note/) { $class = $::form->{vc} eq 'customer' ? 'Invoice' : $::form->{vc} eq 'vendor' ? 'PurchaseInvoice' : do { die 'unknown invoice type' }; @@ -145,6 +152,8 @@ sub _make_record { $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}); + } elsif ((ref $obj->meta->column($method)) =~ /^Rose::DB::Object::Metadata::Column::Boolean$/) { + $obj->$method(!!$::form->{$method}); } else { $obj->$method($::form->{$method}); } @@ -159,6 +168,7 @@ sub _make_record { $obj->items(@items) if @items; } + $obj->is_sales(!!$obj->customer_id) if $class eq 'SL::DB::DeliveryOrder'; return $obj; }