default to a session cookie instead of setting an explicit timeout, weird timezone...
[freeside.git] / FS / FS / reason_type.pm
index 4425c64..1d04986 100644 (file)
@@ -3,19 +3,38 @@ package FS::reason_type;
 use strict;
 use vars qw( @ISA );
 use FS::Record qw( qsearch qsearchs );
+use Tie::IxHash;
 
 @ISA = qw(FS::Record);
 
-our %class_name = (  
+tie our %class_name, 'Tie::IxHash', (  
   'C' => 'cancel',
   'R' => 'credit',
   'S' => 'suspend',
+  'F' => 'refund',
+  'X' => 'credit void',
+  'I' => 'invoice void',
+  'P' => 'payment void',
 );
 
 our %class_purpose = (  
   'C' => 'explain why a customer package was cancelled',
   'R' => 'explain why a customer was credited',
   'S' => 'explain why a customer package was suspended',
+  'F' => 'explain why a customer was refunded',
+  'X' => 'explain why a credit was voided',
+  'I' => 'explain why an invoice was voided',
+  'P' => 'explain why a payment was voided',
+);
+
+our %class_add_access_right = (
+  'C' => 'Add on-the-fly cancel reason',
+  'R' => 'Add on-the-fly credit reason',
+  'S' => 'Add on-the-fly suspend reason',
+  'F' => 'Add on-the-fly refund reason',
+  'X' => 'Add on-the-fly void reason',
+  'I' => 'Add on-the-fly void reason',
+  'P' => 'Add on-the-fly void reason',
 );
 
 =head1 NAME
@@ -46,7 +65,7 @@ inherits from FS::Record.  The following fields are currently supported:
 
 =item typenum - primary key
 
-=item class - currently 'C', 'R',  or 'S' for cancel, credit, or suspend 
+=item class - one of the keys of %class_name
 
 =item type - name of the type of reason
 
@@ -131,12 +150,7 @@ sub enabled_reasons {
                     } );
 }
 
-# _populate_initial_data
-#
 # Used by FS::Setup to initialize a new database.
-#
-#
-
 sub _populate_initial_data {  # class method
   my ($self, %opts) = @_;
 
@@ -169,12 +183,7 @@ sub _populate_initial_data {  # class method
 
 }
 
-# _upgrade_data
-#
 # Used by FS::Upgrade to migrate to a new database.
-#
-#
-
 sub _upgrade_data {  # class method
   my ($self, %opts) = @_;