[freeside-commits] branch master updated. 98ea745e4b55a38ad8b5ba3749c56327d641d65d

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


The branch, master has been updated
       via  98ea745e4b55a38ad8b5ba3749c56327d641d65d (commit)
      from  2a49a712c97e5b5a012a91ff4bc2c0518c2af6d6 (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 98ea745e4b55a38ad8b5ba3749c56327d641d65d
Author: Mark Wells <mark at freeside.biz>
Date:   Fri Aug 9 13:36:43 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 01eaf62..0ecc0ff 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 596a473..7df0869 100644
--- a/httemplate/view/cust_main/packages/package.html
+++ b/httemplate/view/cust_main/packages/package.html
@@ -280,8 +280,8 @@ sub pkg_change_link {
     'label'       => emt('Change package'),
     'actionlabel' => emt('Change'),
     'cust_pkg'    => $cust_pkg,
-    'width'       => 763,
-    'height'      => 480,
+    'width'       => 960,
+    'height'      => 490,
   );
 }
 
@@ -295,8 +295,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