summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/payby.pm125
-rw-r--r--FS/MANIFEST2
-rw-r--r--FS/t/payby.t5
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";