Merge branch 'master' of git.freeside.biz:/home/git/freeside
[freeside.git] / FS / FS / cust_main.pm
index 1e0e6d3..49b76ce 100644 (file)
@@ -1538,6 +1538,10 @@ sub replace {
     $self->censusyear($conf->config('census_year')||'2012');
   }
 
+  return "Invoicing locale is required"
+    if $old->locale
+    && ! $self->locale
+    && $conf->exists('cust_main-require_locale');
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
@@ -2139,6 +2143,11 @@ sub check {
     $self->payname($1);
   }
 
+  return "Please select an invoicing locale"
+    if ! $self->locale
+    && ! $self->custnum
+    && $conf->exists('cust_main-require_locale');
+
   foreach my $flag (qw( tax spool_cdr squelch_cdr archived email_csv_cdr )) {
     $self->$flag() =~ /^(Y?)$/ or return "Illegal $flag: ". $self->$flag();
     $self->$flag($1);
@@ -3963,9 +3972,16 @@ cust_main-default_agent_custid is set and it has a value, custnum otherwise.
 sub display_custnum {
   my $self = shift;
 
-  my $prefix = $conf->config('cust_main-custnum-display_prefix') || '';
+  my $prefix = $conf->config('cust_main-custnum-display_prefix', $self->agentnum) || '';
   if ( my $special = $conf->config('cust_main-custnum-display_special') ) {
-    if ( $special eq 'CoStCl' ) {
+    if ( $special eq 'CoStAg' ) {
+      $prefix = uc( join('',
+        $self->country,
+        ($self->state =~ /^(..)/),
+        $prefix || ($self->agent->agent =~ /^(..)/)
+      ) );
+    }
+    elsif ( $special eq 'CoStCl' ) {
       $prefix = uc( join('',
         $self->country,
         ($self->state =~ /^(..)/),
@@ -5070,6 +5086,16 @@ sub process_censustract_update {
   return;
 }
 
+#starting to take quite a while for big dbs
+# - seq scan of h_cust_main (yuck), but not going to index paycvv, so
+# - seq scan of cust_main on signupdate... index signupdate?  will that help?
+# - seq scan of cust_main on paydate... index on substrings?  maybe set an
+#    upgrade journal flag now that we have that, yyyy-m-dd paydates are ancient
+# - seq scan of cust_main on payinfo.. certainly not going toi ndex that...
+#    upgrade journal again?  this is also an ancient problem
+# - otaker upgrade?  journal and call it good?  (double check to make sure
+#    we're not still setting otaker here)
+
 sub _upgrade_data { #class method
   my ($class, %opts) = @_;