use IO::Scalar;
use Data::Dumper;
use Digest::MD5 qw(md5_hex);
++use Digest::SHA qw(sha512_hex);
use Date::Format;
use Time::Duration;
use Time::Local qw(timelocal_nocheck);
my $session_id;
do {
-- $session_id = md5_hex(md5_hex(time(). {}. rand(). $$))
++ $session_id = sha512_hex(time(). {}. rand(). $$)
} until ( ! defined _cache->get($session_id) ); #just in case
my $timeout = $conf->config('selfservice-session_timeout') || '1 hour';
my $reset_session_id;
do {
-- $reset_session_id = md5_hex(md5_hex(time(). {}. rand(). $$))
++ $reset_session_id = sha512_hex(time(). {}. rand(). $$)
} until ( ! defined _cache->get("reset_passwd_$reset_session_id") ); #just in case
_cache->set( "reset_passwd_$reset_session_id", $reset_session, $timeout );
'section' => 'self-service',
'description' => 'Acceptable payment types for the signup server',
'type' => 'selectmultiple',
-- 'select_enum' => [ qw(CARD DCRD CHEK DCHK LECB PREPAY PPAL BILL COMP) ],
++ 'select_enum' => [ qw(CARD DCRD CHEK DCHK PREPAY PPAL BILL COMP) ],
},
{
'section' => 'billing',
'description' => 'Available payment types.',
'type' => 'selectmultiple',
-- 'select_enum' => [ qw(CARD DCRD CHEK DCHK LECB BILL CASH WEST MCRD PPAL COMP) ],
++ 'select_enum' => [ qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD PPAL COMP) ],
},
{
'section' => 'UI',
'description' => 'Default payment type. HIDE disables display of billing information and sets customers to BILL.',
'type' => 'select',
-- 'select_enum' => [ '', qw(CARD DCRD CHEK DCHK LECB BILL CASH WEST MCRD PPAL COMP HIDE) ],
++ 'select_enum' => [ '', qw(CARD DCRD CHEK DCHK BILL CASH WEST MCRD PPAL COMP HIDE) ],
},
{
use FS::cable_provider;
use FS::cust_credit_void;
use FS::discount_class;
+ use FS::alarm_system;
+ use FS::alarm_type;
+ use FS::alarm_station;
+ use FS::addr_range;
# Sammath Naur
if ( $FS::Mason::addl_handler_use ) {
my ($self, $svc_phone) = @_;
my @login = $self->login;
-- my $location = $svc_phone->cust_location
++ my $location = $svc_phone->cust_location_or_main
or return 'no e911 location defined for this phone service';
warn "$me validating address for svcnum ".$svc_phone->svcnum."\n"
t/cust_credit_void.t
FS/discount_class.pm
t/discount_class.t
+FS/alarm_system.pm
+t/alarm_system.t
+FS/alarm_type.pm
+t/alarm_type.t
+FS/alarm_station.pm
+t/alarm_station.t
+ FS/addr_range.pm
+ t/addr_range.t
#needs to match FS::Record
my($dbdef_file) = "%%%FREESIDE_CONF%%%/dbdef.". datasrc;
--###
--
my $username_len = 32;
--#print "\n\n", <<END, ":";
--#Freeside tracks the RADIUS User-Name, check attribute Password and
--#reply attribute Framed-IP-Address for each user. You can specify additional
--#check and reply attributes (or you can add them later with the
--#fs-radius-add-check and fs-radius-add-reply programs).
--#
--#First enter any additional RADIUS check attributes you need to track for each
--#user, separated by whitespace.
--#END
--#my @check_attributes = map { $attrib2db{lc($_)} or die "unknown attribute $_"; }
--# split(" ",&getvalue);
--#
--#print "\n\n", <<END, ":";
--#Now enter any additional reply attributes you need to track for each user,
--#separated by whitespace.
--#END
--#my @attributes = map { $attrib2db{lc($_)} or die "unknown attribute $_"; }
--# split(" ",&getvalue);
--#
--#print "\n\n", <<END, ":";
--#Do you wish to enable the tracking of a second, separate shipping/service
--#address?
--#END
--#my $ship = &_yesno;
--#
--#sub getvalue {
--# my($x)=scalar(<STDIN>);
--# chop $x;
--# $x;
--#}
--#
--#sub _yesno {
--# print " [y/N]:";
--# my $x = scalar(<STDIN>);
--# $x =~ /^y/i;
--#}
--
--#my @check_attributes = (); #add later
--#my @attributes = (); #add later
--#my $ship = $opt_s;
--
###
# create a dbdef object from the old data structure
###
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
--my $fuzz = 2;
++#my $fuzz = 2;
my $changed = 0;
})
) {
-- #XXX only canceled packages?
-- #XXX only suspended packages?
--
my $h_cust_pkg =
qsearchs({ table => 'h_cust_pkg',
hashref => {
pkgnum => $cust_pkg->pkgnum,
-- history_action => 'replace_old',
setup => { op=>'!=', value=>'' },
($opt_u ? ('susp' => { op=>'!=', value=>'' })
: ()
: ()
),
},
-- extra_sql => ' AND history_date >= ? AND history_date <= ? ',
++ extra_sql => " AND history_action IN ('insert','replace_old')".
++ ' AND history_date >= ? AND history_date <= ? ',
extra_param => [ [$sdate,'int'], [$edate,'int'] ],
order_by => 'ORDER BY history_date DESC LIMIT 1',
})
$changed++;
#if ( $opt_r ) {
-- print "restoring setup for pkgnum ". $cust_pkg->pkgnum.
-- " (custnum ". $cust_pkg->custnum.
-- ") to ". time2str('%D', $h_cust_pkg->setup). "\n";
++ #print "restoring setup for pkgnum ". $cust_pkg->pkgnum.
++ # " (custnum ". $cust_pkg->custnum.
++ # ") to ". time2str('%D', $h_cust_pkg->setup). "\n";
++ print $cust_pkg->pkgnum. ','.
++ time2str('%D', $h_cust_pkg->setup). ','.
++ $cust_pkg->custnum. ','.
++ '"'. $cust_pkg->cust_main->name. '"'. "\n";
#}
-- $cust_pkg->set('setup', $h_cust_pkg->setup);
-- my $error = $cust_pkg->replace;
-- die $error if $error;
++ #don't actually do it yet ...
++ #$cust_pkg->set('setup', $h_cust_pkg->setup);
++ #my $error = $cust_pkg->replace;
++ ##die $error if $error;
++ #warn "error changing pkgnum ". $cust_pkg->pkgnum.': '. $error."\n";
}
$custnum = $response['custnum'];
-- error_log("[new_customer] signup up with custnum $custnum");
++ error_log("[new_customer] new signup with custnum $custnum");
} else {
my $payby_default = $conf->config('payby-default');
my @payby = grep /\w/, $conf->config('payby');
--#@payby = (qw( CARD DCRD CHEK DCHK LECB BILL CASH WEST COMP ))
--@payby = (qw( CARD DCRD CHEK DCHK LECB BILL CASH COMP ))
++#@payby = (qw( CARD DCRD CHEK DCHK BILL CASH WEST COMP ))
++@payby = (qw( CARD DCRD CHEK DCHK BILL CASH COMP ))
unless @payby;
my $show_term = '';