X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2Fcgi%2Fselfservice.cgi;h=6986405748718fa563bf8a257cfe07b04be066ee;hb=3e6b291920daf5546efa5355e3ea6199e875d9db;hp=f194746c5e5c528fb9b2eab697ad1281e8accdd8;hpb=8f1188e8550992bf3d9078e7a6042420eaf92bd5;p=freeside.git diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index f194746c5..698640574 100755 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -12,7 +12,7 @@ use Date::Format; use Date::Parse 'str2time'; use Number::Format 1.50; use FS::SelfService qw( - access_info login_info login customer_info edit_info insert_payby update_payby + access_info login_info login customer_info edit_info insert_payby update_payby invoice payment_info process_payment realtime_collect process_prepay list_pkgs order_pkg signup_info order_recharge part_svc_info provision_acct provision_external provision_phone provision_forward @@ -284,7 +284,10 @@ sub change_bill { }; } sub change_ship { change_bill(@_); } -sub change_pay { change_bill(@_); } +sub change_pay { + my @payby = ('CARD', 'CHEK', 'DCHK'); + change_bill(@_); +} sub change_creditcard_pay { change_bill('CARD'); } sub change_check_pay { change_bill('CHEK'); } @@ -337,6 +340,32 @@ sub _process_change_payby { } } +sub _process_insert_payby { + my ($erroraction, @fields) = @_; + + my $results = ''; + + $results ||= insert_payby ( + 'session_id' => $session_id, + map { ($_ => $cgi->param($_)) } grep { defined($cgi->param($_)) } @fields, + ); + + ## check error + + + if ( $results->{'error'} ) { + no strict 'refs'; + $action = $erroraction; + return { + $cgi->Vars, + %{&$action()}, + 'error' => ''. $results->{'error'}. '', + }; + } else { + return $results; + } +} + sub process_change_bill { _process_change_info( 'change_bill', qw( first last company address1 address2 city state @@ -359,8 +388,9 @@ sub process_change_ship { sub process_change_pay { my $postal = $cgi->param( 'postal_invoicing' ); my $payby = $cgi->param( 'payby' ); + $cgi->param('paydate', $cgi->param('year') . '-' . $cgi->param('month') . '-01'); my @list = - qw( payby payinfo payinfo1 payinfo2 month year payname + qw( payby payinfo payinfo1 payinfo2 month year paydate payname custpaybynum address1 address2 city county state zip country auto paytype paystate ss stateid stateid_state invoicing_list ); @@ -378,7 +408,11 @@ sub process_change_pay { }; } - _process_change_info( 'change_pay', @list ); + if (FS::SelfService->can('update_payby')) { + if ($cgi->param( 'custpaybynum' )) { _process_change_payby( 'change_pay', @list ); } + else { _process_insert_payby( 'change_pay', @list ); } + } + else { _process_change_info( 'change_pay', @list ); } } sub process_change_creditcard_pay { @@ -389,20 +423,20 @@ sub process_change_creditcard_pay { address1 address2 city county state zip country auto paytype paystate ss stateid stateid_state invoicing_list ); - - _process_change_payby( 'change_creditcard_pay', @list ); + if ($cgi->param( 'custpaybynum' )) { _process_change_payby( 'change_creditcard_pay', @list ); } + else { _process_insert_payby( 'change_creditcard_pay', @list ); } } sub process_change_check_pay { my $payby = $cgi->param( 'payby' ); - $cgi->param('paydate', $cgi->param('year') . '-' . $cgi->param('month') . '-01'); + #$cgi->param('paydate', '2039-12-01'); my @list = qw( payby payinfo payinfo1 payinfo2 paydate payname custpaybynum address1 address2 city county state zip country auto paytype paystate ss stateid stateid_state invoicing_list ); - - _process_change_payby( 'change_check_pay', @list ); + if ($cgi->param( 'custpaybynum' )) { _process_change_payby( 'change_check_pay', @list ); } + else { _process_insert_payby( 'change_check_pay', @list ); } } sub view_invoice { @@ -700,9 +734,9 @@ sub payment_results { $cgi->param('paycvv') =~ /^\s*(.{0,4})\s*$/ or die "illegal CVV2"; my $paycvv = $1; - $cgi->param('month') =~ /^(\d{2})$/ or die "illegal month"; + $cgi->param('month') =~ /^(\d{2})/ or die "illegal month"; my $month = $1; - $cgi->param('year') =~ /^(\d{4})$/ or die "illegal year"; + $cgi->param('year') =~ /^(\d{4})/ or die "illegal year"; my $year = $1; $cgi->param('payname') =~ /^(.{0,80})$/ or die "illegal payname"; @@ -1299,5 +1333,3 @@ sub include { ); } - -