//Created By : Raphael Herrera, Created On : 7/19/2016 /*Purpose: Replicate Receiving Transaction Fields * Registration Details: * Event/Message: * Pre/Create: * Post/Update: * Post/Create: Return Transaction * Primary Entity: Return Transaction */ public void PopulateReturnTransactionFields(Entity returnTransaction) { _tracingService.Trace("Started PopulateReturnTransactionFields Method..."); var receivingTransactionId = returnTransaction.Contains("gsc_receivingtransactionid") ? returnTransaction.GetAttributeValue <EntityReference>("gsc_receivingtransactionid").Id : Guid.Empty; EntityCollection receivingTransactionCollection = CommonHandler.RetrieveRecordsByOneValue("gsc_cmn_receivingtransaction", "gsc_cmn_receivingtransactionid", receivingTransactionId, _organizationService, null, OrderType.Ascending, new [] { "gsc_invoiceno", "gsc_purchaseorderid", "gsc_siteid", "gsc_isreturnrecordcreated" }); EntityCollection receivingDetailsCollection = CommonHandler.RetrieveRecordsByOneValue("gsc_cmn_receivingtransactiondetail", "gsc_receivingtransactionid", receivingTransactionId, _organizationService, null, OrderType.Ascending, new[] { "gsc_productid", "gsc_modelcode", "gsc_optioncode", "gsc_modelyear", "gsc_vehiclecolorid", "gsc_csno", "gsc_vin", "gsc_productionno", "gsc_engineno", "gsc_inventoryid", "gsc_receivingtransactiondetailpn", "gsc_basemodelid" }); _tracingService.Trace("ReceivingTransaction Records: " + receivingTransactionCollection.Entities.Count + " | ReceivingDetails Records: " + receivingDetailsCollection.Entities.Count); //retrieve and delete pre existing return details EntityCollection returnDetailsCollection = CommonHandler.RetrieveRecordsByOneValue("gsc_cmn_returntransactiondetails", "gsc_returntransactionid", returnTransaction.Id, _organizationService, null, OrderType.Ascending, new[] { "gsc_cmn_returntransactiondetailsid" }); _tracingService.Trace("Existing return details: " + returnDetailsCollection.Entities.Count); foreach (Entity returnDetails in returnDetailsCollection.Entities) { _organizationService.Delete(returnDetails.LogicalName, returnDetails.Id); } EntityReference siteid = null; InventoryMovementHandler inventoryMovementHandler = new InventoryMovementHandler(_organizationService, _tracingService); //create return transaction details if (receivingDetailsCollection.Entities.Count > 0) { foreach (Entity receivingDetailEntity in receivingDetailsCollection.Entities) { Guid inventoryid = receivingDetailEntity.GetAttributeValue <EntityReference>("gsc_inventoryid").Id; siteid = inventoryMovementHandler.getSiteId(inventoryid); Entity returnTransactionDetail = new Entity("gsc_cmn_returntransactiondetails"); returnTransactionDetail["gsc_returntransactionid"] = new EntityReference(returnTransaction.LogicalName, returnTransaction.Id); returnTransactionDetail["gsc_productid"] = receivingDetailEntity.Contains("gsc_productid") ? receivingDetailEntity.GetAttributeValue <EntityReference>("gsc_productid") : null; returnTransactionDetail["gsc_modelcode"] = receivingDetailEntity.Contains("gsc_modelcode") ? receivingDetailEntity.GetAttributeValue <string>("gsc_modelcode") : string.Empty; returnTransactionDetail["gsc_optioncode"] = receivingDetailEntity.Contains("gsc_optioncode") ? receivingDetailEntity.GetAttributeValue <string>("gsc_optioncode") : string.Empty; returnTransactionDetail["gsc_modelyear"] = receivingDetailEntity.Contains("gsc_modelyear") ? receivingDetailEntity.GetAttributeValue <string>("gsc_modelyear") : string.Empty; returnTransactionDetail["gsc_vehiclecolorid"] = receivingDetailEntity.Contains("gsc_vehiclecolorid") ? receivingDetailEntity.GetAttributeValue <EntityReference>("gsc_vehiclecolorid") : null; returnTransactionDetail["gsc_csno"] = receivingDetailEntity.Contains("gsc_csno") ? receivingDetailEntity.GetAttributeValue <string>("gsc_csno") : string.Empty; returnTransactionDetail["gsc_vin"] = receivingDetailEntity.Contains("gsc_vin") ? receivingDetailEntity.GetAttributeValue <string>("gsc_vin") : string.Empty; returnTransactionDetail["gsc_productionno"] = receivingDetailEntity.Contains("gsc_productionno") ? receivingDetailEntity.GetAttributeValue <string>("gsc_productionno") : string.Empty; returnTransactionDetail["gsc_engineno"] = receivingDetailEntity.Contains("gsc_engineno") ? receivingDetailEntity.GetAttributeValue <string>("gsc_engineno") : string.Empty; returnTransactionDetail["gsc_inventoryid"] = new EntityReference("gsc_iv_inventory", inventoryid); returnTransactionDetail["gsc_returntransactionpn"] = receivingDetailEntity.Contains("gsc_receivingtransactiondetailpn") ? receivingDetailEntity.GetAttributeValue <string>("gsc_receivingtransactiondetailpn") : string.Empty; returnTransactionDetail["gsc_basemodelid"] = receivingDetailEntity.Contains("gsc_basemodelid") ? receivingDetailEntity.GetAttributeValue <EntityReference>("gsc_basemodelid") : null; _tracingService.Trace("Creating Return Transaction Detail..."); _organizationService.Create(returnTransactionDetail); } } //Update return transaction fields if (receivingTransactionCollection.Entities.Count > 0) { Entity receivingTransaction = receivingTransactionCollection.Entities[0]; returnTransaction["gsc_invoiceno"] = receivingTransaction.Contains("gsc_invoiceno") ?receivingTransaction.GetAttributeValue <string>("gsc_invoiceno") : string.Empty; returnTransaction["gsc_vpono"] = receivingTransaction.Contains("gsc_purchaseorderid") ? receivingTransaction.GetAttributeValue <EntityReference>("gsc_purchaseorderid").Name : string.Empty; returnTransaction["gsc_site"] = siteid.Name; //set returnstatus to Open returnTransaction["gsc_returnstatus"] = new OptionSetValue(100000000); returnTransaction["gsc_vrstatus"] = new OptionSetValue(100000000); _tracingService.Trace("Updating Return Transaction..."); _organizationService.Update(returnTransaction); //Set 'Is Return Record Created' field to true receivingTransaction["gsc_isreturnrecordcreated"] = true; _tracingService.Trace("Updating Receiving Transaction..."); _organizationService.Update(receivingTransaction); } _tracingService.Trace("Ending PopulateReturnTransactionFields Method..."); }