public static string GetInventoryCode(PXCache sender, string InventoryCode) { SOLineInventoryItemAmazonExtAttribute attrib = new SOLineInventoryItemAmazonExtAttribute(); var foundAlternate = attrib.FindAlternate(sender, InventoryCode); return(foundAlternate?.InventoryCD ?? InventoryCode); }
private void SetSOLineObjectsData(PrepareAndImportOrdersParams orderParams) { IEnumerable <SOFieldMapping> objMapping = orderParams.objliUsrMapping.Where(x => x.TargetObject == orderParams.objSOOrderEntry.Transactions.View.Name && x.TargetField.ToLower() == SOConstants.inventoryID.ToLower()); if (objMapping.ToList().Count > 0) { foreach (OrderItem currentitem in orderParams.objamwLineItems) { SOLine newitems = (SOLine)orderParams.objSOOrderEntry.Transactions.Cache.Insert(); foreach (SOFieldMapping data in orderParams.objliUsrMapping.Where(x => x.TargetObject == orderParams.objSOOrderEntry.Transactions.View.Name && x.TargetField.ToLower() == SOConstants.inventoryID.ToLower())) { if (data.SourceObject.ToLower().Trim() == SOConstants.orderItemTag.ToLower()) { string fieldValue = currentitem != null?Convert.ToString(currentitem.GetType().GetProperty(data.SourceField).GetValue(currentitem, null)) : string.Empty; string itemCode = SOLineInventoryItemAmazonExtAttribute.GetInventoryCode(orderParams.objSOOrderEntry.Transactions.Cache, fieldValue); InventoryItem item = PXSelect <InventoryItem, Where <InventoryItem.inventoryCD, Equal <Required <InventoryItem.inventoryCD> >, And <InventoryItem.itemStatus, Equal <InventoryItemStatus.active> > > > .Select(orderParams.objSOOrderEntry, itemCode); newitems.InventoryID = item != null && item.InventoryID.HasValue ? item.InventoryID : null; orderParams.objSOOrderEntry.Transactions.Update(newitems); if (newitems.InventoryID.HasValue) { AssignValueAsPerIntegrationMapping(orderParams.objliUsrMapping, newitems, orderParams.ObjCurrentOrder, currentitem, orderParams.objSOOrderEntry.Transactions.View.Name); //Embedd GiftPrice string sGiftWrappPrice = currentitem.GiftWrapPrice != null?Convert.ToString(currentitem.GiftWrapPrice.Amount) : string.Empty; newitems.CuryUnitPrice += String.IsNullOrEmpty(sGiftWrappPrice) ? 0m : Convert.ToDecimal(sGiftWrappPrice); newitems.CuryUnitPrice = newitems.CuryUnitPrice > 0 && currentitem.QuantityOrdered > 0 ? newitems.CuryUnitPrice / currentitem.QuantityOrdered : newitems.CuryUnitPrice; newitems.SiteID = orderParams.objSOAmazonSetup.DfltWarehouseID; SOSetupAmazonExt objSOOSetupext = orderParams.objSOOrderEntry.sosetup.Current.GetExtension <SOSetupAmazonExt>(); if (objSOOSetupext != null && !string.IsNullOrEmpty(objSOOSetupext.UsrAmazonTaxID)) { TaxCategoryDet objTaxDetails = PXSelect <TaxCategoryDet, Where <TaxCategoryDet.taxID, Equal <Required <Tax.taxID> > > > .Select(orderParams.objSOOrderEntry, objSOOSetupext.UsrAmazonTaxID); if (objTaxDetails != null) { newitems.TaxCategoryID = objTaxDetails.TaxCategoryID; } SOLineAmazonExt objnewitemsext = newitems.GetExtension <SOLineAmazonExt>(); if (objnewitemsext != null) { objnewitemsext.UsrAMOrderItemID = currentitem.OrderItemId; } orderParams.objSOOrderEntry.Transactions.Update(newitems); FillDiscountObjectsData(orderParams.objSOOrderEntry, newitems, currentitem); taxtotal += currentitem.GiftWrapTax != null && !string.IsNullOrEmpty(currentitem.GiftWrapTax.Amount) && Convert.ToDecimal(currentitem.GiftWrapTax.Amount) > 0 ? Convert.ToDecimal(currentitem.GiftWrapTax.Amount) : 0; taxtotal += currentitem.ItemTax != null && !string.IsNullOrEmpty(currentitem.ItemTax.Amount) && Convert.ToDecimal(currentitem.ItemTax.Amount) > 0 ? Convert.ToDecimal(currentitem.ItemTax.Amount) : 0; taxtotal += currentitem.ShippingTax != null && !string.IsNullOrEmpty(currentitem.ShippingTax.Amount) && Convert.ToDecimal(currentitem.ShippingTax.Amount) > 0 ? Convert.ToDecimal(currentitem.ShippingTax.Amount) : 0; taxableamount += currentitem.ItemPrice != null && !string.IsNullOrEmpty(currentitem.ItemPrice.Amount) && Convert.ToDecimal(currentitem.ItemPrice.Amount) > 0 ? Convert.ToDecimal(currentitem.ItemPrice.Amount) : 0; shippingprice += currentitem.ShippingPrice != null && !string.IsNullOrEmpty(currentitem.ShippingPrice.Amount) && Convert.ToDecimal(currentitem.ShippingPrice.Amount) > 0 ? Convert.ToDecimal(currentitem.ShippingPrice.Amount) : 0; taxRate = (taxableamount > 0) ? (taxtotal * 100) / taxableamount : 0; } else { throw new PXException(SOMessages.configMissing); } } else { throw new PXException(SOMessages.inventoryItemNotExists); } } else { throw new PXException(SOMessages.inventoryMappedtoOrderItem); } } } } else { throw new PXException(SOMessages.InvMappingErrorMsg); } }