[freeside-commits] branch master updated. 31234485e8baf227ae4b013d4104d947c3afa250

Ivan ivan at 420.am
Thu Sep 14 14:53:23 PDT 2017


The branch, master has been updated
       via  31234485e8baf227ae4b013d4104d947c3afa250 (commit)
      from  e7c2e62ad9e8bbcf6d5c9f2a19c9de77f2a71e64 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 31234485e8baf227ae4b013d4104d947c3afa250
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Thu Sep 14 14:53:22 2017 -0700

    add quantity, setup and recur to package import, RT#76992

diff --git a/FS/FS/cust_pkg/Import.pm b/FS/FS/cust_pkg/Import.pm
index 96c6272..2467e6f 100644
--- a/FS/FS/cust_pkg/Import.pm
+++ b/FS/FS/cust_pkg/Import.pm
@@ -105,6 +105,7 @@ my %formatfields = (
   'svc_phone'    => [qw( countrycode phonenum sip_password pin )],
   'svc_external' => [qw( id title )],
   'location'     => [qw( address1 address2 city state zip country )],
+  'quan_price'   => [qw( quantity setup_fee recur_fee )],
 );
 
 sub _formatfields {
@@ -116,8 +117,11 @@ my %import_options = (
 
   'preinsert_callback'  => sub {
     my($record, $param) = @_;
-    my @location_params = grep /^location\./, keys %$param;
+
+    my @location_params = grep { /^location\./ && length($param->{$_}) }
+                            keys %$param;
     if (@location_params) {
+warn join('-', @location_params);
       my $cust_location = FS::cust_location->new({
           'custnum' => $record->custnum,
       });
@@ -130,6 +134,28 @@ my %import_options = (
       return "error creating location: $error" if $error;
       $record->set('locationnum', $cust_location->locationnum);
     }
+
+    $record->quantity( $param->{'quan_price.quantity'} )
+      if $param->{'quan_price.quantity'} > 0;
+    
+    my $s = $param->{'quan_price.setup_fee'};
+    my $r = $param->{'quan_price.recur_fee'};
+    my $part_pkg = $record->part_pkg;
+    if (    ( $s && $s != $part_pkg->option('setup_fee') )
+         or ( $r && $r != $part_pkg->option('recur_fee') )
+       )
+    {
+      my $custom_part_pkg = $part_pkg->clone;
+      $custom_part_pkg->disabled('Y');
+      my %options = $part_pkg->options;
+      $options{'setup_fee'} = $s if $s;
+      $options{'recur_fee'} = $r if $r;
+      my $error = $custom_part_pkg->insert( options=>\%options );
+      return "error customizing package: $error" if $error;
+      $record->pkgpart( $custom_part_pkg->pkgpart );
+    }
+
+
     '';
   },
 
diff --git a/httemplate/misc/cust_pkg-import.html b/httemplate/misc/cust_pkg-import.html
index ac25e93..6fdaea1 100644
--- a/httemplate/misc/cust_pkg-import.html
+++ b/httemplate/misc/cust_pkg-import.html
@@ -48,9 +48,9 @@ Import a file containing customer packages.
         <OPTION VALUE="location">Location
         <OPTION VALUE="location-agent_custid">Location with agent_custid
         <OPTION VALUE="location-agent_custid-agent_pkgid">Location with agent_custid and agent_pkgid
-        <OPTION VALUE="location-svc_phone">Location with phone service
-        <OPTION VALUE="location-svc_phone-agent_custid">Location with phone service and agent_custid
-        <OPTION VALUE="location-svc_phone-agent_custid-agent_pkgid">Location with phone service and agent_custid and agent_pkgid
+        <OPTION VALUE="location-quan_price-svc_phone">Location, quantity and price customizations with phone service
+        <OPTION VALUE="location-quan_price-svc_phone-agent_custid">Location, quantity and price customizations with phone service and agent_custid
+        <OPTION VALUE="location-quan_price-svc_phone-agent_custid-agent_pkgid">Location, quantity and price customizations with phone service and agent_custid and agent_pkgid
       </SELECT>
     </TD>
   </TR>
@@ -153,28 +153,31 @@ address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country<%$
 </i>
 <BR><BR>
 
-<b>Location with phone service</b> format has the following field order: <i>custnum<%$req%>,
+<b>Location, quantity and price customizations with phone service</b> format has the following field order: <i>custnum<%$req%>,
 pkgpart<%$req%>, discountnum,
 start_date, setup, bill, last_bill, susp, adjourn, cancel, expire,
+quantity, setup_fee, recur_fee,
 address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country<%$req%>, countrycode, phonenum, sip_password, pin
 </i>
 <BR><BR>
 
-<b>Location with phone service and agent_custid</b> format has the following field order: <i>agent_custid<%$req%>,
+<b>Location, quantity and price customizations with phone service and agent_custid</b> format has the following field order: <i>agent_custid<%$req%>,
 pkgpart<%$req%>, discountnum,
 start_date, setup, bill, last_bill, susp, adjourn, cancel, expire,
+quantity, setup_fee, recur_fee,
 address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country<%$req%>, countrycode, phonenum, sip_password, pin
 </i>
 <BR><BR>
 
-<b>Location with phone service and agent_custid and agent_pkgid</b> format has the following field order: <i>agent_custid<%$req%>, agent_pkgid,
+<b>Location, quantity and price customizations with phone service and agent_custid and agent_pkgid</b> format has the following field order: <i>agent_custid<%$req%>, agent_pkgid,
 pkgpart<%$req%>, discountnum,
 start_date, setup, bill, last_bill, susp, adjourn, cancel, expire,
+quantity, setup_fee, recur_fee,
 address1<%$req%>, address2, city<%$req%>, state<%$req%>, zip<%$req%>, country<%$req%>, countrycode, phonenum, sip_password, pin
 </i>
 <BR><BR>
 
-<%$req%> Required fields
+<%$req%> Required fields (for address fields, required if an address is specified)
 <BR><BR>
 
 Field information:

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_pkg/Import.pm             |   28 +++++++++++++++++++++++++++-
 httemplate/misc/cust_pkg-import.html |   17 ++++++++++-------
 2 files changed, 37 insertions(+), 8 deletions(-)




More information about the freeside-commits mailing list