X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FPriceRuleItem.pm;h=006556d4ca586bc6af02a14d30033ac6e225f3b0;hb=b775c378552e6b5bf59f98046cdf4e577cd351df;hp=91870c17ed2df42e90499673651471a771a52215;hpb=9589ecd776677cdeb2fbaf8de211963d24cf5aa1;p=kivitendo-erp.git diff --git a/SL/DB/PriceRuleItem.pm b/SL/DB/PriceRuleItem.pm index 91870c17e..006556d4c 100644 --- a/SL/DB/PriceRuleItem.pm +++ b/SL/DB/PriceRuleItem.pm @@ -7,7 +7,6 @@ use strict; use SL::DB::MetaSetup::PriceRuleItem; use SL::DB::Manager::PriceRuleItem; -use Rose::DB::Object::Helpers qw(clone_and_reset); use SL::Locale::String qw(t8); __PACKAGE__->meta->initialize; @@ -37,12 +36,15 @@ sub match_business { sub match_partsgroup { $_[0]->value_int == $_[1]{record_item}->parts->partsgroup_id; } +sub match_part { + $_[0]->value_int == $_[1]{record_item}->parts_id; +} sub match_qty { if ($_[0]->op eq 'eq') { return $_[0]->value_num == $_[1]{record_item}->qty - } elsif ($_[0]->op eq 'lt') { + } elsif ($_[0]->op eq 'le') { return $_[0]->value_num < $_[1]{record_item}->qty; - } elsif ($_[0]->op eq 'gt') { + } elsif ($_[0]->op eq 'ge') { return $_[0]->value_num > $_[1]{record_item}->qty; } } @@ -55,10 +57,23 @@ sub match_reqdate { return $_[0]->value_date > $_[1]{record}->reqdate; } } +sub match_transdate { + if ($_[0]->op eq 'eq') { + return $_[0]->value_date == $_[1]{record}->transdate; + } elsif ($_[0]->op eq 'lt') { + return $_[0]->value_date < $_[1]{record}->transdate; + } elsif ($_[0]->op eq 'gt') { + return $_[0]->value_date > $_[1]{record}->transdate; + } +} sub match_pricegroup { $_[0]->value_int == $_[1]{record_item}->customervendor->pricegroup_id; } +sub part { + require SL::DB::Part; + SL::DB::Part->load_cached($_[0]->value_int); +} sub customer { require SL::DB::Customer; SL::DB::Customer->load_cached($_[0]->value_int); @@ -93,19 +108,38 @@ sub full_description { $type eq 'customer' ? t8('Customer') . ' ' . $self->customer->displayable_name : $type eq 'vendor' ? t8('Vendor') . ' ' . $self->vendor->displayable_name : $type eq 'business' ? t8('Type of Business') . ' ' . $self->business->displayable_name - : $type eq 'partsgroup' ? t8('Group') . ' ' . $self->partsgroup->displayable_name + : $type eq 'partsgroup' ? t8('Partsgroup') . ' ' . $self->partsgroup->displayable_name : $type eq 'pricegroup' ? t8('Pricegroup') . ' ' . $self->pricegroup->displayable_name + : $type eq 'part' ? t8('Part') . ' ' . $self->part->displayable_name : $type eq 'qty' ? ( - $op eq 'eq' ? t8('Qty equals #1', $self->value_num_as_number) - : $op eq 'lt' ? t8('Qty less than #1', $self->value_num_as_number) - : $op eq 'gt' ? t8('Qty more than #1', $self->value_num_as_number) + $op eq 'eq' ? t8('Qty equals #1', $self->value_num_as_number) + : $op eq 'lt' ? t8('Qty less than #1', $self->value_num_as_number) + : $op eq 'gt' ? t8('Qty more than #1', $self->value_num_as_number) + : $op eq 'le' ? t8('Qty equal or less than #1', $self->value_num_as_number) + : $op eq 'ge' ? t8('Qty equal or more than #1', $self->value_num_as_number) : do { die "unknown op $op for type $type" } ) : $type eq 'reqdate' ? ( $op eq 'eq' ? t8('Reqdate is #1', $self->value_date_as_date) : $op eq 'lt' ? t8('Reqdate is before #1', $self->value_date_as_date) : $op eq 'gt' ? t8('Reqdate is after #1', $self->value_date_as_date) : do { die "unknown op $op for type $type" } ) + : $type eq 'transdate' ? ( + $op eq 'eq' ? t8('Transdate is #1', $self->value_date_as_date) + : $op eq 'lt' ? t8('Transdate is before #1', $self->value_date_as_date) + : $op eq 'gt' ? t8('Transdate is after #1', $self->value_date_as_date) + : do { die "unknown op $op for type $type" } ) : do { die "unknown type $type" } } +sub validate { + my ($self) = @_; + + my @errors; + push @errors, t8('Rule for part must not be empty') if $self->type eq 'part' && !$self->value_int; + push @errors, t8('Rule for customer must not be empty') if $self->type eq 'customer' && !$self->value_int; + push @errors, t8('Rule for vendor must not be empty') if $self->type eq 'vendor' && !$self->value_int; + + return @errors; +} + 1;