diff options
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
-rw-r--r-- | FS/FS/payby.pm | 125 | ||||
-rw-r--r-- | FS/MANIFEST | 2 | ||||
-rw-r--r-- | FS/t/payby.t | 5 |
4 files changed, 133 insertions, 0 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index a0637f50c..33d0fd6d8 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -307,6 +307,7 @@ sub tables_hashref { 'part_bill_event' => { 'columns' => [ 'eventpart', 'serial', '', '', + 'freq', 'varchar', 'NULL', $char_d, 'payby', 'char', '', 4, 'event', 'varchar', '', $char_d, 'eventcode', @perl_type, diff --git a/FS/FS/payby.pm b/FS/FS/payby.pm new file mode 100644 index 000000000..3d43dff60 --- /dev/null +++ b/FS/FS/payby.pm @@ -0,0 +1,125 @@ +package FS::payby; + +use strict; +use vars qw(%hash); +use Tie::IxHash; + +=head1 NAME + +FS::payby - Object methods for payment type records + +=head1 SYNOPSIS + + use FS::payby; + + #for now... + + my @payby = FS::payby->payby; + + tie my %payby, 'Tie::IxHash', FS::payby->payby2longname + + my @cust_payby = FS::payby->cust_payby; + + tie my %payby, 'Tie::IxHash', FS::payby->cust_payby2longname + +=head1 DESCRIPTION + +Payment types. + +=head1 METHODS + +=over 4 + +=item + +=cut + +tie %hash, 'Tie::IxHash', + 'CARD' => { + tinyname => 'card', + shortname => 'Credit card', + longname => 'Credit card (automatic)', + }, + 'DCRD' => { + tinyname => 'card', + shortname => 'Credit card', + longname => 'Credit card (on-demand)', + cust_pay => 'CARD', #this is a customer type only, payments are CARD... + }, + 'CHEK' => { + tinyname => 'check', + shortname => 'Electronic check', + longname => 'Electronic check (automatic)', + }, + 'DCHK' => { + tinyname => 'check', + shortname => 'Electronic check', + longname => 'Electronic check (on-demand)', + cust_pay => 'CHEK', #this is a customer type only, payments are CHEK... + }, + 'LECB' => { + tinyname => 'phone bill', + shortname => 'Phone bill billing', + longname => 'Phone bill billing', + }, + 'BILL' => { + tinyname => 'billing', + shortname => 'Billing', + longname => 'Billing', + }, + 'CASH' => { + tinyname => 'cash', + shortname => 'Cash', # initial payment, then billing + longname => 'Cash', + cust_main => 'BILL', #this is a payment type only, customers go to BILL... + }, + 'WEST' => { + tinyname => 'western union', + shortname => 'Western Union', # initial payment, then billing + longname => 'Western Union', + cust_main => 'BILL', #this is a payment type only, customers go to BILL... + }, + 'MCRD' => { #not the same as DCRD + tinyname => 'card', + shortname => 'Manual credit card', # initial payment, then billing + longname => 'Manual credit card', + cust_main => 'BILL', #this is a payment type only, customers go to BILL... + }, + 'COMP' => { + tinyname => 'comp', + shortname => 'Complimentary', + longname => 'Complimentary', + }, +; + +sub payby { + keys %hash; +} + +sub payby2longname { + my $self = shift; + map { $_ => $hash{$_}->{longname} } $self->payby; +} + +sub cust_payby { + my $self = shift; + grep { ! exists $hash{$_}->{cust_main} } self->payby; +} + +sub cust_payby2longname { + my $self = shift; + map { $_ => $hash{$_}->{longname} } $self->cust_payby; +} + +=back + +=head1 BUGS + +This should eventually be an actual database table. + +=head1 SEE ALSO + +=cut + +1; + diff --git a/FS/MANIFEST b/FS/MANIFEST index c8f10f291..d8adfb9e0 100644 --- a/FS/MANIFEST +++ b/FS/MANIFEST @@ -125,6 +125,7 @@ FS/part_svc.pm FS/part_svc_column.pm FS/part_svc_router.pm FS/part_virtual_field.pm +FS/payby.pm FS/pkg_class.pm FS/pkg_svc.pm FS/rate.pm @@ -259,6 +260,7 @@ t/part_pop_local.t t/part_referral.t t/part_svc.t t/part_svc_column.t +t/payby.t t/pkg_class.t t/pkg_svc.t t/port.t diff --git a/FS/t/payby.t b/FS/t/payby.t new file mode 100644 index 000000000..7430bc8e5 --- /dev/null +++ b/FS/t/payby.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::payby; +$loaded=1; +print "ok 1\n"; |