add calc_units to plans other than voip_cdr, #39639
[freeside.git] / FS / FS / part_pkg / global_Mixin.pm
index 899e73a..59eaaaa 100644 (file)
@@ -14,16 +14,39 @@ tie my %a2billing_simultaccess, 'Tie::IxHash', (
   1 => 'Enabled',
 );
 
+# much false laziness with FS::Record::ut_money
+sub validate_moneyn {
+  my ($option, $valref) = @_;
+  if ( $$valref eq '' ) {
+    return '';
+  } elsif ( $$valref =~ /^\s*(\d*)(\.\d{1})\s*$/ ) {
+    #handle one decimal place without barfing out
+    $$valref = ( ($1||''). ($2.'0') ) || 0;
+  } elsif ( $$valref =~ /^\s*(\d*)(\.\d{2})?\s*$/ ) {
+    $$valref = ( ($1||''). ($2||'') ) || 0;
+  } else {
+    return "Illegal (money) $option: ". $$valref;
+  }
+  return '';
+}
+
+tie my %count_available_phones, 'Tie::IxHash', (
+  0 => 'Provisioned phone services',
+  1 => 'All available phone services',
+);
+
 %info = (
   'disabled' => 1,
   'fields' => {
     'setup_fee' => { 
       'name' => 'Setup fee for this package',
       'default' => 0,
+      'validate' => \&validate_moneyn,
     },
     'recur_fee' => { 
       'name' => 'Recurring fee for this package',
       'default' => 0,
+      'validate' => \&validate_moneyn,
     },
     'unused_credit_cancel' => {
       'name' => 'Credit the customer for the unused portion of service at '.
@@ -40,6 +63,15 @@ tie my %a2billing_simultaccess, 'Tie::IxHash', (
                 'changing packages',
       'type' => 'checkbox',
     },
+    'delay_cancel' => {
+      'name' => 'Automatic suspension period before cancelling (configuration setting part_pkg-delay_cancel-days)',
+      'type' => 'checkbox',
+    },
+    'count_available_phones' => { 'name' => 'Count taxable phone lines',
+      'type' => 'radio',
+      'options' => \%count_available_phones,
+      'default' => 0,
+    },
 
     # miscellany--maybe put this in a separate module?
 
@@ -65,17 +97,63 @@ tie my %a2billing_simultaccess, 'Tie::IxHash', (
       'type'        => 'select',
       'select_options' => \%a2billing_simultaccess,
     },  
-  },
+    'a2billing_carrier_cost_min' => {
+      'name'        => 'A2Billing inbound carrier cost',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+      },
+    },
+   'a2billing_carrer_initblock_offp' => {
+      'name'        => 'A2Billing inbound carrier min duration',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+      },
+    },
+    'a2billing_carrier_increment_offp' => {
+      'name'        => 'A2Billing inbound carrier billing block',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+      },
+    },
+    'a2billing_retail_cost_min_offp' => {
+      'name'        => 'A2Billing inbound retail cost',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+      },
+    },
+    'a2billing_retail_initblock_offp' => {
+      'name'        => 'A2Billing inbound retail min duration',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+      },
+    },
+    'a2billing_retail_increment_offp' => {
+      'name'        => 'A2Billing inbound retail billing block',
+      'display_if'  => sub {
+        FS::part_export->count("exporttype = 'a2billing'") > 0;
+     },
+   },
+
+ },
   'fieldorder' => [ qw(
     setup_fee
     recur_fee
     unused_credit_cancel
     unused_credit_suspend
     unused_credit_change
+    delay_cancel
+
+    count_available_phones
 
     a2billing_tariff
     a2billing_type
     a2billing_simultaccess
+    a2billing_carrier_cost_min
+    a2billing_carrer_initblock_offp
+    a2billing_carrier_increment_offp
+    a2billing_retail_cost_min_offp
+    a2billing_retail_initblock_offp
+    a2billing_retail_increment_offp
   )],
 );