Add configurable daily auto-disable for quotations. See RT#74665.
authorJustin DeVuyst <justin@devuyst.com>
Mon, 20 Mar 2017 20:17:56 +0000 (16:17 -0400)
committerJustin DeVuyst <justin@devuyst.com>
Mon, 20 Mar 2017 20:17:56 +0000 (16:17 -0400)
FS/FS/Conf.pm
FS/FS/Cron/disable_quotation.pm [new file with mode: 0644]
FS/bin/freeside-daily

index 34e465d..8d83f92 100644 (file)
@@ -1506,6 +1506,13 @@ and customer address. Include units.',
   },
 
   {
+    'key'         => 'quotation_disable_after_days',
+    'section'     => 'quotations',
+    'description' => 'The number of days, if set, after which a non-converted quotation will be automatically disabled.',
+    'type'        => 'text'
+  },
+
+  {
     'key'         => 'invoice_print_pdf',
     'section'     => 'printing',
     'description' => 'For all invoice print operations, store postal invoices for download in PDF format rather than printing them directly.',
diff --git a/FS/FS/Cron/disable_quotation.pm b/FS/FS/Cron/disable_quotation.pm
new file mode 100644 (file)
index 0000000..fde2686
--- /dev/null
@@ -0,0 +1,21 @@
+package FS::Cron::disable_quotation;
+
+use vars qw( @ISA @EXPORT_OK );
+use Exporter;
+use FS::UID qw(dbh);
+use FS::Conf;
+
+@ISA = qw( Exporter );
+@EXPORT_OK = qw( disable_quotation );
+
+sub disable_quotation {
+    if ( my $days = FS::Conf->new->config( 'quotation_disable_after_days' ) ) {
+        my $sth = dbh->prepare(
+            "UPDATE quotation SET disabled = 'Y' WHERE _date < ?"
+        ) or die dbh->errstr;
+        $sth->execute( time - ( $days * 86400 ) ) or die $sth->errstr;
+        dbh->commit or die dbh->errstr if $FS::UID::AutoCommit;
+    }
+}
+
+1;
index b12f90b..67c4860 100755 (executable)
@@ -91,6 +91,10 @@ export_batch_submit(%opt);
 use FS::Cron::send_subscribed qw(send_subscribed);
 send_subscribed(%opt);
 
+#does nothing unless quotation_disable_after_days is set.
+use FS::Cron::disable_quotation qw(disable_quotation);
+disable_quotation();
+
 #clears out cacti imports & deletes select database cache files
 use FS::Cron::cleanup qw( cleanup cleanup_before_backup );
 cleanup_before_backup();