<#-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <#if orderHeader?has_content> <#-- price change rules --> <#assign allowPriceChange = false/> <#if (orderHeader.orderTypeId == 'PURCHASE_ORDER' || security.hasEntityPermission("ORDERMGR", "_SALES_PRICEMOD", session))> <#assign allowPriceChange = true/>

<#if !orderItemList?has_content> ${uiLabelMap.checkhelper_sales_order_lines_lookup_failed} <#else>
<#if (orderHeader.orderTypeId == 'PURCHASE_ORDER')> <#list orderItemList as orderItem> <#if orderItem.productId??> <#-- a null product may come from a quote --> <#assign orderItemContentWrapper = Static["org.apache.ofbiz.order.order.OrderContentWrapper"].makeOrderContentWrapper(orderItem, request)> <#assign orderItemType = orderItem.getRelatedOne("OrderItemType", false)!> <#assign productId = orderItem.productId!> <#if productId?? && productId == "shoppingcart.CommentLine"> <#else> <#-- now show status details per line item --> <#assign currentItemStatus = orderItem.getRelatedOne("StatusItem", false)> <#-- now update/cancel reason and comment field --> <#if orderItem.statusId != "ITEM_CANCELLED" && orderItem.statusId != "ITEM_COMPLETED" && ("Y" != orderItem.isPromo!)> <#-- now show adjustment details per line item --> <#assign orderItemAdjustments = Static["org.apache.ofbiz.order.order.OrderReadHelper"].getOrderItemAdjustmentList(orderItem, orderAdjustments)> <#if orderItemAdjustments?? && orderItemAdjustments?has_content> <#list orderItemAdjustments as orderItemAdjustment> <#assign adjustmentType = orderItemAdjustment.getRelatedOne("OrderAdjustmentType", true)> <#-- now show ship group info per line item --> <#assign orderItemShipGroupAssocs = orderItem.getRelated("OrderItemShipGroupAssoc", null, null, false)!> <#if orderItemShipGroupAssocs?has_content> <#list orderItemShipGroupAssocs as shipGroupAssoc> <#assign shipGroupQty = shipGroupAssoc.quantity - shipGroupAssoc.cancelQuantity?default(0)> <#assign shipGroup = shipGroupAssoc.getRelatedOne("OrderItemShipGroup", false)> <#assign shipGroupAddress = shipGroup.getRelatedOne("PostalAddress", false)!> <#assign shippedQuantity = orderReadHelper.getItemShipGroupAssocShippedQuantity(orderItem, shipGroup.shipGroupSeqId)> <#if shipGroupAssoc.quantity != shippedQuantity> <#assign itemStatusOkay = (orderItem.statusId != "ITEM_CANCELLED" && orderItem.statusId != "ITEM_COMPLETED" && (shipGroupAssoc.cancelQuantity?default(0) < shipGroupAssoc.quantity?default(0)) && ("Y" != orderItem.isPromo!))> <#assign itemSelectable = (security.hasEntityPermission("ORDERMGR", "_ADMIN", session) && itemStatusOkay) || (security.hasEntityPermission("ORDERMGR", "_UPDATE", session) && itemStatusOkay && orderHeader.statusId != "ORDER_SENT")> <#if itemStatusOkay> <#else>
${uiLabelMap.ProductProduct} ${uiLabelMap.CommonStatus} ${uiLabelMap.OrderQuantity} ${uiLabelMap.OrderUnitPrice} ${uiLabelMap.OrderAdjustments} ${uiLabelMap.OrderSubTotal}    

>> ${orderItem.itemDescription}
<#if orderHeader.statusId = "ORDER_CANCELLED" || orderHeader.statusId = "ORDER_COMPLETED"> <#if productId??> ${orderItem.productId?default("N/A")} - ${orderItem.itemDescription!} <#elseif orderItemType??> ${orderItemType.description} - ${orderItem.itemDescription!} <#else> ${orderItem.itemDescription!} <#else> <#if productId??> <#assign orderItemName = orderItem.productId?default("N/A")/> <#elseif orderItemType??> <#assign orderItemName = orderItemType.description/>

${uiLabelMap.ProductProduct} ${orderItemName}

