Customer orders

Base alias is "Customer". Child alias is "Orders". 

Orders which are not paid is bold and font color is "red".

Download full example.

This example is for XFRX 19.1.0 because use data:template element  and stylefor attribute.

Data preparation

m.lcTASTRADE=HOME(2)+"Tastrade\Data\"
OPEN DATA (m.lcTASTRADE+"TASTRADE")

USE Customer ORDER "CUSTOMER_I" IN 0
USE Orders ORDER "CUST_ORD" IN 0
USE Order_Line_Items ORDER "ORDER_ID" IN 0

SELECT order_Id, SUM(UNIT_PRICE*QUANTITY) AS Amount ;
  FROM Order_Line_Items;
  GROUP BY order_ID;
  INTO CURSOR order_amount 
  
SELECT ("order_amount")  
INDEX ON order_ID TAG "order_I"

SELECT ("Orders")
SET RELATION TO order_ID INTO ("order_amount")

SELECT ("Customer")
SET RELATION TO Customer_id INTO ("Orders")
SET FILTER TO RECNO()<=8


Text format source preparation

TEXT TO m.pcOrderList TEXTMERGE NOSHOW
<p>
<p style="tab-stops:left 50px left 120px left 190px right 290px;">
<span style="font-weight:bold;font-style:italic;">Order list</span><br/>
<span style="font-weight:bold;">Number<tab/>Date<tab/>Deliver by<tab/>Paid<tab/>Amount</span><br/>
<hr style="width:100%;border-width:1px;border-style:solid;border-color:'Black';"></hr>

<data:template template="'Orders'" stylefor="{NOT PAID}{font-weight:bold;color:RGB(255,0,0)}">
<vfpev>ALLTRIM(ORDER_ID)</vfpev><tab/>
<vfpev>ORDER_DATE</vfpev><tab/>
<vfpev>DELIVER_BY</vfpev><tab/>
<vfpev>IIF(PAID, "Yes", "No")</vfpev><tab/>
<vfpev pictureformat="9 999 999.99">order_amount.Amount</vfpev>
<br>
</data:template>

</p>
ENDTEXT

Run XFRX

m.loSession=EVALUATE([xfrx("XFRX#INIT")])
*m.loSession.setLogFile(m.lcPath+"XFRX.log")

m.lnRetVal = loSession.SetParams(,,,,.T.,,"XFF")
IF m.lnRetVal=0
   m.loSession.ProcessReport(m.lcPath+"Customer_orders")
   m.loXFF=m.loSession.finalize()
   
   SET CLASSLIB TO xfrxlib\xfrxlib ADDITIVE 

   m.loPreview = CREATEOBJECT("frmMPPreviewer")
   m.loPreview.iEmail = 1 && show the email icon
   m.loPreview.lVFP8 =.T. && use XFRX#INIT
   *m.loPreview.setLogFile(m.lcPath+"XFRXPreview.log")
   
   m.loPreview.windowtype = 1
   m.loPreview.windowState = 0
   
   m.loPreview.PreviewXFF(m.loXFF)
   m.loPreview.show()
   
ENDIF   

Result