use FS::Record qw(qsearch qsearchs dbh);
use FS::Msgcat qw(gettext);
use FS::Misc qw(card_types);
+use FS::Misc::DateTime qw(parse_datetime);
use FS::ClientAPI_SessionCache;
use FS::svc_acct;
use FS::svc_domain;
'show_paystate' => $conf->exists('show_bankstate'),
'save_unchecked' => $conf->exists('selfservice-save_unchecked'),
+
+ 'credit_card_surcharge_percentage' => $conf->config('credit-card-surcharge-percentage'),
};
}
#false laziness w/process/payment.cgi
my $payinfo;
my $paycvv = '';
+ my $paynum = '';
if ( $payby eq 'CHEK' || $payby eq 'DCHK' ) {
$p->{'payinfo1'} =~ /^([\dx]+)$/
'payname' => $payname,
'paybatch' => $paybatch, #this doesn't actually do anything
'paycvv' => $paycvv,
+ 'paynum_ref' => \$paynum,
'pkgnum' => $session->{'pkgnum'},
'discount_term' => $discount_term,
'selfservice' => 1,
}
}
- return { 'error' => '' };
+ my $receipt_html = '';
+ if($paynum) {
+ # currently supported for realtime CC only; send receipt data to SS
+ my $cust_pay = qsearchs('cust_pay', { 'paynum' => $paynum } );
+ if($cust_pay) {
+ $receipt_html = qq!
+<TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=2>
+
+<TR>
+ <TD ALIGN="right">Payment#</TD>
+ <TD BGCOLOR="#FFFFFF"><B>! . $cust_pay->paynum . qq!</B></TD>
+</TR>
+
+<TR>
+ <TD ALIGN="right">Date</TD>
+
+ <TD BGCOLOR="#FFFFFF"><B>! .
+ time2str("%a %b %o, %Y %r", $cust_pay->_date)
+ . qq!</B></TD>
+</TR>
+
+
+<TR>
+ <TD ALIGN="right">Amount</TD>
+ <TD BGCOLOR="#FFFFFF"><B>! . $cust_pay->paid . qq!</B></TD>
+
+</TR>
+
+<TR>
+ <TD ALIGN="right">Payment method</TD>
+ <TD BGCOLOR="#FFFFFF"><B>! . $cust_pay->payby_name .' #'. $cust_pay->paymask
+ . qq!</B></TD>
+</TR>
+
+</TABLE>
+!;
+ }
+ }
+
+ return { 'error' => '', 'receipt_html' => $receipt_html, };
}
'wholesale_view' => 1,
'login_svcpart' => [ $conf->config('selfservice_server-login_svcpart') ],
'date_format' => $conf->config('date_format') || '%m/%d/%Y',
+ 'lnp' => $conf->exists('svc_phone-lnp'),
};
}
map { $_ => $p->{$_} } @{$fields{$svcdb}}
} );
- if ( $svcdb eq 'svc_acct' ) {
+ if ( $svcdb eq 'svc_acct' && exists($p->{"snarf_machine1"}) ) {
my @acct_snarf;
my $snarfnum = 1;
while ( length($p->{"snarf_machine$snarfnum"}) ) {
tie my %hash, 'Tie::RefHash';
%hash = ( $cust_pkg => \@svc );
#msgcat
- $error = $cust_main->order_pkgs( \%hash, '', 'noexport' => 1 );
+ $error = $cust_main->order_pkgs( \%hash, 'noexport' => 1 );
return { 'error' => $error } if $error;
my $conf = new FS::Conf;
sub provision_phone {
my $p = shift;
- my @bulkdid = @{$p->{'bulkdid'}};
+ my @bulkdid;
+ @bulkdid = @{$p->{'bulkdid'}} if $p->{'bulkdid'};
+
+# single DID LNP
+ unless($p->{'lnp'}) {
+ $p->{'lnp_desired_due_date'} = parse_datetime($p->{'lnp_desired_due_date'});
+ $p->{'lnp_status'} = "portingin";
+ return _provision( 'FS::svc_phone',
+ [qw(lnp_desired_due_date lnp_other_provider
+ lnp_other_provider_account phonenum countrycode lnp_status)],
+ [qw(phonenum countrycode)],
+ $p,
+ @_
+ );
+ }
+
+# single DID order
unless (scalar(@bulkdid)) {
return _provision( 'FS::svc_phone',
[qw(phonenum countrycode)],
);
}
-# bulk case
+# bulk DID order case
my $error;
foreach my $did ( @bulkdid ) {
$did =~ s/[^0-9]//g;
# the requested ticket was actually linked to this customer
my @custs = @{$err_or_ticket->{'custs'}};
my @txns = @{$err_or_ticket->{'txns'}};
+ my @filtered_txns;
return { 'error' => 'no customer' } unless ( $custnum && scalar(@custs) );
return { 'error' => 'invalid ticket requested' }
unless grep($_ eq $custnum, @custs);
+ foreach my $txn ( @txns ) {
+ push @filtered_txns, $txn
+ if ($txn->{'type'} eq 'EmailRecord'
+ || $txn->{'type'} eq 'Correspond'
+ || $txn->{'type'} eq 'Create');
+ }
+
warn "$me get_ticket: sucessful: \n"
if $DEBUG;
return { 'error' => '',
- 'transactions' => \@txns,
+ 'transactions' => \@filtered_txns,
'ticket_id' => $p->{'ticket_id'},
};
} else {