[freeside-commits] branch FREESIDE_3_BRANCH updated. 48e4ae69f730dba65c2f1428e9b1c408824c6a45
Ivan
ivan at 420.am
Sun Aug 25 01:40:41 PDT 2013
The branch, FREESIDE_3_BRANCH has been updated
via 48e4ae69f730dba65c2f1428e9b1c408824c6a45 (commit)
from b514af3b972e93d62a1968d32483b0fcc77c8974 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 48e4ae69f730dba65c2f1428e9b1c408824c6a45
Author: Ivan Kohler <ivan at freeside.biz>
Date: Sun Aug 25 01:40:38 2013 -0700
continue sales person work: customer and package selection, commissions, reporting. RT#23402
diff --git a/FS/FS/part_event.pm b/FS/FS/part_event.pm
index b7371c9..a740bb8 100644
--- a/FS/FS/part_event.pm
+++ b/FS/FS/part_event.pm
@@ -583,6 +583,7 @@ sub actions {
(
map { $_ => $actions{$_} }
sort { $actions{$a}->{'default_weight'}<=>$actions{$b}->{'default_weight'} }
+ # || $actions{$a}->{'description'} cmp $actions{$b}->{'description'} }
$class->all_actions( $eventtable )
);
diff --git a/FS/FS/part_event/Action/Mixin/credit_sales_pkg_class.pm b/FS/FS/part_event/Action/Mixin/credit_sales_pkg_class.pm
index 666de13..fc7a3e3 100644
--- a/FS/FS/part_event/Action/Mixin/credit_sales_pkg_class.pm
+++ b/FS/FS/part_event/Action/Mixin/credit_sales_pkg_class.pm
@@ -3,6 +3,7 @@ use base qw( FS::part_event::Action::Mixin::credit_pkg );
use strict;
use FS::Record qw(qsearchs);
+use FS::sales_pkg_class;
sub option_fields {
my $class = shift;
diff --git a/FS/FS/part_event/Condition/pkg_age_Common.pm b/FS/FS/part_event/Condition/pkg_age_Common.pm
index 0f3b9ef..726b01d 100644
--- a/FS/FS/part_event/Condition/pkg_age_Common.pm
+++ b/FS/FS/part_event/Condition/pkg_age_Common.pm
@@ -40,7 +40,7 @@ sub option_fields {
sub condition {
my( $self, $cust_pkg, %opt ) = @_;
- my $age = $self->option_age_from('age', $opt{'time'} );
+ my $age = $self->pkg_age_age( $cust_pkg, %opt );
my $pkg_date = $cust_pkg->get( $self->option('field') );
@@ -48,6 +48,13 @@ sub condition {
}
+sub pkg_age_age {
+ my( $self, $cust_pkg, %opt );
+ $self->option_age_from('age', $opt{'time'} );
+}
+
+#doesn't work if you override pkg_age_age,
+# so if you do, override this with at least a stub that returns 'true'
sub condition_sql {
my( $class, $table, %opt ) = @_;
my $age = $class->condition_sql_option_age_from('age', $opt{'time'});
diff --git a/FS/FS/part_event/Condition/pkg_age_before_sales.pm b/FS/FS/part_event/Condition/pkg_age_before_sales.pm
new file mode 100644
index 0000000..4ad56fa
--- /dev/null
+++ b/FS/FS/part_event/Condition/pkg_age_before_sales.pm
@@ -0,0 +1,58 @@
+package FS::part_event::Condition::pkg_age_before_sales;
+use base qw( FS::part_event::Condition::pkg_age_before );
+
+use strict;
+use Time::Local qw( timelocal_nocheck );
+use FS::Record qw( qsearchs );
+use FS::sales_pkg_class;
+
+sub description { 'Package age younger than sales person commission duration'; }
+
+sub option_fields {
+ my $class = shift;
+ my %option_fields = $class->SUPER::option_fields();
+
+ delete $option_fields{'age'};
+
+ $option_fields{'cust_main_sales'} = {
+ 'label' => "Compare to the customer sales person if there is no package sales person",
+ 'type' => 'checkbox',
+ 'value' => 'Y',
+ };
+
+ %option_fields;
+}
+
+sub pkg_age_age {
+ my( $self, $cust_pkg, %opt );
+
+ my $salesnum = $cust_pkg->salesnum;
+ $salesnum ||= $self->cust_main($cust_pkg)->salesnum
+ if $self->option('cust_main_sales');
+
+ return 0 unless $salesnum;
+
+ my $sales_pkg_class = qsearchs( 'sales_pkg_class', {
+ 'salesnum' => $salesnum,
+ 'classnum' => $cust_pkg->part_pkg->classnum,
+ });
+
+ my $commission_duration = $sales_pkg_class->commission_duration;
+ return 0 unless $commission_duration =~ /^\s*(\d+)\s*$/;
+
+ #false laziness w/Condition::option_age_from, but just months
+
+ my $time = $opt{'time'};
+ my ($sec,$min,$hour,$mday,$mon,$year) = (localtime($time) )[0,1,2,3,4,5];
+ $mon -= $commission_duration;
+ until ( $mon >= 0 ) { $mon += 12; $year--; }
+
+ timelocal_nocheck($sec,$min,$hour,$mday,$mon,$year);
+}
+
+#no working condition_sql for this comparison yet, don't want pkg_age_Common's
+sub condition_sql {
+ 'true';
+}
+
+1;
diff --git a/FS/FS/part_event_condition.pm b/FS/FS/part_event_condition.pm
index d550680..78aa3b1 100644
--- a/FS/FS/part_event_condition.pm
+++ b/FS/FS/part_event_condition.pm
@@ -224,8 +224,7 @@ sub conditions {
my( $class, $eventtable ) = @_;
(
map { $_ => $conditions{$_} }
-# sort { $conditions{$a}->{'default_weight'}<=>$conditions{$b}->{'default_weight'} }
-# sort by ?
+ sort {$conditions{$a}->{'description'} cmp $conditions{$b}->{'description'}}
$class->all_conditionnames( $eventtable )
);
-----------------------------------------------------------------------
Summary of changes:
FS/FS/part_event.pm | 1 +
.../Action/Mixin/credit_sales_pkg_class.pm | 1 +
FS/FS/part_event/Condition/pkg_age_Common.pm | 9 +++-
FS/FS/part_event/Condition/pkg_age_before_sales.pm | 58 ++++++++++++++++++++
FS/FS/part_event_condition.pm | 3 +-
5 files changed, 69 insertions(+), 3 deletions(-)
create mode 100644 FS/FS/part_event/Condition/pkg_age_before_sales.pm
More information about the freeside-commits
mailing list