Revision 59b16044
Von Tamino Steinert vor etwa 1 Jahr hinzugefügt
| SL/DB/Part.pm | ||
|---|---|---|
|     class        => 'SL::DB::PurchaseBasketItem',
 | ||
|     column_map   => { id => 'part_id' },
 | ||
|   },
 | ||
|   variant_properties => {
 | ||
|     map_class => 'SL::DB::VariantPropertyPart',
 | ||
|     map_from  => 'part',
 | ||
|     map_to    => 'variant_property',
 | ||
|     type      => 'many to many',
 | ||
|   },
 | ||
|   variant_porperty_values => {
 | ||
|     map_class => 'SL::DB::VariantPropertyValuePart',
 | ||
|     map_from  => 'part',
 | ||
|     map_to    => 'variant_property_value',
 | ||
|     type      => 'many to many',
 | ||
|   },
 | ||
|   parent_variant => {
 | ||
|     map_class => 'SL::DB::PartParentVariantPartVariant',
 | ||
|     map_from  => 'variant',
 | ||
|     map_to    => 'parent_variant',
 | ||
|     type      => 'many to many', #should be 'many to one' but has no map_class
 | ||
|   },
 | ||
|   variants => {
 | ||
|     map_class => 'SL::DB::PartParentVariantPartVariant',
 | ||
|     map_from  => 'parent_variant',
 | ||
|     map_to    => 'variant',
 | ||
|     type      => 'many to many', #should be 'one to many' but has no map_class
 | ||
|   }
 | ||
| );
 | ||
|  | ||
| __PACKAGE__->meta->initialize;
 | ||
| ... | ... | |
| sub is_type {
 | ||
|   my $self = shift;
 | ||
|   my $type  = lc(shift || '');
 | ||
|   die 'invalid type' unless $type =~ /^(?:part|service|assembly|assortment)$/;
 | ||
|   die 'invalid type' unless $type =~ /^(?:part|service|assembly|assortment|parent_variant|variant)$/;
 | ||
|  | ||
|   return $self->type eq $type ? 1 : 0;
 | ||
| }
 | ||
|  | ||
| sub is_part       { $_[0]->part_type eq 'part'       }
 | ||
| sub is_assembly   { $_[0]->part_type eq 'assembly'   }
 | ||
| sub is_service    { $_[0]->part_type eq 'service'    }
 | ||
| sub is_assortment { $_[0]->part_type eq 'assortment' }
 | ||
|  | ||
| sub type {
 | ||
|   return $_[0]->part_type;
 | ||
|   # my ($self, $type) = @_;
 | ||
|   # if (@_ > 1) {
 | ||
|   #   die 'invalid type' unless $type =~ /^(?:part|service|assembly)$/;
 | ||
|   #   $self->assembly(          $type eq 'assembly' ? 1 : 0);
 | ||
|   #   $self->inventory_accno_id($type ne 'service'  ? 1 : undef);
 | ||
|   # }
 | ||
| sub is_part           { $_[0]->part_type eq 'part'       }
 | ||
| sub is_assembly       { $_[0]->part_type eq 'assembly'   }
 | ||
| sub is_service        { $_[0]->part_type eq 'service'    }
 | ||
| sub is_assortment     { $_[0]->part_type eq 'assortment' }
 | ||
| sub is_parent_varient { $_[0]->part_type eq 'parent_variant' }
 | ||
| sub is_varient        { $_[0]->part_type eq 'variant' }
 | ||
|  | ||
|   # return 'assembly' if $self->assembly;
 | ||
|   # return 'part'     if $self->inventory_accno_id;
 | ||
|   # return 'service';
 | ||
| }
 | ||
| sub type { return $_[0]->part_type; }
 | ||
|  | ||
| sub new_part {
 | ||
|   my ($class, %params) = @_;
 | ||
| ... | ... | |
|   $class->new(%params, part_type => 'assortment');
 | ||
| }
 | ||
|  | ||
| sub new_parent_variant {
 | ||
|   my ($class, %params) = @_;
 | ||
|   $class->new(%params, part_type => 'parent_variant');
 | ||
| }
 | ||
|  | ||
| sub new_variant {
 | ||
|   my ($class, %params) = @_;
 | ||
|   $class->new(%params, part_type => 'variant');
 | ||
| }
 | ||
|  | ||
| sub last_modification {
 | ||
|   my ($self) = @_;
 | ||
|   return $self->mtime // $self->itime;
 | ||
Auch abrufbar als: Unified diff
Varianten: SQL-Scripte und ROSE-DB Dateien erstellt