From 158a88620fa861dc473bf5501526fb1e9a9517dd Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 12 Dec 2007 05:43:56 +0000 Subject: [PATCH] cust_credit reason improvement, bugfix, and tool --- FS/FS/cust_credit.pm | 4 ++- FS/FS/h_cust_credit.pm | 33 +++++++++++++++++++++ FS/bin/freeside-disable-reasons | 64 +++++++++++++++++++++++++++++++++++++++++ FS/bin/freeside-upgrade | 5 ++++ 4 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 FS/FS/h_cust_credit.pm create mode 100755 FS/bin/freeside-disable-reasons diff --git a/FS/FS/cust_credit.pm b/FS/FS/cust_credit.pm index 96bf8efae..cbdc71db4 100644 --- a/FS/FS/cust_credit.pm +++ b/FS/FS/cust_credit.pm @@ -280,7 +280,7 @@ sub check { $self->_date(time) unless $self->_date; - $self->otaker(getotaker); + $self->otaker(getotaker) unless ($self->otaker); $self->SUPER::check; } @@ -388,6 +388,7 @@ sub reason { if (!$reason && $typenum) { $reason = new FS::reason( { 'reason_type' => $typenum, 'reason' => $value, + 'disabled' => 'Y', } ); $reason->insert and $reason = undef; } @@ -439,6 +440,7 @@ sub _upgrade_data { # class method }; my $noreason = qsearchs( 'reason', $hashref ); unless ($noreason) { + $hashref->{'disabled'} = 'Y'; $noreason = new FS::reason( $hashref ); my $error = $noreason->insert(); die "can't insert legacy reason '(none)' into database: $error\n" diff --git a/FS/FS/h_cust_credit.pm b/FS/FS/h_cust_credit.pm new file mode 100644 index 000000000..1425a26a6 --- /dev/null +++ b/FS/FS/h_cust_credit.pm @@ -0,0 +1,33 @@ +package FS::h_cust_credit; + +use strict; +use vars qw( @ISA ); +use FS::h_Common; +use FS::cust_credit; + +@ISA = qw( FS::h_Common FS::cust_credit ); + +sub table { 'h_cust_credit' }; + +=head1 NAME + +FS::h_cust_credit - Historical record of customer credit changes + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +An FS::h_cust_credit object represents historical changes to credits. +FS::h_cust_credit inherits from FS::h_Common and FS::cust_credit. + +=head1 BUGS + +=head1 SEE ALSO + +L, L, L, schema.html from the base +documentation. + +=cut + +1; + diff --git a/FS/bin/freeside-disable-reasons b/FS/bin/freeside-disable-reasons new file mode 100755 index 000000000..0af460919 --- /dev/null +++ b/FS/bin/freeside-disable-reasons @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w + +use strict; +use vars qw($opt_t $opt_e); +use Getopt::Std; +use FS::UID qw(adminsuidsetup); +use FS::Record qw(qsearch qsearchs); +use FS::reason_type; +use FS::reason; + +getopts('t:e'); + +my $user = shift or die &usage; +adminsuidsetup $user; + +die &usage + unless ($opt_t); + +$FS::Record::nowarn_identical = 1; + +my @reason = (); +if ( $opt_t ) { + $opt_t =~ /^(\d+)$/ or die "invalid reason_type"; + @reason = qsearch('reason', { reason_type => $1 } ); + die "no reasons found\n" unless @reason; +} else { + die "no reason_type specified\n"; +} + +foreach my $reason ( @reason ) { + if ( $opt_e ) { + $reason->disabled(''); + }else{ + $reason->disabled('Y'); + } + my $error = $reason->replace + if $reason->modified; + die $error if $error; +} + + +sub usage { + die "Usage:\n\n freeside-disable-reasons -t reason_type [ -e ] user\n"; +} + +=head1 NAME + +freeside-disable-reasons - Command line tool to set the disabled column for reasons + +=head1 SYNOPSIS + + freeside-disable-reasons -t reason_type [ -e ] user + +=head1 DESCRIPTION + + Disables the reasons of the specified reason type. + Enables instead if -e is specified. + +=head1 SEE ALSO + +L, L + +=cut + diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index fa9f90099..04bcb2340 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -93,6 +93,11 @@ if ( $dbh->{Driver}->{Name} =~ /^mysql/i ) { } } +$dbh->commit or die $dbh->errstr; # we *MUST* commit before upgrading data +dbdef_create($dbh, $dbdef_file); +delete $FS::Schema::dbdef_cache{$dbdef_file}; #force an actual reload +reload_dbdef($dbdef_file); + upgrade() unless $DRY_RUN; -- 2.11.0