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