X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDev%2FPart.pm;h=967a1f75b40c0a0cb1e1a05e24cdf41b3fa64df2;hb=8f413df46f21248aa3593b21b72febe65b9751e7;hp=45976b6f21bc45943754160c763271c232bc0a24;hpb=981bfe1710c2c9634356346b4c99c76c6b686a4b;p=kivitendo-erp.git diff --git a/SL/Dev/Part.pm b/SL/Dev/Part.pm index 45976b6f2..967a1f75b 100644 --- a/SL/Dev/Part.pm +++ b/SL/Dev/Part.pm @@ -2,13 +2,14 @@ package SL::Dev::Part; use strict; use base qw(Exporter); -our @EXPORT = qw(create_part create_service create_assembly create_assortment); +our @EXPORT_OK = qw(new_part new_service new_assembly new_assortment); +our %EXPORT_TAGS = (ALL => \@EXPORT_OK); use SL::DB::Part; use SL::DB::Unit; use SL::DB::Buchungsgruppe; -sub create_part { +sub new_part { my (%params) = @_; my $part = SL::DB::Part->new_part( @@ -22,7 +23,7 @@ sub create_part { return $part; } -sub create_service { +sub new_service { my (%params) = @_; my $part = SL::DB::Part->new_service( @@ -36,7 +37,7 @@ sub create_service { return $part; } -sub create_assembly { +sub new_assembly { my (%params) = @_; my $assnumber = delete $params{assnumber}; @@ -48,9 +49,9 @@ sub create_assembly { $assembly_items = delete $params{assembly_items}; } else { for my $i ( 1 .. delete $params{number_of_parts} || 3) { - my $part = SL::Dev::Part::create_part(partnumber => "$base_partnumber $i", - description => "Testpart $i", - )->save; + my $part = new_part(partnumber => "$base_partnumber $i", + description => "Testpart $i", + )->save; push( @{$assembly_items}, SL::DB::Assembly->new(parts_id => $part->id, qty => 1, position => $i, @@ -71,7 +72,7 @@ sub create_assembly { return $assembly; } -sub create_assortment { +sub new_assortment { my (%params) = @_; my $assnumber = delete $params{assnumber}; @@ -83,9 +84,9 @@ sub create_assortment { $assortment_items = delete $params{assortment_items}; } else { for my $i ( 1 .. delete $params{number_of_parts} || 3) { - my $part = SL::Dev::Part::create_part(partnumber => "$base_partnumber $i", - description => "Testpart $i", - )->save; + my $part = new_part(partnumber => "$base_partnumber $i", + description => "Testpart $i", + )->save; push( @{$assortment_items}, SL::DB::AssortmentItem->new(parts_id => $part->id, qty => 1, position => $i, @@ -126,87 +127,121 @@ __END__ SL::Dev::Part - create part objects for testing, with minimal defaults +=head1 SYNOPSIS + + use SL::Dev::Part qw(new_part new_assembly new_service new_assortment); + + # simple default objects + my $part = new_part()->save; + my $assembly = new_assembly()->save; + my $service = new_service()->save; + my $assortment = new_assortment()->save; + + # pass additional params to the generated object + # see individual functions for special parameters + my $part = new_part( + partnumber => 'Test 001', + warehouse_id => $bin->warehouse->id, + bin_id => $bin->id, + ); + =head1 FUNCTIONS -=head2 C +=head2 C Creates a new part (part_type = part). -Minimal usage, default values, without saving to database: +=head2 C + +Creates a new service (part_type = service). - my $part = SL::Dev::Part::create_part(); +=head2 C -Create a test part with a default warehouse and bin and save it: +Create a new assembly (part_type = assembly). - my $wh = SL::Dev::Inventory::create_warehouse_and_bins()->save; - my $part1 = SL::Dev::Part::create_part(partnumber => 'a123', - description => 'Testpart 1', - warehouse_id => $wh->id, - bin_id => $wh->bins->[0]->id, - )->save; +Special params: -=head2 C +=over 2 -Creates a new service (part_type = service). +=item * C -Minimal usage, default values, without saving to database: +The number of automatically created assembly parts. - my $part = SL::Dev::Part::create_service(); +=item * C -=head2 C +the partnumber of the assembly -Create a new assembly (part_type = assembly). +=item * C -Params: assnumber: the partnumber of the assembly - partnumber: the partnumber of the first assembly part to be created +the partnumber of the first assembly part to be created -By default 3 parts (p1, p2, p3) are created and saved as an assembly (as1). +=back - my $assembly = SL::Dev::Part::create_assembly->save; +By default 3 parts (p1, p2, p3) are created and saved as an assembly (as1). Create a new assembly with 10 parts, the assembly gets partnumber 'Ass1' and the parts get partnumbers 'Testpart 1' to 'Testpart 10': - my $assembly = SL::Dev::Part::create_assembly(number_of_parts => 10, - partnumber => 'Testpart', - assnumber => 'Ass1' - )->save; + my $assembly = SL::Dev::Part::new_assembly( + number_of_parts => 10, + partnumber => 'Testpart', + assnumber => 'Ass1' + )->save; Create an assembly with specific parts: + my $assembly_item_1 = SL::DB::Assembly->new( parts_id => $part1->id, qty => 3, position => 1); my $assembly_item_2 = SL::DB::Assembly->new( parts_id => $part2->id, qty => 3, position => 2); - my $assembly_part = SL::Dev::Part::create_assembly( assnumber => 'Assembly 1', - description => 'Assembly test', - sellprice => $part1->sellprice + $part2->sellprice, - assembly_items => [ $assembly_item_1, $assembly_item_2 ], - )->save; + my $assembly_part = new_assembly( + assnumber => 'Assembly 1', + description => 'Assembly test', + sellprice => $part1->sellprice + $part2->sellprice, + assembly_items => [ $assembly_item_1, $assembly_item_2 ], + ); -=head2 C +=head2 C Create a new assortment (part_type = assortment). -By default 3 parts (p1, p2, p3) are created and saved as an assortment. +Special params: + +=over 2 + +=item * C + +The number of automatically created assembly parts. - my $assortment = SL::Dev::Part::create_assortment->save; +=item * C + +the partnumber of the assortment + +=item * C + +the partnumber of the first assembly part to be created + +=back + +By default 3 parts (p1, p2, p3) are created and saved as an assortment. Create a new assortment with 10 automatically created parts using the number_of_parts param: - my $assortment = SL::Dev::Part::create_assortment(number_of_parts => 10)->save; + my $assortment = new_assortment(number_of_parts => 10)->save; Create an assortment with a certain name and pass some assortment_item Objects from newly created parts: - my $part1 = SL::Dev::Part::create_part( sellprice => '7.77')->save; - my $part2 = SL::Dev::Part::create_part( sellprice => '6.66')->save; + my $part1 = new_part(sellprice => 7.77)->save; + my $part2 = new_part(sellprice => 6.66)->save; my $assortment_item_1 = SL::DB::AssortmentItem->new( parts_id => $part1->id, qty => 3, unit => $part1->unit, position => 1); my $assortment_item_2 = SL::DB::AssortmentItem->new( parts_id => $part2->id, qty => 3, unit => $part2->unit, position => 2); - my $assortment_part = SL::Dev::Part::create_assortment( assnumber => 'Assortment 1', - description => 'assortment test', - sellprice => (3*$part1->sellprice + 3*$part2->sellprice), - lastcost => (3*$part1->lastcost + 3*$part2->lastcost), - assortment_items => [ $assortment_item_1, $assortment_item_2 ], - )->save; + my $assortment_part = SL::Dev::Part::new_assortment( + assnumber => 'Assortment 1', + description => 'assortment test', + sellprice => (3*$part1->sellprice + 3*$part2->sellprice), + lastcost => (3*$part1->lastcost + 3*$part2->lastcost), + assortment_items => [ $assortment_item_1, $assortment_item_2 ], + )->save; =head1 TODO