protected static FR_Bool Execute(DbConnection Connection, DbTransaction Transaction, P_L6CN_SCNwSRaQCI_0739 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Bool(); #region Get Preloading Data #region Get StandardPrices for Products var priceParam = new P_L3PR_GSPfPIL_1645 { ProductIDList = Parameter.Positions.Select(p => p.ProductId).ToArray() }; var prices = cls_Get_StandardPrices_for_ProductIDList.Invoke(Connection, Transaction, priceParam, securityTicket).Result; #endregion #endregion #region Create Receipt Header var resultReceiptHeader = cls_Save_StockReceiptHeader.Invoke( Connection, Transaction, new P_L5SR_SRH_1545() { ReceiptHeaderID = Guid.Empty, SupplierID = Parameter.SupplierID }, securityTicket); if (resultReceiptHeader.Result == Guid.Empty) { returnValue.Status = FR_Status.Error_Internal; returnValue.Result = false; return(returnValue); } #endregion #region Create Receipt positions for Receipt header var receiptPositions = new List <P_L5RS_CNfRS_1119a>(); foreach (var position in Parameter.Positions) { #region Get Preloading Data #region Get Performed By Account var performedByBusinessParticipant = new ORM_USR_Account(); performedByBusinessParticipant.Load(Connection, Transaction, securityTicket.AccountID); if (performedByBusinessParticipant.BusinessParticipant_RefID == Guid.Empty) { returnValue.Status = FR_Status.Error_Internal; returnValue.Result = false; return(returnValue); } #endregion #endregion #region Create new Receipt Position object var receiptPosition = new ORM_LOG_RCP_Receipt_Position(); receiptPosition.LOG_RCP_Receipt_PositionID = Guid.NewGuid(); receiptPosition.Creation_Timestamp = DateTime.Now; receiptPosition.Tenant_RefID = securityTicket.TenantID; receiptPosition.ReceiptPositionITL = receiptPosition.LOG_RCP_Receipt_PositionID.ToString(); receiptPosition.Receipt_Header_RefID = resultReceiptHeader.Result; receiptPosition.ReceiptPosition_Product_RefID = position.ProductId; receiptPosition.TotalQuantityFreeOfCharge = 0.0; receiptPosition.TotalQuantityTakenIntoStock = position.Quantity; receiptPosition.ExpectedPositionPrice = Convert.ToDecimal(position.Quantity) * position.ValuePerUnit; receiptPosition.ExpectedPositionPrice = prices.Where(i => i.ProductID == position.ProductId).Select(j => j.AbdaPrice).SingleOrDefault(); #endregion #region Create new QualityControlItem object var qualityControlItem = new ORM_LOG_RCP_Receipt_Position_QualityControlItem(); qualityControlItem.LOG_RCP_Receipt_Position_QualityControlItem = Guid.NewGuid(); qualityControlItem.Tenant_RefID = securityTicket.TenantID; qualityControlItem.Creation_Timestamp = DateTime.Now; qualityControlItem.Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID; qualityControlItem.Quantity = position.Quantity; qualityControlItem.BatchNumber = position.BatchNumber; qualityControlItem.ExpiryDate = position.ExpiryDate; qualityControlItem.Target_WRH_Shelf_RefID = position.ShelfId; qualityControlItem.QualityControl_PerformedByBusinessParticipant_RefID = performedByBusinessParticipant.BusinessParticipant_RefID; qualityControlItem.ReceiptPositionCountedItemITL = string.Empty; qualityControlItem.QualityControl_PerformedAtDate = DateTime.Now; #endregion #region Save objects var resultReceiptPosition = receiptPosition.Save(Connection, Transaction); if (resultReceiptPosition.Status != FR_Status.Success) { returnValue.Status = FR_Status.Error_Internal; returnValue.Result = false; return(returnValue); } var resultQualityControlItem = qualityControlItem.Save(Connection, Transaction); if (resultQualityControlItem.Status != FR_Status.Success) { returnValue.Status = FR_Status.Error_Internal; returnValue.Result = false; return(returnValue); } #endregion receiptPositions.Add(new P_L5RS_CNfRS_1119a() { receiptPositionId = receiptPosition.LOG_RCP_Receipt_PositionID, compesationValue = qualityControlItem.Quantity * Convert.ToDouble(position.ValuePerUnit) }); } #endregion #region Place articles on stock CL3_Warehouse.Complex.Manipulation.cls_StockReceipt_IntakeConfirmation.Invoke( Connection, Transaction, new P_L3WH_SRIC_1421() { ReceiptHeaderID = resultReceiptHeader.Result, WithoutProcurement = true }, securityTicket); #endregion #region Create CreditNote var resultCreditNote = cls_Save_CreditNote_for_ReturnShipment.Invoke( Connection, Transaction, new P_L5RS_CNfRS_1119() { headerId = Parameter.CreditNoteHeaderID, headerValue = Convert.ToDecimal(receiptPositions.Sum(rp => rp.compesationValue)), receiptPositions = receiptPositions.ToArray(), returnShipmentPositions = null }, securityTicket); if (resultCreditNote.Status != FR_Status.Success) { returnValue.Status = FR_Status.Error_Internal; returnValue.Result = false; return(returnValue); } #endregion returnValue.Result = true; returnValue.Status = FR_Status.Success; return(returnValue); #endregion UserCode }
///<summary> /// Invokes the method for the given Connection, and Transaction, leaving them open/not commited if no exceptions occured ///<summary> public static FR_Bool Invoke(DbConnection Connection, DbTransaction Transaction, P_L6CN_SCNwSRaQCI_0739 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { return(Invoke(Connection, Transaction, null, Parameter, securityTicket)); }
///<summary> /// Method Invocation of wrapper classes ///<summary> protected static FR_Bool Invoke(DbConnection Connection, DbTransaction Transaction, string ConnectionString, P_L6CN_SCNwSRaQCI_0739 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { bool cleanupConnection = Connection == null; bool cleanupTransaction = Transaction == null; FR_Bool functionReturn = new FR_Bool(); try { if (cleanupConnection == true) { Connection = CSV2Core_MySQL.Support.DBSQLSupport.CreateConnection(ConnectionString); Connection.Open(); } if (cleanupTransaction == true) { Transaction = Connection.BeginTransaction(); } functionReturn = Execute(Connection, Transaction, Parameter, securityTicket); #region Cleanup Connection/Transaction //Commit the transaction if (cleanupTransaction == true) { Transaction.Commit(); } //Close the connection if (cleanupConnection == true) { Connection.Close(); } #endregion } catch (Exception ex) { try { if (cleanupTransaction == true && Transaction != null) { Transaction.Rollback(); } } catch { } try { if (cleanupConnection == true && Connection != null) { Connection.Close(); } } catch { } throw new Exception("Exception occured in method cls_Save_CreditNotes_with_StockReceipts_and_QualityControlItems", ex); } return(functionReturn); }
///<summary> /// Opens the connection/transaction for the given connectionString, and closes them when complete ///<summary> public static FR_Bool Invoke(string ConnectionString, P_L6CN_SCNwSRaQCI_0739 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { return(Invoke(null, null, ConnectionString, Parameter, securityTicket)); }