From 580330233cbf32c58d9f29dc391bd2ebd83e16d5 Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 16 Jul 2006 00:55:06 +0000 Subject: [PATCH] odds and ends --- FS/FS/Conf.pm | 4 +- FS/FS/agent.pm | 25 +- FS/FS/cust_bill.pm | 11 +- FS/FS/inventory_item.pm | 3 +- SCHEMA_CHANGE | 2 +- .../FS-SelfService/freeside-selfservice-clientd | 5 +- httemplate/autohandler | 15 +- httemplate/browse/cust_pay_batch.cgi | 2 +- httemplate/edit/cust_credit.cgi | 4 +- httemplate/elements/overlibmws.js | 328 ++++++++++----------- httemplate/elements/overlibmws_draggable.js | 4 +- httemplate/elements/phonenumber.html | 8 +- httemplate/search/cust_bill.html | 9 +- httemplate/search/svc_acct.cgi | 1 + httemplate/search/svc_domain.cgi | 5 +- httemplate/search/svc_forward.cgi | 5 +- httemplate/search/svc_www.cgi | 4 + httemplate/view/svc_external.cgi | 1 - 18 files changed, 231 insertions(+), 205 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 57c18e678..8b3cd1aa6 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1363,8 +1363,8 @@ httemplate/docs/config.html { 'key' => 'users-allow_comp', - 'section' => '', - 'description' => 'Usernames (Freeside users, created with freeside-adduser) which can create complimentary customers, one per line. If no usernames are entered, all users can create complimentary accounts.', + 'section' => 'deprecated', + 'description' => 'DEPRECATED, enable the Complimentary customer access right instead. Was: Usernames (Freeside users, created with freeside-adduser) which can create complimentary customers, one per line. If no usernames are entered, all users can create complimentary accounts.', 'type' => 'textarea', }, diff --git a/FS/FS/agent.pm b/FS/FS/agent.pm index 849dafa2a..4158341e4 100644 --- a/FS/FS/agent.pm +++ b/FS/FS/agent.pm @@ -221,7 +221,8 @@ sub cust_main_sql { =item num_active_cust_main -Returns the number of active customers for this agent. +Returns the number of active customers for this agent (customers with active +recurring packages). =cut @@ -239,6 +240,28 @@ sub active_cust_main { shift->cust_main_sql(FS::cust_main->active_sql); } +=item num_inactive_cust_main + +Returns the number of inactive customers for this agent (customers with no +active recurring packages, but otherwise unsuspended/uncancelled). + +=cut + +sub num_inactive_cust_main { + shift->num_sql(FS::cust_main->inactive_sql); +} + +=item inactive_cust_main + +Returns the inactive customers for this agent, as cust_main objects. + +=cut + +sub inactive_cust_main { + shift->cust_main_sql(FS::cust_main->inactive_sql); +} + + =item num_susp_cust_main Returns the number of suspended customers for this agent. diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 8a05fcf31..def84f91a 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -21,6 +21,7 @@ use FS::cust_credit; use FS::cust_pay; use FS::cust_pkg; use FS::cust_credit_bill; +use FS::pay_batch; use FS::cust_pay_batch; use FS::cust_bill_event; use FS::part_pkg; @@ -1282,17 +1283,19 @@ L). sub batch_card { my $self = shift; my $cust_main = $self->cust_main; + my $oldAutoCommit = $FS::UID::AutoCommit; local $FS::UID::AutoCommit = 0; my $dbh = dbh; my $pay_batch = qsearchs('pay_batch', {'status' => 'O'}); - unless ($pay_batch) { + unless ( $pay_batch ) { $pay_batch = new FS::pay_batch; $pay_batch->setfield('status' => 'O'); my $error = $pay_batch->insert; if ( $error ) { + $dbh->rollback if $oldAutoCommit; die "error creating new batch: $error\n"; } } @@ -1315,10 +1318,12 @@ sub batch_card { 'amount' => $self->owed, } ); my $error = $cust_pay_batch->insert; - die $error if $error; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + die $error; + } $dbh->commit or die $dbh->errstr if $oldAutoCommit; - ''; } diff --git a/FS/FS/inventory_item.pm b/FS/FS/inventory_item.pm index 23bacf040..7fa350f2a 100644 --- a/FS/FS/inventory_item.pm +++ b/FS/FS/inventory_item.pm @@ -3,10 +3,11 @@ package FS::inventory_item; use strict; use vars qw( @ISA ); use FS::Record qw( dbh qsearch qsearchs ); +use FS::cust_main_Mixin; use FS::inventory_class; use FS::cust_svc; -@ISA = qw(FS::Record); +@ISA = qw( FS::cust_main_Mixin FS::Record ); =head1 NAME diff --git a/SCHEMA_CHANGE b/SCHEMA_CHANGE index db39c28d9..b3d77aaf8 100644 --- a/SCHEMA_CHANGE +++ b/SCHEMA_CHANGE @@ -3,7 +3,7 @@ primarily: if the changes are something other than table and/or column additions: - httemplate/docs/upgrade10.html -- README.1.5.X +- README.1.7.X for new tables: - make sure the new tables are added to FS/FS/Schema.pm and run make install-perl-modules diff --git a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd index ededfa6e9..bdc8e1547 100644 --- a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd +++ b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd @@ -57,8 +57,9 @@ if ( -e $pid_file ) { open(PIDFILE,"<$pid_file"); my $old_pid = ; close PIDFILE; - $old_pid =~ /^(\d+)$/; - kill 'TERM', $1; + if ( $old_pid =~ /^(\d+)$/ ) { + kill 'TERM', $1; + } } open(PIDFILE,">$pid_file"); print PIDFILE "$$\n"; diff --git a/httemplate/autohandler b/httemplate/autohandler index ad0ab8ba6..a017eccb7 100644 --- a/httemplate/autohandler +++ b/httemplate/autohandler @@ -9,15 +9,18 @@ if ( UNIVERSAL::can(dbh, 'sprintProfile') ) { if ( lc($r->content_type) eq 'text/html' ) { - # barely worth it, just in case someone tries to use profiling on a - # non-RT install - eval "use Text::Wrapper;"; - die $@ if $@; + ## barely worth it, just in case someone tries to use profiling on a + ## non-RT install + #eval "use Text::Wrapper;"; + #die $@ if $@; my $wrapper = new Text::Wrapper( columns => 80 ); - + my $text = dbh->sprintProfile(); + #my $text = $wrapper->wrap( dbh->sprintProfile() ); + $text =~ s/^/ /mg; + $profile = '
'.
-               encode_entities( $wrapper->wrap( dbh->sprintProfile() ) ).
+               encode_entities( $text ).
                #"\n\n". &sprintAutoProfile(). '
'; "\n\n". ''; } diff --git a/httemplate/browse/cust_pay_batch.cgi b/httemplate/browse/cust_pay_batch.cgi index 6ee983ab4..c7f0afe76 100755 --- a/httemplate/browse/cust_pay_batch.cgi +++ b/httemplate/browse/cust_pay_batch.cgi @@ -15,7 +15,7 @@ Filename
Format

diff --git a/httemplate/edit/cust_credit.cgi b/httemplate/edit/cust_credit.cgi index 946b1087b..d19f0e4b3 100755 --- a/httemplate/edit/cust_credit.cgi +++ b/httemplate/edit/cust_credit.cgi @@ -24,9 +24,7 @@ my $otaker = getotaker; my $p1 = popurl(1); -%> - -<%= header("Post Credit", '') %> +%><%= include('/elements/header-popup.html', 'Post Credit') %> <% if ( $cgi->param('error') ) { %> Error: <%= $cgi->param('error') %> diff --git a/httemplate/elements/overlibmws.js b/httemplate/elements/overlibmws.js index fba1105b5..5ef50d68f 100644 --- a/httemplate/elements/overlibmws.js +++ b/httemplate/elements/overlibmws.js @@ -1,7 +1,7 @@ /* Do not remove or change this notice. overlibmws.js core module - Copyright Foteos Macrides 2002-2005. All rights reserved. - Initial: August 18, 2002 - Last Revised: February 10, 2005 + Initial: August 18, 2002 - Last Revised: May 30, 2006 This module is subject to the same terms of usage as for Erik Bosrup's overLIB, though only a minority of the code and API now correspond with Erik's version. See the overlibmws Change History and Command Reference via: @@ -14,30 +14,30 @@ */ // PRE-INIT -- Ignore these lines, configuration is below. -var OLloaded=0,pmCnt=1,pMtr=new Array(),OLv,OLudf,OLrefXY; -var OLpct=new Array("83%","67%","83%","100%","117%","150%","200%","267%"); -var OLbubblePI=0,OLcrossframePI=0,OLdebugPI=0,OLdraggablePI=0,OLexclusivePI=0,OLfilterPI=0; -var OLfunctionPI=0,OLhidePI=0,OLiframePI=0,OLovertwoPI=0,OLscrollPI=0,OLshadowPI=0; +var OLloaded=0,pmCnt=1,pMtr=new Array(),OLcmdLine=new Array(),OLrunTime=new Array(),OLv,OLudf, +OLpct=new Array("83%","67%","83%","100%","117%","150%","200%","267%"),OLrefXY, +OLbubblePI=0,OLcrossframePI=0,OLdebugPI=0,OLdraggablePI=0,OLexclusivePI=0,OLfilterPI=0, +OLfunctionPI=0,OLhidePI=0,OLiframePI=0,OLovertwoPI=0,OLscrollPI=0,OLshadowPI=0,OLprintPI=0; if(typeof OLgateOK=='undefined')var OLgateOK=1; -OLregCmds( - 'inarray,caparray,caption,sticky,nofollow,background,noclose,mouseoff,offdelay,right,left,' -+'center,offsetx,offsety,fgcolor,bgcolor,cgcolor,textcolor,capcolor,closecolor,width,wrap,' -+'wrapmax,height,border,base,status,autostatus,autostatuscap,snapx,snapy,fixx,fixy,relx,rely,' -+'midx,midy,ref,refc,refp,refx,refy,fgbackground,bgbackground,cgbackground,padx,pady,fullhtml,' -+'below,above,vcenter,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,' -+'timeout,delay,hauto,vauto,nojustx,nojusty,closetext,closeclick,closetitle,fgclass,bgclass,' -+'cgclass,capbelow,textpadding,textfontclass,captionpadding,captionfontclass,closefontclass,' -+'label,donothing'); - +var OLp1or2c='inarray,caparray,caption,closetext,right,left,center,autostatuscap,padx,pady,' ++'below,above,vcenter,donothing',OLp1or2co='nofollow,background,offsetx,offsety,fgcolor,' ++'bgcolor,cgcolor,textcolor,capcolor,width,wrap,wrapmax,height,border,base,status,autostatus,' ++'snapx,snapy,fixx,fixy,relx,rely,midx,midy,ref,refc,refp,refx,refy,fgbackground,bgbackground,' ++'cgbackground,fullhtml,capicon,textfont,captionfont,textsize,captionsize,timeout,delay,hauto,' ++'vauto,nojustx,nojusty,fgclass,bgclass,cgclass,capbelow,textpadding,textfontclass,' ++'captionpadding,captionfontclass,sticky,noclose,mouseoff,offdelay,closecolor,closefont,' ++'closesize,closeclick,closetitle,closefontclass,decode',OLp1or2o='text,cap,close,hpos,vpos,' ++'padxl,padxr,padyt,padyb',OLp1co='label',OLp1or2=OLp1or2co+','+OLp1or2o,OLp1=OLp1co+','+'frame'; +OLregCmds(OLp1or2c+','+OLp1or2co+','+OLp1co); function OLud(v){return eval('typeof ol_'+v+'=="undefined"')?1:0;} -// DEFAULT CONFIGURATION -- See overlibConfig.txt for descriptions. -if(OLud('fgcolor'))var ol_fgcolor="#CCCCFF"; +// DEFAULT CONFIGURATION -- See overlibConfig.txt for descriptions +if(OLud('fgcolor'))var ol_fgcolor="#ccccff"; if(OLud('bgcolor'))var ol_bgcolor="#333399"; if(OLud('cgcolor'))var ol_cgcolor="#333399"; if(OLud('textcolor'))var ol_textcolor="#000000"; -if(OLud('capcolor'))var ol_capcolor="#FFFFFF"; -if(OLud('closecolor'))var ol_closecolor="#EEEEFF"; +if(OLud('capcolor'))var ol_capcolor="#ffffff"; +if(OLud('closecolor'))var ol_closecolor="#eeeeff"; if(OLud('textfont'))var ol_textfont="Verdana,Arial,Helvetica"; if(OLud('captionfont'))var ol_captionfont="Verdana,Arial,Helvetica"; if(OLud('closefont'))var ol_closefont="Verdana,Arial,Helvetica"; @@ -106,43 +106,41 @@ if(OLud('vauto'))var ol_vauto=0; if(OLud('nojustx'))var ol_nojustx=0; if(OLud('nojusty'))var ol_nojusty=0; if(OLud('label'))var ol_label=""; +if(OLud('decode'))var ol_decode=0; // ARRAY CONFIGURATION - See overlibConfig.txt for descriptions. if(OLud('texts'))var ol_texts=new Array("Text 0","Text 1"); if(OLud('caps'))var ol_caps=new Array("Caption 0","Caption 1"); // END CONFIGURATION -- Don't change anything below, all configuration is above. // INIT -- Runtime variables. -var o3_text="",o3_cap="",o3_sticky=0,o3_nofollow=0,o3_background="",o3_noclose=0,o3_mouseoff=0; -var o3_offdelay=300,o3_hpos=RIGHT,o3_offsetx=10,o3_offsety=10,o3_fgcolor="",o3_bgcolor=""; -var o3_cgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=200,o3_wrap=0; -var o3_wrapmax=0,o3_height= -1,o3_border=1,o3_base=0,o3_status="",o3_autostatus=0,o3_snapx=0; -var o3_snapy=0,o3_fixx= -1,o3_fixy= -1,o3_relx=null,o3_rely=null,o3_midx=null,o3_midy=null; -var o3_ref="",o3_refc='UL',o3_refp='UL',o3_refx=0,o3_refy=0,o3_fgbackground=""; -var o3_bgbackground="",o3_cgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0; -var o3_fullhtml=0,o3_vpos=BELOW,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica"; -var o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica"; -var o3_textsize=1,o3_captionsize=1,o3_closesize=1,o3_frame=self,o3_timeout=0,o3_delay=0; -var o3_hauto=0,o3_vauto=0,o3_nojustx=0,o3_nojusty=0,o3_close="Close",o3_closeclick=0; -var o3_closetitle="",o3_fgclass="",o3_bgclass="",o3_cgclass="",o3_textpadding=2; -var o3_textfontclass="",o3_captionpadding=2,o3_captionfontclass="",o3_closefontclass=""; -var o3_capbelow=0,o3_label="",CSSOFF=DONOTHING,CSSCLASS=DONOTHING; -var OLx=0,OLy=0,OLshowingsticky=0,OLallowmove=0,OLremovecounter=0; -var OLdelayid=0,OLtimerid=0,OLshowid=0,OLndt=0; -var over=null,OLfnRef="",OLhover=0; -var OLua=navigator.userAgent.toLowerCase(); -var OLns4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4); -var OLns6=(document.getElementById)?1:0; -var OLie4=(document.all)?1:0; -var OLgek=(OLv=OLua.match(/gecko\/(\d{8})/i))?parseInt(OLv[1]):0; -var OLmac=(OLua.indexOf('mac')>=0)?1:0; -var OLsaf=(OLua.indexOf('safari')>=0)?1:0; -var OLkon=(OLua.indexOf('konqueror')>=0)?1:0; -var OLkht=(OLsaf||OLkon)?1:0; -var OLopr=(OLua.indexOf('opera')>=0)?1:0; -var OLop7=(OLopr&&document.createTextNode)?1:0; +var o3_text="",o3_cap="",o3_sticky=0,o3_nofollow=0,o3_background="",o3_noclose=0,o3_mouseoff=0, +o3_offdelay=300,o3_hpos=RIGHT,o3_offsetx=10,o3_offsety=10,o3_fgcolor="",o3_bgcolor="", +o3_cgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=200,o3_wrap=0, +o3_wrapmax=0,o3_height= -1,o3_border=1,o3_base=0,o3_status="",o3_autostatus=0,o3_snapx=0, +o3_snapy=0,o3_fixx= -1,o3_fixy= -1,o3_relx=null,o3_rely=null,o3_midx=null,o3_midy=null,o3_ref="", +o3_refc='UL',o3_refp='UL',o3_refx=0,o3_refy=0,o3_fgbackground="",o3_bgbackground="", +o3_cgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW, +o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="",o3_closefont="", +o3_textsize=1,o3_captionsize=1,o3_closesize=1,o3_frame=self,o3_timeout=0,o3_delay=0,o3_hauto=0, +o3_vauto=0,o3_nojustx=0,o3_nojusty=0,o3_close="",o3_closeclick=0,o3_closetitle="",o3_fgclass="", +o3_bgclass="",o3_cgclass="",o3_textpadding=2,o3_textfontclass="",o3_captionpadding=2, +o3_captionfontclass="",o3_closefontclass="",o3_capbelow=0,o3_label="",o3_decode=0, +CSSOFF=DONOTHING,CSSCLASS=DONOTHING,OLdelayid=0,OLtimerid=0,OLshowid=0,OLndt=0,over=null, +OLfnRef="",OLhover=0,OLx=0,OLy=0,OLshowingsticky=0,OLallowmove=0,OLcC=null, +OLua=navigator.userAgent.toLowerCase(), +OLns4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4), +OLns6=(document.getElementById)?1:0, +OLie4=(document.all)?1:0, +OLgek=(OLv=OLua.match(/gecko\/(\d{8})/i))?parseInt(OLv[1]):0, +OLmac=(OLua.indexOf('mac')>=0)?1:0, +OLsaf=(OLua.indexOf('safari')>=0)?1:0, +OLkon=(OLua.indexOf('konqueror')>=0)?1:0, +OLkht=(OLsaf||OLkon)?1:0, +OLopr=(OLua.indexOf('opera')>=0)?1:0, +OLop7=(OLopr&&document.createTextNode)?1:0; if(OLopr){OLns4=OLns6=0;if(!OLop7)OLie4=0;} -var OLieM=((OLie4&&OLmac)&&!(OLkht||OLopr))?1:0; -var OLie5=0,OLie55=0;if(OLie4&&!OLop7){ +var OLieM=((OLie4&&OLmac)&&!(OLkht||OLopr))?1:0, +OLie5=0,OLie55=0;if(OLie4&&!OLop7){ if((OLv=OLua.match(/msie (\d\.\d+)\.*/i))&&(OLv=parseFloat(OLv[1]))>=5.0){ OLie5=1;OLns6=0;if(OLv>=5.5)OLie55=1;}if(OLns6)OLie4=0;} if(OLns4)window.onresize=function(){location.reload();} @@ -156,14 +154,16 @@ else{overlib=nd=cClick=OLpageDefaults=no_overlib;} // Loads defaults then args into runtime variables. function overlib(){ if(!(OLloaded&&OLgateOK))return; -if((OLexclusivePI)&&OLisExclusive(overlib.arguments))return true; +if((OLexclusivePI)&&OLisExclusive(arguments))return true; if(OLchkMh)OLmh(); if(OLndt&&!OLtimerid)OLndt=0;if(over)cClick(); -OLloadP1or2();OLload('close,closeclick,closetitle,noclose,mouseoff,offdelay,sticky,' -+'closecolor,closefont,closesize,closefontclass,frame,label');OLfnRef="";OLhover=0; +OLload(OLp1or2);OLload(OLp1); +OLfnRef="";OLhover=0; OLsetRunTimeVar(); -OLparseTokens('o3_',overlib.arguments); +OLparseTokens('o3_',arguments); if(!(over=OLmkLyr()))return false; +if(o3_decode)OLdecode(); +if(OLprintPI)OLchkPrint(); if(OLbubblePI)OLchkForBubbleEffect(); if(OLdebugPI)OLsetDebugCanShow(); if(OLshadowPI)OLinitShadow(); @@ -172,7 +172,7 @@ if(OLfilterPI)OLinitFilterLyr(); if(OLexclusivePI&&o3_exclusive&&o3_exclusivestatus!="")o3_status=o3_exclusivestatus; else if(o3_autostatus==2&&o3_cap!="")o3_status=o3_cap; else if(o3_autostatus==1&&o3_text!="")o3_status=o3_text; -if(o3_delay==0){return OLmain(); +if(!o3_delay){return OLmain(); }else{OLdelayid=setTimeout("OLmain()",o3_delay); if(o3_status!=""){self.status=o3_status;return true;} else if(!(OLop7&&event&&event.type=='mouseover'))return false;} @@ -180,25 +180,24 @@ else if(!(OLop7&&event&&event.type=='mouseover'))return false;} // Clears popups if appropriate function nd(time){ -if(!(OLloaded&&OLgateOK))return; -if((OLexclusivePI)&&OLisExclusive())return true; +if(OLloaded&&OLgateOK){if(!((OLexclusivePI)&&OLisExclusive())){ if(time&&over&&!o3_delay){if(OLtimerid>0)clearTimeout(OLtimerid); OLtimerid=(OLhover&&o3_frame==self&&!OLcursorOff())?0: -setTimeout("cClick()",(o3_timeout=OLndt=time)); -}else{if(OLremovecounter>=1)OLshowingsticky=0;if(!OLshowingsticky){ -OLallowmove=0;if(over)OLhideObject(over);}else{OLremovecounter++;}} -return true; +setTimeout("cClick()",(o3_timeout=OLndt=time));}else{ +if(!OLshowingsticky){OLallowmove=0;if(over)OLhideObject(over);}}}} +return false; } // Close function for stickies function cClick(){ -if(OLloaded&&OLgateOK){OLhover=0;if(over)OLhideObject(over);OLshowingsticky=0;} +if(OLloaded&&OLgateOK){OLhover=0;if(over){ +if(OLovertwoPI&&over==over2)cClick2();OLhideObject(over);OLshowingsticky=0;}} return false; } // Sets page-specific defaults. function OLpageDefaults(){ -OLparseTokens('ol_',OLpageDefaults.arguments); +OLparseTokens('ol_',arguments); } // For unsupported browsers. @@ -210,24 +209,14 @@ function no_overlib(){return false;} function OLmain(){ o3_delay=0; if(o3_frame==self){if(o3_noclose)OLoptMOUSEOFF(0);else if(o3_mouseoff)OLoptMOUSEOFF(1);} -OLdoLyr(); -OLallowmove=0;if(o3_timeout>0){ +if(o3_sticky)OLshowingsticky=1;OLdoLyr();OLallowmove=0;if(o3_timeout>0){ if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("cClick()",o3_timeout);} if(o3_ref){OLrefXY=OLgetRefXY(o3_ref);if(OLrefXY[0]==null){o3_ref="";o3_midx=0;o3_midy=0;}} -OLdisp(o3_status); -if(OLdraggablePI)OLcheckDrag(); +OLdisp(o3_status);if(OLdraggablePI)OLcheckDrag(); if(o3_status!="")return true;else if(!(OLop7&&event&&event.type=='mouseover'))return false; } -// Loads defaults for primaries or secondaries -function OLloadP1or2(){ -OLload('text,cap,capbelow,textpadding,captionpadding,border,base,status,autostatus,nofollow,' -+'width,wrap,wrapmax,height,hpos,vpos,offsetx,offsety,snapx,snapy,relx,rely,midx,midy,ref,' -+'refc,refp,refx,refy,fixx,fixy,nojustx,nojusty,hauto,vauto,timeout,delay,fgcolor,bgcolor,' -+'cgcolor,textcolor,capcolor,textfont,captionfont,textsize,captionsize,fgbackground,' -+'bgbackground,cgbackground,capicon,background,padxl,padxr,padyt,padyb,fullhtml,fgclass,' -+'bgclass,cgclass,textfontclass,captionfontclass'); -} +// Loads o3_ variables function OLload(c){var i,m=c.split(',');for(i=0;i0)o3_height=' height="'+o3_height+'"';else o3_height='';} if(!OLns4)OLrepositionTo(over,(OLns6?20:0),0);var lyrHtml=OLdoLGF(); -if(o3_sticky){if(OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;} -OLshowingsticky=1;OLremovecounter=0;} +if(o3_sticky&&OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;} if(o3_wrap&&!o3_fullhtml){OLlayerWrite(lyrHtml); o3_width=(OLns4?over.clip.width:over.offsetWidth); if(OLns4&&o3_wrapmax<1)o3_wrapmax=o3_frame.innerWidth-40; @@ -279,19 +267,19 @@ OLsetBackground('');return t; // Makes table with caption and optional close link function OLcontentCaption(txt,title,close){ -var closing='',closeevent='onmouseover',caption,t; -if(o3_closeclick==1)closeevent=(o3_closetitle?'title="'+o3_closetitle+'" ':'')+'onclick'; +var closing=(OLprintPI?OLprintCapLGF():''),closeevent='onmouseover',caption,t, +cC='javascript:return '+OLfnRef+(OLovertwoPI&&over==over2?'cClick2();':'cClick();'); +if(o3_closeclick)closeevent=(o3_closetitle?'title="'+o3_closetitle+'" ':'')+'onclick'; if(o3_capicon!='')o3_capicon=' '; -if(close!=''){closing='':'>'+OLlgfUtil(0,'','span',o3_closecolor,o3_closefont,o3_closesize))+close -+(o3_closefontclass?'':OLlgfUtil(1,'','span'))+'';} +if(close){closing+='':'>'+OLlgfUtil(0,0,'','span',o3_closecolor,o3_closefont,o3_closesize))+close ++(o3_closefontclass?'':OLlgfUtil(1,0,'','span'))+'';} caption='':'>')+(o3_captionfontclass?'
':'' -+OLlgfUtil(0,'','div',o3_capcolor,o3_captionfont,o3_captionsize))+o3_capicon+title -+OLlgfUtil(1,'','div')+(o3_captionfontclass?'':'')+''+closing+''; ++o3_captionfontclass+'">':OLlgfUtil(0,1,'','div',o3_capcolor,o3_captionfont, +o3_captionsize))+o3_capicon+title+OLlgfUtil(1,1,'','div')+''+closing+''; t=OLbgLGF()+(o3_capbelow?OLfgLGF(txt)+caption:caption+OLfgLGF(txt))+OLbaseLGF(); OLsetBackground('');return t; } @@ -302,8 +290,8 @@ var t;if(hasfullhtml){t=txt;}else{t='' -+OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+txt+ -OLlgfUtil(1,'','div')+'';} OLsetBackground(image);return t; } @@ -317,14 +305,15 @@ function OLfgLGF(t){ return '' -+OLlgfUtil(0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+t -+OLlgfUtil(1,'','div')+''; ++OLlgfUtil(0,0,o3_textfontclass,'div',o3_textcolor,o3_textfont,o3_textsize)+t ++(OLprintPI?OLprintFgLGF():'')+OLlgfUtil(1,0,'','div')+''; } -function OLlgfUtil(end,tfc,ele,col,fac,siz){ -if(end)return ('');else return (tfc?'
': -('<'+(OLns4?'font color="'+col+'" face="'+OLquoteMultiNameFonts(fac)+'" size="'+siz:ele -+' style="color:'+col+';font-family:'+OLquoteMultiNameFonts(fac)+';font-size:'+siz+';' -+(ele=='span'?'text-decoration:underline;':''))+'">')); +function OLlgfUtil(end,stg,tfc,ele,col,fac,siz){ +if(end)return ('');else return (tfc?'
':('<'+(OLns4?(stg?'strong><':'')+'font color="'+col+'" face="' ++OLquoteMultiNameFonts(fac)+'" size="'+siz:ele+' style="color:'+col ++(stg?';font-weight:bold':'')+';font-family:'+OLquoteMultiNameFonts(fac)+';font-size:' ++siz+';'+(ele=='span'?'text-decoration:underline;':''))+'">')); } function OLquoteMultiNameFonts(f){ var i,v,pM=f.split(','); @@ -354,34 +343,33 @@ else{if(OLns6)over.style.width=o3_width+'px';over.style.backgroundImage='url('+i */ // Displays layer function OLdisp(s){ -if(OLallowmove==0){if(OLshadowPI)OLdispShadow();if(OLiframePI)OLdispIfs();OLplaceLayer(); +if(!OLallowmove){if(OLshadowPI)OLdispShadow();if(OLiframePI)OLdispIfs();OLplaceLayer(); if(OLndt)OLshowObject(over);else OLshowid=setTimeout("OLshowObject(over)",1); OLallowmove=(o3_sticky||o3_nofollow)?0:1;}OLndt=0;if(s!="")self.status=s; } // Decides placement of layer. function OLplaceLayer(){ -var snp,X,Y,pgLeft,pgTop,pWd=o3_width,pHt,iWd=100,iHt=100,SB=0,LM=0,CX=0,TM=0,BM=0,CY=0; -var o=OLfd(),nsb=(OLgek>=20010505&&!o3_frame.scrollbars.visible)?1:0; +var snp,X,Y,pgLeft,pgTop,pWd=o3_width,pHt,iWd=100,iHt=100,SB=0,LM=0,CX=0,TM=0,BM=0,CY=0, +o=OLfd(),nsb=(OLgek>=20010505&&!o3_frame.scrollbars.visible)?1:0; if(!OLkht&&o&&o.clientWidth)iWd=o.clientWidth; else if(o3_frame.innerWidth){SB=Math.ceil(1.4*(o3_frame.outerWidth-o3_frame.innerWidth)); if(SB>20)SB=20;iWd=o3_frame.innerWidth;} pgLeft=(OLie4)?o.scrollLeft:o3_frame.pageXOffset; -if(OLie55&&OLfilterPI&&o3_filtershadow)SB=CX=5;else +if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow)SB=CX=5;else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){SB+=((o3_shadowx>0)?o3_shadowx:0); LM=((o3_shadowx<0)?Math.abs(o3_shadowx):0);CX=Math.abs(o3_shadowx);} if(o3_ref!=""||o3_fixx> -1||o3_relx!=null||o3_midx!=null){ -if(o3_ref!=""){ -X=OLrefXY[0];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='UR'||o3_refp=='LR')X -= 5;} -else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){ -if(o3_shadowx<0&&(o3_refp=='UL'||o3_refp=='LL'))X += o3_shadowx; -else if(o3_shadowx>0&&(o3_refp=='UR'||o3_refp=='LR'))X -= o3_shadowx;} +if(o3_ref!=""){X=OLrefXY[0];if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow){ +if(o3_refp=='UR'||o3_refp=='LR')X-=5;} +else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowx){ +if(o3_shadowx<0&&(o3_refp=='UL'||o3_refp=='LL'))X-=o3_shadowx;else +if(o3_shadowx>0&&(o3_refp=='UR'||o3_refp=='LR'))X-=o3_shadowx;} }else{if(o3_midx!=null){ X=parseInt(pgLeft+((iWd-pWd-SB-LM)/2)+o3_midx); }else{if(o3_relx!=null){ if(o3_relx>=0)X=pgLeft+o3_relx+LM;else X=pgLeft+o3_relx+iWd-pWd-SB; -}else{ -X=o3_fixx+LM;}}} +}else{X=o3_fixx+LM;}}} }else{ if(o3_hauto){ if(o3_hpos==LEFT&&OLx-pgLeft0)?o3_shadowy:0;CY=Math.abs(o3_shadowy);} if(o3_ref!=""||o3_fixy> -1||o3_rely!=null||o3_midy!=null){ -if(o3_ref!=""){ -Y=OLrefXY[1];if(OLie55&&OLfilterPI&&o3_filtershadow){if(o3_refp=='LL'||o3_refp=='LR')Y -= 5;} -else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){ -if(o3_shadowy<0&&(o3_refp=='UL'||o3_refp=='UR'))Y+=o3_shadowy;else +if(o3_ref!=""){Y=OLrefXY[1];if(OLie55&&OLfilterPI&&o3_filter&&o3_filtershadow){ +if(o3_refp=='LL'||o3_refp=='LR')Y-=5;}else if((OLshadowPI)&&bkdrop&&o3_shadow&&o3_shadowy){ +if(o3_shadowy<0&&(o3_refp=='UL'||o3_refp=='UR'))Y-=o3_shadowy;else if(o3_shadowy>0&&(o3_refp=='LL'||o3_refp=='LR'))Y-=o3_shadowy;} }else{if(o3_midy!=null){ Y=parseInt(pgTop+((iHt-pHt-CY)/2)+o3_midy); @@ -434,54 +421,56 @@ return (!OLop7&&fdc&&fdc!='BackCompat'&&fdd&&fdd.clientWidth)?fd.documentElement } // Gets location of REFerence object -function OLgetRefXY(r){ -var mn=r,mr=OLgetRef(mn),o,of,rXY; -if(!mr)return [null,null]; -o=mr;rXY=[o3_refx,o3_refy]; -if(OLns4){if(typeof mr.length!='undefined'&&mr.length>1){ -o=mr[0];rXY[0]+=mr[0].x+mr[1].pageX;rXY[1]+=mr[0].y+mr[1].pageY; -}else{if((mr.toString().indexOf('Image')!= -1)||(mr.toString().indexOf('Anchor')!= -1)){ -rXY[0]+=mr.x;rXY[1]+=mr.y;}else{rXY[0]+=mr.pageX;rXY[1]+=mr.pageY;}} -}else{rXY[0]+=OLpageLoc(mr,'Left');rXY[1]+=OLpageLoc(mr,'Top');} -of=OLgetRefOffsets(o);rXY[0]+=of[0];rXY[1]+=of[1]; +function OLgetRefXY(r,d){ +var o=OLgetRef(r,d),ob=o,rXY=[o3_refx,o3_refy],of; +if(!o)return [null,null]; +if(OLns4){if(typeof o.length!='undefined'&&o.length>1){ +ob=o[0];rXY[0]+=o[0].x+o[1].pageX;rXY[1]+=o[0].y+o[1].pageY; +}else{if((o.toString().indexOf('Image')!= -1)||(o.toString().indexOf('Anchor')!= -1)){ +rXY[0]+=o.x;rXY[1]+=o.y;}else{rXY[0]+=o.pageX;rXY[1]+=o.pageY;}} +}else{rXY[0]+=OLpageLoc(o,'Left');rXY[1]+=OLpageLoc(o,'Top');} +of=OLgetRefOffsets(ob);rXY[0]+=of[0];rXY[1]+=of[1]; return rXY; } -function OLgetRef(l){var r=OLgetRefById(l);return (r)?r:OLgetRefByName(l);} +function OLgetRef(l,d){var r=OLgetRefById(l,d);return (r)?r:OLgetRefByName(l,d);} // Seeks REFerence by id function OLgetRefById(l,d){ -var r="",j;l=(l||'overDiv');d=(d||o3_frame.document); -if(OLie4&&d.all){return d.all[l];}else if(d.getElementById){return d.getElementById(l); -}else if(d.layers&&d.layers.length>0){if(d.layers[l])return d.layers[l]; +l=(l||'overDiv');d=(d||o3_frame.document);var j,r; +if(OLie4&&d.all)return d.all[l];if(d.getElementById)return d.getElementById(l); +if(d.layers&&d.layers.length>0){if(d.layers[l])return d.layers[l]; for(j=0;j0){ -for(j=0;j0)return r;else if(r)return [r,d.layers[j]];}} +d=(d||o3_frame.document);var j,r,v=OLie4?d.all.tags('iframe'): +OLns6?d.getElementsByTagName('iframe'):null; +if(typeof d.images!='undefined'&&d.images[l])return d.images[l]; +if(typeof d.anchors!='undefined'&&d.anchors[l])return d.anchors[l]; +if(v)for(j=0;j0)for(j=0;j0)return r;else if(r)return [r,d.layers[j]];} return null; } // Gets layer vs REFerence offsets function OLgetRefOffsets(o){ -var mc=o3_refc.toUpperCase(),mp=o3_refp.toUpperCase(),mW=0,mH=0,pW=0,pH=0,off=[0,0]; +var c=o3_refc.toUpperCase(),p=o3_refp.toUpperCase(),W=0,H=0,pW=0,pH=0,of=[0,0]; pW=(OLbubblePI&&o3_bubble)?o3_width:OLns4?over.clip.width:over.offsetWidth; pH=(OLbubblePI&&o3_bubble)?OLbubbleHt:OLns4?over.clip.height:over.offsetHeight; -if((!OLop7)&&o.toString().indexOf('Image')!= -1){mW=o.width;mH=o.height; -}else if((!OLop7)&&o.toString().indexOf('Anchor')!= -1){mc=o3_refc='UL';}else{ -mW=(OLns4)?o.clip.width:o.offsetWidth;mH=(OLns4)?o.clip.height:o.offsetHeight;} -if(mc=='UL'){off=(mp=='UR')?[-pW,0]:(mp=='LL')?[0,-pH]:(mp=='LR')?[-pW,-pH]:[0,0]; -}else if(mc=='UR'){off=(mp=='UR')?[mW-pW,0]:(mp=='LL')?[mW,-pH]:(mp=='LR')?[mW-pW,-pH]:[mW,0]; -}else if(mc=='LL'){off=(mp=='UR')?[-pW,mH]:(mp=='LL')?[0,mH-pH]:(mp=='LR')?[-pW,mH-pH]:[0,mH]; -}else if(mc=='LR'){off=(mp=='UR')?[mW-pW,mH]:(mp=='LL')?[mW,mH-pH]:(mp=='LR')?[mW-pW,mH-pH]: -[mW,mH];} -return off; +if((!OLop7)&&o.toString().indexOf('Image')!= -1){W=o.width;H=o.height; +}else if((!OLop7)&&o.toString().indexOf('Anchor')!= -1){c=o3_refc='UL';}else{ +W=(OLns4)?o.clip.width:o.offsetWidth;H=(OLns4)?o.clip.height:o.offsetHeight;} +if((OLns4||(OLns6&&OLgek))&&o.border){W+=2*parseInt(o.border);H+=2*parseInt(o.border);} +if(c=='UL'){of=(p=='UR')?[-pW,0]:(p=='LL')?[0,-pH]:(p=='LR')?[-pW,-pH]:[0,0]; +}else if(c=='UR'){of=(p=='UR')?[W-pW,0]:(p=='LL')?[W,-pH]:(p=='LR')?[W-pW,-pH]:[W,0]; +}else if(c=='LL'){of=(p=='UR')?[-pW,H]:(p=='LL')?[0,H-pH]:(p=='LR')?[-pW,H-pH]:[0,H]; +}else if(c=='LR'){of=(p=='UR')?[W-pW,H]:(p=='LL')?[W,H-pH]:(p=='LR')?[W-pW,H-pH]: +[W,H];} +return of; } // Gets x or y location of object @@ -494,11 +483,13 @@ return l; // Moves layer function OLmouseMove(e){ var e=(e||event); +OLcC=(OLovertwoPI&&over2&&over==over2?cClick2:cClick); OLx=(e.pageX||e.clientX+OLfd().scrollLeft);OLy=(e.pageY||e.clientY+OLfd().scrollTop); -if((OLallowmove&&over)&&(o3_frame==self||over==OLgetRefById())){ +if((OLallowmove&&over)&&(o3_frame==self||over==OLgetRefById() +||(OLovertwoPI&&over2==over&&over==OLgetRefById('overDiv2')))){ OLplaceLayer();if(OLhidePI)OLhideUtil(0,1,1,0,0,0);} -if(OLhover&&over&&o3_frame==self&&OLcursorOff())if(o3_offdelay<1)cClick();else -{if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("cClick()",o3_offdelay);} +if(OLhover&&over&&o3_frame==self&&OLcursorOff())if(o3_offdelay<1)OLcC();else +{if(OLtimerid>0)clearTimeout(OLtimerid);OLtimerid=setTimeout("OLcC()",o3_offdelay);} } // Capture mouse and chain other scripts. @@ -515,12 +506,12 @@ OLdw.onmousemove=mh;if(OLns4)OLdw.captureEvents(Event.MOUSEMOVE); PARSING */ function OLparseTokens(pf,ar){ -var i,v,md= -1,par=(pf!='ol_'),e=eval,p=OLpar,q=OLparQuo,t=OLtoggle;OLudf=(par&&!ar.length?1:0); +var i,v,md= -1,par=(pf!='ol_'),p=OLpar,q=OLparQuo,t=OLtoggle;OLudf=(par&&!ar.length?1:0); for(i=0;i< ar.length;i++){if(md<0){if(typeof ar[i]=='number'){OLudf=(par?1:0);i--;} else{switch(pf){case 'ol_':ol_text=ar[i];break;default:o3_text=ar[i];}}md=0; }else{ -if(ar[i]==INARRAY){OLudf=0;e(pf+'text=ol_texts['+ar[++i]+']');continue;} -if(ar[i]==CAPARRAY){e(pf+'cap=ol_caps['+ar[++i]+']');continue;} +if(ar[i]==INARRAY){OLudf=0;eval(pf+'text=ol_texts['+ar[++i]+']');continue;} +if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+']');continue;} if(ar[i]==CAPTION){q(ar[++i],pf+'cap');continue;} if(Math.abs(ar[i])==STICKY){t(ar[i],pf+'sticky');continue;} if(Math.abs(ar[i])==NOFOLLOW){t(ar[i],pf+'nofollow');continue;} @@ -545,9 +536,9 @@ if(ar[i]==BORDER){p(ar[++i],pf+'border');continue;} if(ar[i]==BASE){p(ar[++i],pf+'base');continue;} if(ar[i]==STATUS){q(ar[++i],pf+'status');continue;} if(Math.abs(ar[i])==AUTOSTATUS){v=pf+'autostatus'; -e(v+'=('+ar[i]+'<0)?('+v+'==2?2:0):('+v+'==1?0:1)');continue;} +eval(v+'=('+ar[i]+'<0)?('+v+'==2?2:0):('+v+'==1?0:1)');continue;} if(Math.abs(ar[i])==AUTOSTATUSCAP){v=pf+'autostatus'; -e(v+'=('+ar[i]+'<0)?('+v+'==1?1:0):('+v+'==2?0:2)');continue;} +eval(v+'=('+ar[i]+'<0)?('+v+'==1?1:0):('+v+'==2?0:2)');continue;} if(ar[i]==CLOSETEXT){q(ar[++i],pf+'close');continue;} if(ar[i]==SNAPX){p(ar[++i],pf+'snapx');continue;} if(ar[i]==SNAPY){p(ar[++i],pf+'snapy');continue;} @@ -594,6 +585,7 @@ if(ar[i]==CAPTIONFONTCLASS){q(ar[++i],pf+'captionfontclass');continue;} if(ar[i]==CLOSEFONTCLASS){q(ar[++i],pf+'closefontclass');continue;} if(Math.abs(ar[i])==CAPBELOW){t(ar[i],pf+'capbelow');continue;} if(ar[i]==LABEL){q(ar[++i],pf+'label');continue;} +if(Math.abs(ar[i])==DECODE){t(ar[i],pf+'decode');continue;} if(ar[i]==DONOTHING){continue;} i=OLparseCmdLine(pf,i,ar);}} if((OLfunctionPI)&&OLudf&&o3_function)o3_text=o3_function(); @@ -611,6 +603,14 @@ if(OLhasDims(o3_captionsize)){if(OLns4)o3_captionsize="2";}else if(!OLns4){i=parseInt(o3_captionsize);o3_captionsize=(i>0&&i<8)?OLpct[i]:OLpct[0];} if(OLhasDims(o3_closesize)){if(OLns4)o3_closesize="2";}else if(!OLns4){i=parseInt(o3_closesize);o3_closesize=(i>0&&i<8)?OLpct[i]:OLpct[0];} +if(OLprintPI)OLprintDims(); +} +function OLdecode(){ +var re=/%[0-9A-Fa-f]{2,}/,t=o3_text,c=o3_cap,u=unescape,d=!OLns4&&(!OLgek||OLgek>=20020826) +&&typeof decodeURIComponent?decodeURIComponent:u;if(typeof(window.TypeError)=='function'){ +if(re.test(t)){eval(new Array('try{','o3_text=d(t);','}catch(e){','o3_text=u(t);', +'}').join('\n'))};if(c&&re.test(c)){eval(new Array('try{','o3_cap=d(c);','}catch(e){', +'o3_cap=u(c);','}').join('\n'))}}else{if(re.test(t))o3_text=u(t);if(c&&re.test(c))o3_cap=u(c);} } /* @@ -625,6 +625,7 @@ if(OLns4){over.document.write(t);over.document.close(); domfrag=range.createContextualFragment(t); while(over.hasChildNodes()){over.removeChild(over.lastChild);} over.appendChild(domfrag);} +if(OLprintPI)over.print=o3_print?t:null; } // Makes object visible @@ -661,10 +662,9 @@ if(!c)o3_close=""; over.onmouseover=function(){OLhover=1;if(OLtimerid>0){clearTimeout(OLtimerid);OLtimerid=0;}} } function OLcursorOff(){ -if(OLovertwoPI&&over==over2)return false; -var o=(OLns4?over:over.style),pHt=OLns4?over.clip.height:over.offsetHeight; -var left=parseInt(o.left),top=parseInt(o.top); -var right=left+o3_width,bottom=top+((OLbubblePI&&o3_bubble)?OLbubbleHt:pHt); +var o=(OLns4?over:over.style),pHt=OLns4?over.clip.height:over.offsetHeight, +left=parseInt(o.left),top=parseInt(o.top), +right=left+o3_width,bottom=top+((OLbubblePI&&o3_bubble)?OLbubbleHt:pHt); if(OLxright||OLybottom)return true; return false; } @@ -672,38 +672,26 @@ return false; /* REGISTRATION */ -var OLcmdLine=null,OLrunTime=null; function OLsetRunTimeVar(){ -if(OLrunTime&&OLrunTime.length)for(var k=0;k-1){i=j;break;}}} return i; } -function OLisFunc(f){ -var r=1; -if(typeof f=='object'){for(var i=0;i - + <% if ( length($number) ) { %> <%= $number %> <% if ( $opt{'callable'} && $conf->config('vonage-username') ) { %> diff --git a/httemplate/search/cust_bill.html b/httemplate/search/cust_bill.html index 16128d5c8..79c05dc42 100755 --- a/httemplate/search/cust_bill.html +++ b/httemplate/search/cust_bill.html @@ -37,7 +37,7 @@ $begin = str2time($1); push @where, "cust_bill._date >= $begin"; } - if ( $cgi->param('ending') + if ( $cgi->param('ending') && $cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/ ) { $end = str2time($1) + 86399; push @where, "cust_bill._date < $end"; @@ -52,6 +52,13 @@ push @where, "cust_bill._date < $end"; } + if ( $cgi->param('invnum_min') =~ /^\s*(\d+)\s*$/ ) { + push @where, "cust_bill.invnum >= $1"; + } + if ( $cgi->param('invnum_max') =~ /^\s*(\d+)\s*$/ ) { + push @where, "cust_bill.invnum <= $1"; + } + if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { $agentnum = $1; push @where, "cust_main.agentnum = $agentnum"; diff --git a/httemplate/search/svc_acct.cgi b/httemplate/search/svc_acct.cgi index ef68ba05e..0f2f3ef45 100755 --- a/httemplate/search/svc_acct.cgi +++ b/httemplate/search/svc_acct.cgi @@ -95,6 +95,7 @@ my $sql_query = { 'hashref' => {}, # \%svc_acct, 'select' => join(', ', 'svc_acct.*', + 'part_svc.svc', 'cust_main.custnum', FS::UI::Web::cust_sql_fields(), ), diff --git a/httemplate/search/svc_domain.cgi b/httemplate/search/svc_domain.cgi index 1eda3733c..ecb77792f 100755 --- a/httemplate/search/svc_domain.cgi +++ b/httemplate/search/svc_domain.cgi @@ -56,8 +56,9 @@ my $sql_query = { 'hashref' => \%svc_domain, 'select' => join(', ', 'svc_domain.*', - 'cust_main.custnum', - FS::UI::Web::cust_sql_fields(), + 'part_svc.svc', + 'cust_main.custnum', + FS::UI::Web::cust_sql_fields(), ), 'extra_sql' => "$extra_sql $orderby", 'addl_from' => $addl_from, diff --git a/httemplate/search/svc_forward.cgi b/httemplate/search/svc_forward.cgi index 4961967d7..d391a1834 100755 --- a/httemplate/search/svc_forward.cgi +++ b/httemplate/search/svc_forward.cgi @@ -39,8 +39,9 @@ my $sql_query = { 'hashref' => {}, 'select' => join(', ', 'svc_forward.*', - 'cust_main.custnum', - FS::UI::Web::cust_sql_fields(), + 'part_svc.svc', + 'cust_main.custnum', + FS::UI::Web::cust_sql_fields(), ), 'extra_sql' => "$extra_sql $orderby", 'addl_from' => $addl_from, diff --git a/httemplate/search/svc_www.cgi b/httemplate/search/svc_www.cgi index ae51c61fc..ef4045cf9 100755 --- a/httemplate/search/svc_www.cgi +++ b/httemplate/search/svc_www.cgi @@ -17,6 +17,7 @@ my $sql_query = { 'hashref' => {}, 'select' => join(', ', 'svc_www.*', + 'part_svc.svc', 'cust_main.custnum', FS::UI::Web::cust_sql_fields(), ), @@ -43,11 +44,13 @@ my $link_cust = sub { 'count_query' => $count_query, 'redirect' => $link, 'header' => [ '#', + 'Service', 'Zone', 'User', FS::UI::Web::cust_header(), ], 'fields' => [ 'svcnum', + 'svc', sub { $_[0]->domain_record->zone }, sub { my $svc_www = shift; @@ -59,6 +62,7 @@ my $link_cust = sub { \&FS::UI::Web::cust_fields, ], 'links' => [ $link, + $link, '', $ulink, ( map { $link_cust } diff --git a/httemplate/view/svc_external.cgi b/httemplate/view/svc_external.cgi index 2acc3f9cf..7816d88dc 100644 --- a/httemplate/view/svc_external.cgi +++ b/httemplate/view/svc_external.cgi @@ -1,4 +1,3 @@ - <% my($query) = $cgi->keywords; -- 2.11.0