You need to sign in to do that
Don't have an account?
Jeff_SF
The element type "apex:page" should be terminated by the matching end-tag "</apex:page>"
i am getting an error that is in code. line 287 is the very last line of code. Any suggestions?
<apex:page standardController="Opportunity" renderAs="pdf" sidebar="false" title="Opportunity Quotation"> <apex:composition template="PDF_Header_Template"> <apex:define name="extraStyle"> <style type="text/css"> .style4 { color: #000000; font-size: 14px; font-weight: bold; } #PreparedBy { position: absolute; width: 77%; height: 60px; left: 30px; top: 145px; border: 0px red solid; } .ShipAndBillSection { position: absolute; width: 99%; height: 90px; left: 5px; top: 215px; border: 0px blue solid; } .ShipAndBill { width: 340px; height: 90px; border: 1px silver solid; vertical-align: top; } .billToShipToLabel { font-size: 12px; width: 110px; height: 100%; vertical-align: top; } .addr { font-size: 12px; width: 450px; vertical-align: top; } .LineItems { position: absolute; left: 5px; height: 300px; top: 330px; z-index: 1; width: 99%; border: 0px green solid; } .LineItemsTable { width: 100%; height: 100%; border-top: 0px; } .LineItemHeader { background-color: gray; border: 1px gray solid; text-align: right; } .TotalColHeader { background-color: gray; border: 0px gray solid; text-align: right; } .TotalColRow { background-color: silver; border-right: 0px silver solid; text-align: right; } .LineItemCell { border-right: 1px silver solid; background-color: white; text-align: right; } #commentBox { position: relative; left: 100px; top: 10px; width: 80%; } #bottomSection { position: absolute; top: 770px; left: 130px; width: 450px; border: 0px aqua solid; } #ApprovalBlock { position: relative; left: 0px; top: 10px; width: 450px; border: 0px purple solid; } .approvalTable { width:100%; height:105px; border: 0px lime solid; } </style> </apex:define> <apex:define name="PageTitle">{!IF(contains(Opportunity.RecordType.Name,'Addendum'),'WAGE ADJUSTMENT','QUOTATION')}</apex:define> <apex:define name="titleBoxInfo"> <span class="style4"># {!Opportunity.Opportunity_Number__c}</span> <br /> DATE: <apex:outputText value="{0,date,MM/dd/yyyy}"><apex:param value="{!Opportunity.CreatedDate}" /></apex:outputText> <br style="line-height:1.3;" /> <apex:outputText value="VALID UNTIL: {0,date,MM/dd/yyyy}" rendered="{!IF(OR(ISBLANK(Opportunity.Valid_Until__c),ISNULL(Opportunity.Valid_Until__c)),'FALSE','TRUE')}"><apex:param value="{!Opportunity.Valid_Until__c}" /></apex:outputText> </apex:define> </apex:composition> <div id="PreparedBy"> <table cellpadding="2" cellspacing="0" width="100%" border="0"> <tr> <td style="width: 75px">Prepared By</td> <td colspan="2">{!$User.FirstName & " " & $User.LastName}</td> </tr> <tr> <td>Phone</td> <td colspan="2">{!$User.Phone}</td> </tr> <tr> <td>Email</td> <td>{!$User.Email}</td> <td style="width:300px;text-align:right;">Customer # {!Opportunity.Account.QB_Account_Number__c}</td> </tr> </table> </div> <div id="ShipAndBillSection" class="ShipAndBillSection"> <table style="width:100%;height:100%;" cellpadding="0" cellspacing="0"> <tr> <td> <table cellpadding="0" cellspacing="0" class="ShipAndBill"> <tr> <td> <table style="width:100%;height:100%;" cellpadding="1" cellspacing="1"> <tr> <td rowspan="3" class="billToShipToLabel">BILL TO:</td> <td class="addr">{!IF(Opportunity.Account.RecordType.Name='Service Customer',Opportunity.Account.Parent.Name,Opportunity.Account.Name)}</td> </tr> <tr><td class="addr">{!IF(Opportunity.Account.RecordType.Name='Service Customer',Opportunity.Account.Parent.BillingStreet,Opportunity.Account.BillingStreet)}</td></tr> <tr><td class="addr">{!IF(Opportunity.Account.RecordType.Name='Service Customer',Opportunity.Account.Parent.BillingCity,Opportunity.Account.BillingCity)}, {!IF(Opportunity.Account.RecordType.Name='Service Customer',Opportunity.Account.Parent.BillingState,Opportunity.Account.BillingState)} {!IF(Opportunity.Account.RecordType.Name='Service Customer',Opportunity.Account.Parent.BillingPostalCode,Opportunity.Account.BillingPostalCode)} </td> </tr> </table> </td> </tr> </table> </td> <td style="width: 30px;"> </td> <td> <table cellpadding="0" cellspacing="0" class="ShipAndBill"> <tr> <td style="vertical-align: top;"> <table style="width:100%;height:100%;" cellpadding="1" cellspacing="1"> <tr> <td rowspan="5" class="billToShipToLabel">SERVICE AT:</td> <td class="addr">{!Opportunity.Account.Name}</td> </tr> <tr><td class="addr">{!Opportunity.Account.ShippingStreet}</td></tr> <tr><td class="addr">{!Opportunity.Account.ShippingCity}, {!Opportunity.Account.ShippingState} {!Opportunity.Account.ShippingPostalCode}</td></tr> <tr><td class="addr">{!Opportunity.Account.Phone}</td></tr> </table> </td> </tr> </table> </td> </tr> </table> </div> <c:OpportunitySortedItems value="{!Opportunity}" /> <!-- <apex:outputPanel layout="block" styleClass="LineItems" rendered="{!IF(OR(contains(Opportunity.RecordType.Name,'Special Service'),contains(Opportunity.RecordType.Name,'Addendum')),'FALSE','TRUE')}"> <table class="LineItemsTable" cellpadding="5" cellspacing="0"> <thead> <tr class="LineItemHeader"> <td style="text-align:left;width:15%;">Product Name</td> <td style="text-align:left;width:40%;">Description</td> <td style="width:15%;">Sales Price</td> <td style="width:15%;">Quantity</td> <td style="width:15%;" class="TotalColHeader">Total Price</td> </tr> </thead> <apex:repeat var="line" value="{!Opportunity.OpportunityLineItems}" > <tr> <td class="LineItemCell" style="text-align:center;border-bottom:1px silver solid;border-left:1px silver solid;">{!line.PricebookEntry.Name}</td> <td class="LineItemCell" style="text-align:left;border-bottom:1px silver solid;">{!line.Description}</td> <td class="LineItemCell" style="border-bottom:1px silver solid;"><apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!line.UnitPrice}" /> </apex:outputText> </td> <td class="LineItemCell" style="border-bottom:1px silver solid;"><apex:outputText value="{0, number, #,###.00}"> <apex:param value="{!line.Quantity}" /> </apex:outputText> </td> <td class="TotalColRow" style="border-bottom:1px silver solid;"><apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!line.TotalPrice}" /> </apex:outputText> </td> </tr> </apex:repeat> <tr><td height="50px" colspan="3" class="LineItemCell" > </td> <td class="LineItemCell" style="border-bottom:1px gray solid;"> </td> <td class="TotalColRow" style="border-bottom:1px gray solid;"> </td> </tr> <tr> <td colspan="3" class="LineItemCell" > </td> <td class="LineItemCell" style="border-bottom:1px gray solid;" >Grand Total</td> <td class="TotalColRow" style="border-bottom:1px gray solid;"> <apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!Opportunity.Amount}" /> </apex:outputText> </td> </tr> <tr><td colspan="5" align="left" style="padding: 10px 50px 5px 50px;"><div id="commentBox2">{!Opportunity.Quote_Comments__c}</div></td></tr> </table> </apex:outputPanel> <apex:outputPanel layout="block" styleClass="LineItems" rendered="{!IF(OR(contains(Opportunity.RecordType.Name,'Special Service'),contains(Opportunity.RecordType.Name,'Addendum')),'TRUE','FALSE')}"> <table class="LineItemsTable" cellpadding="5" cellspacing="0"> <thead> <tr class="LineItemHeader"> <td style="text-align:left;width:5%;">Service</td> <td style="text-align:left;width:65%;">Description</td> <td style="width:15%;">Sales Price</td> <td style="width:15%;"class="TotalColHeader">Total Price</td> </tr> </thead> <apex:repeat var="line" value="{!Opportunity.OpportunityLineItems}" > <tr> <td class="LineItemCell" style="text-align:center;border-bottom:1px silver solid;border-left:1px silver solid;">{!line.PricebookEntry.Name}</td> <td class="LineItemCell" style="text-align:left;border-bottom:1px silver solid;">{!line.Description}</td> <td class="LineItemCell" style="border-bottom:1px silver solid;"><apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!line.UnitPrice}" /> </apex:outputText> </td> <td class="TotalColRow" style="border-bottom:1px silver solid;"><apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!line.TotalPrice}" /> </apex:outputText> </td> </tr> </apex:repeat> <tr><td height="50px" colspan="2" class="LineItemCell" > </td> <td class="LineItemCell" style="border-bottom:1px gray solid;"> </td> <td class="TotalColRow" style="border-bottom:1px gray solid;"> </td> </tr> <tr> <td colspan="2" class="LineItemCell" > </td> <td class="LineItemCell" style="border-bottom:1px gray solid;" >Grand Total</td> <td class="TotalColRow" style="border-bottom:1px gray solid;"> <apex:outputText value="{0, number, $###,###.00}"> <apex:param value="{!Opportunity.Amount}" /> </apex:outputText> </td> </tr> <tr><td colspan="5" align="left" style="padding: 10px 50px 5px 50px;"><div id="commentBox2">{!Opportunity.Quote_Comments__c}</div></td></tr> </table> <div id="commentBox"> <apex:outputPanel rendered="{!IF(contains(Opportunity.RecordType.Name,'Addendum'),'TRUE','FALSE')}"> <br /><br />When signed this Quote will serve as an addendum to the original service agreement and will change the monthly billing to the above stated amount. </apex:outputPanel> </div> </apex:outputPanel> --> <div id="bottomSection"> <div id="ReturnMsg" class="rtnMsg"> The prices, specifications and conditions are satisfactory and are hereby accepted. Square Feat, Inc. is authorized to do these items as specified. Please line out and initial any line items not needed.</div> <div id="ApprovalBlock"> <table class="approvalTable" cellpadding="0" cellspacing="0"> <tr><td style="width:75px;">Approved By</td><td style="width:375px;height:20px;border-bottom:1px gray solid;"> </td></tr> <tr><td>Date</td><td style="height:20px;border-bottom:1px gray solid;"> </td></tr> <tr><td>Signature</td><td style="height:20px;border-bottom:1px gray solid;"> </td></tr> <tr style="display:{!IF(OR(contains(Opportunity.RecordType.Name,'Special Service'),contains(Opportunity.RecordType.Name,'Addendum')),'visible','none')}"> <td>{!IF(contains(Opportunity.RecordType.Name,'Addendum'),'Effective Date','')}{!IF(contains(Opportunity.RecordType.Name,'Special Service'),'Preferred Service Date','')}</td><td style="height:20px;border-bottom:1px gray solid;"> </td></tr> </table> </div> <div style="align:center;">PLEASE FAX OR EMAIL BACK APPROVED {!IF(contains(Opportunity.RecordType.Name,'Addendum'),'ADDENDUM','QUOTE')} TO SCHEDULE WORK.</div> <br /> <div style="align:center;font-weight:bold;">Thank you for the opportunity! Visit us on our web site at www.squarefeat.com</div> </div> </body> </apex:page>
I use Notepad++ for expanding/collapsing all the levels like an XML file.
Your tag <apex:page> is linked with </body>
Perhaps, the tag <body> is missing (who knows ...)
Open/closed parenthesis and open/closed tag, the nightmare of developper ... without Notepad++
Regards,
Alain
All Answers
I use Notepad++ for expanding/collapsing all the levels like an XML file.
Your tag <apex:page> is linked with </body>
Perhaps, the tag <body> is missing (who knows ...)
Open/closed parenthesis and open/closed tag, the nightmare of developper ... without Notepad++
Regards,
Alain
Warning: The element type "apex:page" should be terminated by the matching end-tag "</apex:page>" in Opportunity_Quotation_PDF at line 287
Warning: The element type "body" should be terminated by the matching end-tag "</body>" in pdf_header_template at line 84