From 247a72232486b809bd0f0d88f3506dc0a1e79d93 Mon Sep 17 00:00:00 2001 From: Justin DeVuyst Date: Mon, 20 Mar 2017 16:17:56 -0400 Subject: [PATCH] Add configurable daily auto-disable for quotations. See RT#74665. --- FS/FS/Conf.pm | 7 +++++++ FS/FS/Cron/disable_quotation.pm | 21 +++++++++++++++++++++ FS/bin/freeside-daily | 4 ++++ 3 files changed, 32 insertions(+) create mode 100644 FS/FS/Cron/disable_quotation.pm diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 34e465dda..8d83f92d2 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -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 index 000000000..fde2686eb --- /dev/null +++ b/FS/FS/Cron/disable_quotation.pm @@ -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; diff --git a/FS/bin/freeside-daily b/FS/bin/freeside-daily index b12f90b23..67c4860d5 100755 --- a/FS/bin/freeside-daily +++ b/FS/bin/freeside-daily @@ -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(); -- 2.11.0