time/data/etc. unit pricing add-ons, RT#24392
[freeside.git] / FS / FS / cust_pkg.pm
index 8d12ab9..a2173d9 100644 (file)
@@ -254,6 +254,12 @@ setting I<refnum> to an array reference of refnums or a hash reference with
 refnums as keys.  If no I<refnum> is defined, a default FS::pkg_referral
 record will be created corresponding to cust_main.refnum.
 
+If the additional field I<cust_pkg_usageprice> is defined, it will be treated
+as an arrayref of FS::cust_pkg_usageprice objects, which will be inserted.
+(Note that this field cannot be set with a usual ->cust_pkg_usageprice method.
+It can be set as part of the hash when creating the object, or with the B<set>
+method.)
+
 The following options are available:
 
 =over 4
@@ -353,6 +359,17 @@ sub insert {
                       'params'       => $self->refnum,
                     );
 
+  if ( $self->hashref->{cust_pkg_usageprice} ) {
+    for my $cust_pkg_usageprice ( @{ $self->hashref->{cust_pkg_usageprice} } ) {
+      $cust_pkg_usageprice->pkgnum( $self->pkgnum );
+      my $error = $cust_pkg_usageprice->insert;
+      if ( $error ) {
+        $dbh->rollback if $oldAutoCommit;
+        return $error;
+      }
+    }
+  }
+
   if ( $self->discountnum ) {
     my $error = $self->insert_discount();
     if ( $error ) {
@@ -2750,12 +2767,12 @@ the results.
 sub cust_svc {
   my $self = shift;
   cluck "cust_pkg->cust_svc called" if $DEBUG > 2;
-  $self->_sort_cust_svc( $self->cust_svc_unsorted_arrayref );
+  $self->_sort_cust_svc( $self->cust_svc_unsorted_arrayref(@_) );
 }
 
 sub cust_svc_unsorted {
   my $self = shift;
-  @{ $self->cust_svc_unsorted_arrayref };
+  @{ $self->cust_svc_unsorted_arrayref(@_) };
 }
 
 sub cust_svc_unsorted_arrayref {
@@ -3313,13 +3330,6 @@ sub _labels_short {
 
 Returns the parent customer object (see L<FS::cust_main>).
 
-=cut
-
-sub cust_main {
-  my $self = shift;
-  qsearchs( 'cust_main', { 'custnum' => $self->custnum } );
-}
-
 =item balance
 
 Returns the balance for this specific package, when using
@@ -3865,13 +3875,6 @@ sub recharge {
 
 =item cust_pkg_discount
 
-=cut
-
-sub cust_pkg_discount {
-  my $self = shift;
-  qsearch('cust_pkg_discount', { 'pkgnum' => $self->pkgnum } );
-}
-
 =item cust_pkg_discount_active
 
 =cut
@@ -3885,13 +3888,6 @@ sub cust_pkg_discount_active {
 
 Returns a list of all voice usage counters attached to this package.
 
-=cut
-
-sub cust_pkg_usage {
-  my $self = shift;
-  qsearch('cust_pkg_usage', { pkgnum => $self->pkgnum });
-}
-
 =item apply_usage OPTIONS
 
 Takes the following options: