summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2013-11-08 17:23:55 -0800
committerMark Wells <mark@freeside.biz>2013-11-08 17:23:55 -0800
commit7f970a8c019bf51cb9a564b5a085a9d30f666393 (patch)
treed945b013848828ba7e4e26d1e8e078f01752c80f /bin
parent3b172c8a7b7ca97bd71671dc358f29c5116948da (diff)
script to repopulate ship_company field
Diffstat (limited to 'bin')
-rwxr-xr-xbin/restore-ship_company32
1 files changed, 32 insertions, 0 deletions
diff --git a/bin/restore-ship_company b/bin/restore-ship_company
new file mode 100755
index 000000000..cee700962
--- /dev/null
+++ b/bin/restore-ship_company
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+use FS::UID 'adminsuidsetup';
+use FS::Record qw(qsearch qsearchs dbh);
+use FS::cust_main;
+my $user = shift or die "Usage:
+ restore-ship_company username [ max-age ]
+";
+adminsuidsetup($user);
+
+$FS::UID::AutoCommit = 1;
+local $FS::cust_main::import = 1;
+
+my $days = shift || 30;
+my $time = time - (86400*$days); # by default, only restore within the last
+ # 30 days
+foreach my $cust_main (qsearch('cust_main', { ship_company => '' })) {
+ my $custnum = $cust_main->custnum;
+ my $last_h = qsearchs({
+ table => 'h_cust_main',
+ extra_sql => " WHERE custnum = $custnum".
+ " AND ship_company IS NOT NULL".
+ " AND history_date >= $time",
+ order_by => " ORDER BY history_date DESC LIMIT 1",
+ });
+ next if !$last_h;
+ print "$custnum\t".$last_h->ship_company."\n";
+ $cust_main->set('ship_company' => $last_h->ship_company);
+ my $error = $cust_main->replace;
+ warn "Error setting service company for customer #$custnum:\n $error\n"
+ if $error;
+}