private tblMove Synchronize(IKey <InventoryShipmentOrder> orderKey, bool createdNew, out bool commitNewContext) { var order = UnitOfWork.InventoryShipmentOrderRepository.FindByKey(orderKey, o => o.DestinationFacility, o => o.SourceFacility, o => o.InventoryPickOrder.Items.Select(i => i.Product), o => o.InventoryPickOrder.Items.Select(i => i.Customer.Company), o => o.InventoryPickOrder.Items.Select(i => i.PackagingProduct.Product), o => o.PickedInventory.Items.Select(i => i.PackagingProduct.Product), o => o.PickedInventory.Items.Select(i => i.FromLocation), o => o.PickedInventory.Items.Select(i => i.CurrentLocation), o => o.ShipmentInformation); var oldOrder = GetOrCreateOldContextOrder(order, createdNew, out commitNewContext); if (order.OrderType == InventoryShipmentOrderTypeEnum.TreatmentOrder) { var treatmentOrder = UnitOfWork.TreatmentOrderRepository.FindBy(FindTreatmentOrder(orderKey)); oldOrder.Serialized = SerializableMove.Serialize(treatmentOrder); } else { oldOrder.Serialized = SerializableMove.Serialize(order); } oldOrder.EmployeeID = order.EmployeeId; oldOrder.C2WHID = order.DestinationFacility.WHID ?? OldContextHelper.GetWarehouse(order.DestinationFacility.Name).WHID; oldOrder.WHID = order.SourceFacility.WHID ?? OldContextHelper.GetWarehouse(order.SourceFacility.Name).WHID; SyncSetShipmentInformation.SetOrderShipment(order, oldOrder); SetPickOrder(order, oldOrder); if (!order.PickedInventory.Archived) { SetPickedInventory(order, oldOrder, ref commitNewContext); } return(oldOrder); }
private void SynchronizeOldContract(Contract contract, tblContract oldContract) { var warehouse = OldContextHelper.GetWarehouse(contract.DefaultPickFromFacility.Name); if (warehouse == null) { throw new Exception(string.Format("Could not find tblWarehouse with WhouseAbbr[{0}].", contract.DefaultPickFromFacility.Name)); } oldContract.EmployeeID = contract.EmployeeId; oldContract.KDate = contract.ContractDate; oldContract.BegDate = contract.TermBegin; oldContract.EndDate = contract.TermEnd; oldContract.Contact_IA = contract.ContactName; oldContract.Company_IA = contract.Customer.Company.Name; oldContract.Address1_IA = contract.ContactAddress.AddressLine1; oldContract.Address2_IA = contract.ContactAddress.AddressLine2; oldContract.Address3_IA = contract.ContactAddress.AddressLine3; oldContract.City_IA = contract.ContactAddress.City; oldContract.State_IA = contract.ContactAddress.State; oldContract.Zip_IA = contract.ContactAddress.PostalCode; oldContract.Country_IA = contract.ContactAddress.Country; oldContract.Broker = contract.Broker.Name; oldContract.PmtTerms = contract.PaymentTerms; oldContract.PONum = contract.CustomerPurchaseOrder; oldContract.KType = contract.ContractType.ToString(); oldContract.KStatus = contract.ContractStatus.ToString(); oldContract.FOB = contract.FOB; oldContract.Comments = contract.Comments.Notes.AggregateNotes(); oldContract.Notes2Print = contract.NotesToPrint; oldContract.WHID = warehouse.WHID; oldContract.Serialized = SerializableContract.Serialize(contract); var existingDetails = oldContract.tblContractDetails != null?oldContract.tblContractDetails.ToList() : new List <tblContractDetail>(); var kDetailId = OldContext.tblContractDetails.Any() ? OldContext.tblContractDetails.Max(d => d.KDetailID) : DateTime.UtcNow.ConvertUTCToLocal(); foreach (var item in contract.ContractItems) { var detail = item.KDetailID == null ? null : existingDetails.FirstOrDefault(d => d.KDetailID == item.KDetailID.Value); if (detail == null) { kDetailId = kDetailId.AddSeconds(1); detail = new tblContractDetail { KDetailID = kDetailId, ContractID = oldContract.ContractID }; OldContext.tblContractDetails.AddObject(detail); item.KDetailID = kDetailId; _commitNewContext = true; } else { existingDetails.Remove(detail); } detail.ProdID = OldContextHelper.GetProduct(item.ChileProduct).ProdID; detail.PkgID = OldContextHelper.GetPackaging(item.PackagingProduct).PkgID; detail.Quantity = item.Quantity; detail.TrtmtID = OldContextHelper.GetTreatment(item).TrtmtID; detail.Price = (decimal?)item.PriceBase; detail.FreightP = (decimal?)item.PriceFreight; detail.TrtnmntP = (decimal?)item.PriceTreatment; detail.WHCostP = (decimal?)item.PriceWarehouse; detail.Rebate = (decimal?)item.PriceRebate; detail.CustProductCode = item.CustomerProductCode; detail.Spec = item.UseCustomerSpec ? "Cust" : "RVC"; detail.TtlWgt = (decimal?)(item.Quantity * item.PackagingProduct.Weight); } foreach (var detail in existingDetails) { OldContext.tblContractDetails.DeleteObject(detail); } }