X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FPriceRuleItem.pm;h=77d0fe571af2d2a428b3f9c99ab36bb8149d92d1;hb=5e9cefa2067da6326e3cb9ab6834c51f21bfca2c;hp=c53d9b7d01ea0cb3dfdf5c9f3b55c4f5ecc9c789;hpb=78df36d13721e785efbfcc6c17e400bb87cdc6e7;p=kivitendo-erp.git diff --git a/SL/DB/PriceRuleItem.pm b/SL/DB/PriceRuleItem.pm index c53d9b7d0..77d0fe571 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; @@ -43,9 +42,9 @@ sub match_part { 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; } } @@ -58,6 +57,15 @@ 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; } @@ -102,18 +110,36 @@ sub full_description { : $type eq 'business' ? t8('Type of Business') . ' ' . $self->business->displayable_name : $type eq 'partsgroup' ? t8('Group') . ' ' . $self->partsgroup->displayable_name : $type eq 'pricegroup' ? t8('Pricegroup') . ' ' . $self->pricegroup->displayable_name - : $type eq 'part' ? t8('Part') . ' ' . $self->part->long_description + : $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;