<#if productId??> <#assign product = orderItem.getRelatedOne("Product", true)> <#if product.salesDiscontinuationDate?? && Static["org.apache.ofbiz.base.util.UtilDateTime"].nowTimestamp().after(product.salesDiscontinuationDate)> ${uiLabelMap.OrderItemDiscontinued}: ${product.salesDiscontinuationDate} ${uiLabelMap.CommonDescription}
<#if productId??>
${uiLabelMap.ProductCatalog} ${uiLabelMap.OrderEcommerce} <#if orderItemContentWrapper.get("IMAGE_URL", "url")?has_content> ${uiLabelMap.OrderViewImage}
${uiLabelMap.CommonCurrent} ${currentItemStatus.get("description",locale)?default(currentItemStatus.statusId)}
<#assign orderItemStatuses = orderReadHelper.getOrderItemStatuses(orderItem)> <#list orderItemStatuses as orderItemStatus> <#assign loopStatusItem = orderItemStatus.getRelatedOne("StatusItem", false)> <#if orderItemStatus.statusDatetime?has_content>${orderItemStatus.statusDatetime.toString()}  ${loopStatusItem.get("description",locale)?default(orderItemStatus.statusId)}
<#assign returns = orderItem.getRelated("ReturnItem", null, null, false)!> <#if returns?has_content> <#list returns as returnItem> <#assign returnHeader = returnItem.getRelatedOne("ReturnHeader", false)> <#if returnHeader.statusId != "RETURN_CANCELLED">
${uiLabelMap.OrderReturned} ${uiLabelMap.CommonNbr}${returnItem.returnId}
<#assign shippedQuantity = orderReadHelper.getItemShippedQuantity(orderItem)> <#assign shipmentReceipts = delegator.findByAnd("ShipmentReceipt", {"orderId" : orderHeader.getString("orderId"), "orderItemSeqId" : orderItem.orderItemSeqId}, null, false)/> <#assign totalReceived = 0.0> <#if shipmentReceipts?? && shipmentReceipts?has_content> <#list shipmentReceipts as shipmentReceipt> <#if shipmentReceipt.quantityAccepted?? && shipmentReceipt.quantityAccepted?has_content> <#assign quantityAccepted = shipmentReceipt.quantityAccepted> <#assign totalReceived = quantityAccepted + totalReceived> <#if shipmentReceipt.quantityRejected?? && shipmentReceipt.quantityRejected?has_content> <#assign quantityRejected = shipmentReceipt.quantityRejected> <#assign totalReceived = quantityRejected + totalReceived> <#if orderHeader.orderTypeId == "PURCHASE_ORDER"> <#assign remainingQuantity = ((orderItem.quantity?default(0) - orderItem.cancelQuantity?default(0)) - totalReceived?double)> <#else> <#assign remainingQuantity = ((orderItem.quantity?default(0) - orderItem.cancelQuantity?default(0)) - shippedQuantity?double)> ${uiLabelMap.OrderOrdered} ${orderItem.quantity?default(0)?string.number}  
${uiLabelMap.OrderCancelled}: ${orderItem.cancelQuantity?default(0)?string.number}  
${uiLabelMap.OrderRemaining}: ${remainingQuantity}  
<#-- check for permission to modify price --> <#if (allowPriceChange) && !(orderItem.statusId == "ITEM_CANCELLED" || orderItem.statusId == "ITEM_COMPLETED")>   <#else>
<@ofbizCurrency amount=orderItem.unitPrice isoCode=currencyUomId/> / <@ofbizCurrency amount=orderItem.unitListPrice isoCode=currencyUomId/>
<@ofbizCurrency amount=Static["org.apache.ofbiz.order.order.OrderReadHelper"].getOrderItemAdjustmentsTotal(orderItem, orderAdjustments, true, false, false) isoCode=currencyUomId/> <#if orderItem.statusId != "ITEM_CANCELLED"> <@ofbizCurrency amount=Static["org.apache.ofbiz.order.order.OrderReadHelper"].getOrderItemSubTotal(orderItem, orderAdjustments) isoCode=currencyUomId/> <#else> <@ofbizCurrency amount=0.00 isoCode=currencyUomId/>  
${uiLabelMap.OrderReturnReason} ${uiLabelMap.CommonComments} <#if (orderHeader.orderTypeId == 'PURCHASE_ORDER')> ${uiLabelMap.OrderEstimatedShipDate} <@htmlTemplate.renderDateTimeField name="isdm_${orderItem.orderItemSeqId}" value="${orderItem.estimatedShipDate!}" event="" action="" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" size="25" maxlength="30" id="isdm_${orderItem.orderItemSeqId}" dateType="date" shortDateInput=false timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/> ${uiLabelMap.OrderOrderQuoteEstimatedDeliveryDate} <@htmlTemplate.renderDateTimeField name="iddm_${orderItem.orderItemSeqId}" value="${orderItem.estimatedDeliveryDate!}" event="" action="" className="" alert="" title="Format: yyyy-MM-dd HH:mm:ss.SSS" size="25" maxlength="30" id="iddm_${orderItem.orderItemSeqId}" dateType="date" shortDateInput=false timeDropdownParamName="" defaultDateTimeString="" localizedIconTitle="" timeDropdown="" timeHourName="" classString="" hour1="" hour2="" timeMinutesName="" minutes="" isTwelveHour="" ampmName="" amSelected="" pmSelected="" compositeType="" formName=""/>
${uiLabelMap.OrderAdjustment} ${adjustmentType.get("description",locale)}  ${orderItemAdjustment.get("description",locale)!} (${orderItemAdjustment.comments?default("")}) <#if orderItemAdjustment.orderAdjustmentTypeId == "SALES_TAX"> <#if orderItemAdjustment.primaryGeoId?has_content> <#assign primaryGeo = orderItemAdjustment.getRelatedOne("PrimaryGeo", true)/> ${uiLabelMap.OrderJurisdiction} ${primaryGeo.geoName} [${primaryGeo.abbreviation!}] <#if orderItemAdjustment.secondaryGeoId?has_content> <#assign secondaryGeo = orderItemAdjustment.getRelatedOne("SecondaryGeo", true)/> (${uiLabelMap.CommonIn} ${secondaryGeo.geoName} [${secondaryGeo.abbreviation!}]) <#if orderItemAdjustment.sourcePercentage??>Rate ${orderItemAdjustment.sourcePercentage} <#if orderItemAdjustment.customerReferenceId?has_content>Customer Tax ID ${orderItemAdjustment.customerReferenceId} <#if orderItemAdjustment.exemptAmount??>Exempt Amount ${orderItemAdjustment.exemptAmount}     <#if orderItemAdjustment.amountAlreadyIncluded?has_content> <@ofbizCurrency amount=orderItemAdjustment.amountAlreadyIncluded isoCode=currencyUomId/> <#else> <@ofbizCurrency amount=Static["org.apache.ofbiz.order.order.OrderReadHelper"].calcItemAdjustment(orderItemAdjustment, orderItem) isoCode=currencyUomId/>  
 
