From: mark Date: Fri, 30 Jul 2010 05:50:24 +0000 (+0000) Subject: add pkg_freq event condition, RT#8896 X-Git-Tag: freeside_1_9_5~95 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=8d39836a37186ad0e3aa993e2cc659e0b986cd35 add pkg_freq event condition, RT#8896 --- diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index 3bbad5bb9..6799a24b8 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -8,6 +8,7 @@ use Data::Dumper; use IPC::Run qw( run timeout ); # for _pslatex use IPC::Run3; # for do_print... should just use IPC::Run i guess use File::Temp; +use Tie::IxHash; #do NOT depend on any FS:: modules here, causes weird (sometimes unreproducable #until on client machine) dependancy loops. put them in FS::Misc::Something #instead @@ -16,6 +17,7 @@ use File::Temp; @EXPORT_OK = qw( generate_email send_email send_fax states_hash counties state_label card_types + pkg_freqs generate_ps generate_pdf do_print csv_from_fixed ); @@ -618,6 +620,39 @@ sub generate_ps { } +=item pkg_freqs + +Returns a hash reference of allowed package billing frequencies. + +=cut + +sub pkg_freqs { + tie my %freq, 'Tie::IxHash', ( + '0' => '(no recurring fee)', + '1h' => 'hourly', + '1d' => 'daily', + '2d' => 'every two days', + '3d' => 'every three days', + '1w' => 'weekly', + '2w' => 'biweekly (every 2 weeks)', + '1' => 'monthly', + '45d' => 'every 45 days', + '2' => 'bimonthly (every 2 months)', + '3' => 'quarterly (every 3 months)', + '4' => 'every 4 months', + '137d' => 'every 4 1/2 months (137 days)', + '6' => 'semiannually (every 6 months)', + '12' => 'annually', + '13' => 'every 13 months (annually +1 month)', + '24' => 'biannually (every 2 years)', + '36' => 'triannually (every 3 years)', + '48' => '(every 4 years)', + '60' => '(every 5 years)', + '120' => '(every 10 years)', + ) ; + \%freq; +} + =item generate_pdf FILENAME Returns an PDF rendition of the LaTex file, as a scalar. FILENAME does not diff --git a/FS/FS/part_event/Condition/pkg_freq.pm b/FS/FS/part_event/Condition/pkg_freq.pm new file mode 100644 index 000000000..1fb848426 --- /dev/null +++ b/FS/FS/part_event/Condition/pkg_freq.pm @@ -0,0 +1,36 @@ +package FS::part_event::Condition::pkg_freq; + +use strict; +use FS::Misc; +use FS::cust_pkg; + +use base qw( FS::part_event::Condition ); + +sub description { 'Package billing frequency'; } + +sub option_fields { + my $freqs = FS::Misc::pkg_freqs(); + ( + 'freq' => { 'label' => 'Frequency', + 'type' => 'select', + 'labels' => $freqs, + 'options' => [ keys(%$freqs) ], + }, + ); +} + +sub eventtable_hashref { + { 'cust_main' => 0, + 'cust_bill' => 0, + 'cust_pkg' => 1, + }; +} + +sub condition { + my($self, $cust_pkg) = @_; + + $cust_pkg->part_pkg->freq eq $self->option('freq') +} + +1; + diff --git a/FS/FS/part_pkg.pm b/FS/FS/part_pkg.pm index 95bc56a13..ec88e1b2d 100644 --- a/FS/FS/part_pkg.pm +++ b/FS/FS/part_pkg.pm @@ -746,34 +746,9 @@ sub is_free { sub freqs_href { - #method, class method or sub? #my $self = shift; - - tie my %freq, 'Tie::IxHash', - '0' => '(no recurring fee)', - '1h' => 'hourly', - '1d' => 'daily', - '2d' => 'every two days', - '3d' => 'every three days', - '1w' => 'weekly', - '2w' => 'biweekly (every 2 weeks)', - '1' => 'monthly', - '45d' => 'every 45 days', - '2' => 'bimonthly (every 2 months)', - '3' => 'quarterly (every 3 months)', - '4' => 'every 4 months', - '137d' => 'every 4 1/2 months (137 days)', - '6' => 'semiannually (every 6 months)', - '12' => 'annually', - '13' => 'every 13 months (annually +1 month)', - '24' => 'biannually (every 2 years)', - '36' => 'triannually (every 3 years)', - '48' => '(every 4 years)', - '60' => '(every 5 years)', - '120' => '(every 10 years)', - ; - - \%freq; - + # moved to FS::Misc to make this accessible to other packages + # at initialization + FS::Misc::pkg_freqs(); } =item freq_pretty