protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6ED_UTI_1307 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here foreach (var item in Parameter.ProductTrackingInstance) { var existingTrackingInstance = new CL1_LOG.ORM_LOG_ProductTrackingInstance(); existingTrackingInstance.Load(Connection, Transaction, item.ProductTrackingInstanceID); if (existingTrackingInstance == null) { continue; } if (existingTrackingInstance.BatchNumber != item.BatchNumber) { #region Create new tracking instance var newTrackingInstance = new ORM_LOG_ProductTrackingInstance(); newTrackingInstance.LOG_ProductTrackingInstanceID = Guid.NewGuid(); newTrackingInstance.BatchNumber = item.BatchNumber; newTrackingInstance.ExpirationDate = item.ExpirationDate; newTrackingInstance.CurrentQuantityOnTrackingInstance = item.Quantity; newTrackingInstance.TrackingInstanceTakenFromSourceTrackingInstance_RefID = existingTrackingInstance.TrackingInstanceTakenFromSourceTrackingInstance_RefID; newTrackingInstance.TrackingCode = existingTrackingInstance.TrackingCode; newTrackingInstance.SerialNumber = existingTrackingInstance.SerialNumber; newTrackingInstance.OwnedBy_BusinessParticipant_RefID = existingTrackingInstance.OwnedBy_BusinessParticipant_RefID; newTrackingInstance.CMN_PRO_Product_RefID = existingTrackingInstance.CMN_PRO_Product_RefID; newTrackingInstance.CMN_PRO_Product_Variant_RefID = existingTrackingInstance.CMN_PRO_Product_Variant_RefID; newTrackingInstance.CMN_PRO_Product_Release_RefID = existingTrackingInstance.CMN_PRO_Product_Release_RefID; newTrackingInstance.IsDeleted = false; newTrackingInstance.Tenant_RefID = securityTicket.TenantID; newTrackingInstance.InitialQuantityOnTrackingInstance = existingTrackingInstance.InitialQuantityOnTrackingInstance; newTrackingInstance.R_FreeQuantity = existingTrackingInstance.R_FreeQuantity; newTrackingInstance.R_ReservedQuantity = existingTrackingInstance.R_ReservedQuantity; newTrackingInstance.Save(Connection, Transaction); #endregion #region Delete old and create new shelf content and tracking instance assotiation var existingSCtoTIQuery = new ORM_LOG_WRH_ShelfContent_2_TrackingInstance.Query(); existingSCtoTIQuery.LOG_ProductTrackingInstance_RefID = existingTrackingInstance.LOG_ProductTrackingInstanceID; existingSCtoTIQuery.Tenant_RefID = securityTicket.TenantID; existingSCtoTIQuery.IsDeleted = false; var existingSCtoTI = ORM_LOG_WRH_ShelfContent_2_TrackingInstance.Query.Search(Connection, Transaction, existingSCtoTIQuery).FirstOrDefault(); existingSCtoTI.IsDeleted = true; existingSCtoTI.Save(Connection, Transaction); var newSCtoTI = new ORM_LOG_WRH_ShelfContent_2_TrackingInstance(); newSCtoTI.AssignmentID = Guid.NewGuid(); newSCtoTI.LOG_ProductTrackingInstance_RefID = newTrackingInstance.LOG_ProductTrackingInstanceID; newSCtoTI.LOG_WRH_Shelf_Content_RefID = existingSCtoTI.LOG_WRH_Shelf_Content_RefID; newSCtoTI.Tenant_RefID = securityTicket.TenantID; newSCtoTI.Creation_Timestamp = DateTime.Now; newSCtoTI.Save(Connection, Transaction); #endregion #region Delete old and create new content adjustment and tracking instance assotiation and content adjustment var existingCAtoTIQuery = new ORM_LOG_WRH_Shelf_ContentAdjustment_TrackingInstance.Query(); existingCAtoTIQuery.LOG_ProductTrackingInstance_RefID = existingTrackingInstance.LOG_ProductTrackingInstanceID; existingCAtoTIQuery.IsDeleted = false; existingCAtoTIQuery.Tenant_RefID = securityTicket.TenantID; var existingCAtoTI = ORM_LOG_WRH_Shelf_ContentAdjustment_TrackingInstance.Query.Search(Connection, Transaction, existingCAtoTIQuery).FirstOrDefault(); existingCAtoTI.IsDeleted = true; existingCAtoTI.Save(Connection, Transaction); var existingContentAdjustment = new ORM_LOG_WRH_Shelf_ContentAdjustment(); existingContentAdjustment.Load(Connection, Transaction, existingCAtoTI.LOG_WRH_Shelf_ContentAdjustment_RefID); var newContentAdjustment = new ORM_LOG_WRH_Shelf_ContentAdjustment(); newContentAdjustment.LOG_WRH_Shelf_ContentAdjustmentID = Guid.NewGuid(); newContentAdjustment.ShelfContent_RefID = existingContentAdjustment.ShelfContent_RefID; newContentAdjustment.QuantityChangedAmount = 0; newContentAdjustment.QuantityChangedDate = DateTime.Now; newContentAdjustment.IsInitialReceipt = false; newContentAdjustment.IsInventoryJobCorrection = existingContentAdjustment.IsInventoryJobCorrection; newContentAdjustment.IfInventoryJobCorrection_InvenoryJobProcess_RefID = existingContentAdjustment.IfInventoryJobCorrection_InvenoryJobProcess_RefID; newContentAdjustment.IsShipmentWithdrawal = existingContentAdjustment.IsShipmentWithdrawal; newContentAdjustment.IfShipmentWithdrawal_ShipmentPosition_RefID = existingContentAdjustment.IfShipmentWithdrawal_ShipmentPosition_RefID; newContentAdjustment.IsManualCorrection = existingContentAdjustment.IsManualCorrection; newContentAdjustment.IfManualCorrection_InventoryChangeReason_RefID = existingContentAdjustment.IfManualCorrection_InventoryChangeReason_RefID; newContentAdjustment.PerformedAt_Date = existingContentAdjustment.PerformedAt_Date; newContentAdjustment.PerformedBy_Account_RefID = existingContentAdjustment.PerformedBy_Account_RefID; newContentAdjustment.ContentAdjustmentComment = existingContentAdjustment.ContentAdjustmentComment; newContentAdjustment.IsBatchNumberOrSerialKeyUpdate = true; newContentAdjustment.IfBatchNumberOrSerialKeyUpdate_CorrespondingAdjustment_RefID = existingContentAdjustment.LOG_WRH_Shelf_ContentAdjustmentID; newContentAdjustment.IsRelocation = false; newContentAdjustment.IfRelocation_CorrespondingAdjustment_RefID = Guid.Empty; newContentAdjustment.Creation_Timestamp = DateTime.Now; newContentAdjustment.Tenant_RefID = securityTicket.TenantID; newContentAdjustment.Save(Connection, Transaction); var newCAtoTI = new ORM_LOG_WRH_Shelf_ContentAdjustment_TrackingInstance(); newCAtoTI.LOG_WRH_Shelf_ContentAdjustment_TrackingInstanceID = Guid.NewGuid(); newCAtoTI.LOG_ProductTrackingInstance_RefID = newTrackingInstance.LOG_ProductTrackingInstanceID; newCAtoTI.LOG_WRH_Shelf_ContentAdjustment_RefID = newContentAdjustment.LOG_WRH_Shelf_ContentAdjustmentID; newCAtoTI.LOG_WRH_Shelf_ContentAdjustment_TrackingInstanceID = newTrackingInstance.LOG_ProductTrackingInstanceID; newCAtoTI.QuantityChangedAmount = 0; newCAtoTI.IsDeleted = false; newCAtoTI.Tenant_RefID = securityTicket.TenantID; newCAtoTI.Creation_Timestamp = DateTime.Now; newCAtoTI.Save(Connection, Transaction); #endregion item.ProductTrackingInstanceID = newTrackingInstance.LOG_ProductTrackingInstanceID; existingTrackingInstance.IsDeleted = true; existingTrackingInstance.Save(Connection, Transaction); } else { existingTrackingInstance.ExpirationDate = item.ExpirationDate; existingTrackingInstance.Save(Connection, Transaction); } } return(returnValue); #endregion UserCode }
private static List <ORM_LOG_ProductTrackingInstance> Search(Query query, string connectionString, DbConnection connection, DbTransaction transaction) { CSV2Core.Core.Interfaces.IManagedConnection managedConnection = new CSV2Core_MySQL.MySQLManagedConnection(); List <ORM_LOG_ProductTrackingInstance> items; try { managedConnection.set(connectionString, connection, transaction); var loader = new CSV2Core_MySQL.Dictionaries.MultiTable.Loader.DictionaryLoader(managedConnection.getConnection(), managedConnection.getTransaction()); DbCommand command = managedConnection.manage(query.CreateSelectQuery(TableName)); query.SetParameters(command); items = new List <ORM_LOG_ProductTrackingInstance>(); var reader = new CSV2Core_MySQL.Support.DBSQLReader(command.ExecuteReader()); reader.SetOrdinals(new string[] { "LOG_ProductTrackingInstanceID", "TrackingInstanceTakenFromSourceTrackingInstance_RefID", "TrackingCode", "SerialNumber", "BatchNumber", "OwnedBy_BusinessParticipant_RefID", "CMN_PRO_Product_RefID", "CMN_PRO_Product_Variant_RefID", "CMN_PRO_Product_Release_RefID", "ExpirationDate", "IsDeleted", "Tenant_RefID", "InitialQuantityOnTrackingInstance", "CurrentQuantityOnTrackingInstance", "R_ReservedQuantity", "R_FreeQuantity", "Creation_Timestamp" }); while (reader.Read()) { ORM_LOG_ProductTrackingInstance item = new ORM_LOG_ProductTrackingInstance(); //0:Parameter LOG_ProductTrackingInstanceID of type Guid item.LOG_ProductTrackingInstanceID = reader.GetGuid(0); //1:Parameter TrackingInstanceTakenFromSourceTrackingInstance_RefID of type Guid item.TrackingInstanceTakenFromSourceTrackingInstance_RefID = reader.GetGuid(1); //2:Parameter TrackingCode of type String item.TrackingCode = reader.GetString(2); //3:Parameter SerialNumber of type String item.SerialNumber = reader.GetString(3); //4:Parameter BatchNumber of type String item.BatchNumber = reader.GetString(4); //5:Parameter OwnedBy_BusinessParticipant_RefID of type Guid item.OwnedBy_BusinessParticipant_RefID = reader.GetGuid(5); //6:Parameter CMN_PRO_Product_RefID of type Guid item.CMN_PRO_Product_RefID = reader.GetGuid(6); //7:Parameter CMN_PRO_Product_Variant_RefID of type Guid item.CMN_PRO_Product_Variant_RefID = reader.GetGuid(7); //8:Parameter CMN_PRO_Product_Release_RefID of type Guid item.CMN_PRO_Product_Release_RefID = reader.GetGuid(8); //9:Parameter ExpirationDate of type DateTime item.ExpirationDate = reader.GetDate(9); //10:Parameter IsDeleted of type Boolean item.IsDeleted = reader.GetBoolean(10); //11:Parameter Tenant_RefID of type Guid item.Tenant_RefID = reader.GetGuid(11); //12:Parameter InitialQuantityOnTrackingInstance of type double item.InitialQuantityOnTrackingInstance = reader.GetDouble(12); //13:Parameter CurrentQuantityOnTrackingInstance of type double item.CurrentQuantityOnTrackingInstance = reader.GetDouble(13); //14:Parameter R_ReservedQuantity of type double item.R_ReservedQuantity = reader.GetDouble(14); //15:Parameter R_FreeQuantity of type double item.R_FreeQuantity = reader.GetDouble(15); //16:Parameter Creation_Timestamp of type DateTime item.Creation_Timestamp = reader.GetDate(16); item.Status_IsAlreadySaved = true; item.Status_IsDirty = false; items.Add(item); } reader.Close(); loader.Load(); managedConnection.commit(); } catch (Exception ex) { managedConnection.rollback(); throw; } return(items); }