)
),
( map { $_ => $conf->exists("selfservice-$_", $agentnum ) }
- qw( menu_skipblanks menu_skipheadings menu_nounderline )
+ qw( menu_skipblanks menu_skipheadings menu_nounderline no_logo )
),
( map { $_ => scalar($conf->config_binary("selfservice-$_", $agentnum)) }
qw( title_left_image title_right_image
%{ skin_info($p) },
'phone_login' => $conf->exists('selfservice_server-phone_login'),
'single_domain'=> scalar($conf->config('selfservice_server-single_domain')),
+ 'banner_url' => scalar($conf->config('selfservice-login_banner_url')),
+ 'banner_image_md5' =>
+ md5_hex($conf->config_binary('selfservice-login_banner_image')),
);
return \%info;
}
+sub login_banner_image {
+ my $p = shift;
+ my $conf = new FS::Conf;
+ my $image = $conf->config_binary('selfservice-login_banner_image');
+ return {
+ 'md5' => md5_hex($image),
+ 'image' => $image,
+ };
+}
+
#false laziness w/FS::ClientAPI::passwd::passwd
sub login {
my $p = shift;
$p->{'payinfo1'} =~ /^([\dx]+)$/
or return { 'error' => "illegal account number ". $p->{'payinfo1'} };
my $payinfo1 = $1;
- $p->{'payinfo2'} =~ /^([\dx\.]+)$/ # . turned on by -require-bank-branch?
+ $p->{'payinfo2'} =~ /^([\dx\.]+)$/ # . turned on by echeck-country CA ?
or return { 'error' => "illegal ABA/routing number ". $p->{'payinfo2'} };
my $payinfo2 = $1;
$payinfo = $payinfo1. '@'. $payinfo2;
$payinfo = $p->{'payinfo'};
- #more intelligent mathing will be needed here if you change
+ #more intelligent matching will be needed here if you change
#card_masking_method and don't remove existing paymasks
$payinfo = $cust_main->payinfo
if $cust_main->paymask eq $payinfo;
if ( $validate->{'save'} ) {
my $new = new FS::cust_main { $cust_main->hash };
- if ($validate->{'payby'} eq 'CARD' || $validate->{'payby'} eq 'DCRD') {
+ if ($payby eq 'CARD' || $payby eq 'DCRD') {
$new->set( $_ => $validate->{$_} )
foreach qw( payname paystart_month paystart_year payissue payip
address1 address2 city state zip country );
next if $pkgnum && $cust_pkg->pkgnum != $pkgnum;
push @cust_svc, @{[ $cust_pkg->cust_svc ]}; #@{[ ]} to force array context
}
+
+ @cust_svc = grep { $_->part_svc->selfservice_access ne 'hidden' } @cust_svc;
+
if ( $p->{'svcdb'} ) {
my $svcdb = ref($p->{'svcdb'}) eq 'HASH'
? $p->{'svcdb'}
map {
my $svc_x = $_->svc_x;
my($label, $value) = $_->label;
- my $svcdb = $_->part_svc->svcdb;
+ my $part_svc = $_->part_svc;
+ my $svcdb = $part_svc->svcdb;
my $cust_pkg = $_->cust_pkg;
my $part_pkg = $cust_pkg->part_pkg;
'label' => $label,
'value' => $value,
'pkg_status' => $cust_pkg->status,
+ 'readonly' => ( $part_svc->selfservice_access eq 'readonly' ),
);
if ( $svcdb eq 'svc_acct' ) {
}
+sub svc_status_hash {
+ my $p = shift;
+
+ my($context, $session, $custnum) = _custoragent_session_custnum($p);
+ return { 'error' => $session } if $context eq 'error';
+
+ #XXX only svc_acct for now
+ my $svc_x = _customer_svc_x( $custnum, $p->{'svcnum'}, 'svc_acct')
+ or return { 'error' => "Service not found" };
+
+ my ( $html, $hashref ) = $svc_x->export_getstatus;
+ return $hashref;
+
+}
+
+sub set_svc_status_hash {
+ my $p = shift;
+
+ my($context, $session, $custnum) = _custoragent_session_custnum($p);
+ return { 'error' => $session } if $context eq 'error';
+
+ #XXX only svc_acct for now
+ my $svc_x = _customer_svc_x( $custnum, $p->{'svcnum'}, 'svc_acct')
+ or return { 'error' => "Service not found" };
+
+ warn "set_svc_status_hash ". join(' / ', map "$_=>".$p->{$_}, keys %$p )
+ if $DEBUG;
+ my $error = $svc_x->export_setstatus($p); #$p? returns error?
+ return { 'error' => $error } if $error;
+
+ return {}; #? { 'error' => '' }
+
+}
+
+
sub acct_forward_info {
my $p = shift;
unless $svc_acct->check_password($p->{'old_password'});
}
- $svc_acct->_password($p->{'new_password'});
+ $svc_acct->set_password($p->{'new_password'});
my $error = $svc_acct->replace();
my($label, $value) = $svc_acct->cust_svc->label;
my $svc_acct = qsearchs('svc_acct', { 'svcnum' => $svcnum } )
or return { 'error' => "Service not found" };
- $svc_acct->_password($p->{'new_password'});
+ $svc_acct->set_password($p->{'new_password'});
my $error = $svc_acct->replace();
my($label, $value) = $svc_acct->cust_svc->label;