1 package FS::part_event::Condition::pkg_age_before_sales;
2 use base qw( FS::part_event::Condition::pkg_age_before );
5 use Time::Local qw( timelocal_nocheck );
6 use FS::Record qw( qsearchs );
7 use FS::sales_pkg_class;
9 sub description { 'Package age younger than sales person commission duration'; }
13 my %option_fields = $class->SUPER::option_fields();
15 delete $option_fields{'age'};
17 $option_fields{'cust_main_sales'} = {
18 'label' => "Compare to the customer sales person if there is no package sales person",
27 my( $self, $cust_pkg, %opt ) = @_;
29 my $salesnum = $cust_pkg->salesnum;
30 $salesnum ||= $self->cust_main($cust_pkg)->salesnum
31 if $self->option('cust_main_sales');
33 return 0 unless $salesnum;
35 my $sales_pkg_class = qsearchs( 'sales_pkg_class', {
36 'salesnum' => $salesnum,
37 'classnum' => $cust_pkg->part_pkg->classnum,
40 my $commission_duration = $sales_pkg_class->commission_duration;
41 return 0 unless $commission_duration =~ /^\s*(\d+)\s*$/;
43 #false laziness w/Condition::option_age_from, but just months
45 my $time = $opt{'time'};
46 my ($sec,$min,$hour,$mday,$mon,$year) = (localtime($time) )[0,1,2,3,4,5];
47 $mon -= $commission_duration;
48 until ( $mon >= 0 ) { $mon += 12; $year--; }
50 timelocal_nocheck($sec,$min,$hour,$mday,$mon,$year);
53 #no working condition_sql for this comparison yet, don't want pkg_age_Common's