You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by BJ Freeman <bj...@free-man.net> on 2011/06/20 04:52:29 UTC

Re: svn commit: r808944 - in /ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order: ordercomplete.ftl orderheader.ftl orderitems.ftl

got a customer compliant that they could not access the pdf.
/ordermgr/control/order.pdf

a person with a customer role does not have permission

would be better if it went through the ecommerce login and
{ecommerce/webapp/mountpoint}/control/order?type=pdf

=========================
BJ Freeman
Strategic Power Office with Supplier Automation <http://www.businessesnetwork.com/control/forum?forumId=SUPPLYCHAIN>

Specialtymarket.com <http://www.specialtymarket.com>
Systems Integrator-- Glad to Assist

Chat  Y! messenger: bjfr33man

apatel@apache.org sent the following on 8/28/2009 9:30 AM:
> Author: apatel
> Date: Fri Aug 28 16:30:34 2009
> New Revision: 808944
> 
> URL: http://svn.apache.org/viewvc?rev=808944&view=rev
> Log:
> Set of html markup improvements. 
> 
> Modified:
>     ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/ordercomplete.ftl
>     ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderheader.ftl
>     ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderitems.ftl
> 
> Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/ordercomplete.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/ordercomplete.ftl?rev=808944&r1=808943&r2=808944&view=diff
> ==============================================================================
> --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/ordercomplete.ftl (original)
> +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/ordercomplete.ftl Fri Aug 28 16:30:34 2009
> @@ -16,23 +16,13 @@
>  specific language governing permissions and limitations
>  under the License.
>  -->
> -<h1>${uiLabelMap.EcommerceOrderConfirmation}</h1>
> +<h2>${uiLabelMap.EcommerceOrderConfirmation}</h2>
>  <#if !isDemoStore?exists || isDemoStore><p>${uiLabelMap.OrderDemoFrontNote}.</p></#if>
> -
>  <#if orderHeader?has_content>
>    ${screens.render("component://ecommerce/widget/OrderScreens.xml#orderheader")}
> -  <br/>
>    ${screens.render("component://ecommerce/widget/OrderScreens.xml#orderitems")}
> -  <table border="0" cellpadding="1" width="100%">
> -   <tr>
> -      <td colspan="4">
> -        <a href="<@o...@ofbizUrl>" class="buttontextbig">${uiLabelMap.EcommerceContinueShopping}</a>
> -      </td>
> -      <td align="right">
> -        <a href="<@o...@ofbizUrl>" class="buttontextbig">${uiLabelMap.EcommerceContinueShopping}</a>
> -      </td>
> -    </tr>
> -  </table>
> +  <a href="<@o...@ofbizUrl>" class="buttontextbig">${uiLabelMap.EcommerceContinueShopping}</a>
> +  <a href="<@o...@ofbizUrl>" class="buttontextbig">${uiLabelMap.EcommerceContinueShopping}</a>
>  <#else>
>    <h3>${uiLabelMap.OrderSpecifiedNotFound}.</h3>
>  </#if>
> 
> Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderheader.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderheader.ftl?rev=808944&r1=808943&r2=808944&view=diff
> ==============================================================================
> --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderheader.ftl (original)
> +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderheader.ftl Fri Aug 28 16:30:34 2009
> @@ -24,453 +24,332 @@
>    <#assign externalOrder = "(" + orderHeader.externalId + ")"/>
>  </#if>
>  
> -<table width="100%" border="0" cellpadding="0" cellspacing="0">
> -  <tr>
> -    <#-- left side -->
> -    <td width="50%" valign="top">
> -
> -    <div class="screenlet">
> -        <div class="screenlet-header">
> -            <div class="boxlink">
> -                <#if maySelectItems?default("N") == "Y" && returnLink?default("N") == "Y" && (orderHeader.statusId)?if_exists == "ORDER_COMPLETED" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> -                    <a href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.OrderRequestReturn}</a>
> -                </#if>
> -            </div>
> -            <div class="boxhead">
> -                &nbsp;${uiLabelMap.OrderOrder}&nbsp;
> -                <#if orderHeader?has_content>
> -                    ${uiLabelMap.CommonNbr}<a href="<@o...@ofbizUrl>" class="lightbuttontext">${orderHeader.orderId}</a>&nbsp;
> -                </#if>
> -                ${uiLabelMap.CommonInformation}
> -                <#if (orderHeader.orderId)?exists>
> -                    ${externalOrder?if_exists} [ <a href="<@o...@ofbizUrl>" class="lightbuttontext" target="_blank">PDF</a> ]
> -                </#if>
> -            </div>
> -        </div>
> -        <div class="screenlet-body">
> -            <table width="100%" border="0" cellpadding="1">
> -                <#-- placing customer information -->
> -                <#if localOrderReadHelper?exists && orderHeader?has_content>
> -                  <#assign displayParty = localOrderReadHelper.getPlacingParty()?if_exists/>
> -                  <#if displayParty?has_content>
> -                      <#assign displayPartyNameResult = dispatcher.runSync("getPartyNameForDate", Static["org.ofbiz.base.util.UtilMisc"].toMap("partyId", displayParty.partyId, "compareDate", orderHeader.orderDate, "userLogin", userLogin))/>
> -                  </#if>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.PartyName}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">
> -                        ${(displayPartyNameResult.fullName)?default("[Name Not Found]")}
> -                      </div>
> -                    </td>
> -                  </tr>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                </#if>
> -                <#-- order status information -->
> -                <tr>
> -                  <td align="right" valign="top" width="15%">
> -                    <div class="tabletext">&nbsp;<b>${uiLabelMap.CommonStatus}</b></div>
> -                  </td>
> -                  <td width="5">&nbsp;</td>
> -                  <td valign="top" width="80%">
> -                    <#if orderHeader?has_content>
> -                      <div class="tabletext">${localOrderReadHelper.getStatusString(locale)}</div>
> -                    <#else>
> -                      <div class="tabletext"><b>${uiLabelMap.OrderNotYetOrdered}</b></div>
> -                    </#if>
> -                  </td>
> -                </tr>
> -                <#-- ordered date -->
> -                <#if orderHeader?has_content>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.CommonDate}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">${orderHeader.orderDate.toString()}</div>
> -                    </td>
> -                  </tr>
> -                </#if>
> -                <#if distributorId?exists>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderDistributor}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">${distributorId}</div>
> -                    </td>
> -                  </tr>
> -                </#if>
> -            </table>
> -        </div>
> -    </div>
> -
> -      <#if paymentMethods?has_content || paymentMethodType?has_content || billingAccount?has_content>
> -        <#-- order payment info -->
> -    <div class="screenlet">
> -        <div class="screenlet-header">
> -            <div class="boxhead">&nbsp;${uiLabelMap.AccountingPaymentInformation}</div>
> -        </div>
> -        <div class="screenlet-body">
> -            <table width="100%" border="0" cellpadding="1">
> -                <#-- offline payment address infomation :: change this to use Company's address -->
> -                <#if !paymentMethod?has_content && paymentMethodType?has_content>
> -                  <tr>
> -                    <#if paymentMethodType.paymentMethodTypeId == "EXT_OFFLINE">
> -                      <td colspan="3" valign="top">
> -                        <div class="tabletext" align="center"><b>${uiLabelMap.AccountingOfflinePayment}</b></div>
> -                        <#if orderHeader?has_content && paymentAddress?has_content>
> -                          <div class="tabletext" align="center"><hr/></div>
> -                          <div class="tabletext" align="center"><b>${uiLabelMap.OrderSendPaymentTo}:</b></div>
> -                          <#if paymentAddress.toName?has_content><div class="tabletext" align="center">${paymentAddress.toName}</div></#if>
> -                          <#if paymentAddress.attnName?has_content><div class="tabletext" align="center"><b>${uiLabelMap.PartyAddrAttnName}:</b> ${paymentAddress.attnName}</div></#if>
> -                          <div class="tabletext" align="center">${paymentAddress.address1}</div>
> -                          <#if paymentAddress.address2?has_content><div class="tabletext" align="center">${paymentAddress.address2}</div></#if>
> -                          <div class="tabletext" align="center">${paymentAddress.city}<#if paymentAddress.stateProvinceGeoId?has_content>, ${paymentAddress.stateProvinceGeoId}</#if> ${paymentAddress.postalCode?if_exists}
> -                          <div class="tabletext" align="center">${paymentAddress.countryGeoId}</div>
> -                          <div class="tabletext" align="center"><hr/></div>
> -                          <div class="tabletext" align="center"><b>${uiLabelMap.EcommerceBeSureToIncludeYourOrderNb}</b></div>
> -                        </#if>
> -                      </td>
> -                    <#else>
> -                      <#assign outputted = true>
> -                      <td colspan="3" valign="top">
> -                        <div class="tabletext" align="center"><b>${uiLabelMap.AccountingPaymentVia} ${paymentMethodType.get("description",locale)}</b></div>
> -                      </td>
> -                    </#if>
> -                  </tr>
> -                </#if>
> -                <#if paymentMethods?has_content>
> -                  <#list paymentMethods as paymentMethod>
> -                    <#if "CREDIT_CARD" == paymentMethod.paymentMethodTypeId>
> -                      <#assign creditCard = paymentMethod.getRelatedOne("CreditCard")>
> -                      <#assign formattedCardNumber = Static["org.ofbiz.party.contact.ContactHelper"].formatCreditCard(creditCard)>
> -                    <#elseif "GIFT_CARD" == paymentMethod.paymentMethodTypeId>
> -                      <#assign giftCard = paymentMethod.getRelatedOne("GiftCard")>
> -                    <#elseif "EFT_ACCOUNT" == paymentMethod.paymentMethodTypeId>
> -                      <#assign eftAccount = paymentMethod.getRelatedOne("EftAccount")>
> -                    </#if>
> -
> -                    <#-- credit card info -->
> -                    <#if "CREDIT_CARD" == paymentMethod.paymentMethodTypeId && creditCard?has_content>
> -                      <#if outputted?default(false)>
> -                        <tr><td colspan="3"><hr/></td></tr>
> -                      </#if>
> -                      <#assign pmBillingAddress = creditCard.getRelatedOne("PostalAddress")>
> -                      <tr>
> -                        <td align="right" valign="top" width="15%">
> -                          <div class="tabletext">&nbsp;<b>${uiLabelMap.AccountingCreditCard}</b></div>
> -                        </td>
> -                        <td width="5">&nbsp;</td>
> -                        <td valign="top" width="80%">
> -                          <div class="tabletext">
> -                            <#if creditCard.companyNameOnCard?has_content>${creditCard.companyNameOnCard}<br/></#if>
> -                            <#if creditCard.titleOnCard?has_content>${creditCard.titleOnCard}&nbsp</#if>
> -                            ${creditCard.firstNameOnCard}&nbsp;
> -                            <#if creditCard.middleNameOnCard?has_content>${creditCard.middleNameOnCard}&nbsp</#if>
> -                            ${creditCard.lastNameOnCard}
> -                            <#if creditCard.suffixOnCard?has_content>&nbsp;${creditCard.suffixOnCard}</#if>
> -                            <br/>
> -                            ${formattedCardNumber}
> -                          </div>
> -                        </td>
> -                      </tr>
> -                    <#-- Gift Card info -->
> -                    <#elseif "GIFT_CARD" == paymentMethod.paymentMethodTypeId && giftCard?has_content>
> -                      <#if outputted?default(false)>
> -                        <tr><td colspan="3"><hr/></td></tr>
> -                      </#if>
> -                      <#if giftCard?has_content && giftCard.cardNumber?has_content>
> -                        <#assign pmBillingAddress = giftCard.getRelatedOne("PostalAddress")?if_exists>
> -                        <#assign giftCardNumber = "">
> -                        <#assign pcardNumber = giftCard.cardNumber>
> -                        <#if pcardNumber?has_content>
> -                          <#assign psize = pcardNumber?length - 4>
> -                          <#if 0 < psize>
> -                            <#list 0 .. psize-1 as foo>
> -                              <#assign giftCardNumber = giftCardNumber + "*">
> -                            </#list>
> -                            <#assign giftCardNumber = giftCardNumber + pcardNumber[psize .. psize + 3]>
> -                          <#else>
> -                            <#assign giftCardNumber = pcardNumber>
> -                          </#if>
> -                        </#if>
> -                      </#if>
> -                      <tr>
> -                        <td align="right" valign="top" width="15%">
> -                          <div class="tabletext">&nbsp;<b>${uiLabelMap.AccountingGiftCard}</b></div>
> -                        </td>
> -                        <td width="5">&nbsp;</td>
> -                        <td valign="top" width="80%">
> -                          <div class="tabletext">
> -                            ${giftCardNumber}
> -                          </div>
> -                        </td>
> -                      </tr>
> -                    <#-- EFT account info -->
> -                    <#elseif "EFT_ACCOUNT" == paymentMethod.paymentMethodTypeId && eftAccount?has_content>
> -                      <#if outputted?default(false)>
> -                        <tr><td colspan="3"><hr/></td></tr>
> -                      </#if>
> -                      <#assign pmBillingAddress = eftAccount.getRelatedOne("PostalAddress")>
> -                      <tr>
> -                        <td align="right" valign="top" width="15%">
> -                          <div class="tabletext">&nbsp;<b>${uiLabelMap.AccountingEFTAccount}</b></div>
> -                        </td>
> -                        <td width="5">&nbsp;</td>
> -                        <td valign="top" width="80%">
> -                          <div class="tabletext">
> -                            ${eftAccount.nameOnAccount?if_exists}<br/>
> -                            <#if eftAccount.companyNameOnAccount?has_content>${eftAccount.companyNameOnAccount}<br/></#if>
> -                            ${uiLabelMap.AccountingBank}: ${eftAccount.bankName}, ${eftAccount.routingNumber}<br/>
> -                            ${uiLabelMap.AccountingAccount} #: ${eftAccount.accountNumber}
> -                          </div>
> -                        </td>
> -                      </tr>
> -                    </#if>
> -                    <#if pmBillingAddress?has_content>
> -                      <tr><td>&nbsp;</td><td colspan="2"><hr/></td></tr>
> -                      <tr>
> -                        <td align="right" valign="top" width="15%">
> -                          <div class="tabletext">&nbsp;</div>
> -                        </td>
> -                        <td width="5">&nbsp;</td>
> -                        <td valign="top" width="80%">
> -                          <div class="tabletext">
> -                            <#if pmBillingAddress.toName?has_content><b>${uiLabelMap.CommonTo}:</b> ${pmBillingAddress.toName}<br/></#if>
> -                            <#if pmBillingAddress.attnName?has_content><b>${uiLabelMap.CommonAttn}:</b> ${pmBillingAddress.attnName}<br/></#if>
> -                            ${pmBillingAddress.address1}<br/>
> -                            <#if pmBillingAddress.address2?has_content>${pmBillingAddress.address2}<br/></#if>
> -                            ${pmBillingAddress.city}<#if pmBillingAddress.stateProvinceGeoId?has_content>, ${pmBillingAddress.stateProvinceGeoId} </#if>
> -                            ${pmBillingAddress.postalCode?if_exists}<br/>
> -                            ${pmBillingAddress.countryGeoId?if_exists}
> -                          </div>
> -                        </td>
> -                      </tr>
> -                    </#if>
> -                    <#assign outputted = true>
> -                  </#list>
> -                </#if>
> -                <#-- billing account info -->
> -                <#if billingAccount?has_content>
> -                  <#if outputted?default(false)>
> -                    <tr><td colspan="3"><hr/></td></tr>
> -                  </#if>
> -                  <#assign outputted = true>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.AccountingBillingAccount}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">
> -                        #${billingAccount.billingAccountId?if_exists} - ${billingAccount.description?if_exists}
> -                      </div>
> -                    </td>
> -                  </tr>
> -                </#if>
> -                <#if (customerPoNumberSet?has_content)>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderPurchaseOrderNumber}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <#list customerPoNumberSet as customerPoNumber>
> -                        <div class="tabletext">${customerPoNumber?if_exists}</div>
> -                      </#list>
> -                    </td>
> -                  </tr>
> -                </#if>
> -            </table>
> -        </div>
> -    </div>
> +<#-- left side -->
> +<div class="screenlet">
> +  <h3>
> +    <#if maySelectItems?default("N") == "Y" && returnLink?default("N") == "Y" && (orderHeader.statusId)?if_exists == "ORDER_COMPLETED" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> +      <a href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.OrderRequestReturn}</a>
> +    </#if>
> +    ${uiLabelMap.OrderOrder}
> +    <#if orderHeader?has_content>
> +      ${uiLabelMap.CommonNbr}<a href="<@o...@ofbizUrl>" class="lightbuttontext">${orderHeader.orderId}</a>
> +    </#if>
> +    ${uiLabelMap.CommonInformation}
> +    <#if (orderHeader.orderId)?exists>
> +      ${externalOrder?if_exists} [ <a href="<@o...@ofbizUrl>" class="lightbuttontext">PDF</a> ]
> +    </#if>
> +  </h3>
> +  <#-- placing customer information -->
> +  <ul>
> +    <#if localOrderReadHelper?exists && orderHeader?has_content>
> +      <#assign displayParty = localOrderReadHelper.getPlacingParty()?if_exists/>
> +      <#if displayParty?has_content>
> +        <#assign displayPartyNameResult = dispatcher.runSync("getPartyNameForDate", Static["org.ofbiz.base.util.UtilMisc"].toMap("partyId", displayParty.partyId, "compareDate", orderHeader.orderDate, "userLogin", userLogin))/>
>        </#if>
> -    </td>
> -
> -    <td width="1">&nbsp;&nbsp;</td>
> -    <#-- right side -->
> -
> -    <td width="50%" valign="top">
> -      <#if orderItemShipGroups?has_content>
> -
> -    <div class="screenlet">
> -        <div class="screenlet-header">
> -            <div class="boxhead">&nbsp;${uiLabelMap.OrderShippingInformation}</div>
> -        </div>
> -        <div class="screenlet-body">
> -        <#-- shipping address -->
> -            <#assign groupIdx = 0>
> -            <#list orderItemShipGroups as shipGroup>
> -                <#if orderHeader?has_content>
> -                  <#assign shippingAddress = shipGroup.getRelatedOne("PostalAddress")?if_exists>
> -                  <#assign groupNumber = shipGroup.shipGroupSeqId?if_exists>
> -                <#else>
> -                  <#assign shippingAddress = cart.getShippingAddress(groupIdx)?if_exists>
> -                  <#assign groupNumber = groupIdx + 1>
> -                </#if>
> -
> -              <table width="100%" border="0" cellpadding="1">
> -                <#if shippingAddress?has_content>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderDestination}</b> [${groupNumber}]</div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">
> -                        <#if shippingAddress.toName?has_content><b>${uiLabelMap.CommonTo}:</b> ${shippingAddress.toName}<br/></#if>
> -                        <#if shippingAddress.attnName?has_content><b>${uiLabelMap.PartyAddrAttnName}:</b> ${shippingAddress.attnName}<br/></#if>
> -                        ${shippingAddress.address1}<br/>
> -                        <#if shippingAddress.address2?has_content>${shippingAddress.address2}<br/></#if>
> -                        ${shippingAddress.city}<#if shippingAddress.stateProvinceGeoId?has_content>, ${shippingAddress.stateProvinceGeoId} </#if>
> -                        ${shippingAddress.postalCode?if_exists}<br/>
> -                        ${shippingAddress.countryGeoId?if_exists}
> -                      </div>
> -                    </td>
> -                  </tr>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                </#if>
> -                <tr>
> -                  <td align="right" valign="top" width="15%">
> -                    <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderMethod}</b></div>
> -                  </td>
> -                  <td width="5">&nbsp;</td>
> -                  <td valign="top" width="80%">
> -                    <div class="tabletext">
> -                      <#if orderHeader?has_content>
> -                        <#assign shipmentMethodType = shipGroup.getRelatedOne("ShipmentMethodType")?if_exists>
> -                        <#assign carrierPartyId = shipGroup.carrierPartyId?if_exists>
> -                      <#else>
> -                        <#assign shipmentMethodType = cart.getShipmentMethodType(groupIdx)?if_exists>
> -                        <#assign carrierPartyId = cart.getCarrierPartyId(groupIdx)?if_exists>
> -                      </#if>
> -
> -                      <#if carrierPartyId?exists && carrierPartyId != "_NA_">${carrierPartyId?if_exists}</#if>
> -                      ${(shipmentMethodType.description)?default("N/A")}
> -                      <#if shippingAccount?exists><br/>${uiLabelMap.AccountingUseAccount}: ${shippingAccount}</#if>
> -                    </div>
> -                  </td>
> -                </tr>
> -                <#-- tracking number -->
> -                <#if trackingNumber?has_content || orderShipmentInfoSummaryList?has_content>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderTrackingNumber}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <#-- TODO: add links to UPS/FEDEX/etc based on carrier partyId  -->
> -                      <#if shipGroup.trackingNumber?has_content>
> -                        <div class="tabletext">${shipGroup.trackingNumber}</div>
> -                      </#if>
> -                      <#if orderShipmentInfoSummaryList?has_content>
> -                        <#list orderShipmentInfoSummaryList as orderShipmentInfoSummary>
> -                          <div class="tabletext">
> -                            <#if (orderShipmentInfoSummaryList?size > 1)>${orderShipmentInfoSummary.shipmentPackageSeqId}: </#if>
> -                            Code: ${orderShipmentInfoSummary.trackingCode?default("[Not Yet Known]")}
> -                            <#if orderShipmentInfoSummary.boxNumber?has_content>${uiLabelMap.OrderBoxNumber}${orderShipmentInfoSummary.boxNumber}</#if>
> -                            <#if orderShipmentInfoSummary.carrierPartyId?has_content>(${uiLabelMap.ProductCarrier}: ${orderShipmentInfoSummary.carrierPartyId})</#if>
> -                          </div>
> -                        </#list>
> -                      </#if>
> -                    </td>
> -                  </tr>
> -                </#if>
> -                <tr><td colspan="7"><hr/></td></tr>
> -                <#-- splitting preference -->
> -                <#if orderHeader?has_content>
> -                  <#assign maySplit = shipGroup.maySplit?default("N")>
> -                <#else>
> -                  <#assign maySplit = cart.getMaySplit(groupIdx)?default("N")>
> -                </#if>
> -                <tr>
> -                  <td align="right" valign="top" width="15%">
> -                    <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderSplittingPreference}</b></div>
> -                  </td>
> -                  <td width="5">&nbsp;</td>
> -                  <td valign="top" width="80%">
> -                    <div class="tabletext">
> -                      <#if maySplit?default("N") == "N">${uiLabelMap.OrderPleaseWaitUntilBeforeShipping}.</#if>
> -                      <#if maySplit?default("N") == "Y">${uiLabelMap.OrderPleaseShipItemsBecomeAvailable}.</#if>
> -                    </div>
> -                  </td>
> -                </tr>
> -                <#-- shipping instructions -->
> -                <#if orderHeader?has_content>
> -                  <#assign shippingInstructions = shipGroup.shippingInstructions?if_exists>
> -                <#else>
> -                  <#assign shippingInstructions =  cart.getShippingInstructions(groupIdx)?if_exists>
> -                </#if>
> -
> -                <#if shippingInstructions?has_content>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderInstructions}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">${shippingInstructions}</div>
> -                    </td>
> -                  </tr>
> -                </#if>
> -                <tr><td colspan="7"><hr/></td></tr>
> -                <#-- gift settings -->
> -                <#if orderHeader?has_content>
> -                  <#assign isGift = shipGroup.isGift?default("N")>
> -                  <#assign giftMessage = shipGroup.giftMessage?if_exists>
> +      <li>
> +        ${uiLabelMap.PartyName}
> +        ${(displayPartyNameResult.fullName)?default("[Name Not Found]")}
> +      </li>
> +    </#if>
> +    <#-- order status information -->
> +    <li>
> +      ${uiLabelMap.CommonStatus}
> +      <#if orderHeader?has_content>
> +        ${localOrderReadHelper.getStatusString(locale)}
> +      <#else>
> +        ${uiLabelMap.OrderNotYetOrdered}
> +      </#if>
> +    </li>
> +    <#-- ordered date -->
> +    <#if orderHeader?has_content>
> +      <li>
> +        ${uiLabelMap.CommonDate}
> +        ${orderHeader.orderDate.toString()}
> +      </li>
> +    </#if>
> +    <#if distributorId?exists>
> +      <li>
> +        ${uiLabelMap.OrderDistributor}
> +        ${distributorId}
> +      </li>
> +    </#if>
> +  </ul>
> +</div>
> +
> +<div class="screenlet">
> +  <#if paymentMethods?has_content || paymentMethodType?has_content || billingAccount?has_content>
> +    <#-- order payment info -->
> +    <h3>${uiLabelMap.AccountingPaymentInformation}</h3>
> +    <#-- offline payment address infomation :: change this to use Company's address -->
> +    <ul>
> +      <#if !paymentMethod?has_content && paymentMethodType?has_content>
> +        <li>
> +          <#if paymentMethodType.paymentMethodTypeId == "EXT_OFFLINE">
> +            ${uiLabelMap.AccountingOfflinePayment}
> +            <#if orderHeader?has_content && paymentAddress?has_content>
> +              ${uiLabelMap.OrderSendPaymentTo}:
> +              <#if paymentAddress.toName?has_content>${paymentAddress.toName}</#if>
> +              <#if paymentAddress.attnName?has_content>${uiLabelMap.PartyAddrAttnName}: ${paymentAddress.attnName}</#if>
> +              ${paymentAddress.address1}
> +              <#if paymentAddress.address2?has_content>${paymentAddress.address2}</#if>
> +              ${paymentAddress.city}<#if paymentAddress.stateProvinceGeoId?has_content>, ${paymentAddress.stateProvinceGeoId}</#if> ${paymentAddress.postalCode?if_exists}
> +              ${paymentAddress.countryGeoId}
> +              ${uiLabelMap.EcommerceBeSureToIncludeYourOrderNb}
> +            </#if>
> +          <#else>
> +            <#assign outputted = true>
> +            ${uiLabelMap.AccountingPaymentVia} ${paymentMethodType.get("description",locale)}
> +          </#if>
> +        </li>
> +      </#if>
> +      <#if paymentMethods?has_content>
> +        <#list paymentMethods as paymentMethod>
> +          <#if "CREDIT_CARD" == paymentMethod.paymentMethodTypeId>
> +            <#assign creditCard = paymentMethod.getRelatedOne("CreditCard")>
> +            <#assign formattedCardNumber = Static["org.ofbiz.party.contact.ContactHelper"].formatCreditCard(creditCard)>
> +          <#elseif "GIFT_CARD" == paymentMethod.paymentMethodTypeId>
> +            <#assign giftCard = paymentMethod.getRelatedOne("GiftCard")>
> +          <#elseif "EFT_ACCOUNT" == paymentMethod.paymentMethodTypeId>
> +            <#assign eftAccount = paymentMethod.getRelatedOne("EftAccount")>
> +          </#if>
> +          <#-- credit card info -->
> +          <#if "CREDIT_CARD" == paymentMethod.paymentMethodTypeId && creditCard?has_content>
> +            <#if outputted?default(false)>
> +            </#if>
> +            <#assign pmBillingAddress = creditCard.getRelatedOne("PostalAddress")>
> +            <li>
> +              <ul>
> +                <li> ${uiLabelMap.AccountingCreditCard}
> +                  <#if creditCard.companyNameOnCard?has_content>${creditCard.companyNameOnCard}</#if>
> +                  <#if creditCard.titleOnCard?has_content>${creditCard.titleOnCard}</#if>
> +                  ${creditCard.firstNameOnCard}
> +                  <#if creditCard.middleNameOnCard?has_content>${creditCard.middleNameOnCard}</#if>
> +                  ${creditCard.lastNameOnCard}
> +                  <#if creditCard.suffixOnCard?has_content>${creditCard.suffixOnCard}</#if>
> +                </li>
> +                <li>${formattedCardNumber}</li>
> +              </ul>
> +            </li>
> +            <#-- Gift Card info -->
> +          <#elseif "GIFT_CARD" == paymentMethod.paymentMethodTypeId && giftCard?has_content>
> +            <#if outputted?default(false)>
> +            </#if>
> +            <#if giftCard?has_content && giftCard.cardNumber?has_content>
> +              <#assign pmBillingAddress = giftCard.getRelatedOne("PostalAddress")?if_exists>
> +              <#assign giftCardNumber = "">
> +              <#assign pcardNumber = giftCard.cardNumber>
> +              <#if pcardNumber?has_content>
> +                <#assign psize = pcardNumber?length - 4>
> +                <#if 0 < psize>
> +                  <#list 0 .. psize-1 as foo>
> +                    <#assign giftCardNumber = giftCardNumber + "*">
> +                  </#list>
> +                  <#assign giftCardNumber = giftCardNumber + pcardNumber[psize .. psize + 3]>
>                  <#else>
> -                  <#assign isGift = cart.getIsGift(groupIdx)?default("N")>
> -                  <#assign giftMessage = cart.getGiftMessage(groupIdx)?if_exists>
> -                </#if>
> -
> -               <#if productStore.showCheckoutGiftOptions?if_exists != "N">
> -                <tr>
> -                  <td align="right" valign="top" width="15%">
> -                    <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderGift}?</b></div>
> -                  </td>
> -                  <td width="5">&nbsp;</td>
> -                  <td valign="top" width="80%">
> -                    <div class="tabletext">
> -                      <#if isGift?default("N") == "N">${uiLabelMap.OrderThisIsNotGift}.</#if>
> -                      <#if isGift?default("N") == "Y">${uiLabelMap.OrderThisIsGift}.</#if>
> -                    </div>
> -                  </td>
> -                </tr>
> -                <#if giftMessage?has_content>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr>
> -                    <td align="right" valign="top" width="15%">
> -                      <div class="tabletext">&nbsp;<b>${uiLabelMap.OrderGiftMessage}</b></div>
> -                    </td>
> -                    <td width="5">&nbsp;</td>
> -                    <td valign="top" width="80%">
> -                      <div class="tabletext">${giftMessage}</div>
> -                    </td>
> -                  </tr>
> -                </#if>
> -               </#if>
> -                <#if shipGroup_has_next>
> -                  <tr><td colspan="7"><hr/></td></tr>
> -                  <tr><td colspan="7"><hr/></td></tr>
> +                  <#assign giftCardNumber = pcardNumber>
>                  </#if>
> -              </table>
> -
> -                <#assign groupIdx = groupIdx + 1>
> -            </#list><#-- end list of orderItemShipGroups -->
> -        </div>
> -    </div>
> -
> +              </#if>
> +            </#if>
> +            <li>
> +              ${uiLabelMap.AccountingGiftCard}
> +              ${giftCardNumber}
> +            </li>
> +            <#-- EFT account info -->
> +          <#elseif "EFT_ACCOUNT" == paymentMethod.paymentMethodTypeId && eftAccount?has_content>
> +            <#if outputted?default(false)>
> +            </#if>
> +            <#assign pmBillingAddress = eftAccount.getRelatedOne("PostalAddress")>
> +            <li>
> +              <ul>
> +                <li>
> +                  ${uiLabelMap.AccountingEFTAccount}
> +                  ${eftAccount.nameOnAccount?if_exists}
> +                </li>
> +                <li>
> +                  <#if eftAccount.companyNameOnAccount?has_content>${eftAccount.companyNameOnAccount}</#if>
> +                </li>
> +                <li>
> +                  ${uiLabelMap.AccountingBank}: ${eftAccount.bankName}, ${eftAccount.routingNumber}
> +                </li>
> +                <li>
> +                  ${uiLabelMap.AccountingAccount} #: ${eftAccount.accountNumber}
> +                </li>
> +              </ul>
> +            </li>
> +          </#if>
> +          <#if pmBillingAddress?has_content>
> +            <li>
> +              <ul>
> +                <li>
> +                  <#if pmBillingAddress.toName?has_content>${uiLabelMap.CommonTo}: ${pmBillingAddress.toName}</#if>
> +                </li>
> +                <li>
> +                  <#if pmBillingAddress.attnName?has_content>${uiLabelMap.CommonAttn}: ${pmBillingAddress.attnName}</#if>
> +                </li>
> +                <li>
> +                  ${pmBillingAddress.address1}
> +                </li>
> +                <li>
> +                  <#if pmBillingAddress.address2?has_content>${pmBillingAddress.address2}</#if>
> +                </li>
> +                <li>
> +                  ${pmBillingAddress.city}<#if pmBillingAddress.stateProvinceGeoId?has_content>, ${pmBillingAddress.stateProvinceGeoId} </#if>
> +                  ${pmBillingAddress.postalCode?if_exists}
> +                  ${pmBillingAddress.countryGeoId?if_exists}
> +                </li>
> +              </ul>
> +            </li>
> +          </#if>
> +          <#assign outputted = true>
> +        </#list>
> +      </#if>
> +      <#-- billing account info -->
> +      <#if billingAccount?has_content>
> +        <#if outputted?default(false)>
> +        </#if>
> +        <#assign outputted = true>
> +        <li>
> +          ${uiLabelMap.AccountingBillingAccount}
> +          #${billingAccount.billingAccountId?if_exists} - ${billingAccount.description?if_exists}
> +        </li>
> +      </#if>
> +      <#if (customerPoNumberSet?has_content)>
> +        <li>
> +          ${uiLabelMap.OrderPurchaseOrderNumber}
> +          <#list customerPoNumberSet as customerPoNumber>
> +            ${customerPoNumber?if_exists}
> +          </#list>
> +        </li>
> +      </#if>
> +    </ul>
> +  </#if>
> +</div>
> +<#-- right side -->
> +<div class="screenlet">
> +  <#if orderItemShipGroups?has_content>
> +    <h3>${uiLabelMap.OrderShippingInformation}</h3>
> +    <#-- shipping address -->
> +    <#assign groupIdx = 0>
> +    <#list orderItemShipGroups as shipGroup>
> +      <#if orderHeader?has_content>
> +        <#assign shippingAddress = shipGroup.getRelatedOne("PostalAddress")?if_exists>
> +        <#assign groupNumber = shipGroup.shipGroupSeqId?if_exists>
> +      <#else>
> +        <#assign shippingAddress = cart.getShippingAddress(groupIdx)?if_exists>
> +        <#assign groupNumber = groupIdx + 1>
>        </#if>
> -    </td>
> -  </tr>
> -</table>
> +      <ul>
> +        <#if shippingAddress?has_content>
> +          <li>
> +            <ul>
> +              <li>
> +                ${uiLabelMap.OrderDestination} [${groupNumber}]
> +                <#if shippingAddress.toName?has_content>${uiLabelMap.CommonTo}: ${shippingAddress.toName}</#if>
> +              </li>
> +              <li>
> +                <#if shippingAddress.attnName?has_content>${uiLabelMap.PartyAddrAttnName}: ${shippingAddress.attnName}</#if>
> +              </li>
> +              <li>
> +                ${shippingAddress.address1}
> +              </li>
> +              <li>
> +                <#if shippingAddress.address2?has_content>${shippingAddress.address2}</#if>
> +              </li>
> +              <li>
> +                ${shippingAddress.city}<#if shippingAddress.stateProvinceGeoId?has_content>, ${shippingAddress.stateProvinceGeoId} </#if>
> +                ${shippingAddress.postalCode?if_exists}
> +              </li>
> +              <li>
> +                ${shippingAddress.countryGeoId?if_exists}
> +              </li>
> +            </ul>
> +          </li>
> +        </#if>
> +        <li>
> +          <ul>
> +            <li>
> +              ${uiLabelMap.OrderMethod}
> +              <#if orderHeader?has_content>
> +                <#assign shipmentMethodType = shipGroup.getRelatedOne("ShipmentMethodType")?if_exists>
> +                <#assign carrierPartyId = shipGroup.carrierPartyId?if_exists>
> +              <#else>
> +                <#assign shipmentMethodType = cart.getShipmentMethodType(groupIdx)?if_exists>
> +                <#assign carrierPartyId = cart.getCarrierPartyId(groupIdx)?if_exists>
> +              </#if>
> +              <#if carrierPartyId?exists && carrierPartyId != "_NA_">${carrierPartyId?if_exists}</#if>
> +              ${(shipmentMethodType.description)?default("N/A")}
> +            </li>
> +            <li>
> +              <#if shippingAccount?exists>${uiLabelMap.AccountingUseAccount}: ${shippingAccount}</#if>
> +            </li>
> +          </ul>
> +        </li>
> +        <#-- tracking number -->
> +        <#if trackingNumber?has_content || orderShipmentInfoSummaryList?has_content>
> +          <li>
> +            ${uiLabelMap.OrderTrackingNumber}
> +            <#-- TODO: add links to UPS/FEDEX/etc based on carrier partyId  -->
> +            <#if shipGroup.trackingNumber?has_content>
> +              ${shipGroup.trackingNumber}
> +            </#if>
> +            <#if orderShipmentInfoSummaryList?has_content>
> +              <#list orderShipmentInfoSummaryList as orderShipmentInfoSummary>
> +                <#if (orderShipmentInfoSummaryList?size > 1)>${orderShipmentInfoSummary.shipmentPackageSeqId}: </#if>
> +                Code: ${orderShipmentInfoSummary.trackingCode?default("[Not Yet Known]")}
> +                <#if orderShipmentInfoSummary.boxNumber?has_content>${uiLabelMap.OrderBoxNumber}${orderShipmentInfoSummary.boxNumber}</#if>
> +                <#if orderShipmentInfoSummary.carrierPartyId?has_content>(${uiLabelMap.ProductCarrier}: ${orderShipmentInfoSummary.carrierPartyId})</#if>
> +              </#list>
> +            </#if>
> +          </li>
> +          </#if>
> +          <#-- splitting preference -->
> +          <#if orderHeader?has_content>
> +            <#assign maySplit = shipGroup.maySplit?default("N")>
> +          <#else>
> +            <#assign maySplit = cart.getMaySplit(groupIdx)?default("N")>
> +          </#if>
> +          <li>
> +            ${uiLabelMap.OrderSplittingPreference}
> +            <#if maySplit?default("N") == "N">${uiLabelMap.OrderPleaseWaitUntilBeforeShipping}.</#if>
> +            <#if maySplit?default("N") == "Y">${uiLabelMap.OrderPleaseShipItemsBecomeAvailable}.</#if>
> +          </li>
> +          <#-- shipping instructions -->
> +          <#if orderHeader?has_content>
> +            <#assign shippingInstructions = shipGroup.shippingInstructions?if_exists>
> +          <#else>
> +            <#assign shippingInstructions =  cart.getShippingInstructions(groupIdx)?if_exists>
> +          </#if>
> +          <#if shippingInstructions?has_content>
> +            <li>
> +              ${uiLabelMap.OrderInstructions}
> +              ${shippingInstructions}
> +            </li>
> +          </#if>
> +          <#-- gift settings -->
> +          <#if orderHeader?has_content>
> +            <#assign isGift = shipGroup.isGift?default("N")>
> +            <#assign giftMessage = shipGroup.giftMessage?if_exists>
> +          <#else>
> +            <#assign isGift = cart.getIsGift(groupIdx)?default("N")>
> +            <#assign giftMessage = cart.getGiftMessage(groupIdx)?if_exists>
> +          </#if>
> +          <#if productStore.showCheckoutGiftOptions?if_exists != "N">
> +          <li>
> +            ${uiLabelMap.OrderGift}?
> +            <#if isGift?default("N") == "N">${uiLabelMap.OrderThisIsNotGift}.</#if>
> +            <#if isGift?default("N") == "Y">${uiLabelMap.OrderThisIsGift}.</#if>
> +          </li>
> +          <#if giftMessage?has_content>
> +            <li>
> +              ${uiLabelMap.OrderGiftMessage}
> +              ${giftMessage}
> +            </li>
> +          </#if>
> +        </#if>
> +        <#if shipGroup_has_next>
> +        </#if>
> +      </ul>
> +      <#assign groupIdx = groupIdx + 1>
> +    </#list><#-- end list of orderItemShipGroups -->
> +  </#if>
> +</div>
> 
> Modified: ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderitems.ftl
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderitems.ftl?rev=808944&r1=808943&r2=808944&view=diff
> ==============================================================================
> --- ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderitems.ftl (original)
> +++ ofbiz/trunk/specialpurpose/ecommerce/webapp/ecommerce/order/orderitems.ftl Fri Aug 28 16:30:34 2009
> @@ -20,281 +20,266 @@
>  <#-- NOTE: this template is used for the orderstatus screen in ecommerce AND for order notification emails through the OrderNoticeEmail.ftl file -->
>  <#-- the "urlPrefix" value will be prepended to URLs by the ofbizUrl transform if/when there is no "request" object in the context -->
>  <#if baseEcommerceSecureUrl?exists><#assign urlPrefix = baseEcommerceSecureUrl/></#if>
> -
>  <div class="screenlet">
> -    <div class="screenlet-header">
> -        <div class="boxlink">
> -            <#assign numColumns = 8>
> -            <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> -                <#assign numColumns = 11>
> -                <a href="javascript:document.addCommonToCartForm.add_all.value='true';document.addCommonToCartForm.submit()" class="submenutext">${uiLabelMap.OrderAddAllToCart}</a><a href="javascript:document.addCommonToCartForm.add_all.value='false';document.addCommonToCartForm.submit()" class="submenutext">${uiLabelMap.OrderAddCheckedToCart}</a><a href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.OrderSendMeThisEveryMonth}</a>
> +  <h3>
> +      <#assign numColumns = 8>
> +      <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> +          <#assign numColumns = 11>
> +          <a href="javascript:document.addCommonToCartForm.add_all.value='true';document.addCommonToCartForm.submit()" class="submenutext">${uiLabelMap.OrderAddAllToCart}</a><a href="javascript:document.addCommonToCartForm.add_all.value='false';document.addCommonToCartForm.submit()" class="submenutext">${uiLabelMap.OrderAddCheckedToCart}</a><a href="<@o...@ofbizUrl>" class="submenutextright">${uiLabelMap.OrderSendMeThisEveryMonth}</a>
> +      </#if>
> +      ${uiLabelMap.OrderOrderItems}
> +  </h3>
> +  <table>
> +    <tr>
> +      <td>${uiLabelMap.OrderProduct}</td>
> +      <#if maySelectItems?default("N") == "Y">
> +        <td>${uiLabelMap.OrderQtyOrdered}</td>
> +        <td>${uiLabelMap.OrderQtyPicked}</td>
> +        <td>${uiLabelMap.OrderQtyShipped}</td>
> +        <td>${uiLabelMap.OrderQtyCanceled}</td>
> +      <#else>
> +        <td></td>
> +        <td></td>
> +        <td></td>
> +        <td>${uiLabelMap.OrderQtyOrdered}</td>
> +      </#if>
> +      <td >${uiLabelMap.EcommerceUnitPrice}</td>
> +      <td >${uiLabelMap.OrderAdjustments}</td>
> +      <td >${uiLabelMap.CommonSubtotal}</td>
> +      <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> +        <td colspan="3"></td>
> +      </#if>
> +    </tr>
> +    <#list orderItems as orderItem>
> +      <#-- get info from workeffort and calculate rental quantity, if it was a rental item -->
> +      <#assign rentalQuantity = 1> <#-- no change if no rental item -->
> +      <#if orderItem.orderItemTypeId == "RENTAL_ORDER_ITEM" && workEfforts?exists>
> +        <#list workEfforts as workEffort>
> +          <#if workEffort.workEffortId == orderItem.orderItemSeqId>
> +            <#assign rentalQuantity = localOrderReadHelper.getWorkEffortRentalQuantity(workEffort)>
> +            <#assign workEffortSave = workEffort>
> +            <#break>
> +          </#if>
> +        </#list>
> +      <#else>
> +        <#assign WorkOrderItemFulfillments = orderItem.getRelated("WorkOrderItemFulfillment")?if_exists>
> +        <#if WorkOrderItemFulfillments?has_content>
> +          <#list WorkOrderItemFulfillments as WorkOrderItemFulfillment>
> +            <#assign workEffortSave = WorkOrderItemFulfillment.getRelatedOneCache("WorkEffort")?if_exists>
> +            <#break>
> +           </#list>
> +        </#if>
> +      </#if>
> +      <tr><td colspan="${numColumns}"></td></tr>
> +      <tr>
> +        <#if !orderItem.productId?exists || orderItem.productId == "_?_">
> +          <td >
> +            ${orderItem.itemDescription?default("")}
> +          </td>
> +        <#else>
> +          <#assign product = orderItem.getRelatedOneCache("Product")?if_exists/> <#-- should always exist because of FK constraint, but just in case -->
> +          <td >
> +            <a href="<@o...@ofbizUrl>" class="linktext">${orderItem.productId} - ${orderItem.itemDescription?default("")}</a>
> +            <#if product?has_content>
> +              <#if product.piecesIncluded?exists && product.piecesIncluded?long != 0>
> +                  [${uiLabelMap.OrderPieces}: ${product.piecesIncluded}]
> +              </#if>
> +              <#if (product.quantityIncluded?exists && product.quantityIncluded != 0) || product.quantityUomId?has_content>
> +                <#assign quantityUom = product.getRelatedOneCache("QuantityUom")?if_exists/>
> +                  [${uiLabelMap.CommonQuantity}: ${product.quantityIncluded?if_exists} ${((quantityUom.abbreviation)?default(product.quantityUomId))?if_exists}]
> +              </#if>
> +              <#if (product.weight?exists && product.weight != 0) || product.weightUomId?has_content>
> +                <#assign weightUom = product.getRelatedOneCache("WeightUom")?if_exists/>
> +                  [${uiLabelMap.CommonWeight}: ${product.weight?if_exists} ${((weightUom.abbreviation)?default(product.weightUomId))?if_exists}]
> +              </#if>
> +              <#if (product.productHeight?exists && product.productHeight != 0) || product.heightUomId?has_content>
> +                <#assign heightUom = product.getRelatedOneCache("HeightUom")?if_exists/>
> +                  [${uiLabelMap.CommonHeight}: ${product.productHeight?if_exists} ${((heightUom.abbreviation)?default(product.heightUomId))?if_exists}]
> +              </#if>
> +              <#if (product.productWidth?exists && product.productWidth != 0) || product.widthUomId?has_content>
> +                <#assign widthUom = product.getRelatedOneCache("WidthUom")?if_exists/>
> +                  [${uiLabelMap.CommonWidth}: ${product.productWidth?if_exists} ${((widthUom.abbreviation)?default(product.widthUomId))?if_exists}]
> +              </#if>
> +              <#if (product.productDepth?exists && product.productDepth != 0) || product.depthUomId?has_content>
> +                <#assign depthUom = product.getRelatedOneCache("DepthUom")?if_exists/>
> +                  [${uiLabelMap.CommonDepth}: ${product.productDepth?if_exists} ${((depthUom.abbreviation)?default(product.depthUomId))?if_exists}]
> +              </#if>
>              </#if>
> -        </div>
> -        <div class="boxhead">&nbsp; ${uiLabelMap.OrderOrderItems}</div>
> -    </div>
> -    <div class="screenlet-body">
> -        <table width="100%" border="0" cellpadding="0">
> -          <tr valign="bottom">
> -            <td width="35%"><span class="tableheadtext"><b>${uiLabelMap.OrderProduct}</b></span></td>
>              <#if maySelectItems?default("N") == "Y">
> -              <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderQtyOrdered}</b></span></td>
> -              <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderQtyPicked}</b></span></td>
> -              <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderQtyShipped}</b></span></td>
> -              <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderQtyCanceled}</b></span></td>
> -            <#else>
> -              <td width="10%" align="right">&nbsp;</td>
> -              <td width="10%" align="right">&nbsp;</td>
> -              <td width="10%" align="right">&nbsp;</td>
> -              <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderQtyOrdered}</b></span></td>
> -            </#if>
> -            <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.EcommerceUnitPrice}</b></span></td>
> -            <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.OrderAdjustments}</b></span></td>
> -            <td width="10%" align="right"><span class="tableheadtext"><b>${uiLabelMap.CommonSubtotal}</b></span></td>
> -            <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> -              <td colspan="3" width="5%" align="right">&nbsp;</td>
> -            </#if>
> -          </tr>
> -          <#list orderItems as orderItem>
> -            <#-- get info from workeffort and calculate rental quantity, if it was a rental item -->
> -            <#assign rentalQuantity = 1> <#-- no change if no rental item -->
> -            <#if orderItem.orderItemTypeId == "RENTAL_ORDER_ITEM" && workEfforts?exists>
> -                <#list workEfforts as workEffort>
> -                    <#if workEffort.workEffortId == orderItem.orderItemSeqId>
> -                        <#assign rentalQuantity = localOrderReadHelper.getWorkEffortRentalQuantity(workEffort)>
> -                        <#assign workEffortSave = workEffort>
> -                      <#break>
> -                      </#if>
> -                  </#list>
> -              <#else>
> -                  <#assign WorkOrderItemFulfillments = orderItem.getRelated("WorkOrderItemFulfillment")?if_exists>
> -                  <#if WorkOrderItemFulfillments?has_content>
> -                    <#list WorkOrderItemFulfillments as WorkOrderItemFulfillment>
> -                      <#assign workEffortSave = WorkOrderItemFulfillment.getRelatedOneCache("WorkEffort")?if_exists>
> -                      <#break>
> -                     </#list>
> -                  </#if>
> -            </#if>
> -            <tr><td colspan="${numColumns}"><hr/></td></tr>
> -            <tr>
> -              <#if !orderItem.productId?exists || orderItem.productId == "_?_">
> -                <td valign="top">
> -                  <b><div class="tabletext"> &gt;&gt; ${orderItem.itemDescription?default("")}</div></b>
> -                </td>
> -              <#else>
> -                <#assign product = orderItem.getRelatedOneCache("Product")?if_exists/> <#-- should always exist because of FK constraint, but just in case -->
> -                <td valign="top">
> -                  <div class="tabletext">
> -                    <a href="<@o...@ofbizUrl>" class="linktext">${orderItem.productId} - ${orderItem.itemDescription?default("")}</a>
> -                  </div>
> -                  <div class="tabletext" style="font-size: xx-small;">
> -                    <#if product?has_content>
> -                      <#if product.piecesIncluded?exists && product.piecesIncluded?long != 0>
> -                          [${uiLabelMap.OrderPieces}: ${product.piecesIncluded}]
> -                      </#if>
> -                      <#if (product.quantityIncluded?exists && product.quantityIncluded != 0) || product.quantityUomId?has_content>
> -                        <#assign quantityUom = product.getRelatedOneCache("QuantityUom")?if_exists/>
> -                          [${uiLabelMap.CommonQuantity}: ${product.quantityIncluded?if_exists} ${((quantityUom.abbreviation)?default(product.quantityUomId))?if_exists}]
> -                      </#if>
> -                      <#if (product.weight?exists && product.weight != 0) || product.weightUomId?has_content>
> -                        <#assign weightUom = product.getRelatedOneCache("WeightUom")?if_exists/>
> -                          [${uiLabelMap.CommonWeight}: ${product.weight?if_exists} ${((weightUom.abbreviation)?default(product.weightUomId))?if_exists}]
> -                      </#if>
> -                      <#if (product.productHeight?exists && product.productHeight != 0) || product.heightUomId?has_content>
> -                        <#assign heightUom = product.getRelatedOneCache("HeightUom")?if_exists/>
> -                          [${uiLabelMap.CommonHeight}: ${product.productHeight?if_exists} ${((heightUom.abbreviation)?default(product.heightUomId))?if_exists}]
> -                      </#if>
> -                      <#if (product.productWidth?exists && product.productWidth != 0) || product.widthUomId?has_content>
> -                        <#assign widthUom = product.getRelatedOneCache("WidthUom")?if_exists/>
> -                          [${uiLabelMap.CommonWidth}: ${product.productWidth?if_exists} ${((widthUom.abbreviation)?default(product.widthUomId))?if_exists}]
> -                      </#if>
> -                      <#if (product.productDepth?exists && product.productDepth != 0) || product.depthUomId?has_content>
> -                        <#assign depthUom = product.getRelatedOneCache("DepthUom")?if_exists/>
> -                          [${uiLabelMap.CommonDepth}: ${product.productDepth?if_exists} ${((depthUom.abbreviation)?default(product.depthUomId))?if_exists}]
> -                      </#if>
> -                    </#if>
> -                  </div>
> -                  <#if maySelectItems?default("N") == "Y">
> -                    <#assign returns = orderItem.getRelated("ReturnItem")?if_exists>
> -                    <#if returns?has_content>
> -                      <#list returns as return>
> -                        <#assign returnHeader = return.getRelatedOne("ReturnHeader")>
> -                        <#if returnHeader.statusId != "RETURN_CANCELLED">
> -                          <#if returnHeader.statusId == "RETURN_REQUESTED" || returnHeader.statusId == "RETURN_APPROVED">
> -                            <#assign displayState = "Return Pending">
> -                          <#else>
> -                            <#assign displayState = "Returned">
> -                          </#if>
> -                          <div class="tabletext"><font color="red"><b>${displayState}</b></font> (#${return.returnId})</div>
> -                        </#if>
> -                      </#list>
> +              <#assign returns = orderItem.getRelated("ReturnItem")?if_exists>
> +              <#if returns?has_content>
> +                <#list returns as return>
> +                  <#assign returnHeader = return.getRelatedOne("ReturnHeader")>
> +                  <#if returnHeader.statusId != "RETURN_CANCELLED">
> +                    <#if returnHeader.statusId == "RETURN_REQUESTED" || returnHeader.statusId == "RETURN_APPROVED">
> +                      <#assign displayState = "Return Pending">
> +                    <#else>
> +                      <#assign displayState = "Returned">
>                      </#if>
> +                    ${displayState} (#${return.returnId})
>                    </#if>
> -                </td>
> -                <#if !(maySelectItems?default("N") == "Y")>
> -                  <td>&nbsp;</td>
> -                  <td>&nbsp;</td>
> -                  <td>&nbsp;</td>
> -                </#if>
> -                <td align="right" valign="top">
> -                  <div class="tabletext">${orderItem.quantity?string.number}</div>
> -                </td>
> -                <#if maySelectItems?default("N") == "Y">
> -                <td align="right" valign="top">
> -                  <#assign pickedQty = localOrderReadHelper.getItemPickedQuantityBd(orderItem)>
> -                  <div class="tabletext"><#if pickedQty gt 0 && orderHeader.statusId == "ORDER_APPROVED"><font color="red">${pickedQty?default(0)?string.number}</font><#else>${pickedQty?default(0)?string.number}</#if>
> -                  </div>
> -                </td>
> -                <td align="right" valign="top">
> -                  <#assign shippedQty = localOrderReadHelper.getItemShippedQuantity(orderItem)>
> -                  <div class="tabletext">${shippedQty?default(0)?string.number}</div>
> -                </td>
> -                <td align="right" valign="top">
> -                  <#assign canceledQty = localOrderReadHelper.getItemCanceledQuantity(orderItem)>
> -                  <div class="tabletext">${canceledQty?default(0)?string.number}</div>
> -                </td>
> -                </#if>
> -                <td align="right" valign="top">
> -                  <div class="tabletext"><@ofbizCurrency amount=orderItem.unitPrice isoCode=currencyUomId/></div>
> -                </td>
> -                <td align="right" valign="top">
> -                  <div class="tabletext"><@ofbizCurrency amount=localOrderReadHelper.getOrderItemAdjustmentsTotal(orderItem) isoCode=currencyUomId/></div>
> -                </td>
> -                <td align="right" valign="top">
> -                <#if workEfforts?exists>
> -                   <div class="tabletext"><@ofbizCurrency amount=localOrderReadHelper.getOrderItemTotal(orderItem)*rentalQuantity isoCode=currencyUomId/></div>
> -                <#else>
> -                  <div class="tabletext"><@ofbizCurrency amount=localOrderReadHelper.getOrderItemTotal(orderItem) isoCode=currencyUomId/></div>
> -                </#if>
> -                </td>
> -                <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> -                  <td>&nbsp;</td>
> -                  <td>
> -                    <input name="item_id" value="${orderItem.orderItemSeqId}" type="checkbox"/>
> -                  </td>
> -                  <td>&nbsp;</td>
> -                </#if>
> +                </#list>
>                </#if>
> -            </tr>
> -            <#-- now cancel reason and comment field -->
> -            <#if maySelectItems?default("N") == "Y" && (orderHeader.statusId != "ORDER_SENT" && orderItem.statusId != "ITEM_COMPLETED" && orderItem.statusId != "ITEM_CANCELLED" && pickedQty == 0)>
> -              <tr align="right"><td colspan="7"><div class="tabletext"><b>${uiLabelMap.OrderReturnReason}</b>
> -                  <select name="irm_${orderItem.orderItemSeqId}" class="selectBox">
> -                    <option value="">&nbsp;</option>
> -                    <#list orderItemChangeReasons as reason>
> -                      <option value="${reason.enumId}">${reason.get("description",locale)?default(reason.enumId)}</option>
> -                    </#list>
> -                  </select>
> -                  <b>${uiLabelMap.CommonComments}</b>
> -                  <input class="inputBox" type="text" name="icm_${orderItem.orderItemSeqId}" value="" size="30" maxlength="60"/></div></td>
> -                  <td colspan="4" align="right"><a href="javascript:document.addCommonToCartForm.action='<@o...@ofbizUrl>';document.addCommonToCartForm.submit()" class="buttontext">${uiLabelMap.CommonCancel}</a>
> -                    <input type="hidden" name="orderItemSeqId" value="${orderItem.orderItemSeqId}"/>
> -                  </td>
> -              </tr>
>              </#if>
> -            <#-- show info from workeffort if it was a rental item -->
> -            <#if orderItem.orderItemTypeId == "RENTAL_ORDER_ITEM">
> -                <#if workEffortSave?exists>
> -                      <tr><td>&nbsp;</td><td colspan="${numColumns}"><div class="tabletext">${uiLabelMap.CommonFrom}: ${workEffortSave.estimatedStartDate?string("yyyy-MM-dd")} ${uiLabelMap.CommonUntil} ${workEffortSave.estimatedCompletionDate?string("yyyy-MM-dd")} ${uiLabelMap.CommonFor} ${workEffortSave.reservPersons} ${uiLabelMap.CommonPerson}(s).</div></td></tr>
> -                  </#if>
> +          </td>
> +          <#if !(maySelectItems?default("N") == "Y")>
> +            <td></td>
> +            <td></td>
> +            <td></td>
> +          </#if>
> +          <td>
> +            ${orderItem.quantity?string.number}
> +          </td>
> +          <#if maySelectItems?default("N") == "Y">
> +          <td>
> +            <#assign pickedQty = localOrderReadHelper.getItemPickedQuantityBd(orderItem)>
> +            <#if pickedQty gt 0 && orderHeader.statusId == "ORDER_APPROVED">${pickedQty?default(0)?string.number}<#else>${pickedQty?default(0)?string.number}</#if>
> +          </td>
> +          <td>
> +            <#assign shippedQty = localOrderReadHelper.getItemShippedQuantity(orderItem)>
> +            ${shippedQty?default(0)?string.number}
> +          </td>
> +          <td>
> +            <#assign canceledQty = localOrderReadHelper.getItemCanceledQuantity(orderItem)>
> +            ${canceledQty?default(0)?string.number}
> +          </td>
> +          </#if>
> +          <td>
> +            <@ofbizCurrency amount=orderItem.unitPrice isoCode=currencyUomId/>
> +          </td>
> +          <td>
> +            <@ofbizCurrency amount=localOrderReadHelper.getOrderItemAdjustmentsTotal(orderItem) isoCode=currencyUomId/>
> +          </td>
> +          <td>
> +            <#if workEfforts?exists>
> +              <@ofbizCurrency amount=localOrderReadHelper.getOrderItemTotal(orderItem)*rentalQuantity isoCode=currencyUomId/>
> +            <#else>
> +              <@ofbizCurrency amount=localOrderReadHelper.getOrderItemTotal(orderItem) isoCode=currencyUomId/>
>              </#if>
> -            <#-- now show adjustment details per line item -->
> -            <#assign itemAdjustments = localOrderReadHelper.getOrderItemAdjustments(orderItem)>
> -            <#list itemAdjustments as orderItemAdjustment>
> -              <tr>
> -                <td align="right">
> -                  <div class="tabletext" style="font-size: xx-small;">
> -                    <b><i>${uiLabelMap.EcommerceAdjustment}</i>:</b> <b>${localOrderReadHelper.getAdjustmentType(orderItemAdjustment)}</b>&nbsp;
> -                    <#if orderItemAdjustment.description?has_content>: ${orderItemAdjustment.description}</#if>
> -
> -                    <#if orderItemAdjustment.orderAdjustmentTypeId == "SALES_TAX">
> -                      <#if orderItemAdjustment.primaryGeoId?has_content>
> -                        <#assign primaryGeo = orderItemAdjustment.getRelatedOneCache("PrimaryGeo")/>
> -                        <#if primaryGeo.geoName?has_content>
> -                            <b>${uiLabelMap.OrderJurisdiction}:</b> ${primaryGeo.geoName} [${primaryGeo.abbreviation?if_exists}]
> -                        </#if>
> -                        <#if orderItemAdjustment.secondaryGeoId?has_content>
> -                          <#assign secondaryGeo = orderItemAdjustment.getRelatedOneCache("SecondaryGeo")/>
> -                          (<b>${uiLabelMap.CommonIn}:</b> ${secondaryGeo.geoName} [${secondaryGeo.abbreviation?if_exists}])
> -                        </#if>
> -                      </#if>
> -                      <#if orderItemAdjustment.sourcePercentage?exists><b>${uiLabelMap.EcommerceRate}:</b> ${orderItemAdjustment.sourcePercentage}</#if>
> -                      <#if orderItemAdjustment.customerReferenceId?has_content><b>${uiLabelMap.OrderCustomerTaxId}:</b> ${orderItemAdjustment.customerReferenceId}</#if>
> -                      <#if orderItemAdjustment.exemptAmount?exists><b>${uiLabelMap.EcommerceExemptAmount}:</b> ${orderItemAdjustment.exemptAmount}</#if>
> -                    </#if>
> -                  </div>
> -                </td>
> -                <td colspan="5">&nbsp;</td>
> -                <td align="right">
> -                  <div class="tabletext" style="font-size: xx-small;"><@ofbizCurrency amount=localOrderReadHelper.getOrderItemAdjustmentTotal(orderItem, orderItemAdjustment) isoCode=currencyUomId/></div>
> -                </td>
> -                <td>&nbsp;</td>
> -                <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> -              </tr>
> -            </#list>
> -
> -            <#-- show the order item ship group info -->
> -            <#assign orderItemShipGroupAssocs = orderItem.getRelated("OrderItemShipGroupAssoc")?if_exists>
> -            <#if orderItemShipGroupAssocs?has_content>
> -              <#list orderItemShipGroupAssocs as shipGroupAssoc>
> -                <#assign shipGroup = shipGroupAssoc.getRelatedOne("OrderItemShipGroup")?if_exists>
> -                <#assign shipGroupAddress = (shipGroup.getRelatedOne("PostalAddress"))?if_exists>
> -                <tr>
> -                  <td align="right">
> -                    <div class="tabletext" style="font-size: xx-small;"><b><i>${uiLabelMap.OrderShipGroup}</i>:</b> [${shipGroup.shipGroupSeqId}] ${shipGroupAddress.address1?default("N/A")}</div>
> -                  </td>
> -                  <td align="right">
> -                    <div class="tabletext" style="font-size: xx-small;">${shipGroupAssoc.quantity?string.number}</div>
> -                  </td>
> -                  <td colspan="${numColumns - 2}">&nbsp;</td>
> -                </tr>
> +          </td>
> +          <#if maySelectItems?default("N") == "Y" && roleTypeId?if_exists == "PLACING_CUSTOMER">
> +            <td></td>
> +            <td>
> +              <input name="item_id" value="${orderItem.orderItemSeqId}" type="checkbox"/>
> +            </td>
> +            <td></td>
> +          </#if>
> +        </#if>
> +      </tr>
> +      <#-- now cancel reason and comment field -->
> +      <#if maySelectItems?default("N") == "Y" && (orderHeader.statusId != "ORDER_SENT" && orderItem.statusId != "ITEM_COMPLETED" && orderItem.statusId != "ITEM_CANCELLED" && pickedQty == 0)>
> +        <tr>
> +          <td colspan="7">${uiLabelMap.OrderReturnReason}
> +            <select name="irm_${orderItem.orderItemSeqId}" class="selectBox">
> +              <option value=""></option>
> +              <#list orderItemChangeReasons as reason>
> +                <option value="${reason.enumId}">${reason.get("description",locale)?default(reason.enumId)}</option>
>                </#list>
> +            </select>
> +            ${uiLabelMap.CommonComments}
> +            <input class="inputBox" type="text" name="icm_${orderItem.orderItemSeqId}" value="" size="30" maxlength="60"/>
> +          </td>
> +          <td colspan="4"><a href="javascript:document.addCommonToCartForm.action='<@o...@ofbizUrl>';document.addCommonToCartForm.submit()" class="buttontext">${uiLabelMap.CommonCancel}</a>
> +            <input type="hidden" name="orderItemSeqId" value="${orderItem.orderItemSeqId}"/>
> +          </td>
> +        </tr>
> +      </#if>
> +      <#-- show info from workeffort if it was a rental item -->
> +      <#if orderItem.orderItemTypeId == "RENTAL_ORDER_ITEM">
> +        <#if workEffortSave?exists>
> +          <tr><td></td><td colspan="${numColumns}">${uiLabelMap.CommonFrom}: ${workEffortSave.estimatedStartDate?string("yyyy-MM-dd")} ${uiLabelMap.CommonUntil} ${workEffortSave.estimatedCompletionDate?string("yyyy-MM-dd")} ${uiLabelMap.CommonFor} ${workEffortSave.reservPersons} ${uiLabelMap.CommonPerson}(s)</td></tr>
> +        </#if>
> +      </#if>
> +      <#-- now show adjustment details per line item -->
> +      <#assign itemAdjustments = localOrderReadHelper.getOrderItemAdjustments(orderItem)>
> +      <#list itemAdjustments as orderItemAdjustment>
> +        <tr>
> +          <td>
> +            ${uiLabelMap.EcommerceAdjustment}: ${localOrderReadHelper.getAdjustmentType(orderItemAdjustment)}
> +            <#if orderItemAdjustment.description?has_content>: ${orderItemAdjustment.description}</#if>
> +            <#if orderItemAdjustment.orderAdjustmentTypeId == "SALES_TAX">
> +              <#if orderItemAdjustment.primaryGeoId?has_content>
> +                <#assign primaryGeo = orderItemAdjustment.getRelatedOneCache("PrimaryGeo")/>
> +                <#if primaryGeo.geoName?has_content>
> +                  ${uiLabelMap.OrderJurisdiction}: ${primaryGeo.geoName} [${primaryGeo.abbreviation?if_exists}]
> +                </#if>
> +                <#if orderItemAdjustment.secondaryGeoId?has_content>
> +                  <#assign secondaryGeo = orderItemAdjustment.getRelatedOneCache("SecondaryGeo")/>
> +                  (${uiLabelMap.CommonIn}: ${secondaryGeo.geoName} [${secondaryGeo.abbreviation?if_exists}])
> +                </#if>
> +              </#if>
> +              <#if orderItemAdjustment.sourcePercentage?exists>${uiLabelMap.EcommerceRate}: ${orderItemAdjustment.sourcePercentage}</#if>
> +              <#if orderItemAdjustment.customerReferenceId?has_content>${uiLabelMap.OrderCustomerTaxId}: ${orderItemAdjustment.customerReferenceId}</#if>
> +              <#if orderItemAdjustment.exemptAmount?exists>${uiLabelMap.EcommerceExemptAmount}: ${orderItemAdjustment.exemptAmount}</#if>
>              </#if>
> -
> -           </#list>
> -           <#if orderItems?size == 0 || !orderItems?has_content>
> -             <tr><td colspan="${numColumns}"><font color="red">${uiLabelMap.OrderSalesOrderLookupFailed}</font></td></tr>
> -           </#if>
> -
> -          <tr><td colspan="${numColumns}"><hr/></td></tr>
> -          <tr>
> -            <td align="right" colspan="7"><div class="tabletext"><b>${uiLabelMap.CommonSubtotal}</b></div></td>
> -            <td align="right"><div class="tabletext"><@ofbizCurrency amount=orderSubTotal isoCode=currencyUomId/></div></td>
> -            <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> -          </tr>
> -          <#list headerAdjustmentsToShow as orderHeaderAdjustment>
> -            <tr>
> -              <td align="right" colspan="7"><div class="tabletext"><b>${localOrderReadHelper.getAdjustmentType(orderHeaderAdjustment)}</b></div></td>
> -              <td align="right"><div class="tabletext"><@ofbizCurrency amount=localOrderReadHelper.getOrderAdjustmentTotal(orderHeaderAdjustment) isoCode=currencyUomId/></div></td>
> -              <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> -            </tr>
> -          </#list>
> -          <tr>
> -            <td align="right" colspan="7"><div class="tabletext"><b>${uiLabelMap.OrderShippingAndHandling}</b></div></td>
> -            <td align="right"><div class="tabletext"><@ofbizCurrency amount=orderShippingTotal isoCode=currencyUomId/></div></td>
> -            <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> -          </tr>
> -          <tr>
> -            <td align="right" colspan="7"><div class="tabletext"><b>${uiLabelMap.OrderSalesTax}</b></div></td>
> -            <td align="right"><div class="tabletext"><@ofbizCurrency amount=orderTaxTotal isoCode=currencyUomId/></div></td>
> -            <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> -          </tr>
> -
> -          <tr>
> -            <td colspan="3"></td>
> -            <#if maySelectItems?default("N") == "Y">
> -                <td colspan="${numColumns - 6}"><hr/></td>
> -                <td colspan="3">&nbsp;</td>
> -            <#else>
> -                <td colspan="${numColumns - 3}"><hr/></td>
> -            </#if>
> -          </tr>
> +          </td>
> +          <td colspan="5"></td>
> +          <td>
> +            <@ofbizCurrency amount=localOrderReadHelper.getOrderItemAdjustmentTotal(orderItem, orderItemAdjustment) isoCode=currencyUomId/>
> +          </td>
> +          <td></td>
> +          <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +        </tr>
> +      </#list>
> +      <#-- show the order item ship group info -->
> +      <#assign orderItemShipGroupAssocs = orderItem.getRelated("OrderItemShipGroupAssoc")?if_exists>
> +      <#if orderItemShipGroupAssocs?has_content>
> +        <#list orderItemShipGroupAssocs as shipGroupAssoc>
> +          <#assign shipGroup = shipGroupAssoc.getRelatedOne("OrderItemShipGroup")?if_exists>
> +          <#assign shipGroupAddress = (shipGroup.getRelatedOne("PostalAddress"))?if_exists>
>            <tr>
> -            <td align="right" colspan="7"><div class="tabletext"><b>${uiLabelMap.OrderGrandTotal}</b></div></td>
> -            <td align="right">
> -              <div class="tabletext"><@ofbizCurrency amount=orderGrandTotal isoCode=currencyUomId/></div>
> +            <td>
> +              ${uiLabelMap.OrderShipGroup}: [${shipGroup.shipGroupSeqId}] ${shipGroupAddress.address1?default("N/A")}
> +            </td>
> +            <td>
> +              ${shipGroupAssoc.quantity?string.number}
>              </td>
> -            <#if maySelectItems?default("N") == "Y"><td colspan="3">&nbsp;</td></#if>
> +            <td colspan="${numColumns - 2}"></td>
>            </tr>
> -        </table>
> -    </div>
> +        </#list>
> +      </#if>
> +    </#list>
> +    <#if orderItems?size == 0 || !orderItems?has_content>
> +      <tr><td colspan="${numColumns}">${uiLabelMap.OrderSalesOrderLookupFailed}</td></tr>
> +    </#if>
> +    <tr><td colspan="${numColumns}"></td></tr>
> +    <tr>
> +      <td colspan="7">${uiLabelMap.CommonSubtotal}</td>
> +      <td><@ofbizCurrency amount=orderSubTotal isoCode=currencyUomId/></td>
> +      <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +    </tr>
> +    <#list headerAdjustmentsToShow as orderHeaderAdjustment>
> +      <tr>
> +        <td colspan="7">${localOrderReadHelper.getAdjustmentType(orderHeaderAdjustment)}</td>
> +        <td><@ofbizCurrency amount=localOrderReadHelper.getOrderAdjustmentTotal(orderHeaderAdjustment) isoCode=currencyUomId/></td>
> +        <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +      </tr>
> +    </#list>
> +    <tr>
> +      <td colspan="7">${uiLabelMap.OrderShippingAndHandling}</td>
> +      <td><@ofbizCurrency amount=orderShippingTotal isoCode=currencyUomId/></td>
> +      <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +    </tr>
> +    <tr>
> +      <td colspan="7">${uiLabelMap.OrderSalesTax}</td>
> +      <td><@ofbizCurrency amount=orderTaxTotal isoCode=currencyUomId/></td>
> +      <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +    </tr>
> +    <tr>
> +      <td colspan="3"></td>
> +      <#if maySelectItems?default("N") == "Y">
> +        <td colspan="${numColumns - 6}"></td>
> +        <td colspan="3"></td>
> +      <#else>
> +        <td colspan="${numColumns - 3}"></td>
> +      </#if>
> +    </tr>
> +    <tr>
> +      <td colspan="7">${uiLabelMap.OrderGrandTotal}</td>
> +      <td>
> +        <@ofbizCurrency amount=orderGrandTotal isoCode=currencyUomId/>
> +      </td>
> +      <#if maySelectItems?default("N") == "Y"><td colspan="3"></td></#if>
> +    </tr>
> +  </table>
>  </div>
> 
> 
>