X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=htdocs%2Fview%2Fcust_main.cgi;fp=htdocs%2Fview%2Fcust_main.cgi;h=0000000000000000000000000000000000000000;hp=7c96ddffa5fd04c905cfeda440c3a97b44bdecf9;hb=1d758388ce3b17b8de1ae1d3a8ec39c1026baefc;hpb=e6cf4af2b9d3ffefebe1a3e358f0674f566b56bc diff --git a/htdocs/view/cust_main.cgi b/htdocs/view/cust_main.cgi deleted file mode 100755 index 7c96ddffa..000000000 --- a/htdocs/view/cust_main.cgi +++ /dev/null @@ -1,437 +0,0 @@ -#!/usr/bin/perl -Tw -# -# $Id: cust_main.cgi,v 1.20 2001-06-03 11:40:48 ivan Exp $ -# -# Usage: cust_main.cgi custnum -# http://server.name/path/cust_main.cgi?custnum -# -# the payment history section could use some work, see below -# -# ivan@voicenet.com 96-nov-29 -> 96-dec-11 -# -# added navigation bar (go to main menu ;) -# ivan@voicenet.com 97-jan-30 -# -# changes to the way credits/payments are applied (the links are here). -# ivan@voicenet.com 97-apr-21 -# -# added debugging code to diagnose CPU sucking problem. -# ivan@voicenet.com 97-may-19 -# -# CPU sucking problem was in comment code? fixed? -# ivan@voicenet.com 97-may-22 -# -# rewrote for new API -# ivan@voicenet.com 97-jul-22 -# -# Changes to allow page to work at a relative position in server -# Changed 'day' to 'daytime' because Pg6.3 reserves the day word -# bmccane@maxbaud.net 98-apr-3 -# -# lose background, FS::CGI ivan@sisd.com 98-sep-2 -# -# $Log: cust_main.cgi,v $ -# Revision 1.20 2001-06-03 11:40:48 ivan -# inline doc clarification -# -# Revision 1.19 2001/04/22 01:38:39 ivan -# svc_domain needs to import dbh sub from Record -# view/cust_main.cgi needs to use ->owed method, not check (depriciated) owed field -# search/cust_bill.cgi redirect error when there's only one invoice -# -# Revision 1.18 1999/08/12 04:16:01 ivan -# hidecancelledpackages config option -# -# Revision 1.17 1999/04/15 16:44:36 ivan -# delete customers -# -# Revision 1.16 1999/04/09 04:22:34 ivan -# also table() -# -# Revision 1.15 1999/04/09 03:52:55 ivan -# explicit & for table/itable/ntable -# -# Revision 1.14 1999/04/08 04:04:37 ivan -# eliminate double // in links -# -# Revision 1.13 1999/02/28 00:04:00 ivan -# removed misleading comments -# -# Revision 1.12 1999/02/07 09:59:40 ivan -# more mod_perl fixes, and bugfixes Peter Wemm sent via email -# -# Revision 1.11 1999/01/25 12:26:04 ivan -# yet more mod_perl stuff -# -# Revision 1.10 1999/01/19 05:14:19 ivan -# for mod_perl: no more top-level my() variables; use vars instead -# also the last s/create/new/; -# -# Revision 1.9 1999/01/18 09:41:43 ivan -# all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl -# (good idea anyway) -# -# Revision 1.8 1999/01/18 09:22:35 ivan -# changes to track email addresses for email invoicing -# -# Revision 1.7 1998/12/30 23:03:34 ivan -# bugfixes; fields isn't exported by derived classes -# -# Revision 1.6 1998/12/23 02:42:33 ivan -# remove double '/' in link urls -# -# Revision 1.5 1998/12/23 02:36:28 ivan -# use FS::cust_refund; to eliminate warning -# -# Revision 1.4 1998/12/17 09:57:21 ivan -# s/CGI::(Base|Request)/CGI.pm/; -# -# Revision 1.3 1998/11/15 13:14:20 ivan -# first pass as per-customer custom pricing -# -# Revision 1.2 1998/11/13 11:28:08 ivan -# s/CGI-modules/CGI.pm/;, relative URL's with popurl -# - -use strict; -use vars qw ( $cgi $query $custnum $cust_main $hashref $agent $referral - @packages $package @history @bills $bill @credits $credit - $balance $item @agents @referrals @invoicing_list $n1 $conf ); -use CGI; -use CGI::Carp qw(fatalsToBrowser); -use Date::Format; -use FS::UID qw(cgisuidsetup); -use FS::Record qw(qsearchs qsearch); -use FS::CGI qw(header menubar popurl table itable ntable); -use FS::cust_credit; -use FS::cust_pay; -use FS::cust_bill; -use FS::part_pkg; -use FS::cust_pkg; -use FS::part_referral; -use FS::agent; -use FS::cust_main; -use FS::cust_refund; - -$cgi = new CGI; -&cgisuidsetup($cgi); - -$conf = new FS::Conf; - -print $cgi->header( '-expires' => 'now' ), header("Customer View", menubar( - 'Main Menu' => popurl(2) -)); - -die "No customer specified (bad URL)!" unless $cgi->keywords; -($query) = $cgi->keywords; # needs parens with my, ->keywords returns array -$query =~ /^(\d+)$/; -$custnum = $1; -$cust_main = qsearchs('cust_main',{'custnum'=>$custnum}); -die "Customer not found!" unless $cust_main; -$hashref = $cust_main->hashref; - -print &itable(), ''; - -print qq!Edit this customer!; -print qq! | Delete this customer! - if $conf->exists('deletecustomers'); -print &ntable("#c0c0c0"), "", &ntable("#c0c0c0",2), - 'Customer number', - $custnum, '', -; - -@agents = qsearch( 'agent', {} ); -unless ( scalar(@agents) == 1 ) { - $agent = qsearchs('agent',{ - 'agentnum' => $cust_main->agentnum - } ); - print 'Agent', - $agent->agentnum, ": ", $agent->agent, ''; -} -@referrals = qsearch( 'part_referral', {} ); -unless ( scalar(@referrals) == 1 ) { - my $referral = qsearchs('part_referral', { - 'refnum' => $cust_main->refnum - } ); - print 'Referral', - $referral->refnum, ": ", $referral->referral, ''; -} -print 'Order taker', - $cust_main->otaker, ''; - -print ''; - -print ''; - -print "Contact information", &ntable("#c0c0c0"), "", - &ntable("#c0c0c0",2), - 'Contact name
(last, first)', - '', - $cust_main->last, ', ', $cust_main->first, - 'SS#', - $cust_main->ss || ' ', '', - 'Company', - $cust_main->company, - '', - 'Address', - $cust_main->address1, - '', -; -print ' ', - $cust_main->address2, '' - if $cust_main->address2; -print 'City', - $cust_main->city, - 'State', - $cust_main->state, - 'Zip', - $cust_main->zip, '', - 'Country', - $cust_main->country, - '', -; -print 'Day Phone', - $cust_main->daytime || ' ', '', - 'Night Phone', - $cust_main->night || ' ', '', - 'Fax', - $cust_main->fax || ' ', '', - '', "" -; - -print ''; - -@invoicing_list = $cust_main->invoicing_list; -print "Billing information (", - qq!!, "Bill now)", - &ntable("#c0c0c0"), "", &ntable("#c0c0c0",2), - 'Tax exempt', - $cust_main->tax ? 'yes' : 'no', - '', - 'Postal invoices', - ( grep { $_ eq 'POST' } @invoicing_list ) ? 'yes' : 'no', - '', - 'Email invoices', - join(', ', grep { $_ ne 'POST' } @invoicing_list ) || 'no', - '', - 'Billing type', -; - -if ( $cust_main->payby eq 'CARD' ) { - print 'Credit card', - 'Card number', - $cust_main->payinfo, '', - 'Expiration', - $cust_main->paydate, '', - 'Name on card', - $cust_main->payname, '' - ; -} elsif ( $cust_main->payby eq 'BILL' ) { - print 'Billing'; - print 'P.O. ', - $cust_main->payinfo, '', - if $cust_main->payinfo; - print 'Expiration', - $cust_main->paydate, '', - 'Attention', - $cust_main->payname, '', - ; -} elsif ( $cust_main->payby eq 'COMP' ) { - print 'Complimentary', - 'Authorized by', - $cust_main->payinfo, '', - 'Expiration', - $cust_main->paydate, '', - ; -} - -print ""; - -print qq!

