<cfparam name="url.payer_filter" default="" />
<cfparam name="url.patient_filter" default="" />
<cfparam name="url.df" default="" />
<cfparam name="url.dt" default="" />
<cfparam name="url.db" default="" />
<cfparam name="url.age" default="" />
<cfparam name="form.amount_filter" default="" />
<cfparam name="url.ID" default="" />
<cfparam name="url.reporttype" default="" />

<cfquery  name="GetPayertotal" datasource="#Application.DataSrc#">

SELECT 

 DISTINCT i.Invoice_Id,i.errors, i.DateSent, i.Output, i.MethodSent, i.Comment, i.InvoiceTotal, i.PayerBalance,i.claim_status,
 i.Internal_control_number,
	i.User_defined_Status, i.Assmt_ID ,DATEDIFF(CURDATE(), i.DateSent) AS age , p.Patient_Id, p.Status, p.Pt_Last, 
	p.Pt_First, p.Pt_Middle ,
	a.F177 AS STARTS, a.F178 AS ENDD , a.F26 AS TYPE, 
	(SELECT Min(Visit_Date) FROM #Request.prefix_db_agency#.pSchedules 
	where Invoice_ID = i.Invoice_ID 
	and Deleted = 0 ORDER BY Visit_Date) as MIN,
	(SELECT Max(Visit_Date) FROM #Request.prefix_db_agency#.pSchedules
	 where Invoice_ID = i.Invoice_ID 
	 and Deleted = 0 ORDER BY Visit_Date) as MAX,

	 CASE
	    WHEN DATEDIFF(s.Visit_Date,a.F177) < 30 THEN a.F177
	    WHEN DATEDIFF(s.Visit_Date,a.F177) >= 30 THEN  DATE_ADD(a.F177, INTERVAL 30 DAY)
    ELSE  a.F177
    END as START,
    CASE
	    WHEN DATEDIFF(s.Visit_Date,a.F177) < 30 THEN DATE_ADD(a.F177, INTERVAL 29 DAY)
	    WHEN DATEDIFF(s.Visit_Date,a.F177) >= 30 THEN  DATE_ADD(a.F177, INTERVAL 59 DAY) 
    ELSE  a.F178
    END as END,

    (SELECT SUM(IFNULL(Visits_payments.write_offamount, 0))  
     FROM  #Request.prefix_db_agency#.Visits_payments 
     JOIN  #Request.prefix_db_agency#.Payments ON  Payments.Payment_ID = Visits_payments.Payment_ID 
     AND Payments.Deleted = 0
     WHERE Visits_payments.status = 0 AND Visits_payments.write_offcode != 'PR' 
     AND Payments.Invoice_ID =i.Invoice_ID ) +
    (SELECT SUM(IFNULL(Visits_payments.second_write_offamount, 0))  
     FROM  #Request.prefix_db_agency#.Visits_payments 
     JOIN  #Request.prefix_db_agency#.Payments ON  Payments.Payment_ID = Visits_payments.Payment_ID 
     AND Payments.Deleted = 0
     WHERE Visits_payments.status = 0 AND Visits_payments.write_offcode != 'PR' 
     AND Payments.Invoice_ID =i.Invoice_ID) +
    (SELECT SUM(IFNULL(Visits_payments.third_write_offamount, 0))  
     FROM  #Request.prefix_db_agency#.Visits_payments 
     JOIN  #Request.prefix_db_agency#.Payments ON  Payments.Payment_ID = Visits_payments.Payment_ID 
     AND Payments.Deleted = 0
     WHERE Visits_payments.status = 0 AND Visits_payments.write_offcode != 'PR' 
     AND Payments.Invoice_ID =i.Invoice_ID) +
    (SELECT SUM(IFNULL(Visits_payments.fourth_write_offamount, 0))  
     FROM  #Request.prefix_db_agency#.Visits_payments 
     JOIN  #Request.prefix_db_agency#.Payments ON  Payments.Payment_ID = Visits_payments.Payment_ID 
     AND Payments.Deleted = 0
     WHERE Visits_payments.status = 0 AND Visits_payments.write_offcode != 'PR' 
     AND Payments.Invoice_ID =i.Invoice_ID) AS total_write_offs,

	pr.Pay_Name, pr.Pay_ID, pr.Pay_Contact, pr.Pay_Phone, pr.Pay_Phone AS Contact_Phone_Ext,
	pr.Output AS PayerOutputType ,  s.Visit_Date,
	(SELECT SUM(Amount) FROM #Request.prefix_db_agency#.Payments WHERE Invoice_Id = i.Invoice_Id AND Deleted <> 1) AS Paid ,
	(SELECT SUM(WriteOffAmount) FROM #Request.prefix_db_agency#.Payments WHERE Invoice_Id = i.Invoice_Id AND Deleted <> 1)  AS wOff ,
	 i.InvoiceTotal Total_Eclaim,  i.Output as POUT,pr.Output AS PayerOutputType

	  FROM #Request.prefix_db_agency#.Invoices i 
	    <cfif isdefined('url.ACKNW') and #url.ACKNW# EQ 1 >
	     join #Request.prefix_db_agency#.pSchedules s     on  s.Invoice_ID = i.Invoice_ID AND s.Status = '0'
		<cfelse>
		  join #Request.prefix_db_agency#.pSchedules s     on  s.Invoice_ID = i.Invoice_ID AND s.Status = '0'
		 </cfif>
		  join #Request.prefix_db_agency#.pPatients  p     on  p.patient_id = i.patient_id
		  join #Request.prefix_db_agency#.pAssessments a   on  i.Assmt_ID = a.Assmt_ID
		  join #Request.prefix_db_agency#.pPayer pr        on  i.PatientPayer_ID = pr.Pay_ID


WHERE
i.Agency_ID = #session.AgencyId#
<cfif url.ID NEQ '' AND url.ID NEQ 0>
	AND pr.Pay_ID = #url.ID#
</cfif>
<!--- AND i.Output = '#url.Output#' --->
<cfif url.reporttype EQ 'denied'>
	  AND  i.claim_status ='Denied'
	<cfelse>
	<cfif isdefined('url.ACKNW') and #url.ACKNW# EQ 1 >
			AND  ((select IFNULL(SUM(amount),0) from #Request.prefix_db_agency#.Payments 
					where invoice_id = i.invoice_id and Deleted = 0 ) = 0 OR 
									i.claim_status ='' or i.claim_status ='Waiting'
									 or i.claim_status is null or i.claim_status ='cancelled')
		<cfelse>
			AND i.claim_status ='Accepted'
		</cfif>
</cfif>
AND pr.Status = '0'
AND p.Status  IN (#Request.patient_status#)
	AND a.Status = '0'
	AND i.Output is not null
	AND i.Deleted <> 1
	AND i.InvoiceTotal > 0
	AND ( (i.InvoiceTotal  - i.Seq_Amount - 
		(select sum(amount + writeoffamount) from #Request.prefix_db_agency#.Payments 
	where invoice_id = i.invoice_id  and Deleted =0) > 0)
	OR (select sum(amount + writeoffamount) 
from #Request.prefix_db_agency#.Payments where invoice_id = i.invoice_id  and Deleted =0) is null )
<cfif url.df neq ''>AND   i.DateSent >= #CreateODBCDate(url.df)#</cfif>
<cfif url.dt neq ''>AND   i.DateSent <= #CreateODBCDate(url.dt)#</cfif>
<cfif url.payer_filter neq ''>AND py.PayName LIKE '%#url.payer_filter#%'</cfif>
<cfif url.patient_filter neq ''>AND p.Patient_ID  =  '#url.patient_filter#' </cfif>						
Group by i.Invoice_Id
ORDER BY Pay_Name ASC, Pt_Last, Pt_First ,MIN DESC
</cfquery>


<div class="portlet box blue">
		<div class="portlet-title">
			<div class="caption">
				<i class="fa fa-gift"></i>Export File
			</div>
			<div class="tools">
				<a class="collapse" href="" data-original-title="" title="">
				</a>
			</div>
			<div class="actions">
			     <a href="javascript:;" class="btn btn-default btn-sm" onclick="history.back();"> Back </a>
		</div>
		</div>
<div class="portlet-body form">


<cfif GetPayertotal.recordcount gt 0>
  <cfset str = """" & "Payer Name" & """"
             & "," & """" & "Patient Last Name" & """"
             & "," & """" & "Patient First Name" & """"
             & "," & """" & "Visit Date Start" & """"
             & "," & """" & "Visit Date End" & """"
			  & "," & """" & "Date Billed" & """"
			   & "," & """" & "Age" & """"
			    & "," & """" & "Due" & """"
			     & "," & """" & "ICN" & """"
			       & "," & """" & "Invoice ID" & """"
		
			 & chr(13)
						 & chr(10)
  />
  

<cfoutput query="GetPayertotal">

	<cfif PayerOutputType eq 'UB82-1500' or PayerOutputType eq '1500'>
			<cfset STARTDATE = #DateFormat(MIN,"mm/dd/yyyy")# />
			<cfset ENDDATE = #DateFormat(MAX,"mm/dd/yyyy")# />
	<cfelse>
			<cfif POUT eq 'RAP'>
				<cfset STARTDATE = #DateFormat(MIN,"mm/dd/yyyy")# />
				<cfset ENDDATE = #DateFormat(MIN,"mm/dd/yyyy")# />
			<cfelseif PayerOutputType eq 'Medicare'>
				<cfset STARTDATE = #DateFormat(START,"mm/dd/yyyy")# />
				<cfset ENDDATE = #DateFormat(END,"mm/dd/yyyy")# />
			<cfelse>
				<cfset STARTDATE = #DateFormat(MIN,"mm/dd/yyyy")# />
				<cfset ENDDATE = #DateFormat(MAX,"mm/dd/yyyy")# />
			</cfif>
	</cfif>

	<cfset InvAmt =  InvoiceTotal />
	<cfif InvAmt eq ''>
		<cfset InvAmt = 0 />
	</cfif>

	<cfset amtPaid = paid />
	<cfif amtPaid eq ''>
		<cfset amtPaid = 0 />
	</cfif>

	<cfset writeOff = wOff />
	<cfif writeOff eq ''>
		<cfset writeOff = 0 />
	</cfif>
	<cfset total_writeoffs =  total_write_offs />
	<cfif total_write_offs eq ''>
		<cfset total_writeoffs = 0 />
	</cfif>
	<cfset bal = DollarFormat(InvAmt - amtPaid - writeOff - total_writeoffs) />
	<cfset Request.bal = (InvAmt - amtPaid - writeOff - total_writeoffs)/>
	<cfif abs(Request.bal) LT 0.000001>
			    <cfset Request.bal = 0>
	</cfif>
	<cfif Request.bal GT 0 <!--- or bal eq '$0.00' --->>

   <cfset str = str
                      & """" & #Pay_Name#& """"
					  & "," & """" & #Pt_Last# & """"
					  & "," & """" & #Pt_First# & """"
         & "," & """" & #DateFormat(STARTDATE,"yyyy-mm-dd")# & """"
				& "," & """" & #DateFormat(ENDDATE,"yyyy-mm-dd")# & """"
        & "," & """" & #DateFormat(DateSent,"mm/dd/yyyy")# & """"
			  & "," & """" & #age# & """"
			  & "," & """" & #DollarFormat(InvoiceTotal)# & """"
				& "," & """" & #Internal_control_number# & """"
				& "," & """" & #Invoice_ID# & """"
                & chr(13)
						    & chr(10)
   />
   </cfif>
   
   </cfoutput>
   
   
   
   
   
   <cfset dt = DateFormat(Now(), "yyyy-mm-dd") />
    <br /><br />
    <cfif url.reporttype EQ 'denied'>
    	<cfset filename= "Denied_Reports_for_"& GetPayertotal.Pay_Name &"_"&dt />
    <cfelse>
   		 <cfset filename= "Claims_Awaiting_for_"& GetPayertotal.Pay_Name &"_"&dt />
    </cfif>
   <cffile action="write" file="#application.datapath##filename#.csv" output="#str#">
  <cfoutput> <p> &nbsp;<a href="#application.webdatapath##filename#.csv"> Click Here</a> and choose "Save Target As..." to download the Exported data file and save it to your computer</p>
   <br /><br />
  </cfoutput>
   <cfelse>
 <p> No data could be found based on your search criteria</p>
  <p>Please try again.</p>
   </cfif>
</div>
</div>