91870c17ed2df42e90499673651471a771a52215
[kivitendo-erp.git] / SL / DB / PriceRuleItem.pm
1 # This file has been auto-generated only because it didn't exist.
2 # Feel free to modify it at will; it will not be overwritten automatically.
3
4 package SL::DB::PriceRuleItem;
5
6 use strict;
7
8 use SL::DB::MetaSetup::PriceRuleItem;
9 use SL::DB::Manager::PriceRuleItem;
10 use Rose::DB::Object::Helpers qw(clone_and_reset);
11 use SL::Locale::String qw(t8);
12
13 __PACKAGE__->meta->initialize;
14
15 use Rose::Object::MakeMethods::Generic (
16   'scalar --get_set_init' => [ qw(object operator) ],
17 );
18
19 sub match {
20   my ($self, %params) = @_;
21
22   die 'need record'      unless $params{record};
23   die 'need record_item' unless $params{record_item};
24
25   $self->${\ "match_" . $self->type }(%params);
26 }
27
28 sub match_customer {
29   $_[0]->value_int == $_[1]{record}->customer_id;
30 }
31 sub match_vendor {
32   $_[0]->value_int == $_[1]{record}->vendor_id;
33 }
34 sub match_business {
35   $_[0]->value_int == $_[1]{record}->customervendor->business_id;
36 }
37 sub match_partsgroup {
38   $_[0]->value_int == $_[1]{record_item}->parts->partsgroup_id;
39 }
40 sub match_qty {
41   if ($_[0]->op eq 'eq') {
42     return $_[0]->value_num == $_[1]{record_item}->qty
43   } elsif ($_[0]->op eq 'lt') {
44     return $_[0]->value_num <  $_[1]{record_item}->qty;
45   } elsif ($_[0]->op eq 'gt') {
46     return $_[0]->value_num >  $_[1]{record_item}->qty;
47   }
48 }
49 sub match_reqdate {
50   if ($_[0]->op eq 'eq') {
51     return $_[0]->value_date == $_[1]{record}->reqdate;
52   } elsif ($_[0]->op eq 'lt') {
53     return $_[0]->value_date <  $_[1]{record}->reqdate;
54   } elsif ($_[0]->op eq 'gt') {
55     return $_[0]->value_date >  $_[1]{record}->reqdate;
56   }
57 }
58 sub match_pricegroup {
59   $_[0]->value_int == $_[1]{record_item}->customervendor->pricegroup_id;
60 }
61
62 sub customer {
63   require SL::DB::Customer;
64   SL::DB::Customer->load_cached($_[0]->value_int);
65 }
66
67 sub vendor {
68   require SL::DB::Vendor;
69   SL::DB::Vendor->load_cached($_[0]->value_int);
70 }
71
72 sub business {
73   require SL::DB::Business;
74   SL::DB::Business->load_cached($_[0]->value_int);
75 }
76
77 sub partsgroup {
78   require SL::DB::PartsGroup;
79   SL::DB::PartsGroup->load_cached($_[0]->value_int);
80 }
81
82 sub pricegroup {
83   require SL::DB::Pricegroup;
84   SL::DB::Pricegroup->load_cached($_[0]->value_int);
85 }
86
87 sub full_description {
88   my ($self) = @_;
89
90   my $type = $self->type;
91   my $op   = $self->op;
92
93     $type eq 'customer'   ? t8('Customer')         . ' ' . $self->customer->displayable_name
94   : $type eq 'vendor'     ? t8('Vendor')           . ' ' . $self->vendor->displayable_name
95   : $type eq 'business'   ? t8('Type of Business') . ' ' . $self->business->displayable_name
96   : $type eq 'partsgroup' ? t8('Group')            . ' ' . $self->partsgroup->displayable_name
97   : $type eq 'pricegroup' ? t8('Pricegroup')       . ' ' . $self->pricegroup->displayable_name
98   : $type eq 'qty' ? (
99        $op eq 'eq' ? t8('Qty equals #1',    $self->value_num_as_number)
100      : $op eq 'lt' ? t8('Qty less than #1', $self->value_num_as_number)
101      : $op eq 'gt' ? t8('Qty more than #1', $self->value_num_as_number)
102      : do { die "unknown op $op for type $type" } )
103   : $type eq 'reqdate' ? (
104        $op eq 'eq' ? t8('Reqdate is #1',        $self->value_date_as_date)
105      : $op eq 'lt' ? t8('Reqdate is before #1', $self->value_date_as_date)
106      : $op eq 'gt' ? t8('Reqdate is after #1',  $self->value_date_as_date)
107      : do { die "unknown op $op for type $type" } )
108   : do { die "unknown type $type" }
109 }
110
111 1;