% 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" ) %>
%
% } else {
%
-<% $cgi->redirect(popurl(3). "view/cust_main.cgi?". $new->custnum) %>
+<% $cgi->redirect( -uri => popurl(3). "view/cust_main.cgi?". $new->custnum,
+ -cookie => CGI::Cookie->new(
+ -name => 'freeside_status',
+ -value => mt($freeside_status),
+ -expires => '+5m',
+ ),
+ )
+%>
%
% }
<%once>
# but explicitly avoid setting ship_ fields
my $new = new FS::cust_main ( {
- map { ( $_, scalar($cgi->param($_)) ) } (fields('cust_main')),
- map { ( "ship_$_", '' ) } (FS::cust_main->location_fields)
+ (map { ( $_, scalar($cgi->param($_)) ) } (fields('cust_main'))),
+ (map { ( "ship_$_", '' ) } (FS::cust_main->location_fields))
} );
warn Dumper( $new ) if $DEBUG > 1;
$new->setfield('credit_limit', '');
}
-$new->tagnum( [ $cgi->param('tagnum') ] );
+#$new->tagnum( [ $cgi->param('tagnum') ] );
+my $params = $cgi->Vars;
+$new->tagnum( [
+ map { /^tagnum(\d+)/ && $1 }
+ grep { /^tagnum(\d+)/ && $cgi->param($_) } keys %$params
+] );
$error ||= $new->set_national_id_from_cgi( $cgi );
};
}
-$options{'contact_params'} = scalar($cgi->Vars);
$options{'cust_payby_params'} = scalar($cgi->Vars);
-my $email;
-
if ( $cgi->param('residential_commercial') eq 'Residential' ) {
- $email = $cgi->param('invoice_email') || '';
+ my $email = $cgi->param('invoice_email') || '';
if ( length($email) == 0 and $conf->exists('cust_main-require_invoicing_list_email', $agentnum) ) {
$error = 'Email address required';
}
+ #$email =~ s/\s+/\, /g;
+ #$options{'invoicing_list'} = [ split(/\s*,\s*/, $email) ];
+ $options{'invoicing_list'} = [ split(/[,\s]+/, $email) ];
+ #[:,\s\/]+
# XXX really should include the phone numbers in here also
} else {
- # contact UI is enabled; everything will be passed through via
- # contact_params
+ # contact UI is enabled
+ $options{'contact_params'} = scalar($cgi->Vars);
+
if ($conf->exists('cust_main-require_invoicing_list_email', $agentnum)) {
my $has_email = 0;
foreach my $prefix (grep /^contactnum\d+$/, $cgi->param) {
}
+# kind of a hack, but some tax data vendors require a status and others
+# don't.
+my $vendor = $conf->config('tax_data_vendor');
+if ( $vendor eq 'avalara' or $vendor eq 'suretax' ) {
+ if ( ! $cgi->param('taxstatusnum') ) {
+ $error ||= 'Tax status required';
+ }
+}
+
#perhaps this stuff should go to cust_main.pm
+my $freeside_status = '';
if ( $new->custnum eq '' or $duplicate_of ) {
+ $freeside_status = 'Customer added';
+
my $cust_pkg = '';
my $svc;
else {
# create the customer
$error ||= $new->insert( \%hash,
- [ $email ],
%options,
prospectnum => scalar($cgi->param('prospectnum')),
);
} else { #create old record object
+ $freeside_status = 'Customer edited';
+
my $old = qsearchs( 'cust_main', { 'custnum' => $new->custnum } );
$error ||= "Old record not found!" unless $old;
local($FS::Record::DEBUG) = $DEBUG if $DEBUG;
local($Data::Dumper::Sortkeys) = 1;
- warn Dumper({ new => $new, old => $old }) if $DEBUG;
+ warn Dumper({ new => $new, old => $old, options => \%options}) if $DEBUG;
- $error ||= $new->replace( $old, [ $email ], %options );
+ $error ||= $new->replace( $old, %options );
warn "$me returned from replace" if $DEBUG;