credit for unused portion at cancellation, patch from pbowen
[freeside.git] / FS / FS / part_pkg / sql_external.pm
index 96071fa..28a4897 100644 (file)
@@ -9,31 +9,35 @@ use FS::part_pkg;
 @ISA = qw(FS::part_pkg::flat);
 
 %info = (
-    'name' => 'Base charge plus additional fees for external services from a configurable SQL query',
-    'fields' => {
-      'setup_fee' => { 'name' => 'Setup fee for this package',
-                       'default' => 0,
-                     },
-      'recur_flat' => { 'name' => 'Base monthly charge for this package',
-                        'default' => 0,
-                      },
-      'datasrc' => { 'name' => 'DBI data source',
-                     'default' => '',
+  'name' => 'Base charge plus additional fees for external services from a configurable SQL query',
+  'fields' => {
+    'setup_fee' => { 'name' => 'Setup fee for this package',
+                     'default' => 0,
                    },
-      'db_username' => { 'name' => 'Database username',
-                         'default' => '',
-                       },
-      'db_password' => { 'name' => 'Database password',
-                         'default' => '',
+    'recur_flat' => { 'name' => 'Base monthly charge for this package',
+                      'default' => 0,
+                    },
+    'unused_credit' => { 'name' => 'Credit the customer for the unused portion'.
+                                   ' of service at cancellation',
+                         'type' => 'checkbox',
                        },
-      'query' => { 'name' => 'SQL query',
+    'datasrc' => { 'name' => 'DBI data source',
                    'default' => '',
                  },
-    },
-    'fieldorder' => [qw( setup_fee recur_flat datasrc db_username db_password query )],
-    #'setup' => 'what.setup_fee.value',
-    #'recur' => q!'my $dbh = DBI->connect("' + what.datasrc.value + '", "' + what.db_username.value + '", "' + what.db_password.value + '" ) or die $DBI::errstr; my $sth = $dbh->prepare("' + what.query.value + '") or die $dbh->errstr; my $price = ' + what.recur_flat.value + '; foreach my $cust_svc ( grep { $_->part_svc->svcdb eq "svc_external" } $cust_pkg->cust_svc ){ my $id = $cust_svc->svc_x->id; $sth->execute($id) or die $sth->errstr; $price += $sth->fetchrow_arrayref->[0]; } $price;'!,
-    'weight' => '72',
+    'db_username' => { 'name' => 'Database username',
+                       'default' => '',
+                     },
+    'db_password' => { 'name' => 'Database password',
+                       'default' => '',
+                     },
+    'query' => { 'name' => 'SQL query',
+                 'default' => '',
+               },
+  },
+  'fieldorder' => [qw( setup_fee recur_flat unused_credit datasrc db_username db_password query )],
+  #'setup' => 'what.setup_fee.value',
+  #'recur' => q!'my $dbh = DBI->connect("' + what.datasrc.value + '", "' + what.db_username.value + '", "' + what.db_password.value + '" ) or die $DBI::errstr; my $sth = $dbh->prepare("' + what.query.value + '") or die $dbh->errstr; my $price = ' + what.recur_flat.value + '; foreach my $cust_svc ( grep { $_->part_svc->svcdb eq "svc_external" } $cust_pkg->cust_svc ){ my $id = $cust_svc->svc_x->id; $sth->execute($id) or die $sth->errstr; $price += $sth->fetchrow_arrayref->[0]; } $price;'!,
+  'weight' => '72',
 );
 
 sub calc_recur {