[freeside-commits] branch FREESIDE_3_BRANCH updated. 188ea70e3966bb70cf5b112428671473ed9f9580

Mark Wells mark at 420.am
Fri Aug 9 13:37:38 PDT 2013


The branch, FREESIDE_3_BRANCH has been updated
       via  188ea70e3966bb70cf5b112428671473ed9f9580 (commit)
      from  5f25f76ab660040203be626ce62128af021d6185 (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 188ea70e3966bb70cf5b112428671473ed9f9580
Author: Mark Wells <mark at freeside.biz>
Date:   Fri Aug 9 13:36:27 2013 -0700

    preserve quantity when changing package type/location, #24259

diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm
index 93bff4b..91d459f 100644
--- a/FS/FS/cust_pkg.pm
+++ b/FS/FS/cust_pkg.pm
@@ -1734,6 +1734,11 @@ New pkgpart (see L<FS::part_pkg>).
 
 New refnum (see L<FS::part_referral>).
 
+=item quantity
+
+New quantity; if unspecified, the new package will have the same quantity
+as the old.
+
 =item cust_pkg
 
 "New" (existing) FS::cust_pkg object.  The package's services and other 
@@ -1769,9 +1774,6 @@ sub change {
   my $self = shift;
   my $opt = ref($_[0]) ? shift : { @_ };
 
-#  my ($custnum, $pkgparts, $remove_pkgnum, $return_cust_pkg, $refnum) = @_;
-#    
-
   my $conf = new FS::Conf;
 
   # Transactionize this whole mess
@@ -1792,10 +1794,6 @@ sub change {
 
   my $time = time;
 
-  #$hash{$_} = $self->$_() foreach qw( last_bill bill );
-    
-  #$hash{$_} = $self->$_() foreach qw( setup );
-
   $hash{'setup'} = $time if $self->setup;
 
   $hash{'change_date'} = $time;
@@ -1867,6 +1865,7 @@ sub change {
   }
 
   $hash{'contactnum'} = $opt->{'contactnum'} if $opt->{'contactnum'};
+  $hash{'quantity'} = $opt->{'quantity'} || $self->quantity;
 
   my $cust_pkg;
   if ( $opt->{'cust_pkg'} ) {
@@ -2100,7 +2099,9 @@ The date for the package change.  Required, and must be in the future.
 
 =item locationnum
 
-The pkgpart and locationnum of the new package, with the same 
+=item quantity
+
+The pkgpart. locationnum, and quantity of the new package, with the same 
 meaning as in C<change>.
 
 =back
@@ -2132,7 +2133,9 @@ sub change_later {
         if $opt->{'pkgpart'} and $opt->{'pkgpart'} != $change_to->pkgpart;
     my $new_locationnum = $opt->{'locationnum'}
         if $opt->{'locationnum'} and $opt->{'locationnum'} != $change_to->locationnum;
-    if ( $new_pkgpart or $new_locationnum ) {
+    my $new_quantity = $opt->{'quantity'}
+        if $opt->{'quantity'} and $opt->{'quantity'} != $change_to->quantity;
+    if ( $new_pkgpart or $new_locationnum or $new_quantity ) {
       # it hasn't been billed yet, so in principle we could just edit
       # it in place (w/o a package change), but that's bad form.
       # So change the package according to the new options...
@@ -2170,12 +2173,16 @@ sub change_later {
       if $opt->{'pkgpart'} and $opt->{'pkgpart'} != $self->pkgpart;
   my $new_locationnum = $opt->{'locationnum'}
       if $opt->{'locationnum'} and $opt->{'locationnum'} != $self->locationnum;
-  return '' unless $new_pkgpart or $new_locationnum; # wouldn't do anything
+  my $new_quantity = $opt->{'quantity'}
+      if $opt->{'quantity'} and $opt->{'quantity'} != $self->quantity;
+
+  return '' unless $new_pkgpart or $new_locationnum or $new_quantity; # wouldn't do anything
 
   my %hash = (
     'custnum'     => $self->custnum,
     'pkgpart'     => ($opt->{'pkgpart'}     || $self->pkgpart),
     'locationnum' => ($opt->{'locationnum'} || $self->locationnum),
+    'quantity'    => ($opt->{'quantity'}    || $self->quantity),
     'start_date'  => $date,
   );
   my $new = FS::cust_pkg->new(\%hash);
diff --git a/httemplate/edit/process/change-cust_pkg.html b/httemplate/edit/process/change-cust_pkg.html
index 9d06d8e..0d571de 100644
--- a/httemplate/edit/process/change-cust_pkg.html
+++ b/httemplate/edit/process/change-cust_pkg.html
@@ -27,7 +27,7 @@ my $cust_pkg = qsearchs({
 die 'unknown pkgnum' unless $cust_pkg;
 
 my %change = map { $_ => scalar($cgi->param($_)) }
-                 qw( locationnum pkgpart );
+                 qw( locationnum pkgpart quantity );
 
 $change{'keep_dates'} = 1;
 
diff --git a/httemplate/elements/tr-input-pkg-quantity.html b/httemplate/elements/tr-input-pkg-quantity.html
new file mode 100644
index 0000000..7ade573
--- /dev/null
+++ b/httemplate/elements/tr-input-pkg-quantity.html
@@ -0,0 +1,15 @@
+% if ( FS::Conf->new->exists('invoice-unitprice') or $curr_value > 1 ) {
+  <TR>
+    <TH ALIGN="right"><% mt('Quantity') |h %>
+    </TH>
+    <TD>
+      <INPUT TYPE="text" NAME="quantity" SIZE=4 VALUE="<% $curr_value |h %>">
+    </TD>
+  </TR>
+% } else {
+  <INPUT TYPE="hidden" NAME="quantity" VALUE="1">
+% }
+<%init>
+my %opt = @_;
+my $curr_value = $cgi->param('quantity') || $opt{'curr_value'} || 1;
+</%init>
diff --git a/httemplate/misc/change_pkg.cgi b/httemplate/misc/change_pkg.cgi
index 7425fbf..923be71 100755
--- a/httemplate/misc/change_pkg.cgi
+++ b/httemplate/misc/change_pkg.cgi
@@ -22,6 +22,10 @@
                'cust_main'  => $cust_main,
   &>
 
+  <& /elements/tr-input-pkg-quantity.html,
+               'curr_value' => $cust_pkg->quantity
+  &>
+
   <& /elements/tr-select-cust_location.html,
                'cgi'       => $cgi,
                'cust_main' => $cust_main,
@@ -94,7 +98,7 @@ my $title = "Change Package";
 if ( $cust_pkg->change_to_pkgnum ) {
   my $change_to = FS::cust_pkg->by_key($cust_pkg->change_to_pkgnum);
   $cgi->param('delay', 1);
-  foreach(qw( start_date pkgpart locationnum )) {
+  foreach(qw( start_date pkgpart locationnum quantity )) {
     $cgi->param($_, $change_to->get($_));
   }
   $title = "Edit Scheduled Package Change";
diff --git a/httemplate/misc/order_pkg.html b/httemplate/misc/order_pkg.html
index a257e53..66c405a 100644
--- a/httemplate/misc/order_pkg.html
+++ b/httemplate/misc/order_pkg.html
@@ -37,16 +37,7 @@
     &>
 % }
 
-% if ( $conf->exists('invoice-unitprice') ) {
-    <TR>
-      <TH ALIGN="right"><% mt('Quantity') |h %> </TD>
-      <TD>
-        <INPUT TYPE="text" NAME="quantity" SIZE=4 VALUE="<% $quantity %>">
-      </TD>
-    </TR>
-% } else {
-    <INPUT TYPE="hidden" NAME="quantity" VALUE="1">
-% }
+<& /elements/tr-input-pkg-quantity.html, curr_value => $quantity &>
 
 <TR>
   <TH ALIGN="right"><% mt('Start date') |h %> </TD>
diff --git a/httemplate/view/cust_main/packages/location.html b/httemplate/view/cust_main/packages/location.html
index 01cbc0f..5ff2b1e 100644
--- a/httemplate/view/cust_main/packages/location.html
+++ b/httemplate/view/cust_main/packages/location.html
@@ -70,8 +70,8 @@ sub pkg_change_location_link {
     'label'       => emt('Change location'),
     'actionlabel' => emt('Change'),
     'cust_pkg'    => $cust_pkg,
-    'width'       => 763,
-    'height'      => 380,
+    'width'       => 960,
+    'height'      => 490,
   );
 }
 
diff --git a/httemplate/view/cust_main/packages/package.html b/httemplate/view/cust_main/packages/package.html
index c460fa8..5fad2d6 100644
--- a/httemplate/view/cust_main/packages/package.html
+++ b/httemplate/view/cust_main/packages/package.html
@@ -288,8 +288,8 @@ sub pkg_change_link {
     'label'       => emt('Change package'),
     'actionlabel' => emt('Change'),
     'cust_pkg'    => $cust_pkg,
-    'width'       => 763,
-    'height'      => 480,
+    'width'       => 960,
+    'height'      => 490,
   );
 }
 
@@ -303,8 +303,8 @@ sub pkg_change_location_link {
     'label'       => emt('Change location'),
     'actionlabel' => emt('Change'),
     'cust_pkg'    => $cust_pkg,
-    'width'       => 763,
-    'height'      => 380,
+    'width'       => 960,
+    'height'      => 490,
   );
 }
 
diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html
index 6894a4e..70b623c 100644
--- a/httemplate/view/cust_main/packages/status.html
+++ b/httemplate/view/cust_main/packages/status.html
@@ -645,8 +645,8 @@ sub pkg_change_later_link {
     'label'       => emt('Reschedule'),
     'actionlabel' => emt('Edit scheduled change for'),
     'cust_pkg'    => $cust_pkg,
-    'width'       => 763,
-    'height'      => 480,
+    'width'       => 960,
+    'height'      => 490,
   )
 }
 

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

Summary of changes:
 FS/FS/cust_pkg.pm                                |   27 +++++++++++++--------
 httemplate/edit/process/change-cust_pkg.html     |    2 +-
 httemplate/elements/tr-input-pkg-quantity.html   |   15 ++++++++++++
 httemplate/misc/change_pkg.cgi                   |    6 ++++-
 httemplate/misc/order_pkg.html                   |   11 +--------
 httemplate/view/cust_main/packages/location.html |    4 +-
 httemplate/view/cust_main/packages/package.html  |    8 +++---
 httemplate/view/cust_main/packages/status.html   |    4 +-
 8 files changed, 47 insertions(+), 30 deletions(-)
 create mode 100644 httemplate/elements/tr-input-pkg-quantity.html




More information about the freeside-commits mailing list