001// -------------------------------------------------------------------------------- 002// Copyright 2002-2026 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.item.server.transfer; 018 019import javax.inject.Inject; 020import com.echothree.model.control.accounting.server.control.AccountingControl; 021import com.echothree.model.control.cancellationpolicy.server.control.CancellationPolicyControl; 022import com.echothree.model.control.comment.common.CommentConstants; 023import com.echothree.model.control.geo.common.GeoCodeAliasTypes; 024import com.echothree.model.control.geo.common.GeoOptions; 025import com.echothree.model.control.item.common.ItemDescriptionTypes; 026import com.echothree.model.control.item.common.ItemOptions; 027import com.echothree.model.control.item.common.ItemProperties; 028import com.echothree.model.control.item.common.transfer.ItemCountryOfOriginTransfer; 029import com.echothree.model.control.item.common.transfer.ItemTransfer; 030import com.echothree.model.control.item.common.transfer.RelatedItemTransfer; 031import com.echothree.model.control.item.common.workflow.ItemStatusConstants; 032import com.echothree.model.control.item.server.control.ItemControl; 033import com.echothree.model.control.offer.server.control.OfferItemControl; 034import com.echothree.model.control.party.server.control.PartyControl; 035import com.echothree.model.control.rating.common.RatingConstants; 036import com.echothree.model.control.returnpolicy.server.control.ReturnPolicyControl; 037import com.echothree.model.control.sequence.server.control.SequenceControl; 038import com.echothree.model.control.tax.server.control.TaxControl; 039import com.echothree.model.control.uom.server.control.UomControl; 040import com.echothree.model.control.vendor.server.control.VendorControl; 041import com.echothree.model.control.workflow.server.control.WorkflowControl; 042import com.echothree.model.data.item.server.entity.Item; 043import com.echothree.model.data.user.server.entity.UserVisit; 044import com.echothree.util.common.form.TransferProperties; 045import com.echothree.util.common.transfer.ListWrapper; 046import com.echothree.util.common.transfer.MapWrapper; 047import com.echothree.util.server.transfer.ListWrapperBuilder; 048import javax.enterprise.context.RequestScoped; 049 050@RequestScoped 051public class ItemTransferCache 052 extends BaseItemTransferCache<Item, ItemTransfer> { 053 054 @Inject 055 AccountingControl accountingControl; 056 057 @Inject 058 CancellationPolicyControl cancellationPolicyControl; 059 060 @Inject 061 ItemControl itemControl; 062 063 @Inject 064 OfferItemControl offerItemControl; 065 066 @Inject 067 PartyControl partyControl; 068 069 @Inject 070 ReturnPolicyControl returnPolicyControl; 071 072 @Inject 073 SequenceControl sequenceControl; 074 075 @Inject 076 TaxControl taxControl; 077 078 @Inject 079 UomControl uomControl; 080 081 @Inject 082 VendorControl vendorControl; 083 084 @Inject 085 WorkflowControl workflowControl; 086 087 boolean includeItemShippingTimes; 088 boolean includeItemAliases; 089 boolean includeItemPrices; 090 boolean includeItemUnitOfMeasureTypes; 091 boolean includeItemDescriptions; 092 boolean includeItemVolumes; 093 boolean includeItemWeights; 094 boolean includeOfferItems; 095 boolean includeVendorItems; 096 boolean includeItemCountryOfOrigins; 097 boolean includeItemKitMembers; 098 boolean includeItemPackCheckRequirements; 099 boolean includeItemUnitCustomerTypeLimits; 100 boolean includeItemUnitLimits; 101 boolean includeItemUnitPriceLimits; 102 boolean includeRelatedItems; 103 boolean includeItemHarmonizedTariffScheduleCodes; 104 boolean includeItemTaxClassifications; 105 boolean includeCustomerComments; 106 boolean includeCustomerServiceComments; 107 boolean includePurchasingComments; 108 boolean includeCustomerRatings; 109 110 TransferProperties transferProperties; 111 boolean filterItemName; 112 boolean filterItemType; 113 boolean filterItemUseType; 114 boolean filterItemCategory; 115 boolean filterItemAccountingCategory; 116 boolean filterItemPurchasingCategory; 117 boolean filterCompany; 118 boolean filterItemDeliveryType; 119 boolean filterItemInventoryType; 120 boolean filterInventorySerialized; 121 boolean filterSerialNumberSequence; 122 boolean filterShippingChargeExempt; 123 boolean filterUnformattedShippingStartTime; 124 boolean filterShippingStartTime; 125 boolean filterUnformattedShippingEndTime; 126 boolean filterShippingEndTime; 127 boolean filterUnformattedSalesOrderStartTime; 128 boolean filterSalesOrderStartTime; 129 boolean filterUnformattedSalesOrderEndTime; 130 boolean filterSalesOrderEndTime; 131 boolean filterUnformattedPurchaseOrderStartTime; 132 boolean filterPurchaseOrderStartTime; 133 boolean filterUnformattedPurchaseOrderEndTime; 134 boolean filterPurchaseOrderEndTime; 135 boolean filterAllowClubDiscounts; 136 boolean filterAllowCouponDiscounts; 137 boolean filterAllowAssociatePayments; 138 boolean filterUnitOfMeasureKind; 139 boolean filterItemPriceType; 140 boolean filterCancellationPolicy; 141 boolean filterReturnPolicy; 142 boolean filterDescription; 143 boolean filterItemStatus; 144 boolean filterEntityInstance; 145 146 /** Creates a new instance of ItemTransferCache */ 147 protected ItemTransferCache() { 148 super(); 149 150 var options = session.getOptions(); 151 if(options != null) { 152 includeItemShippingTimes = options.contains(ItemOptions.ItemIncludeItemShippingTimes); 153 includeItemAliases = options.contains(ItemOptions.ItemIncludeItemAliases); 154 includeItemPrices = options.contains(ItemOptions.ItemIncludeItemPrices); 155 includeItemUnitOfMeasureTypes = options.contains(ItemOptions.ItemIncludeItemUnitOfMeasureTypes); 156 includeItemDescriptions = options.contains(ItemOptions.ItemIncludeItemDescriptions); 157 includeItemVolumes = options.contains(ItemOptions.ItemIncludeItemVolumes); 158 includeItemWeights = options.contains(ItemOptions.ItemIncludeItemWeights); 159 includeOfferItems = options.contains(ItemOptions.ItemIncludeOfferItems); 160 includeVendorItems = options.contains(ItemOptions.ItemIncludeVendorItems); 161 includeItemCountryOfOrigins = options.contains(ItemOptions.ItemIncludeItemCountryOfOrigins); 162 includeItemKitMembers = options.contains(ItemOptions.ItemIncludeItemKitMembers); 163 includeItemPackCheckRequirements = options.contains(ItemOptions.ItemIncludeItemPackCheckRequirements); 164 includeItemUnitCustomerTypeLimits = options.contains(ItemOptions.ItemIncludeItemUnitCustomerTypeLimits); 165 includeItemUnitLimits = options.contains(ItemOptions.ItemIncludeItemUnitLimits); 166 includeItemUnitPriceLimits = options.contains(ItemOptions.ItemIncludeItemUnitPriceLimits); 167 includeRelatedItems = options.contains(ItemOptions.ItemIncludeRelatedItems); 168 includeItemHarmonizedTariffScheduleCodes = options.contains(ItemOptions.ItemIncludeItemHarmonizedTariffScheduleCodes); 169 includeItemTaxClassifications = options.contains(ItemOptions.ItemIncludeItemTaxClassifications); 170 includeCustomerComments = options.contains(ItemOptions.ItemIncludeCustomerComments); 171 includeCustomerServiceComments = options.contains(ItemOptions.ItemIncludeCustomerServiceComments); 172 includePurchasingComments = options.contains(ItemOptions.ItemIncludePurchasingComments); 173 includeCustomerRatings = options.contains(ItemOptions.ItemIncludeCustomerRatings); 174 setIncludeEntityAttributeGroups(options.contains(ItemOptions.ItemIncludeEntityAttributeGroups)); 175 setIncludeTagScopes(options.contains(ItemOptions.ItemIncludeTagScopes)); 176 177 if(includeItemHarmonizedTariffScheduleCodes) { 178 verifyOptionDependency(ItemOptions.ItemIncludeItemHarmonizedTariffScheduleCodes, GeoOptions.CountryIncludeAliases); 179 } 180 if(includeItemTaxClassifications) { 181 verifyOptionDependency(ItemOptions.ItemIncludeItemTaxClassifications, GeoOptions.CountryIncludeAliases); 182 } 183 } 184 185 transferProperties = session.getTransferProperties(); 186 if(transferProperties != null) { 187 var properties = transferProperties.getProperties(ItemTransfer.class); 188 189 if(properties != null) { 190 filterItemName = !properties.contains(ItemProperties.ITEM_NAME); 191 filterItemType = !properties.contains(ItemProperties.ITEM_TYPE); 192 filterItemUseType = !properties.contains(ItemProperties.ITEM_USE_TYPE); 193 filterItemCategory = !properties.contains(ItemProperties.ITEM_CATEGORY); 194 filterItemAccountingCategory = !properties.contains(ItemProperties.ITEM_ACCOUNTING_CATEGORY); 195 filterItemPurchasingCategory = !properties.contains(ItemProperties.ITEM_PURCHASING_CATEGORY); 196 filterCompany = !properties.contains(ItemProperties.COMPANY); 197 filterItemDeliveryType = !properties.contains(ItemProperties.ITEM_DELIVERY_TYPE); 198 filterItemInventoryType = !properties.contains(ItemProperties.ITEM_INVENTORY_TYPE); 199 filterInventorySerialized = !properties.contains(ItemProperties.INVENTORY_SERIALIZED); 200 filterSerialNumberSequence = !properties.contains(ItemProperties.SERIAL_NUMBER_SEQUENCE); 201 filterShippingChargeExempt = !properties.contains(ItemProperties.SHIPPING_CHARGE_EXEMPT); 202 filterUnformattedShippingStartTime = !properties.contains(ItemProperties.UNFORMATTED_SHIPPING_START_TIME); 203 filterShippingStartTime = !properties.contains(ItemProperties.SHIPPING_START_TIME); 204 filterUnformattedShippingEndTime = !properties.contains(ItemProperties.UNFORMATTED_SHIPPING_END_TIME); 205 filterShippingEndTime = !properties.contains(ItemProperties.SHIPPING_END_TIME); 206 filterUnformattedSalesOrderStartTime = !properties.contains(ItemProperties.UNFORMATTED_SALES_ORDER_START_TIME); 207 filterSalesOrderStartTime = !properties.contains(ItemProperties.SALES_ORDER_START_TIME); 208 filterUnformattedSalesOrderEndTime = !properties.contains(ItemProperties.UNFORMATTED_SALES_ORDER_END_TIME); 209 filterSalesOrderEndTime = !properties.contains(ItemProperties.SALES_ORDER_END_TIME); 210 filterUnformattedPurchaseOrderStartTime = !properties.contains(ItemProperties.UNFORMATTED_PURCHASE_ORDER_START_TIME); 211 filterPurchaseOrderStartTime = !properties.contains(ItemProperties.PURCHASE_ORDER_START_TIME); 212 filterUnformattedPurchaseOrderEndTime = !properties.contains(ItemProperties.UNFORMATTED_PURCHASE_ORDER_END_TIME); 213 filterPurchaseOrderEndTime = !properties.contains(ItemProperties.PURCHASE_ORDER_END_TIME); 214 filterAllowClubDiscounts = !properties.contains(ItemProperties.ALLOW_CLUB_DISCOUNTS); 215 filterAllowCouponDiscounts = !properties.contains(ItemProperties.ALLOW_COUPON_DISCOUNTS); 216 filterAllowAssociatePayments = !properties.contains(ItemProperties.ALLOW_ASSOCIATE_PAYMENTS); 217 filterUnitOfMeasureKind = !properties.contains(ItemProperties.UNIT_OF_MEASURE_KIND); 218 filterItemPriceType = !properties.contains(ItemProperties.ITEM_PRICE_TYPE); 219 filterCancellationPolicy = !properties.contains(ItemProperties.CANCELLATION_POLICY); 220 filterReturnPolicy = !properties.contains(ItemProperties.RETURN_POLICY); 221 filterDescription = !properties.contains(ItemProperties.DESCRIPTION); 222 filterItemStatus = !properties.contains(ItemProperties.ITEM_STATUS); 223 filterEntityInstance = !properties.contains(ItemProperties.ENTITY_INSTANCE); 224 } 225 } 226 227 setIncludeEntityInstance(!filterEntityInstance); 228 } 229 230 @Override 231 public ItemTransfer getTransfer(UserVisit userVisit, Item item) { 232 var itemTransfer = get(item); 233 234 if(itemTransfer == null) { 235 var itemDetail = item.getLastDetail(); 236 var itemName = filterItemName ? null : itemDetail.getItemName(); 237 var itemTypeTransfer = filterItemType ? null : itemControl.getItemTypeTransfer(userVisit, itemDetail.getItemType()); 238 var itemUseTypeTransfer = filterItemUseType ? null : itemControl.getItemUseTypeTransfer(userVisit, itemDetail.getItemUseType()); 239 var itemCategoryTransfer = filterItemCategory ? null : itemControl.getItemCategoryTransfer(userVisit, itemDetail.getItemCategory()); 240 var itemAccountingCategory = filterItemAccountingCategory ? null : itemDetail.getItemAccountingCategory(); 241 var itemAccountingCategoryTransfer = itemAccountingCategory == null ? null : accountingControl.getItemAccountingCategoryTransfer(userVisit, itemAccountingCategory); 242 var itemPurchasingCategory = filterItemPurchasingCategory ? null : itemDetail.getItemPurchasingCategory(); 243 var itemPurchasingCategoryTransfer = itemPurchasingCategory == null ? null : vendorControl.getItemPurchasingCategoryTransfer(userVisit, itemPurchasingCategory); 244 var companyTransfer = filterCompany ? null : partyControl.getCompanyTransfer(userVisit, itemDetail.getCompanyParty()); 245 var itemDeliveryType = filterItemDeliveryType ? null : itemDetail.getItemDeliveryType(); 246 var itemDeliveryTypeTransfer = itemDeliveryType == null ? null : itemControl.getItemDeliveryTypeTransfer(userVisit, itemDeliveryType); 247 var itemInventoryType = filterItemInventoryType ? null : itemDetail.getItemInventoryType(); 248 var itemInventoryTypeTransfer = itemInventoryType == null ? null : itemControl.getItemInventoryTypeTransfer(userVisit, itemInventoryType); 249 var inventorySerialized = filterInventorySerialized ? null : itemDetail.getInventorySerialized(); 250 var serialNumberSequence = filterSerialNumberSequence ? null : itemDetail.getSerialNumberSequence(); 251 var serialNumberSequenceTransfer = serialNumberSequence == null ? null : sequenceControl.getSequenceTransfer(userVisit, serialNumberSequence); 252 var shippingChargeExempt = filterShippingChargeExempt ? null : itemDetail.getShippingChargeExempt(); 253 var unformattedShippingStartTime = filterUnformattedShippingStartTime ? null : itemDetail.getShippingStartTime(); 254 var shippingStartTime = filterShippingStartTime ? null : formatTypicalDateTime(userVisit, unformattedShippingStartTime); 255 var unformattedShippingEndTime = filterUnformattedShippingEndTime ? null : itemDetail.getShippingEndTime(); 256 var shippingEndTime = filterShippingEndTime ? null : formatTypicalDateTime(userVisit, unformattedShippingEndTime); 257 var unformattedSalesOrderStartTime = filterUnformattedSalesOrderStartTime ? null : itemDetail.getSalesOrderStartTime(); 258 var salesOrderStartTime = filterSalesOrderStartTime ? null : formatTypicalDateTime(userVisit, unformattedSalesOrderStartTime); 259 var unformattedSalesOrderEndTime = filterUnformattedSalesOrderEndTime ? null : itemDetail.getSalesOrderEndTime(); 260 var salesOrderEndTime = filterSalesOrderEndTime ? null : formatTypicalDateTime(userVisit, unformattedSalesOrderEndTime); 261 var unformattedPurchaseOrderStartTime = filterUnformattedPurchaseOrderStartTime ? null : itemDetail.getPurchaseOrderStartTime(); 262 var purchaseOrderStartTime = filterPurchaseOrderStartTime ? null : formatTypicalDateTime(userVisit, unformattedPurchaseOrderStartTime); 263 var unformattedPurchaseOrderEndTime = filterUnformattedPurchaseOrderEndTime ? null : itemDetail.getPurchaseOrderEndTime(); 264 var purchaseOrderEndTime = filterPurchaseOrderEndTime ? null : formatTypicalDateTime(userVisit, unformattedPurchaseOrderEndTime); 265 var allowClubDiscounts = filterAllowClubDiscounts ? null : itemDetail.getAllowClubDiscounts(); 266 var allowCouponDiscounts = filterAllowCouponDiscounts ? null : itemDetail.getAllowCouponDiscounts(); 267 var allowAssociatePayments = filterAllowAssociatePayments ? null : itemDetail.getAllowAssociatePayments(); 268 var unitOfMeasureKindTransfer = filterUnitOfMeasureKind ? null : uomControl.getUnitOfMeasureKindTransfer(userVisit, itemDetail.getUnitOfMeasureKind()); 269 var itemPriceTypeTransfer = filterItemPriceType ? null : itemControl.getItemPriceTypeTransfer(userVisit, itemDetail.getItemPriceType()); 270 var cancellationPolicy = filterCancellationPolicy ? null : itemDetail.getCancellationPolicy(); 271 var cancellationPolicyTransfer = cancellationPolicy == null ? null : cancellationPolicyControl.getCancellationPolicyTransfer(userVisit, cancellationPolicy); 272 var returnPolicy = filterReturnPolicy ? null : itemDetail.getReturnPolicy(); 273 var returnPolicyTransfer = returnPolicy == null ? null : returnPolicyControl.getReturnPolicyTransfer(userVisit, returnPolicy); 274 var itemDescriptionType = filterDescription ? null : itemControl.getItemDescriptionTypeByName(ItemDescriptionTypes.DEFAULT_DESCRIPTION.name()); 275 var description = itemDescriptionType == null ? null : itemControl.getBestItemStringDescription(itemDescriptionType, item, getLanguage(userVisit)); 276 277 var entityInstance = entityInstanceControl.getEntityInstanceByBasePK(item.getPrimaryKey()); 278 var itemStatusTransfer = filterItemStatus ? null : workflowControl.getWorkflowEntityStatusTransferByEntityInstanceUsingNames(userVisit, 279 ItemStatusConstants.Workflow_ITEM_STATUS, entityInstance); 280 281 itemTransfer = new ItemTransfer(itemName, itemTypeTransfer, itemUseTypeTransfer, itemCategoryTransfer, itemAccountingCategoryTransfer, 282 itemPurchasingCategoryTransfer, companyTransfer, itemDeliveryTypeTransfer, itemInventoryTypeTransfer, inventorySerialized, 283 serialNumberSequenceTransfer, shippingChargeExempt, unformattedShippingStartTime, shippingStartTime, unformattedShippingEndTime, 284 shippingEndTime, unformattedSalesOrderStartTime, salesOrderStartTime, unformattedSalesOrderEndTime, 285 salesOrderEndTime, unformattedPurchaseOrderStartTime, purchaseOrderStartTime, unformattedPurchaseOrderEndTime, purchaseOrderEndTime, 286 allowClubDiscounts, allowCouponDiscounts, allowAssociatePayments, unitOfMeasureKindTransfer, itemPriceTypeTransfer, 287 cancellationPolicyTransfer, returnPolicyTransfer, description, itemStatusTransfer); 288 put(userVisit, item, itemTransfer, entityInstance); 289 290 if(includeItemShippingTimes) { 291 itemTransfer.setItemShippingTimes(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemShippingTimeTransfersByItem(userVisit, item))); 292 } 293 294 if(includeItemAliases) { 295 itemTransfer.setItemAliases(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemAliasTransfersByItem(userVisit, item))); 296 } 297 298 if(includeItemPrices) { 299 itemTransfer.setItemPrices(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemPriceTransfersByItem(userVisit, item))); 300 } 301 302 if(includeItemUnitOfMeasureTypes) { 303 itemTransfer.setItemUnitOfMeasureTypes(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemUnitOfMeasureTypeTransfersByItem(userVisit, item))); 304 } 305 306 if(includeItemDescriptions) { 307 itemTransfer.setItemDescriptions(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemDescriptionTransfersByItem(userVisit, item))); 308 } 309 310 if(includeItemVolumes) { 311 itemTransfer.setItemVolumes(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemVolumeTransfersByItem(userVisit, item))); 312 } 313 314 if(includeItemWeights) { 315 itemTransfer.setItemWeights(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemWeightTransfersByItem(userVisit, item))); 316 } 317 318 if(includeOfferItems) { 319 320 321 itemTransfer.setOfferItems(ListWrapperBuilder.getInstance().filter(transferProperties, offerItemControl.getOfferItemTransfersByItem(userVisit, item))); 322 } 323 324 if(includeVendorItems) { 325 itemTransfer.setVendorItems(ListWrapperBuilder.getInstance().filter(transferProperties, vendorControl.getVendorItemTransfersByItem(userVisit, item))); 326 } 327 328 if(includeItemCountryOfOrigins) { 329 var itemCountryOfOriginTransfers = itemControl.getItemCountryOfOriginTransfersByItem(userVisit, item); 330 var itemCountryOfOrigins = new MapWrapper<ItemCountryOfOriginTransfer>(); 331 332 itemCountryOfOriginTransfers.forEach((itemCountryOfOriginTransfer) -> { 333 itemCountryOfOrigins.put(itemCountryOfOriginTransfer.getCountryGeoCode().getGeoCodeAliases().getMap().get(GeoCodeAliasTypes.COUNTRY_NAME.name()).getAlias(), itemCountryOfOriginTransfer); 334 }); 335 336 itemTransfer.setItemCountryOfOrigins(itemCountryOfOrigins); 337 } 338 339 if(includeItemKitMembers) { 340 itemTransfer.setItemKitMembers(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemKitMemberTransfersByItem(userVisit, item))); 341 } 342 343 if(includeItemPackCheckRequirements) { 344 itemTransfer.setItemPackCheckRequirements(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemPackCheckRequirementTransfersByItem(userVisit, item))); 345 } 346 347 if(includeItemUnitCustomerTypeLimits) { 348 itemTransfer.setItemUnitCustomerTypeLimits(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemUnitCustomerTypeLimitTransfersByItem(userVisit, item))); 349 } 350 351 if(includeItemUnitLimits) { 352 itemTransfer.setItemUnitLimits(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemUnitLimitTransfersByItem(userVisit, item))); 353 } 354 355 if(includeItemUnitPriceLimits) { 356 itemTransfer.setItemUnitPriceLimits(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemUnitPriceLimitTransfersByItem(userVisit, item))); 357 } 358 359 if(includeRelatedItems) { 360 var relatedItemTypes = itemControl.getRelatedItemTypes(); 361 var relatedItems = new MapWrapper<ListWrapper<RelatedItemTransfer>>(relatedItemTypes.size()); 362 363 relatedItemTypes.forEach((relatedItemType) -> { 364 relatedItems.put(relatedItemType.getLastDetail().getRelatedItemTypeName(), new ListWrapper<>(itemControl.getRelatedItemTransfersByRelatedItemTypeAndFromItem(userVisit, relatedItemType, item))); 365 }); 366 367 itemTransfer.setRelatedItems(relatedItems); 368 } 369 370 if(includeItemHarmonizedTariffScheduleCodes) { 371 itemTransfer.setItemHarmonizedTariffScheduleCodes(ListWrapperBuilder.getInstance().filter(transferProperties, itemControl.getItemHarmonizedTariffScheduleCodeTransfersByItem(userVisit, item))); 372 } 373 374 if(includeItemTaxClassifications) { 375 itemTransfer.setItemTaxClassifications(ListWrapperBuilder.getInstance().filter(transferProperties, taxControl.getItemTaxClassificationTransfersByItem(userVisit, item))); 376 } 377 378 if(includeCustomerComments) { 379 setupComments(userVisit, null, entityInstance, itemTransfer, CommentConstants.CommentType_ITEM_CUSTOMER); 380 } 381 382 if(includeCustomerServiceComments) { 383 setupComments(userVisit, null, entityInstance, itemTransfer, CommentConstants.CommentType_ITEM_CUSTOMER_SERVICE); 384 } 385 386 if(includePurchasingComments) { 387 setupComments(userVisit, null, entityInstance, itemTransfer, CommentConstants.CommentType_ITEM_PURCHASING); 388 } 389 390 if(includeCustomerRatings) { 391 setupRatings(userVisit, null, entityInstance, itemTransfer, RatingConstants.RatingType_ITEM_CUSTOMER); 392 } 393 } 394 395 return itemTransfer; 396 } 397 398}