Packages !, -# qq!
Click on package number to view/edit package.!, - qq!( Order and cancel packages (preserves services) )!, -; - -#display packages - -#formatting -print qq!!, &table(), "\n", - qq!Package!, - qq!DatesServices\n!, - qq!Setup!, - qq!Next bill!, - qq!Susp.Expire!, - qq!!, - qq!Cancel!, - qq!\n!; - -#get package info -if ( $conf->exists('hidecancelledpackages') ) { - @packages = $cust_main->ncancelled_pkgs; -} else { - @packages = $cust_main->all_pkgs; -} - -$n1 = ''; -foreach $package (@packages) { - my $pkgnum = $package->pkgnum; - my $pkg = $package->part_pkg->pkg; - my $comment = $package->part_pkg->comment; - my $pkgview = popurl(2). "view/cust_pkg.cgi?$pkgnum"; - my @cust_svc = qsearch( 'cust_svc', { 'pkgnum' => $pkgnum } ); - my $rowspan = scalar(@cust_svc) || 1; - - my $button_cgi = new CGI; - $button_cgi->param('clone', $package->part_pkg->pkgpart); - $button_cgi->param('pkgnum', $package->pkgnum); - my $button_url = popurl(2). "edit/part_pkg.cgi?". $button_cgi->query_string; - - #print $n1, qq!$pkgnum!, - print $n1, qq!$pkgnum!, - qq!!, - #qq!$pkg - $comment!, - qq!$pkg - $comment!, - qq! ( Edit | Customize pricing )!, - ; - for ( qw( setup bill susp expire cancel ) ) { - print "", ( $package->getfield($_) - ? time2str("%D", $package->getfield($_) ) - : ' ' - ), '', - ; - } - - my $n2 = ''; - foreach my $cust_svc ( @cust_svc ) { - my($label, $value, $svcdb) = $cust_svc->label; - my($svcnum) = $cust_svc->svcnum; - my($sview) = popurl(2). "view"; - print $n2,qq!$label!, - qq!$value!; - $n2=""; - } - $n1=""; -} -print ""; - -#formatting -print ""; - -#formatting -print qq!

