summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Misc.pm35
-rw-r--r--FS/FS/part_event/Condition/pkg_freq.pm36
-rw-r--r--FS/FS/part_pkg.pm31
3 files changed, 74 insertions, 28 deletions
diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm
index 19ac35c..3b0616a 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( send_email generate_email send_fax
states_hash counties cities state_label
card_types
+ pkg_freqs
generate_ps generate_pdf do_print
csv_from_fixed
);
@@ -608,6 +610,39 @@ sub card_types {
\%card_types;
}
+=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_ps FILENAME
Returns an postscript rendition of the LaTex file, as a scalar.
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 0000000..1fb8484
--- /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 ef7f557..f278d5e 100644
--- a/FS/FS/part_pkg.pm
+++ b/FS/FS/part_pkg.pm
@@ -774,34 +774,9 @@ sub is_free {
sub can_discount { 0; }
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