[freeside-commits] branch FREESIDE_4_BRANCH updated. cc78510d45ed8d0a15ba4e3204633fa07d0befb3

Jonathan Prykop jonathan at 420.am
Wed Aug 3 17:27:33 PDT 2016


The branch, FREESIDE_4_BRANCH has been updated
       via  cc78510d45ed8d0a15ba4e3204633fa07d0befb3 (commit)
       via  5fc19693596421fcd080fdf26724a2eb11e1a743 (commit)
       via  60985040921a59d5bda7894f00b321a4f2cbad17 (commit)
      from  b4236044e83406ccfe7cf19d7689da1ebe4e6d7d (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 cc78510d45ed8d0a15ba4e3204633fa07d0befb3
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Wed Aug 3 19:18:17 2016 -0500

    RT#71518: Bug in the address editor [fixed query cleanup]

diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi
index 715e873..74f8f23 100755
--- a/httemplate/edit/process/cust_main.cgi
+++ b/httemplate/edit/process/cust_main.cgi
@@ -1,5 +1,15 @@
 % if ( $error ) {
 %   $cgi->param('error', $error);
+%   # workaround for create_uri_query's mangling of unicode characters,
+%   # false laziness with FS::Record::ut_coord
+%   use charnames ':full';
+%   for my $pre (qw(bill ship)) {
+%     foreach (qw( latitude longitude)) {
+%       my $coord = $cgi->param($pre.'_'.$_);
+%       $coord =~ s/\N{DEGREE SIGN}\s*$//;
+%       $cgi->param($pre.'_'.$_, $coord);
+%     }
+%   }
 %   my $query = $m->scomp('/elements/create_uri_query', 'secure'=>1);
 <% $cgi->redirect(popurl(2). "cust_main.cgi?$query" ) %>
 %
@@ -59,12 +69,6 @@ if ( $conf->exists('agent-ship_address', $cgi->param('agentnum')) ) {
 my %locations;
 for my $pre (qw(bill ship)) {
 
-  foreach (qw( latitude longitude)) {
-    my $coord = $cgi->param($pre.'_'.$_);
-    $coord =~ s/\N{DEGREE SIGN}\s*$//;
-    $cgi->param($pre.'_'.$_, $coord);
-  }
-
   my %hash;
   foreach ( FS::cust_main->location_fields ) {
     $hash{$_} = scalar($cgi->param($pre.'_'.$_));

commit 5fc19693596421fcd080fdf26724a2eb11e1a743
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Aug 3 16:16:28 2016 -0700

    strip degree signs from coord fields before saving CGI param state, workaround for #71518

diff --git a/httemplate/edit/process/cust_main.cgi b/httemplate/edit/process/cust_main.cgi
index 04516e9..715e873 100755
--- a/httemplate/edit/process/cust_main.cgi
+++ b/httemplate/edit/process/cust_main.cgi
@@ -59,6 +59,12 @@ if ( $conf->exists('agent-ship_address', $cgi->param('agentnum')) ) {
 my %locations;
 for my $pre (qw(bill ship)) {
 
+  foreach (qw( latitude longitude)) {
+    my $coord = $cgi->param($pre.'_'.$_);
+    $coord =~ s/\N{DEGREE SIGN}\s*$//;
+    $cgi->param($pre.'_'.$_, $coord);
+  }
+
   my %hash;
   foreach ( FS::cust_main->location_fields ) {
     $hash{$_} = scalar($cgi->param($pre.'_'.$_));

commit 60985040921a59d5bda7894f00b321a4f2cbad17
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Wed Aug 3 12:27:05 2016 -0500

    RT#71518: Bug in the address editor

diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm
index 0095b15..cea3285 100644
--- a/FS/FS/Record.pm
+++ b/FS/FS/Record.pm
@@ -2,6 +2,7 @@ package FS::Record;
 use base qw( Exporter );
 
 use strict;
+use charnames ':full';
 use vars qw( $AUTOLOAD
              %virtual_fields_cache %fk_method_cache $fk_table_cache
              $money_char $lat_lower $lon_upper
@@ -2909,6 +2910,10 @@ sub ut_coord {
   my $coord = $self->getfield($field);
   my $neg = $coord =~ s/^(-)//;
 
+  # ignore degree symbol at the end,
+  #   but not otherwise supporting degree/minutes/seconds symbols
+  $coord =~ s/\N{DEGREE SIGN}\s*$//;
+
   my ($d, $m, $s) = (0, 0, 0);
 
   if (
diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi
index 39cddc0..b314d2d 100755
--- a/httemplate/edit/cust_main.cgi
+++ b/httemplate/edit/cust_main.cgi
@@ -203,12 +203,19 @@ if ( $cgi->param('error') ) {
   my %locations;
   for my $pre (qw(bill ship)) {
     my %hash;
-    foreach ( FS::cust_main->location_fields ) {
-      $hash{$_} = scalar($cgi->param($pre.'_'.$_));
+    foreach my $locfield ( FS::cust_main->location_fields ) {
+      # don't search on lat/long, string values can cause qsearchs to die
+      next if grep {$_ eq $locfield} qw(latitude longitude);
+      $hash{$locfield} = scalar($cgi->param($pre.'_'.$locfield));
     }
     $hash{'custnum'} = $cgi->param('custnum');
     $locations{$pre} = qsearchs('cust_location', \%hash)
                        || FS::cust_location->new( \%hash );
+    # now set lat/long, for redisplay of entered values
+    foreach my $locfield ( qw(latitude longitude) ) {
+      my $locvalue = scalar($cgi->param($pre.'_'.$locfield));
+      $locations{$pre}->set($locfield,$locvalue);
+    }
   }
   if ( $same ) {
     $locations{ship} = $locations{bill};

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

Summary of changes:
 FS/FS/Record.pm                       |    5 +++++
 httemplate/edit/cust_main.cgi         |   11 +++++++++--
 httemplate/edit/process/cust_main.cgi |   10 ++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)




More information about the freeside-commits mailing list