translation_columns all_pricegroups) ],
);
+sub set_profile_defaults {
+ my ($self) = @_;
+
+ my $bugru = SL::DB::Manager::Buchungsgruppe->find_by(description => { like => 'Standard%19%' });
+
+ $self->controller->profile->_set_defaults(
+ sellprice_places => 2,
+ sellprice_adjustment => 0,
+ sellprice_adjustment_type => 'percent',
+ article_number_policy => 'update_prices',
+ shoparticle_if_missing => '0',
+ parts_type => 'part',
+ default_buchungsgruppe => ($bugru ? $bugru->id : undef),
+ apply_buchungsgruppe => 'all',
+ );
+};
+
+
sub init_class {
my ($self) = @_;
$self->class('SL::DB::Part');
my ($self, $entry) = @_;
my $bg = $self->bg_by->{id}->{ $entry->{object}->buchungsgruppen_id };
- $bg ||= SL::DB::Buchungsgruppe->new(inventory_accno_id => 1, income_accno_id_0 => 1, expense_accno_id_0 => 1);
+ $bg ||= SL::DB::Buchungsgruppe->new(inventory_accno_id => 1); # does this case ever occur?
my $type = $self->settings->{parts_type};
if ($type eq 'mixed') {
$entry->{object}->assembly($type eq 'assembly');
- $entry->{object}->income_accno_id( $bg->income_accno_id_0 );
+ # when saving income_accno_id or expense_accno_id use ids from the selected
+ # $bg according to the default tax_zone (the one with the highest sort
+ # order). Alternatively one could use the ids from defaults, but they might
+ # not all be set.
+
+ $entry->{object}->income_accno_id( $bg->income_accno_id( SL::DB::Manager::TaxZone->get_default->id ) );
if ($type eq 'part' || $type eq 'service') {
- $entry->{object}->expense_accno_id( $bg->expense_accno_id_0 );
+ $entry->{object}->expense_accno_id( $bg->expense_accno_id( SL::DB::Manager::TaxZone->get_default->id ) );
}
if ($type eq 'part') {
$entry->{object}->inventory_accno_id( $bg->inventory_accno_id );
}
-
if (none { $_ eq $type } qw(part service assembly)) {
push @{ $entry->{errors} }, $::locale->text('Error: Invalid part type');
return 0;
return;
}
- my %old_makemodels_by_make = map { $_->make => $_ } $entry->{part}->makemodels;
+ my %old_makemodels_by_mm = map { $_->make . $; . $_->model => $_ } $entry->{part}->makemodels;
+ my @new_makemodels;
foreach my $makemodel ($object->makemodels()) {
- my $makemodel_orig = $old_makemodels_by_make{$makemodel->make};
+ my $makemodel_orig = $old_makemodels_by_mm{$makemodel->make,$makemodel->model};
$found_any = 1;
if ($makemodel_orig) {
$makemodel_orig->lastcost($makemodel->lastcost);
} else {
- $entry->{part}->add_makemodels($makemodel);
+ push @new_makemodels, $makemodel;
}
}
- $entry->{part}->makemodel($object->makemodel);
+ $entry->{part}->makemodels([ $entry->{part}->makemodels, @new_makemodels ]) if @new_makemodels;
+
+ # reindex makemodels
+ my $i = 0;
+ $_->sortorder(++$i) for @{ $entry->{part}->makemodels };
$self->save_with_cascade(1) if $found_any;
}