Payment History!, - qq!!, - qq! ( Click on invoice to view invoice/enter payment. | !, - qq!!, - qq!Post credit / refund )!; - -#get payment history -# -# major problem: this whole thing is way too sloppy. -# minor problem: the description lines need better formatting. - -@history = (); #needed for mod_perl :) - -@bills = qsearch('cust_bill',{'custnum'=>$custnum}); -foreach $bill (@bills) { - my($bref)=$bill->hashref; - push @history, - $bref->{_date} . qq!\tInvoice #! . $bref->{invnum} . - qq! (Balance \$! . $bill->owed . qq!)\t! . - $bref->{charged} . qq!\t\t\t!; - - my(@payments)=qsearch('cust_pay',{'invnum'=> $bref->{invnum} } ); - my($payment); - foreach $payment (@payments) { - my($date,$invnum,$payby,$payinfo,$paid)=($payment->getfield('_date'), - $payment->getfield('invnum'), - $payment->getfield('payby'), - $payment->getfield('payinfo'), - $payment->getfield('paid'), - ); - push @history, - "$date\tPayment, Invoice #$invnum ($payby $payinfo)\t\t$paid\t\t"; - } -} - -@credits = qsearch('cust_credit',{'custnum'=>$custnum}); -foreach $credit (@credits) { - my($cref)=$credit->hashref; - push @history, - $cref->{_date} . "\tCredit #" . $cref->{crednum} . ", (Balance \$" . - $cref->{credited} . ") by " . $cref->{otaker} . " - " . - $cref->{reason} . "\t\t\t" . $cref->{amount} . "\t"; - - my(@refunds)=qsearch('cust_refund',{'crednum'=> $cref->{crednum} } ); - my($refund); - foreach $refund (@refunds) { - my($rref)=$refund->hashref; - push @history, - $rref->{_date} . "\tRefund, Credit #" . $rref->{crednum} . " (" . - $rref->{payby} . " " . $rref->{payinfo} . ") by " . - $rref->{otaker} . " - ". $rref->{reason} . "\t\t\t\t" . - $rref->{refund}; - } -} - - #formatting - print &table(), < - Date - Description - Charge - Payment - In-house
Credit
- Refund - Balance - -END - -#display payment history - -$balance = 0; -foreach $item (sort keyfield_numerically @history) { - my($date,$desc,$charge,$payment,$credit,$refund)=split(/\t/,$item); - $charge ||= 0; - $payment ||= 0; - $credit ||= 0; - $refund ||= 0; - $balance += $charge - $payment; - $balance -= $credit - $refund; - - print "",time2str("%D",$date),"", - "$desc", - "", - ( $charge ? "\$".sprintf("%.2f",$charge) : '' ), - "", - "", - ( $payment ? "- \$".sprintf("%.2f",$payment) : '' ), - "", - "", - ( $credit ? "- \$".sprintf("%.2f",$credit) : '' ), - "", - "", - ( $refund ? "\$".sprintf("%.2f",$refund) : '' ), - "", - "\$" . sprintf("%.2f",$balance), - "", - "\n"; -} - -#formatting -print ""; - -#end - -#formatting -print < - -END - -#subroutiens -sub keyfield_numerically { (split(/\t/,$a))[0] <=> (split(/\t/,$b))[0] ; } -