${uiLabelMap.OrderShipGroup} [${shipGroup.shipGroupSeqId}] ${shipGroupAddress.address1?default("${uiLabelMap.OrderNotShipped}")} <#if itemSelectable>   <#if itemSelectable> ${uiLabelMap.CommonCancel} <#else>  
${uiLabelMap.OrderQtyShipped} [${shipGroup.shipGroupSeqId}] ${shipGroupAddress.address1?default("${uiLabelMap.OrderNotShipped}")} ${shippedQuantity?default(0)}  
 

<#list orderHeaderAdjustments as orderHeaderAdjustment> <#assign adjustmentType = orderHeaderAdjustment.getRelatedOne("OrderAdjustmentType", false)> <#assign adjustmentAmount = Static["org.apache.ofbiz.order.order.OrderReadHelper"].calcOrderAdjustment(orderHeaderAdjustment, orderSubTotal)> <#assign orderAdjustmentId = orderHeaderAdjustment.get("orderAdjustmentId")> <#assign productPromoCodeId = ''> <#if adjustmentType.get("orderAdjustmentTypeId") == "PROMOTION_ADJUSTMENT" && orderHeaderAdjustment.get("productPromoId")?has_content> <#assign productPromo = orderHeaderAdjustment.getRelatedOne("ProductPromo", false)> <#assign productPromoCodes = delegator.findByAnd("ProductPromoCode", {"productPromoId":productPromo.productPromoId}, null, false)> <#assign orderProductPromoCode = ''> <#list productPromoCodes as productPromoCode> <#if !(orderProductPromoCode?has_content)> <#assign orderProductPromoCode = delegator.findOne("OrderProductPromoCode", {"productPromoCodeId":productPromoCode.productPromoCodeId, "orderId":orderHeaderAdjustment.orderId}, false)!> <#if orderProductPromoCode?has_content> <#assign productPromoCodeId = orderProductPromoCode.get("productPromoCodeId")> <#if adjustmentAmount != 0>
${adjustmentType.get("description",locale)} ${orderHeaderAdjustment.comments!} <#if (allowPriceChange)> <#else> ${orderHeaderAdjustment.get("description")!} <#if (allowPriceChange)> ${uiLabelMap.CommonDelete} <#else> <@ofbizAmount amount=adjustmentAmount/>
<#if adjustmentType.get("orderAdjustmentTypeId") == "PROMOTION_ADJUSTMENT">
<#-- add new adjustment --> <#if security.hasEntityPermission("ORDERMGR", "_UPDATE", session) && orderHeader.statusId != "ORDER_COMPLETED" && orderHeader.statusId != "ORDER_CANCELLED" && orderHeader.statusId != "ORDER_REJECTED">

${uiLabelMap.OrderAdjustment} 
<#-- subtotal --> <#-- other adjustments --> <#-- shipping adjustments --> <#-- tax adjustments --> <#-- grand total -->

${uiLabelMap.OrderItemsSubTotal} <@ofbizCurrency amount=orderSubTotal isoCode=currencyUomId/>  
${uiLabelMap.OrderTotalOtherOrderAdjustments} <@ofbizCurrency amount=otherAdjAmount isoCode=currencyUomId/>  
${uiLabelMap.OrderTotalShippingAndHandling} <@ofbizCurrency amount=shippingAmount isoCode=currencyUomId/>  
${uiLabelMap.OrderTotalSalesTax} <@ofbizCurrency amount=taxAmount isoCode=currencyUomId/>  
${uiLabelMap.OrderTotalDue} <@ofbizCurrency amount=grandTotal isoCode=currencyUomId/>