//Indicator for Pretty or Normal Invoice var vMode as Int = 0 SUBROUTINE PrintHeader() Var vInvDate as String Var vDelDate as String Var vShipDate as String Var vLineX as Int Var vLineXMax as Int Var vFNLN as String vLineXMax = 795 vLineX = 50 NewPage(850, 1100) If vMode = 1 Then { //Normal Invoice //The next four lines make the address for J. R. Raheys. User Definable PrintString("J. R. Rahey's ", 50, 45, 0, "BArial", 33, 0) PrintString("Furniture & Appliances", 50, 80, 0, "BArial", 18, 0) PrintString("1095 King's Road", 50, 105, 0, "Arial", 14, 0) PrintString("Sydney River, NS, B1S 1C6", 50, 120, 0, "Arial", 14, 0) PrintString("Tel: 902-562-2500, Fax: 902-562-6384", 50, 135, 0, "Arial", 14, 0) PrintString(" C U S T O M E R C O P Y", 450, 105, 0, "Arial", 14, 0) } Else If vMode = 2 Then { //Pretty Invoice PrintImage("Pics\invoice-header2.png", 15, 15, -1, -1) IF LOCATION = "SYDNEY RIVER" THEN PrintString("X",55,170,0,"BArial",14,0) IF LOCATION = "SYDNEY MINES" THEN PrintString("X",180,170,0,"BArial",14,0) IF LOCATION = "ANTIGONISH" THEN PrintString("X",300,170,0,"BArial",14,0) IF LOCATION = "NEW GLASGOW" THEN PrintString("X",420,170,0,"BArial",14,0) //PrintBox(12, 50, 35, @PageExtentX()-50, @PageExtentY()-35) PrintString(" C U S T O M E R C O P Y", 550, 105, 0, "Arial", 14, 0) } PrintBox(12,540,25,285,25) PrintString("LOCATION:" , 550, 30, 0, "Arial", 14, 0) PrintString(LOCATION , 640, 30, 0, "Arial", 14, 0) PrintBox(12,540,50,155,20) PrintBox(12,695,50,130,20) PrintString("Invoice Number" , 550, 50, 0, "Arial", 16, 0) PrintString(@STR(Invoice) , 580, 75, 0, "Arial", 14, 0) PrintBox(12,540,70,155,25) PrintBox(12,695,70,130,25) PrintString("Invoice Date", 700, 50, 0, "Arial", 16, 0) vInvDate = @AsFormattedByLE(DATE10, 1, "") PrintString(vInvDate , 700, 75, 0, "Arial", 14, 0) // PrintString("Delivery Date", 660, 160, 0, "BArial", 16, 0) // vDelDate = @AsFormattedByLE(Delivery Date, 1, "") // PrintString(vDelDate , 670, 180, 0, "Arial", 14, 0) // PrintString("HST REG# R102574944", 500, 125, 0, "BArial", 16, 0) //Create Bill To Section of Invoice PrintString("Bill To:", 100, 200, 0, "BArial", 16, 0) vFNLN = FNAME + " " + LNAME PrintString(VFNLN, 100, 220, 0, "Arial", 14, 0) PrintString(STREET, 100, 240, 0, "Arial", 14, 0) PrintString(City + ", " + "NS" + " " + Postal Code, 100, 260, 0, "Arial", 14, 0) PrintString("("+ @LEFT(PHONE1,3) +") "+@MID(PHONE1,4,3)+"-"+@RIGHT(PHONE1,4), 100, 280, 0, "Arial", 14, 0) //Create Ship To Section of Invoice PrintString("Delivery Date:", 555, 140, 0, "BArial", 16, 0) vShipDate = @AsFormattedByLE(DELIVERY DATE, 1, "") PrintString(vShipDate, 700, 140, 0, "Arial", 14, 0) PrintString("Ship To:", 500, 200, 0, "BArial", 16, 0) PrintString(FN2, 500, 220, 0, "Arial", 14, 0) PrintString(LN2, 600, 220, 0, "Arial", 14, 0) PrintString(STREET2, 500, 240, 0, "Arial", 14, 0) PrintString(CITY0 + ", " + "NS" + " " , 500, 260, 0, "Arial", 14, 0) PrintString("("+ @LEFT(PHONE2,3) +") "+@MID(PHONE2,4,3)+"-"+@RIGHT(PHONE2,4), 500, 280, 0, "Arial", 14, 0) PrintString("DEL INFO:"+ COMMENT, 65, 300, 0, "BArial", 14, 0) //Make a line between Bill To/Shipping information and Line Items While vLineX <= vLineXMax { PrintString("_", vLineX, 315, 0, "Arial", 14, 0) vLineX += 5 } IF LE2 <> "POA" THEN {//Print Line Item Headers PrintString("Code", 45, 330, 0, "BArial", 12, 0) PrintString("Brand",120, 330, 0, "BArial", 12, 0) PrintString("Dept",190, 330, 0, "BArial", 12, 0) PrintString("Model",220, 330, 0, "BArial", 12, 0) PrintString("Description",380, 330, 0, "BArial", 12, 0) PrintString("Price", 585, 330, 100, "BArial", 12, 0, 1) PrintString("Qty", 630, 330, 100, "BArial", 12, 0, 1) PrintString("Total", 700, 330, 100, "BArial", 12, 0, 1)} END SUBROUTINE SUBROUTINE PrintFooter() Var vLineX as Int Var vPageY as Int Var vLineXMax as Int Var vTotal as String Var vQty as String Var vTax as String Var vShipping as String Var vEHF0 as String Var vADMIN0 as String Var vSubTotal as String Var vBALFWD as String Var vPOA0 as String Var vNEWBAL as String Var vTERMS0 as String Var vPOATRM as String Var vMESSAGE as String Var vClerk as String vLineX = 50 vLinexMax = 795 IF EHF0 > 0 THEN PrintString("AN ENVIRONMENTAL HANDLING FEE (EHF) HAS BEEN APPLIED TO THE INVOICE",75,830,0,"Arial",16,0) //Prints a line between Line Items and the Totals While vLineX <= vLineXMax { PrintString("_", vLineX, 840, 0, "Arial", 14, 0) vLineX += 5 } IF LE2 = "POA" THEN { //BALANCE FORWARD vPageY = 350 PrintString("BALANCE FORWARD:",150, 450, 0, "BArial", 20, 0) vBALFWD = @AsFormattedByLE(BALFWD, 1, "") PrintString(vBALFWD, 450, 450, 100, "Arial", 20, 0, 1) //POA vPageY = @PageExtentY() + 1 PrintString("PAID ON ACCOUNT:",150, 500, 0, "BArial", 20, 0) vPOA0 = @AsFormattedByLE(POA0, 1, "") PrintString(vPOA0, 250, 500, 100, "Arial", 20, 0, 1) //NEW BALANCE vPageY = @PageExtentY() + 1 PrintString("NEW BALANCE:", 150, 550, 0, "BArial", 20, 0) vNEWBAL = @AsFormattedByLE(NEWBAL, 1, "") PrintString(vNEWBAL, 450, 550, 100, "Arial", 20, 0, 1) //POA TERMS vPageY = @PageExtentY() + 1 PrintString("POA TERM:",150, 950, 0, "BArial", 16, 0) vPOATRM = @AsFormattedByLE(POATRM, 1, "") PrintString(vPOATRM, 375, 950, 200, "Arial", 16, 0, 1) } IF LE2 <> "POA" THEN {//Shipping vPageY = 855 PrintString("Shipping:", 550, vPageY, 0, "BArial", 16, 0) vShipping = @AsFormattedByLE(Delivery0, 1, "") PrintString(vShipping, 650, vPageY, 100, "Arial", 16, 0, 1) //Terms PrintString("Terms:", 50, vPageY, 0, "BArial", 16, 0) vTERMS0 = @AsFormattedByLE(TERMS0, 1, "") PrintString(vTERMS0, 125, vPageY, 300, "Arial", 16, 0, 0) //EHF vPageY = @PageExtentY() + 5 PrintString("EHF:", 550, vPageY, 0, "BArial", 16, 0) vEHF0 = @AsFormattedByLE(EHF0, 1, "") PrintString(vEHF0, 650, vPageY, 100, "Arial", 16, 0, 1) PrintString("BALANCE FORWARD:",50,vPageY, 0, "BArial", 16, 0) vBALFWD = "$" +@AsFormattedByLE(GRSTTL, 1, "") PrintString(vBALFWD, 275,vPageY, 100, "Arial", 16, 0, 1) //ADMIN vPageY = @PageExtentY() + 5 PrintString("ADMIN:", 550, vPageY, 0, "BArial", 16, 0) vADMIN0 = @AsFormattedByLE(ADMIN0, 1, "") PrintString(vADMIN0, 650, vPageY, 100, "Arial", 16, 0, 1) PrintString("PAID ON ACCOUNT:",50,vPageY, 0, "BArial", 16, 0) vPOA0 = @AsFormattedByLE(POA0, 1, "") PrintString(vPOA0, 275, vPageY, 100, "Arial", 16, 0, 1) //Sub-Total vPageY = @PageExtentY() + 5 PrintString("SubTotal:", 550, vPageY, 0, "BArial", 16, 0) vSubTotal = "$" + @AsFormattedByLE(GRSSUB10, 1, "") PrintString(vSubTotal, 650, vPageY, 100, "Arial", 16, 0, 1) PrintString("BALANCE FINANCED:", 50, vPageY, 0, "BArial", 16, 0) vNEWBAL = "$" + @AsFormattedByLE(GRSCHARGE, 1, "") PrintString(vNEWBAL, 275, vPageY, 100, "Arial", 16, 0, 1) //Tax vPageY = @PageExtentY() + 5 PrintString("HST:", 550, vPageY, 0, "BArial", 16, 0) vTax = "$" + @AsFormattedByLE(GRSHST, 1, "") PrintString(vTax, 650, vPageY, 100, "Arial", 16, 0, 1) PrintString("POA TERM:",50, vPageY, 0, "BArial", 16, 0) vPOATRM = @AsFormattedByLE(POATRM, 1, "") PrintString(vPOATRM,175, vPageY, 200, "Arial", 16, 0, 1) vPageY = @PageExtentY() + 5 PrintString("CLERK:",50, vPageY, 0, "BArial", 16, 0) vCLERK = @AsFormattedByLE(CLERK, 1, "") PrintString(vCLERK, 125, vPageY, 200, "Arial", 16, 0, 0) //Total PrintString("Total:", 550, vPageY, 0, "BArial", 16, 0) vTotal = "$" + @AsFormattedByLE(GRSTTL,1,"") PrintString(vTotal, 650, vPageY, 100, "BArial", 16, 0, 1)} //Invoice footer PrintImage("Pics\invoicefooter.png", 5, 1005, -1, -1) PrintBox(33,530,856,275,146) //Notes //PrintString(Message, 60, 950, 440, "Courier New", 16, 0) FinishPage() END SUBROUTINE //SUBROUTINE FinUpdate() //Var vFinCount as Int //Var vFin as String //vFin = "CT6" //vFinCount = @LoadMassUpdateSpec(vFin) //RunMassUpdateSpec() //END SUBROUTINE Var vCount as Int Var vRecord as Int Var vPageY as Int Var vPrice as String Var vTotal as String Var vQty as String Var vPage as Int Var vInvoice as String //Offer User Choice of Invoices Popup is over Print button PopupSelectPosition(4, @XPos(PRININV) + 11, @YPos(PRININV) + 15) vInvoice = @PopupMenu("Normal;Pretty", "Which Invoice would you like to print?") If vInvoice = "Normal" Then { vMode = 1 } Else If vInvoice = "Pretty" Then { vMode = 2 } If vMode <> 0 Then { vCount = @FormResultSetTotal("Items1") //Call the SubRoutine that calculates the invoice totals, rather than duplicate code // CalculateInv() vRecord = 1 vPage = 1 NewDocument(3) PrintHeader() If vCount > 0 Then { While vRecord <= vCount { vPageY = @PageExtentY() + 2 If vPageY > 900 { //If page is full PrintString("Continued On Next Page...." , 322, 1000, 0, "BArial", 16, 0) FinishPage() vPage += 1 VPageY = 348 PrintHeader() PrintString("Page Number" , 519, 100, 0, "BArial", 16, 0) PrintString(@STR(vPage) , 570, 120, 0, "Arial", 14, 0) } //Product Code PrintString(@FormFieldValue("Items1", "C1", vRecord), 45, vPageY, 300, "Arial", 10, 0) //Product Brand PrintString(@FormFieldValue("Items1", "B1", vRecord), 120, vPageY, 300, "Arial", 10, 0) //Product DEPT PrintString(@FormFieldValue("Items1", "D1", vRecord), 190, vPageY, 300, "Arial", 10, 0) //Product Model PrintString(@FormFieldValue("Items1", "M1", vRecord), 220, vPageY, 300, "Arial", 10, 0) //Product Descritption PrintString(@FormFieldValue("Items1", "DESC1", vRecord), 380, vPageY, 300, "Arial", 10, 0) //Product Price vPrice = @STR(@TN(@FormFieldValue("Items1", "UP1", vRecord))) PrintString(vPrice, 585, vPageY, 100, "Arial", 10, 0, 1) //Product Qty vQty = @STR(@TN(@FormFieldValue("Items1", "Qty0", vRecord))) PrintString(vQty, 635, vPageY, 100, "Arial", 10, 0, 1) //Product(s) Total vTotal = @STR(@DECIMALS(@FormFieldValue("Items1", "TPRICE0", vRecord),2)) PrintString(vTotal, 700, vPageY, 100, "Arial", 10, 0, 1) vRecord = vRecord + 1 } } PrintFooter() FinishDocument() }