define(VAULTSTATUSCODE_NOTYETVAULTED,NOTYETVAULTED); define(VAULTSTATUSCODE_VAULTED,VAULTED); define(VAULTSTATUSCODE_RESTORED,RESTORED); define(VAULTSTATUSCODE_TOBERESTORED,TOBERESTORED); define(VAULTSTATUSCODE_TOBEARCHIVED,TOBEARCHIVED); define(VAULTSTATUSCODE_EXPIRED,EXPIRED); define(VAULTPROPERTYWRITEABLE_LOCKED,LOCKED); define(VAULTPROPERTYWRITEABLE_UNLOCKED,UNLOCKED); define("VAULTISEXTENDABLEINTERVAL","1 YEAR"); // this is an interval during which a vault archive can be extended if it expires within that time define("VAULTRESTOREDAYS","10"); define("VAULTSTOREDAYS_EXPORT","5"); //this is how long the system will store the export properties; sysetm will also send out reminders the last day that the property is still around. define("VAULTDAYTILFINALFILEDELETE",30); // this is the number of days after a document or image is archived that it is finally deleted from the system //this is 30 in the system now, we will shorten it when we get disk sensitive, but for now we want to make sure it works //before deleteing of of the disk drive. define("VAULTDIR","/data/web/vault/"); define("VAULTRESTOREFEE",5); define("VAULTEXPIREBUFFERDAYS",2); define("VAULTEMAILREMINDERDAYS",1); define("VAULTEMAILREMINDERDAYS2",5); define("VAULTEMAILREMINDERDAYS3",30); $VAULTFEES[1] = 1; $VAULTFEES[5] = 5; $VAULTFEES[7] = 7; function vault_getdetail($propertyid) { //d(vault_getdetail_propertyid, $propertyid); $row = vault_getproperties($propertyid); //d(vault_getdetail_row,$row); $arr = vaultstatusarr($row); foreach($arr as $col=>$val) $row[$col]=$val; return $row; } function vault_isrestored($row) { //d(vault_isrestored_row,$row); if(!$row) return 0; elseif(isset($row[statuscode])) return $row[statuscode] == VAULTSTATUSCODE_RESTORED; elseif(is_numeric($row)) { return vault_isrestored(vault_getdetail($row)); } elseif(isset($row[propertyid])) { return vault_isrestored(vault_getdetail($row[propertyid])); } elseif(isset($row[clientcompanypropertyid])) { return vault_isrestored(vault_getdetail($row[clientcompanypropertyid])); } else ddie("Invalid call to vault_isvaulted",$row); } function vault_isvaulted($row) { if(!$row) { //d(vault_isvaulted_return_empty); return 0; } elseif(isset($row[statuscode])) { return $row[statuscode] != VAULTSTATUSCODE_NOTYETVAULTED; } elseif(is_numeric($row)) { return vault_isvaulted(vault_getdetail($row)); } elseif(isset($row[clientcompanypropertyid])) { return vault_isvaulted(vault_getdetail($row[clientcompanypropertyid])); } elseif(isset($row[propertyid])) { return vault_isvaulted(vault_getdetail($row[propertyid])); } else ddie("Invalid call to vault_isvaulted",$row); } function vaultstatus($row) // this function takes an archive row and returns an array of statuses { $arr = vaultstatusarr($row) ; return $arr[status]; } function vaultstatusarr($row) // this function takes an archive row and returns an array of statuses { $out=array(); $out[statuscode] = VAULTSTATUSCODE_VAULTED; if($row[archiverestorecompleteddate]) { $out[shortstatus]="Restored"; $out[status]="Restored (".dt_format($row[archiverestorecompleteddate]).")"; $out[statusdate]=dt_format($row[archiverestorecompleteddate]); $out[nextaction]="Re - Vaulted"; $out[nextactiondate]=dt_format( $row[restoreexpiredate]); $out[statuscode] = VAULTSTATUSCODE_RESTORED; $out[propertywriteable] = VAULTPROPERTYWRITEABLE_UNLOCKED; } elseif ($row[archiverestorerequesteddate] && !$row[archiverestorecompleteddate]) { $out[shortstatus]="To be Restored"; $out[status]="To be Restored"; $out[statusdate]=""; $out[nextaction]="Restored"; $out[nextactiondate]=" "; $out[statuscode] = VAULTSTATUSCODE_TOBERESTORED; $out[propertywriteable] = VAULTPROPERTYWRITEABLE_LOCKED; } elseif($row[daysleft]<0) { $out[shortstatus]="Expired"; $out[status]="Expired (".dt_format($row[archivestorethru]).")"; $out[statusdate]=dt_format($row[archivestorethru]); $out[nextaction]="Deletion"; $out[nextactiondate]=dt_format(time()); $out[statuscode] = VAULTSTATUSCODE_EXPIRED; $out[propertywriteable] = VAULTPROPERTYWRITEABLE_LOCKED; } elseif ($row[archivebuildcompleteddate]) { $out[shortstatus]="Archived"; $out[status]="Archived (".dt_format($row[archivebuildcompleteddate]).")"; $out[statusdate]=dt_format($row[archivebuildcompleteddate]); $out[nextaction]="Expiration"; $out[nextactiondate]=dt_format($row[archivestorethru]); $out[propertywriteable] = VAULTPROPERTYWRITEABLE_LOCKED; } elseif ($row[archivebuildrequesteddate]&&!$row[archivebuildcompleteddate]) { if($row[shorttermvault]) $out[shortstatus]="To Be Archived for Export from RIO"; else $out[shortstatus]="To Be Archived"; $out[status]="To Be Archived"; $out[statusdate]=dt_format($row[archivebuildrequesteddate]); $out[nextaction]="Archived"; $out[nextactiondate]= ""; $out[statuscode] = VAULTSTATUSCODE_TOBEARCHIVED; $out[propertywriteable] = VAULTPROPERTYWRITEABLE_LOCKED; } elseif (!$row[archivebuildcompleteddate]) { $out[statuscode] = VAULTSTATUSCODE_NOTYETVAULTED; $out[propertywriteable] = VAULTPROPERTYWRITEABLE_UNLOCKED; } //d(out_vault_row,$out); return $out; } function vault_message($msg,$href="",$title="") { $out = "
"; return $out; } function vault_property_close($propertyarr,$store_interval, $close_notes, $send_note_to_vendortasks,$amountpaid=0,$receipt="") { //d(is_vaulted, vault_isvaulted($propertyarr)); //ddie("functions_vault.php ".__LINE__,$close_notes); if(!vault_isvaulted($propertyarr)) { //d("functions_vault.php ".__LINE__,$amountpaid); $vaultclientcompanyproperty=FALSE; if(!$propertyarr[propertyid]) $vaultclientcompanyproperty=TRUE; if ($vaultclientcompanyproperty) $propertyid = $propertyarr[clientcompanypropertyid]; else $propertyid = $propertyarr[propertyid]; if ($vaultclientcompanyproperty) $activetasks = get_clienttasks(1,array("clientcompanypropertyid"=>$propertyid)); else $activetasks = get_tasks(1,$propertyid); //$activetasks = get_tasks(1,$propertyid ); if ($vaultclientcompanyproperty) { d("functions_vault.php ".__LINE__,$vaultclientcompanyproperty); $assigns = clientcompanypropertyassignment_get($propertyid,'','',1); if($assigns) { //d(allssignments,$assigns); foreach($assigns as $assign) { if(strstr($assign[clientcompanypropertyassignmentstatus] ,"Pending")) { $sqlup = "update tblclientcompanypropertyassignment set clientcompanypropertyassignmentcompleteddate = now() where clientcompanypropertyassignmentid = $assign[clientcompanypropertyassignmentid]"; d($sqlup); db_exec($sqlup); } elseif($assign[clientcompanypropertyassignmentstatus] == "Accepted") clientcompanypropertyassignment_complete($assign[clientcompanypropertyassignmentid]); } } foreach($activetasks as $k=>$task) { //d(activetasks,$activetasks); $staffemails= ""; $sql=""; if(!$task[clienttaskcompleteddate]) { $sql .= "update tblclienttask set clienttaskcompleteddate = now() where clienttaskid = $task[clienttaskid];"; $staffemails=get_task_emailaddresses($task[clienttaskid]); } if($staffemails) { $arr[note_from_archive_process] = $_POST[closenotes_early]; d(notification_to_assignees,$task[clienttaskid]); d(staffemails,$staffemails); send_trigger_email($propertyid,clientcompanyproperty,propertyarchivednotice,"",$staffemails,0,$arr); } if($sql) { d(close_tasks,$sql); db_exec($sql,1,"",1); } } } else { foreach($activetasks as $k=>$task) { $vendoremail= ""; $staffemails= ""; $sql=""; if( $send_note_to_vendortasks && $task[taskvendorassigneddate] && ! $task[taskvendorcompleteddate]) { $vendoremail = $task[vendoremail]; $sql .= "update tbltask set taskvendorcompleteddate = now() where taskid = $task[taskid];"; } if($task[taskstaffassigneddate] && !$task[taskstaffcompleteddate]) { $sql .= "update tbltask set taskstaffcompleteddate = now() where taskid = $task[taskid];"; $staffemails=get_task_emailaddresses($task[taskid]); } if($staffemails ||$vendoremail) { $arr[note_from_archive_process] = $_POST[closenotes_early]; d(notification_to_assignees,$task[taskid]); d(staffemails,$staffemails); d(vendoremail,$vendoremail); $to="$vendoremail$staffemails"; if($vendoremail&&$staffemails) $to="$vendoremail,$staffemails"; send_trigger_email($propertyid,property,propertyarchivednotice,"",$to,0,$arr); } if($sql) { d(close_tasks,$sql); db_exec($sql,1,"",1); } } } // start here $isclientcompany = ""; if ($vaultclientcompanyproperty) $isclientcompany = "clientcompany"; if($amountpaid) create_note($propertyid,$isclientcompany.property,"Property Marked - To Be Archived in RIO Vault for $storeinterval\n$_POST[closenotes_early]","","",0); else create_note($propertyid,$isclientcompany.property,"Property Marked - To Be Archived for export from RIO \n$_POST[closenotes_early]","","",0); $sql = "update tblpropertyextensionentry set propertyextensionentryvalue = 'Closed' where propertyid = $propertyid and propertyextensionkey = 'propertyextensionstatus'"; d(close_sql, $sql); db_exec($sql); $sql = "select nextval('tblarchive_archiveid_seq') as archiveid"; $next = db_first($sql); $maxid[] = $next[archiveid]; if(is_array($maxid)) $maxid = implode(",",$maxid); if ($vaultclientcompanyproperty) { $sql = "insert into tblarchive (companyid, propertyid, clientcompanyid, clientcompanypropertyid, archivecreatedby, archivebuildrequesteddate, archivebuildrequestedby, archivestoreinterval, archivestorethru, archiveamountpaid,archivereceipt) select 0 as companyid, 0 as propertyid, clientcompanyid, clientcompanypropertyid, ".loginid().", now(), ".loginid().", '$store_interval' , now()::date + interval '$store_interval', 0$amountpaid, '".db_col($receipt)."' from tblclientcompanyproperty where clientcompanypropertyid = $propertyid and clientcompanypropertyid not in (select clientcompanypropertyid from tblarchive) "; } else { $sql = "insert into tblarchive (companyid, propertyid, archivecreatedby, archivebuildrequesteddate, archivebuildrequestedby, archivestoreinterval, archivestorethru, archiveamountpaid,archivereceipt) select companyid, propertyid, ".loginid().", now(), ".loginid().", '$store_interval' , now()::date + interval '$store_interval', 0$amountpaid, '".db_col($receipt)."' from tblproperty where propertyid = $propertyid and propertyid not in (select propertyid from tblarchive) "; } d(insert_sql, $sql); db_exec($sql); $sql = "insert into tblarchivenote (archiveid,archivenotecreatedby,archivenotecreateddate,archivenotesubject,archivenotetext) values ($maxid , ".loginid()." , now() , 'Closed Note' , '".db_col($close_notes)."')"; db_exec($sql,1); } } function vault_getproperties($propertyid=0,$limit=500, $type="",$companyid=0, $extrasql="") //$type==(expired, or ..) { if( !is_numeric($propertyid)) $propertyid=0; //Hotfix - The code below needs to be removed after QA finishes testing on joetest. This is a part of task 22162 - Unable to vault. 11/03/2015 //if(loginid()==35945 || loginid()==49622 || loginid()==49625) // $vaultisextendableinterval = "10 YEARS"; //else $vaultisextendableinterval = VAULTISEXTENDABLEINTERVAL;//Hotfix - The value here can be put in for the variable in the sql below, and this line deleted. $sql = "select tblarchive.* , coalesce(companyname, clientcompanyname) as companyname , archivephotokb + archivedocumentkb as totalsize ,case when archiverestorecompleteddate is not null then archiverestorecompleteddate + interval '".VAULTRESTOREDAYS." days' else null end as restoreexpiredate ,propertyid ,tblarchive.clientcompanypropertyid ,coalesce((select stafffname||' '||stafflname as staffname from tblstaff where staffid = coalesce(p.propertylistingagent,pa.propertylistingagent)), pd.propertydeletelistingagent) as listingagent ,coalesce(coalesce(coalesce(coalesce(coalesce(pcd.clientcompanypropertydeleteassignmenttype,pca.clientcompanypropertyassignmenttype),pc.clientcompanypropertyassignmenttype),p.propertyassignmenttype),pa.propertyassignmenttype),pd.propertydeleteassignmenttype) as assignmenttype ,coalesce(coalesce(coalesce(coalesce(coalesce(pcd.clientcompanypropertydeleteaddress,pca.clientcompanypropertyaddress),pc.clientcompanypropertyaddress),p.propertyaddress),pa.propertyaddress),pd.propertydeleteaddress) as address ,coalesce(coalesce(coalesce(coalesce(coalesce(pcd.clientcompanypropertydeletecity,pca.clientcompanypropertycity),pc.clientcompanypropertycity),p.propertycity),pa.propertycity),pd.propertydeletecity) as city ,coalesce(coalesce(coalesce(coalesce(coalesce(pcd.clientcompanypropertydeletestate,pca.clientcompanypropertystate),pc.clientcompanypropertystate),p.propertystate),pa.propertystate),pd.propertydeletestate) as state ,case when propertyid > 0 then '/property_viewedit.php?view='||propertyid else '/property_viewedit.php?view='||tblarchive.clientcompanypropertyid end as propertyhref ,case when propertyid > 0 then '/vault.php?propertyid='||propertyid else '/vault.php?propertyid='||tblarchive.clientcompanypropertyid end as vaulthref ,archivestorethru::date as archivestorethru ,case when archivestorethru <= now() then '-1' else (archivestorethru::date-now()::date)::varchar||' days' end as daysleft , extract(month from archivecreateddate) as archivecreatedmonth , extract(year from archivecreateddate) as archivecreatedyear ,case when (archivestorethru-now()) < interval '".$vaultisextendableinterval."' then 1 else 0 end as vaultisextendable , case when archivestoreinterval <= interval '".VAULTSTOREDAYS_EXPORT." days' then 1 else 0 end as shorttermvault from tblarchive left join tblcompany using(companyid) left join tblproperty p using(propertyid, companyid) left join tblproperty_archive pa using(propertyid, companyid) left join tblpropertydelete pd on(propertydeleteoriginalid = propertyid) left join tblclientcompany on tblclientcompany.clientcompanyid = tblarchive.clientcompanyid left join tblclientcompanyproperty pc on pc.clientcompanypropertyid = tblarchive.clientcompanypropertyid left join tblclientcompanyproperty_archive pca on pca.clientcompanypropertyid = tblarchive.clientcompanypropertyid left join tblclientcompanypropertydelete pcd on(clientcompanypropertydeleteoriginalid = tblarchive.clientcompanypropertyid) where 0=0 and tblarchive.archivepurgeddate is null -- if it has been purged, dont return it - ever "; if($propertyid) $sql.=" and (tblarchive.propertyid = $propertyid or tblarchive.clientcompanypropertyid = $propertyid)"; if(vendorid()) { $sql.= " and exists (select 1 from tbltask where taskvendoridassigned = ".vendorid()." and pa.propertyid = propertyid)"; } if($companyid) $sql.=" and (tblarchive.companyid = $companyid or tblarchive.clientcompanyid = $companyid)"; if(companyid()) $sql.=" and tblarchive.companyid = ".companyid(); if(clientcompanyid()) $sql.=" and tblarchive.clientcompanyid = ".clientcompanyid(); if($type==expired) $sql.=" and archivestorethru < now() and archiverestorecompleteddate is null" ;//only return expired properties that have not been restored elseif(companyid() || clientcompanyid()) //for companies, do not show them expired items in their vault $sql.=" and ( ((archivestorethru + interval '".VAULTEXPIREBUFFERDAYS." days') > now()) ) " ;//only return not expired properties with VAULTEXPIREBUFFERDAYS days buffer if($extrasql) $sql .= $extrasql; if($limit) $sql .= " limit $limit "; //d(vault_getproperties_sql, $sql); $qry=db_query($sql); foreach($qry as $k=>$row) { $arr = vaultstatusarr($row); foreach($arr as $col=>$val) $qry[$k][$col]=$val; } if($propertyid>0) return $qry[0]; return $qry; } function vault_filepath($property,$type) { if(!is_array($property)) $property = vault_getproperties($property); if($type!=document && $type != photo && $type != details) return ""; if(!$property) return ""; $dr=$_SERVER[DOCUMENT_ROOT]; if ($property[clientcompanypropertyid]) $archive_dir = "../vault/client_{$property[clientcompanypropertyid]}/"; else $archive_dir = "../vault/$property[propertyid]/"; if(vendorid()) $added = "VENDOR_".vendorid()."_"; $filepath = "$dr/$archive_dir/$added$type.zip"; if(file_exists($filepath)) { //d(vault_filepath_exists, $filepath); return $filepath; } else { //d(vault_filepath_doesnt_exists, $filepath); } return ""; } /** * @name vault_filesonremote($archiverow) * @description Checks the remote storage (amazon) to see if the file has been uploaded. * @param array $archiverow * @explain_param A row from tblarchive that will be used to determine what files to check for on the remote vault. * @return an array where element [0] will be true or false element [1] will contain the bucketname and [2] will contain info about the files on the remote vault: * @explain_return If all the files from the archive are on the remote file system true will be returned as element [0] of the array and false otherwise. * @explain_return Element [1] of the array will return the bucket name and element [2] of the array contains the filename on the local system, the bucket name and the filename on the remote vault. * @explain_return Element [0] is false then element [1] and element [2] might not contain anything and shouldn't be relied on. * @example $retarray=vault_filesonremote($archiverowarr); if($retarray[0]) {echo 'all files on remote';} else {echo 'one or more of files not on remote'} )?> */ function vault_filesonremote($archiverow=FALSE) { $vaultdir=VAULTDIR; $retarray=array(); if(!$archiverow) return $retarray[0]=FALSE; if(!is_array($archiverow)) return $retarray[0]=FALSE; if($archiverow[clientcompanypropertyid]) $foldername="client_{$archiverow[clientcompanypropertyid]}"; else { if($archiverow[propertyid]) $foldername="$archiverow[propertyid]"; else return $retarray[0]=FALSE; } $bucketname="riovault"; $retarray[1]=$bucketname; $added=""; if(vendorid()) $added = "VENDOR_".vendorid()."_"; //Get connection to amazon remote storage if(!$s3=vault_gets3connect()) return $retarray[0]=FALSE; $retarray[0]=TRUE; for($i=1; $i<=3; $i++) { if($i==1) $type='document'; if($i==2) $type='photo'; if($i==3) $type='details'; $vaultfilepath = "$vaultdir$foldername/$added$type.zip"; $vaultfilename="$added$type.zip"; $vaultfolderfilename="$foldername/$vaultfilename"; if (($vaultfileinfo = $s3->getObjectInfo($bucketname, $vaultfolderfilename)) !== false) { $retarray[2][$i]['vaultfilepath']=$vaultfilepath; $retarray[2][$i]['vaultfilename']=$vaultfolderfilename; $retarray[2][$i]['vaultfiletype']=$type.".zip"; } else { if(file_exists($vaultfilepath)) { $retarray[0]=FALSE; return $retarray; } } } return $retarray; } /** * @name vault_remotefilepath($property,$type) * @description Checks the remote storage (amazon) to see if the file has been uploaded. * @param array $property * @explain_param The property that was archived. * @param string $type * @explain_param The type of zip file we are looking for and should be photo, document, or description. * @return false if the file not found, an array with the three follwing pieces of information: * @explain_return vaultfilepath: path to file on local system. bucketname: folder on remote location. * @explain_return vaultfilename: name of local and remote file. * @example vault_remotefilepath($propertyrowarr, 'photo'); ?> */ function vault_remotefilepath($property,$type) { $vaultdir=VAULTDIR; if ($property[clientcompanypropertyid]) { $checkuploadtocloud=db_first("select archiveid from tblarchive where clientcompanypropertyid=$property[clientcompanypropertyid] and archiveuploadedtoclouddate is not null"); if(!$checkuploadtocloud) return false; $foldername="client_{$property[clientcompanypropertyid]}"; } else { $checkuploadtocloud=db_first("select archiveid from tblarchive where propertyid=$property[propertyid] and archiveuploadedtoclouddate is not null"); if(!$checkuploadtocloud) return false; $foldername="$property[propertyid]"; } $added=""; if(vendorid()) $added = "VENDOR_".vendorid()."_"; if(!is_array($property)) $property = vault_getproperties($property); //Get connection to amazon remote storage if(!$s3=vault_gets3connect()) { return false; } if($type!=document && $type != photo && $type != details) { return false; } if (!is_dir($vaultdir.$foldername)) if (!mkdir_wrapper($vaultdir.$foldername)) ddie("Unable to make directory"); $vaultfilepath = "$vaultdir$foldername/$added$type.zip"; $vaultfilename="$added$type.zip"; $vaultfolderfilename="$foldername/$vaultfilename"; $bucketname="riovault"; if (($vaultfileinfo = $s3->getObjectInfo($bucketname, $vaultfolderfilename)) !== false) { $retarray['vaultfilepath']=$vaultfilepath; $retarray['bucketname']=$bucketname; $retarray['vaultfilename']=$vaultfolderfilename; return $retarray; } return false; } function vault_payment($paymentdescr, $paymentamount,$addedfields=array()) { global $ACCEPTED_CREDITCARDS, $TESTCC; $testcc=$TESTCC; $submitted = $_POST[ccnumber]; $qrycc = db_first("select * from tblsavedcc where loginid = ".loginid()); // below not checked into task replaced with below code on live JT //if($qrycc) //{ // $ccnumber = decrypt_cc($qrycc[savedccnumber]); // $ccnumber_display4 = $ccnumber; // //$ccnumber_display4 = str_pad(substr($ccnumber,-4),strlen($ccnumber),"*",STR_PAD_LEFT); //} if($qrycc) { $ccnumber = decrypt_cc($qrycc[savedccnumber]); //$ccnumber_display4 = $ccnumber; $ccnumber_display4 = str_pad(substr($ccnumber,-4),strlen($ccnumber),"*",STR_PAD_LEFT); } if((has_access("vaultskippayment") && $_POST[skippayment]) || ($_POST[ccnumber] && ($_POST[ccnumber] == $testcc && !is_livesite()))) { //they have permission and have requested to skip payment //lets build an arracy that can be returned to the receipt for processing $skipped = "Skipped Payment"; $retarr[description] = $paymentdescr; $retarr[amount] = 0; $retarr[success] = $skipped; $retarr[cardholder] = $skipped; return $retarr; } if($submitted) { if($_POST[ccnumber]) { $_POST[ccnumber] = str_replace(" ","",$_POST[ccnumber]); $_POST[ccnumber] = str_replace("-","",$_POST[ccnumber]); } if($_POST[ccuseonfile] && $qrycc); //dont check the cc numberif they are using the cc on account. elseif(strlen($_POST[ccnumber])<15||strlen($_POST[ccnumber])>16||!is_numeric($_POST[ccnumber])) $errormsg.="
Verify your payment information |
|||||||
| $field[label] | "; else echo " | "; $value=$_POST[$field[fieldname]]; if($field[display]) $value=str_replace("VALUE",$value,$field[display]); echo $value; echo " | "; echo "|||||
| Description | $paymentdescr | ||||||
| Credit Card | ".$ACCEPTED_CREDITCARDS[$_POST[cctype]]." | ||||||
| Name on the Card | $_POST[ccname] | ||||||
| Card Number | $_POST[ccnumber] | ||||||
| Expiration Date | $_POST[ccexpmo]/$_POST[ccexpyear] | ||||||
| Billing Address | $_POST[ccaddress] | ||||||
| City | $_POST[cccity] | ||||||
| State / Zip | $_POST[ccstate] / $_POST[cczip] | ||||||
| Payment Amount | $".number_format($paymentamount,2)." | ||||||
| ($".number_format($paymentamount,2)." will be charged to your account when you click 'Make Payment' | |||||||
Enter your payment information |
|||||||
| Use card on file | if($_POST[ccuseonfile]) echo checked; ?>>to use your credit card on file (ending in echo $ccnumber_4; ?>) | ||||||
| * = Required Field |
|||||||
| $field[label] | "; else echo " | "; echo $field[field]; echo " | "; echo "|||||
Overseer user only: Skip Payment ";
if (is_devsite() && !is_admin())
d('Hey Dev, this is a vaultskippayment override so you can archive without entering a CC.')
?>
| |||||||
| Payment Amount | $".number_format($paymentamount,2)." | ||||||
| Credit Card:* | |||||||
| Name on the Card:* | > | ||||||
| Credit Card Number:* | style='width:120px;' value=''> (no dashes) | ||||||
| Expiration Date:* | / | ||||||
| Billing Address:* | > | ||||||
| City:* | > | ||||||
| State/Zip:* | echo input_state_dropdown(ccstate,$_POST[ccstate]) ?> / echo qinput(cczip,$_POST[cczip]) ?> | ||||||
| Save this Credit Card |
> This card would show next time you purchase something through the vault |
||||||
(you will be able verify your informaton in the next step) | |||||||