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