c53d9b7d01ea0cb3dfdf5c9f3b55c4f5ecc9c789
[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_part {
41   $_[0]->value_int == $_[1]{record_item}->parts_id;
42 }
43 sub match_qty {
44   if ($_[0]->op eq 'eq') {
45     return $_[0]->value_num == $_[1]{record_item}->qty
46   } elsif ($_[0]->op eq 'lt') {
47     return $_[0]->value_num <  $_[1]{record_item}->qty;
48   } elsif ($_[0]->op eq 'gt') {
49     return $_[0]->value_num >  $_[1]{record_item}->qty;
50   }
51 }
52 sub match_reqdate {
53   if ($_[0]->op eq 'eq') {
54     return $_[0]->value_date == $_[1]{record}->reqdate;
55   } elsif ($_[0]->op eq 'lt') {
56     return $_[0]->value_date <  $_[1]{record}->reqdate;
57   } elsif ($_[0]->op eq 'gt') {
58     return $_[0]->value_date >  $_[1]{record}->reqdate;
59   }
60 }
61 sub match_pricegroup {
62   $_[0]->value_int == $_[1]{record_item}->customervendor->pricegroup_id;
63 }
64
65 sub part {
66   require SL::DB::Part;
67   SL::DB::Part->load_cached($_[0]->value_int);
68 }
69 sub customer {
70   require SL::DB::Customer;
71   SL::DB::Customer->load_cached($_[0]->value_int);
72 }
73
74 sub vendor {
75   require SL::DB::Vendor;
76   SL::DB::Vendor->load_cached($_[0]->value_int);
77 }
78
79 sub business {
80   require SL::DB::Business;
81   SL::DB::Business->load_cached($_[0]->value_int);
82 }
83
84 sub partsgroup {
85   require SL::DB::PartsGroup;
86   SL::DB::PartsGroup->load_cached($_[0]->value_int);
87 }
88
89 sub pricegroup {
90   require SL::DB::Pricegroup;
91   SL::DB::Pricegroup->load_cached($_[0]->value_int);
92 }
93
94 sub full_description {
95   my ($self) = @_;
96
97   my $type = $self->type;
98   my $op   = $self->op;
99
100     $type eq 'customer'   ? t8('Customer')         . ' ' . $self->customer->displayable_name
101   : $type eq 'vendor'     ? t8('Vendor')           . ' ' . $self->vendor->displayable_name
102   : $type eq 'business'   ? t8('Type of Business') . ' ' . $self->business->displayable_name
103   : $type eq 'partsgroup' ? t8('Group')            . ' ' . $self->partsgroup->displayable_name
104   : $type eq 'pricegroup' ? t8('Pricegroup')       . ' ' . $self->pricegroup->displayable_name
105   : $type eq 'part'       ? t8('Part')             . ' ' . $self->part->long_description
106   : $type eq 'qty' ? (
107        $op eq 'eq' ? t8('Qty equals #1',    $self->value_num_as_number)
108      : $op eq 'lt' ? t8('Qty less than #1', $self->value_num_as_number)
109      : $op eq 'gt' ? t8('Qty more than #1', $self->value_num_as_number)
110      : do { die "unknown op $op for type $type" } )
111   : $type eq 'reqdate' ? (
112        $op eq 'eq' ? t8('Reqdate is #1',        $self->value_date_as_date)
113      : $op eq 'lt' ? t8('Reqdate is before #1', $self->value_date_as_date)
114      : $op eq 'gt' ? t8('Reqdate is after #1',  $self->value_date_as_date)
115      : do { die "unknown op $op for type $type" } )
116   : do { die "unknown type $type" }
117 }
118
119 1;