fix discounts vs. quantities for prorate packages, RT#23530
[freeside.git] / FS / FS / part_pkg / sql_external.pm
index c0c5725..813e808 100644 (file)
@@ -1,7 +1,7 @@
 package FS::part_pkg::sql_external;
+use base qw( FS::part_pkg::discount_Mixin FS::part_pkg::recur_Common );
 
 use strict;
-use base qw( FS::part_pkg::recur_Common FS::part_pkg::discount_Mixin );
 use vars qw( %info );
 use DBI;
 #use FS::Record qw(qsearch qsearchs);
@@ -9,16 +9,12 @@ use DBI;
 %info = (
   'name' => 'Base charge plus additional fees for external services from a configurable SQL query',
   'shortname' => 'External SQL query',
-  'inherit_fields' => [ 'global_Mixin' ],
+  'inherit_fields' => [ 'prorate_Mixin', 'global_Mixin' ],
   'fields' => {
     'cutoff_day'    => { 'name' => 'Billing Day (1 - 28) for prorating or '.
                                    'subscription',
                          'default' => '1',
                        },
-    'add_full_period'=> { 'name' => 'When prorating first month, also bill '.
-                                    'for one full period after that',
-                          'type' => 'checkbox',
-                       },
 
     'recur_method'  => { 'name' => 'Recurring fee method',
                          #'type' => 'radio',
@@ -39,8 +35,9 @@ use DBI;
                  'default' => '',
                },
   },
-  'fieldorder' => [qw( recur_method cutoff_day
-                      add_full_period datasrc db_username db_password query 
+  'fieldorder' => [qw( recur_method cutoff_day ),
+                   FS::part_pkg::prorate_Mixin::fieldorder,
+                   qw( datasrc db_username db_password query 
                   )],
   'weight' => '58',
 );
@@ -74,7 +71,7 @@ sub calc_recur {
   }
 
   $param->{'override_charges'} = $price;
-  $self->calc_recur_Common($cust_pkg,$sdate,$details,$param);
+  ($cust_pkg->quantity || 1) * $self->calc_recur_Common($cust_pkg,$sdate,$details,$param);
 }
 
 sub can_discount { 1; }