From d7f622dc83e9050f83dd12abbaf1cd405a15aa22 Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Sat, 3 Nov 2012 12:25:22 -0700 Subject: [PATCH] adding pkg_reason_type and pkg_not_reason_type conditions, RT#20084 --- FS/FS/part_event/Condition/pkg_not_reason_type.pm | 58 +++++++++++++++++++++++ FS/FS/part_event/Condition/pkg_reason_type.pm | 58 +++++++++++++++++++++++ httemplate/elements/select-reason_type.html | 21 ++++++++ httemplate/elements/tr-select-reason_type.html | 29 ++++++++++++ 4 files changed, 166 insertions(+) create mode 100644 FS/FS/part_event/Condition/pkg_not_reason_type.pm create mode 100644 FS/FS/part_event/Condition/pkg_reason_type.pm create mode 100644 httemplate/elements/select-reason_type.html create mode 100644 httemplate/elements/tr-select-reason_type.html diff --git a/FS/FS/part_event/Condition/pkg_not_reason_type.pm b/FS/FS/part_event/Condition/pkg_not_reason_type.pm new file mode 100644 index 000000000..3fa08b762 --- /dev/null +++ b/FS/FS/part_event/Condition/pkg_not_reason_type.pm @@ -0,0 +1,58 @@ +package FS::part_event::Condition::pkg_not_reason_type; +use base qw( FS::part_event::Condition ); + +use strict; +use Tie::IxHash; +#use FS::Record qw( qsearch ); + +sub description { + 'Package Not Reason Type'; +} + +sub eventtable_hashref { + { 'cust_main' => 0, + 'cust_bill' => 0, + 'cust_pkg' => 1, + 'svc_acct' => 1, + }; +} + +tie my %actions, 'Tie::IxHash', + #'adjourn' => + 'susp' => 'Suspension', + #'expire' => + 'cancel' => 'Cancellation' +; + +sub option_fields { + ( + 'action' => { 'label' => 'Package Action', + 'type' => 'select', + 'options' => [ keys %actions ], + 'labels' => \%actions, + }, + 'typenum' => { 'label' => 'Not Reason Type', + 'type' => 'select-reason_type', + 'multiple' => 1, + }, + ); +} + +sub condition { + my( $self, $object ) = @_; + + my $cust_pkg = $self->cust_pkg($object); + + my $reason = $cust_pkg->last_reason( $self->option('action') ) + or return 0; + + my $hashref = $self->option('typenum') || {}; + ! $hashref->{ $reason->reason_type }; +} + +#sub condition_sql { +# my( $self, $table ) = @_; +# +#} + +1; diff --git a/FS/FS/part_event/Condition/pkg_reason_type.pm b/FS/FS/part_event/Condition/pkg_reason_type.pm new file mode 100644 index 000000000..f110e1b04 --- /dev/null +++ b/FS/FS/part_event/Condition/pkg_reason_type.pm @@ -0,0 +1,58 @@ +package FS::part_event::Condition::pkg_reason_type; +use base qw( FS::part_event::Condition ); + +use strict; +use Tie::IxHash; +#use FS::Record qw( qsearch ); + +sub description { + 'Package Reason Type'; +} + +sub eventtable_hashref { + { 'cust_main' => 0, + 'cust_bill' => 0, + 'cust_pkg' => 1, + 'svc_acct' => 1, + }; +} + +tie my %actions, 'Tie::IxHash', + #'adjourn' => + 'susp' => 'Suspension', + #'expire' => + 'cancel' => 'Cancellation' +; + +sub option_fields { + ( + 'action' => { 'label' => 'Package Action', + 'type' => 'select', + 'options' => [ keys %actions ], + 'labels' => \%actions, + }, + 'typenum' => { 'label' => 'Reason Type', + 'type' => 'select-reason_type', + 'multiple' => 1, + }, + ); +} + +sub condition { + my( $self, $object ) = @_; + + my $cust_pkg = $self->cust_pkg($object); + + my $reason = $cust_pkg->last_reason( $self->option('action') ) + or return 0; + + my $hashref = $self->option('typenum') || {}; + $hashref->{ $reason->reason_type }; +} + +#sub condition_sql { +# my( $self, $table ) = @_; +# +#} + +1; diff --git a/httemplate/elements/select-reason_type.html b/httemplate/elements/select-reason_type.html new file mode 100644 index 000000000..9031e583a --- /dev/null +++ b/httemplate/elements/select-reason_type.html @@ -0,0 +1,21 @@ +<% include( '/elements/select-table.html', + 'table' => 'reason_type', + 'name_col' => 'type', + 'value' => $typenum, + #XXX? 'empty_label' => '(none)', + #XXX? 'hashref' => { 'disabled' => '' }, + %opt, + ) +%> +<%init> + +my %opt = @_; +my $typenum = $opt{'curr_value'} || $opt{'value'}; + +#my %hash = (); +#$hash{'disabled'} = '' unless $opt{'showdisabled'}; + +#$opt{'records'} = delete $opt{'reason_type'} +# if $opt{'reason_type'}; + + diff --git a/httemplate/elements/tr-select-reason_type.html b/httemplate/elements/tr-select-reason_type.html new file mode 100644 index 000000000..9ac473ce7 --- /dev/null +++ b/httemplate/elements/tr-select-reason_type.html @@ -0,0 +1,29 @@ +% if ( scalar(@{ $opt{'reason_type'} }) == 0 ) { + + + +% } else { + + <& /elements/tr-td-label.html, label => $opt{'label'} || 'Reason type', %opt &> + + + <% include( '/elements/select-reason_type.html', + 'curr_value' => $typenum, + %opt + ) + %> + + + +% } + +<%init> + +my %opt = @_; +my $typenum = $opt{'curr_value'} || $opt{'value'}; + +$opt{'reason_type'} ||= [ qsearch( 'reason_type', { disabled=>'' } ) ]; + +my $colspan = delete($opt{'colspan'}) || 1; + + -- 2.11.0