protected static FR_Bool Execute(DbConnection Connection, DbTransaction Transaction, P_L5ALSR_SQCI_1021 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var mainQualityControl = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem(); mainQualityControl.Load(Connection, Transaction, Parameter.QualityControlItemID); if (mainQualityControl != null && mainQualityControl.LOG_RCP_Receipt_Position_QualityControlItem != Guid.Empty && Parameter.SplitPositions.Sum() == mainQualityControl.Quantity) { mainQualityControl.IsDeleted = true; mainQualityControl.Save(Connection, Transaction); foreach (var pos in Parameter.SplitPositions) { var qualityControl = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem(); // New position qualityControl.Quantity = pos; // Copy data qualityControl.Tenant_RefID = securityTicket.TenantID; qualityControl.Receipt_Position_RefID = mainQualityControl.Receipt_Position_RefID; qualityControl.BatchNumber = mainQualityControl.BatchNumber; qualityControl.SerialKey = mainQualityControl.SerialKey; qualityControl.ExpiryDate = mainQualityControl.ExpiryDate; qualityControl.ReceiptPositionCountedItemITL = mainQualityControl.ReceiptPositionCountedItemITL; qualityControl.Target_WRH_Shelf_RefID = Guid.Empty; qualityControl.QualityControl_PerformedByBusinessParticipant_RefID = mainQualityControl.QualityControl_PerformedByBusinessParticipant_RefID; qualityControl.QualityControl_PerformedAtDate = mainQualityControl.QualityControl_PerformedAtDate; qualityControl.Save(Connection, Transaction); } return(new FR_Bool(true)); } return(new FR_Bool(false)); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5PO_CED_1410 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); //Put your code here List <Guid> positionsForCreating = new List <Guid>(); Guid headerID = new Guid(); var procurementHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Header(); procurementHeader.Load(Connection, Transaction, Parameter.ProcurementHeaderID); if (procurementHeader == null) { throw new Exception("wrong procurment header!"); } #region Update Procurement Order var newProcurementOrderStatusID = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query.Search(Connection, Transaction, new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Status.Query() { GlobalPropertyMatchingID = DLCore_DBCommons.Utils.EnumUtils.GetEnumDescription(EProcurementStatus.Ordered), Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single().ORD_PRC_ProcurementOrder_StatusID; procurementHeader.Current_ProcurementOrderStatus_RefID = newProcurementOrderStatusID; procurementHeader.Save(Connection, Transaction); // Create procurement order status history var procurementOrderStatusHistory = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_StatusHistory(); procurementOrderStatusHistory.Tenant_RefID = securityTicket.TenantID; procurementOrderStatusHistory.ProcurementOrder_Header_RefID = procurementHeader.ORD_PRC_ProcurementOrder_HeaderID; procurementOrderStatusHistory.ProcurementOrder_Status_RefID = newProcurementOrderStatusID; procurementOrderStatusHistory.StatusHistoryComment = ""; procurementOrderStatusHistory.Save(Connection, Transaction); #endregion var procurementPositionsQuery = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query(); procurementPositionsQuery.ProcurementOrder_Header_RefID = Parameter.ProcurementHeaderID; procurementPositionsQuery.Tenant_RefID = securityTicket.TenantID; procurementPositionsQuery.IsDeleted = false; var foundProcurementPositions = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, procurementPositionsQuery).ToList(); //positionIDs var positionIDs = foundProcurementPositions.Select(x => x.ORD_PRC_ProcurementOrder_PositionID); //find expected delivery data if exist P_L5PO_GEDfPOP_1132 expDeliveryParam = new P_L5PO_GEDfPOP_1132(); expDeliveryParam.ProcurementOrderPositions = positionIDs.ToArray(); var expectedDeliveries = cls_Get_ExpectedDeliveries_for_ProcurementOrderPositions.Invoke(Connection, Transaction, expDeliveryParam, securityTicket).Result; CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header expectedDeliveryHeader = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Header(); if (expectedDeliveries != null && expectedDeliveries.Length > 0) { expectedDeliveryHeader = new ORM_ORD_PRC_ExpectedDelivery_Header(); expectedDeliveryHeader.Load(Connection, Transaction, expectedDeliveries.First().ORD_PRC_ExpectedDelivery_HeaderID); expectedDeliveryHeader.ExpectedDeliveryDate = Parameter.ExpectedDeliveryDate; expectedDeliveryHeader.Save(Connection, Transaction); headerID = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID; foreach (var item in expectedDeliveries) { if (!positionIDs.Contains(item.ORD_PRC_ProcurementOrder_Position_RefID)) { positionsForCreating.Add(item.ORD_PRC_ProcurementOrder_Position_RefID); } } } else { positionsForCreating.AddRange(positionIDs); //napraviti header expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID = Guid.NewGuid(); expectedDeliveryHeader.ExpectedDeliveryHeaderITL = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID.ToString(); //finding global property matchin id from number ranges for expected delivery var expectedDeliveryNumberParam = new CL2_NumberRange.Complex.Retrieval.P_L2NR_GaIINfUA_1454(); expectedDeliveryNumberParam.GlobalStaticMatchingID = DLCore_DBCommons.Utils.EnumUtils. GetEnumDescription(DLCore_DBCommons.APODemand.ENumberRangeUsageAreaType.ExpectedDeliveryNumber); expectedDeliveryHeader.ExpectedDeliveryNumber = CL2_NumberRange.Complex.Retrieval.cls_Get_and_Increase_IncreasingNumber_for_UsageArea. Invoke(Connection, Transaction, expectedDeliveryNumberParam, securityTicket).Result.Current_IncreasingNumber; expectedDeliveryHeader.ExpectedDeliveryDate = Parameter.ExpectedDeliveryDate; expectedDeliveryHeader.LOG_WRH_Warehouse_RefID = Guid.Empty; expectedDeliveryHeader.IsDeleted = false; expectedDeliveryHeader.Tenant_RefID = securityTicket.TenantID; expectedDeliveryHeader.IsDeliveryOpen = true; expectedDeliveryHeader.IsDeliveryManuallyCreated = true; expectedDeliveryHeader.Save(Connection, Transaction); headerID = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID; } #region Get receiptHeader or create it if don't exist var queryProcurement = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query() { ORD_PRO_ProcurementOrder_Header_RefID = Parameter.ProcurementHeaderID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }; var receiptToProcurementHeader = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query.Search(Connection, Transaction, queryProcurement).SingleOrDefault(); var receiptHeader = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header(); Guid receiptHeaderID = Guid.Empty; if (receiptToProcurementHeader == null) { var incrNumberParam = new P_L2NR_GaIINfUA_1454() { GlobalStaticMatchingID = EnumUtils.GetEnumDescription(ENumberRangeUsageAreaType.StockReceiptNumber) }; var receiptNumber = cls_Get_and_Increase_IncreasingNumber_for_UsageArea.Invoke(Connection, Transaction, incrNumberParam, securityTicket).Result.Current_IncreasingNumber; receiptHeader = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header(); receiptHeader.ReceiptNumber = receiptNumber; receiptHeader.ExpectedDeliveryHeader_RefID = expectedDeliveryHeader.ORD_PRC_ExpectedDelivery_HeaderID; receiptHeader.ProvidingSupplier_RefID = procurementHeader.ProcurementOrder_Supplier_RefID; receiptHeader.LOG_RCP_Receipt_HeaderID = Guid.NewGuid(); receiptHeader.Creation_Timestamp = DateTime.Now; receiptHeader.ReceiptHeaderITL = receiptHeader.LOG_RCP_Receipt_HeaderID.ToString(); receiptHeader.IsTakenIntoStock = false; receiptHeader.Tenant_RefID = securityTicket.TenantID; receiptHeader.Save(Connection, Transaction); receiptHeaderID = receiptHeader.LOG_RCP_Receipt_HeaderID; var receipt2sProcurementHeader = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader(); receipt2sProcurementHeader.LOG_RCP_Receipt_Header_RefID = receiptHeaderID; receipt2sProcurementHeader.ORD_PRO_ProcurementOrder_Header_RefID = procurementHeader.ORD_PRC_ProcurementOrder_HeaderID; receipt2sProcurementHeader.Tenant_RefID = securityTicket.TenantID; receipt2sProcurementHeader.IsDeleted = false; receipt2sProcurementHeader.Creation_Timestamp = DateTime.Now; receipt2sProcurementHeader.Save(Connection, Transaction); } else { receiptHeaderID = receiptToProcurementHeader.LOG_RCP_Receipt_Header_RefID; } var receiptPositions = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position.Query.Search(Connection, Transaction, new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position.Query { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, Receipt_Header_RefID = receiptHeaderID }); #endregion foreach (var position in foundProcurementPositions) { #region Expected Delivery CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position deliveryPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position(); deliveryPosition.ORD_PRC_ExpectedDelivery_PositionID = Guid.NewGuid(); deliveryPosition.AlreadyReceivedQuantityOfDelivery = 0; deliveryPosition.ExpectedDeliveryPositionITL = deliveryPosition.ORD_PRC_ExpectedDelivery_PositionID.ToString(); deliveryPosition.TotalExpectedQuantity = position.Position_Quantity; deliveryPosition.ORD_PRC_ExpectedDelivery_RefID = headerID; deliveryPosition.Tenant_RefID = securityTicket.TenantID; deliveryPosition.IsDeleted = false; deliveryPosition.Creation_Timestamp = DateTime.Now; deliveryPosition.Save(Connection, Transaction); CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition assignment = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition(); assignment.AssignmentID = Guid.NewGuid(); assignment.ORD_PRC_ProcurementOrder_Position_RefID = position.ORD_PRC_ProcurementOrder_PositionID; assignment.ORD_PRC_ExpectedDelivery_Position_RefID = deliveryPosition.ORD_PRC_ExpectedDelivery_PositionID; assignment.AssignedQuantityFromProcurementOrderPosition = position.Position_Quantity; assignment.Tenant_RefID = securityTicket.TenantID; assignment.IsDeleted = false; assignment.Creation_Timestamp = DateTime.Now; assignment.Save(Connection, Transaction); #endregion #region Receipt Positions var receiptPosition = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position(); if (receiptPositions.Count == 0) { // create new 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 = receiptHeaderID; receiptPosition.ReceiptPosition_Product_RefID = position.CMN_PRO_Product_RefID; receiptPosition.TotalQuantityFreeOfCharge = 0.0; receiptPosition.TotalQuantityTakenIntoStock = 0.0; receiptPosition.ExpectedPositionPrice = position.Position_ValuePerUnit; receiptPosition.Save(Connection, Transaction); var receiptPosition2procurementorderposition = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition(); receiptPosition2procurementorderposition.AssignmentID = Guid.NewGuid(); receiptPosition2procurementorderposition.LOG_RCP_Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID; receiptPosition2procurementorderposition.ORD_PRO_ProcurementOrder_Position_RefID = position.ORD_PRC_ProcurementOrder_PositionID; receiptPosition2procurementorderposition.Tenant_RefID = securityTicket.TenantID; receiptPosition2procurementorderposition.Creation_Timestamp = DateTime.Now; receiptPosition2procurementorderposition.IsDeleted = false; receiptPosition2procurementorderposition.Save(Connection, Transaction); } #endregion #region Quality Control Items var qualityControlItem = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem(); if (receiptPositions.Count == 0) { qualityControlItem.LOG_RCP_Receipt_Position_QualityControlItem = Guid.NewGuid(); qualityControlItem.ReceiptPositionCountedItemITL = qualityControlItem.LOG_RCP_Receipt_Position_QualityControlItem.ToString(); qualityControlItem.Creation_Timestamp = DateTime.Now; qualityControlItem.Tenant_RefID = securityTicket.TenantID; qualityControlItem.Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID; } else { var query = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query() { Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }; qualityControlItem = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query.Search(Connection, Transaction, query).Single(); } //qualityControlItem.BatchNumber = position.Position_OrdinalNumber; //qualityControlItem.ExpiryDate = position.date qualityControlItem.Quantity = position.Position_Quantity; qualityControlItem.Save(Connection, Transaction); #endregion #region Forwarding Instruction var forwardingInstruction = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction(); if (receiptPositions.Count == 0) { #region Create new var businessParticipant = CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query() { IfTenant_Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); forwardingInstruction.ORD_PRC_ProcurementOrder_Position_ForwardingInstructionID = Guid.NewGuid(); forwardingInstruction.Creation_Timestamp = DateTime.Now; forwardingInstruction.Tenant_RefID = securityTicket.TenantID; forwardingInstruction.ProcurementOrder_Position_RefID = position.ORD_PRC_ProcurementOrder_PositionID; forwardingInstruction.ForwardTo_BusinessParticipant_RefID = businessParticipant.CMN_BPT_BusinessParticipantID; #endregion } else { #region Load Existing var query = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query() { ProcurementOrder_Position_RefID = position.ORD_PRC_ProcurementOrder_PositionID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; forwardingInstruction = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query.Search(Connection, Transaction, query).Single(); #endregion } forwardingInstruction.QuantityToForward = position.Position_Quantity; forwardingInstruction.Save(Connection, Transaction); #endregion } //returning created expected delivery header id returnValue.Result = headerID; return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L6SA_CCORwP_1743 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); #region Preload Data var CurrencyID = CL2_Currency.Atomic.Retrieval.cls_Get_DefaultCurrency_for_Tenant.Invoke(Connection, Transaction, securityTicket).Result.CMN_CurrencyID; var incrNumberParam = new P_L2NR_GaIINfUA_1454() { GlobalStaticMatchingID = EnumUtils.GetEnumDescription(ENumberRangeUsageAreaType.StockReceiptNumber) }; var stockReceiptNumber = cls_Get_and_Increase_IncreasingNumber_for_UsageArea.Invoke(Connection, Transaction, incrNumberParam, securityTicket).Result.Current_IncreasingNumber; var account = CL1_USR.ORM_USR_Account.Query.Search(Connection, Transaction, new CL1_USR.ORM_USR_Account.Query { USR_AccountID = securityTicket.AccountID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }).Single(); #endregion #region Create Receipt Header var receiptHeader = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header { LOG_RCP_Receipt_HeaderID = Guid.NewGuid(), ReceiptNumber = stockReceiptNumber, ReceiptHeaderCurrency_RefID = CurrencyID, DeliveringBusinessParticipant_RefID = Parameter.BusinessParticipantID, // Quality control IsQualityControlPerformed = true, QualityControlPerformed_AtDate = DateTime.Now, QualityControlPerformed_ByAccount_RefID = securityTicket.AccountID, // Price conditions IsPriceConditionsManuallyCleared = true, PriceConditionsManuallyCleared_AtDate = DateTime.Now, PriceConditionsManuallyCleared_ByAccount_RefID = securityTicket.AccountID, IsCustomerReturnReceipt = true, Creation_Timestamp = DateTime.Now, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; receiptHeader.Save(Connection, Transaction); #endregion #region Create CustomerOrderReturnHeader var resultCustomerOrderReturnHeaderId = cls_Save_CustomerOrderReturnHeader.Invoke( Connection, Transaction, new P_L5CO_SCORH_1326() { CustomerOrderReturnHeaderID = Guid.Empty, CurencyId = CurrencyID, Customer_BillingAddressUCD_RefID = Guid.Empty, // TODO:Marko - Not sure how to get this one!? Customer_BusinessParticipantID = Parameter.BusinessParticipantID, CustomerInteractionsId = Parameter.CustomerInteractionId, ReceiptHeaderId = receiptHeader.LOG_RCP_Receipt_HeaderID, DateOfCustomerReturn = DateTime.Now, // TODO:Marko !? TotalValueBeforeTax = Parameter.Positions.Sum(p => p.Price) }, securityTicket).Result; #endregion #region Create and Load CustomerOrderReturn positions var returnPositionsParameter = new P_L5CO_SCORP_1459() { CustomerOrderReturnHeaderID = resultCustomerOrderReturnHeaderId, OrganizationalUnitID = Parameter.OrganizationalUnitID, Positions = Parameter.Positions.Select(x => new P_L5CO_SCORP_1459a { CustomerOrderReturnPositionId = Guid.Empty, ArticleID = x.ProductID, OrderPrice = x.Price, Quantity = x.Quantity, CorrespondingReceiptPosition_RefID = x.ReceiptPositionID } ).ToArray() }; cls_Save_CustomerOrderReturnPositions.Invoke(Connection, Transaction, returnPositionsParameter, securityTicket); #endregion #region Create Receipt Positions CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position receiptPosition = null; CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem qualityControlItem = null; foreach (var position in Parameter.Positions) { #region Receipt Position receiptPosition = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position { LOG_RCP_Receipt_PositionID = position.ReceiptPositionID, Receipt_Header_RefID = receiptHeader.LOG_RCP_Receipt_HeaderID, ReceiptPosition_Product_RefID = position.ProductID, ExpectedPositionPrice = position.Price, TotalQuantityTakenIntoStock = position.Quantity, Creation_Timestamp = DateTime.Now, Tenant_RefID = securityTicket.TenantID }; receiptPosition.Save(Connection, Transaction); #endregion #region Quality Control Item qualityControlItem = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem { LOG_RCP_Receipt_Position_QualityControlItem = Guid.NewGuid(), Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, ReceiptPositionCountedItemITL = receiptPosition.LOG_RCP_Receipt_PositionID.ToString(), BatchNumber = position.BatchNumber, QualityControl_PerformedAtDate = DateTime.Now, QualityControl_PerformedByBusinessParticipant_RefID = account.BusinessParticipant_RefID, Quantity = position.Quantity, Target_WRH_Shelf_RefID = position.ShelfID, Creation_Timestamp = DateTime.Now, Tenant_RefID = securityTicket.TenantID }; if (position.ExpiryDate.HasValue) { qualityControlItem.ExpiryDate = position.ExpiryDate.Value; } qualityControlItem.Save(Connection, Transaction); #endregion } #endregion #region Place article on stock var intakeParam = new CL3_Warehouse.Complex.Manipulation.P_L3WH_SRIC_1421 { ReceiptHeaderID = receiptHeader.LOG_RCP_Receipt_HeaderID, WithoutProcurement = true }; CL3_Warehouse.Complex.Manipulation.cls_StockReceipt_IntakeConfirmation.Invoke(Connection, Transaction, intakeParam, securityTicket); #endregion returnValue.Result = resultCustomerOrderReturnHeaderId; return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5SR_SRPaEDP_1406 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); var queryProcurement = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query() { LOG_RCP_Receipt_Header_RefID = Parameter.ReceiptHeaderID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }; var receiptToProcurementHeader = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptHeader_2_ProcurementOrderHeader.Query.Search(Connection, Transaction, queryProcurement).Single(); Guid procurementHeaderID = receiptToProcurementHeader.ORD_PRO_ProcurementOrder_Header_RefID; #region Positions if (Parameter.StockPositions != null) { foreach (var item in Parameter.StockPositions) { #region Receipt Positions var receiptPosition = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position(); if (item.ReceiptPositionID == Guid.Empty) { // create new 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 = Parameter.ReceiptHeaderID; receiptPosition.ReceiptPosition_Product_RefID = item.ProductID; } else { // load and edit existing position receiptPosition.Load(Connection, Transaction, item.ReceiptPositionID); } receiptPosition.TotalQuantityFreeOfCharge = 0.0; receiptPosition.TotalQuantityTakenIntoStock = 0.0; receiptPosition.ExpectedPositionPrice = item.UnitPrice; receiptPosition.Save(Connection, Transaction); #endregion #region Procurement Order Positions var procurementPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position(); var receiptToProcurementPosition = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition(); if (item.ReceiptPositionID == Guid.Empty) { #region Create new var query2 = new CL1_CMN_PRO.ORM_CMN_PRO_Product.Query() { CMN_PRO_ProductID = item.ProductID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var product = CL1_CMN_PRO.ORM_CMN_PRO_Product.Query.Search(Connection, Transaction, query2).Single(); var query3 = new CL1_CMN_PRO_PAC.ORM_CMN_PRO_PAC_PackageInfo.Query() { CMN_PRO_PAC_PackageInfoID = product.PackageInfo_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var packageInfo = CL1_CMN_PRO_PAC.ORM_CMN_PRO_PAC_PackageInfo.Query.Search(Connection, Transaction, query3).Single(); var unitID = packageInfo.PackageContent_MeasuredInUnit_RefID; // Create procurement order position for this position procurementPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position() { ORD_PRC_ProcurementOrder_PositionID = Guid.NewGuid(), ProcurementOrder_Header_RefID = procurementHeaderID, Creation_Timestamp = DateTime.Now, Tenant_RefID = securityTicket.TenantID, CMN_PRO_Product_RefID = item.ProductID, Position_Unit_RefID = unitID, }; receiptToProcurementPosition = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition() { AssignmentID = Guid.NewGuid(), Creation_Timestamp = DateTime.Now, Tenant_RefID = securityTicket.TenantID, ORD_PRO_ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID, LOG_RCP_Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, }; #endregion } else { #region Load existing procurement order position var query = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query() { LOG_RCP_Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; receiptToProcurementPosition = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, query).Single(); var query2 = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query() { ORD_PRC_ProcurementOrder_PositionID = receiptToProcurementPosition.ORD_PRO_ProcurementOrder_Position_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; procurementPosition = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, query2).Single(); #endregion } // save changed or newly created procurement position and assignment procurementPosition.Position_Quantity = item.OrderQuantity; procurementPosition.Position_ValuePerUnit = item.UnitPrice; procurementPosition.Position_ValueTotal = item.UnitPrice * (decimal)item.OrderQuantity; procurementPosition.Save(Connection, Transaction); receiptToProcurementPosition.ReceivedQuantityFromProcurementOrderPosition = item.OrderQuantity; receiptToProcurementPosition.Save(Connection, Transaction); #endregion #region Expected Delivery var expectedDeliveryPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position(); var expectedDeliveryToProcurementOrderPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition(); if (item.ReceiptPositionID == Guid.Empty) { #region Create new // get expected delivery header assigned to receipt header of this position var query2 = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header.Query { LOG_RCP_Receipt_HeaderID = receiptPosition.Receipt_Header_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var receiptHeader = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Header.Query.Search(Connection, Transaction, query2).Single(); expectedDeliveryPosition.ORD_PRC_ExpectedDelivery_PositionID = Guid.NewGuid(); expectedDeliveryPosition.Creation_Timestamp = DateTime.Now; expectedDeliveryPosition.Tenant_RefID = securityTicket.TenantID; expectedDeliveryPosition.ORD_PRC_ExpectedDelivery_RefID = receiptHeader.ExpectedDeliveryHeader_RefID; expectedDeliveryPosition.ExpectedDeliveryPositionITL = expectedDeliveryPosition.ORD_PRC_ExpectedDelivery_PositionID.ToString(); //expectedDeliveryPosition.AlreadyReceivedQuantityOfDelivery = ? expectedDeliveryToProcurementOrderPosition.AssignmentID = Guid.NewGuid(); expectedDeliveryToProcurementOrderPosition.ORD_PRC_ExpectedDelivery_Position_RefID = expectedDeliveryPosition.ORD_PRC_ExpectedDelivery_PositionID; expectedDeliveryToProcurementOrderPosition.ORD_PRC_ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID; expectedDeliveryToProcurementOrderPosition.Creation_Timestamp = DateTime.Now; expectedDeliveryToProcurementOrderPosition.Tenant_RefID = securityTicket.TenantID; #endregion } else { #region Load existing var query = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition.Query() { ORD_PRC_ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; expectedDeliveryToProcurementOrderPosition = CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, query).Single(); var query2 = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position.Query() { ORD_PRC_ExpectedDelivery_PositionID = expectedDeliveryToProcurementOrderPosition.ORD_PRC_ExpectedDelivery_Position_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; expectedDeliveryPosition = CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position.Query.Search(Connection, Transaction, query2).Single(); #endregion } expectedDeliveryPosition.TotalExpectedQuantity = item.OrderQuantity; expectedDeliveryPosition.Save(Connection, Transaction); expectedDeliveryToProcurementOrderPosition.AssignedQuantityFromProcurementOrderPosition = procurementPosition.Position_Quantity; expectedDeliveryToProcurementOrderPosition.Save(Connection, Transaction); #endregion #region Quality Control Items var qualityControlItem = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem(); if (item.ReceiptPositionID == Guid.Empty) { qualityControlItem.LOG_RCP_Receipt_Position_QualityControlItem = Guid.NewGuid(); qualityControlItem.ReceiptPositionCountedItemITL = qualityControlItem.LOG_RCP_Receipt_Position_QualityControlItem.ToString(); qualityControlItem.Creation_Timestamp = DateTime.Now; qualityControlItem.Tenant_RefID = securityTicket.TenantID; qualityControlItem.Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID; } else { var query = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query() { Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }; qualityControlItem = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query.Search(Connection, Transaction, query).Single(); } qualityControlItem.BatchNumber = item.BatchNumber; qualityControlItem.ExpiryDate = item.ExpiryDate; qualityControlItem.Quantity = procurementPosition.Position_Quantity; qualityControlItem.Save(Connection, Transaction); #endregion #region Forwarding Instruction var forwardingInstruction = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction(); if (item.ReceiptPositionID == Guid.Empty) { #region Create new var businessParticipant = CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query() { IfTenant_Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); forwardingInstruction.ORD_PRC_ProcurementOrder_Position_ForwardingInstructionID = Guid.NewGuid(); forwardingInstruction.Creation_Timestamp = DateTime.Now; forwardingInstruction.Tenant_RefID = securityTicket.TenantID; forwardingInstruction.ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID; forwardingInstruction.ForwardTo_BusinessParticipant_RefID = businessParticipant.CMN_BPT_BusinessParticipantID; #endregion } else { #region Load Existing var query = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query() { ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; forwardingInstruction = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query.Search(Connection, Transaction, query).Single(); #endregion } forwardingInstruction.QuantityToForward = procurementPosition.Position_Quantity; forwardingInstruction.Save(Connection, Transaction); #endregion } } #endregion returnValue.Result = Parameter.ReceiptHeaderID; return(returnValue); #endregion UserCode }
protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5ALSR_CSRC_1200 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guid(); #region Receipt Position (Update) var receiptPosition = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position(); receiptPosition.Load(Connection, Transaction, Parameter.LOG_RCP_Receipt_PositionID); receiptPosition.TotalQuantityTakenIntoStock = Parameter.AlreadyReceivedQuantityOfDelivery; receiptPosition.Save(Connection, Transaction); #endregion #region ProcurementOrderPosition (Read) var query1 = new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query() { LOG_RCP_Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var receiptToProcurementPosition = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, query1).Single(); var query2 = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query() { ORD_PRC_ProcurementOrder_PositionID = receiptToProcurementPosition.ORD_PRO_ProcurementOrder_Position_RefID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var procurementPosition = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, query2).Single(); #endregion #region Assingment Tables (Read) var assReceiptPos2ProcuPos = CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, new CL1_LOG_RCP.ORM_LOG_RCP_ReceiptPosition_2_ProcurementOrderPosition.Query { LOG_RCP_Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); var procurementOrderPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position(); procurementOrderPosition.Load(Connection, Transaction, assReceiptPos2ProcuPos.ORD_PRO_ProcurementOrder_Position_RefID); var assExpectedDlv2ProcurementOrderPos = CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition.Query.Search(Connection, Transaction, new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_2_ProcurementOrderPosition.Query { ORD_PRC_ProcurementOrder_Position_RefID = procurementOrderPosition.ORD_PRC_ProcurementOrder_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).SingleOrDefault(); #endregion #region Expected Delivery Positions (Update) if (assExpectedDlv2ProcurementOrderPos != null) { var expectedDeliveryPosition = new CL1_ORD_PRC.ORM_ORD_PRC_ExpectedDelivery_Position(); expectedDeliveryPosition.Load(Connection, Transaction, assExpectedDlv2ProcurementOrderPos.ORD_PRC_ExpectedDelivery_Position_RefID); expectedDeliveryPosition.AlreadyReceivedQuantityOfDelivery = Parameter.AlreadyReceivedQuantityOfDelivery; expectedDeliveryPosition.Save(Connection, Transaction); } #endregion #region Receipt Position Quality Control Items { // Delete all Quality Control Items because they are dummy var qualityControlItems = CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query.Search(Connection, Transaction, new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem.Query { Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); qualityControlItems.ForEach(x => x.IsDeleted = true); qualityControlItems.ForEach(x => x.Save(Connection, Transaction)); // Add new Quality Control Items foreach (var sp in Parameter.StockPackets) { var qualityControlItem = new CL1_LOG_RCP.ORM_LOG_RCP_Receipt_Position_QualityControlItem(); qualityControlItem.Receipt_Position_RefID = receiptPosition.LOG_RCP_Receipt_PositionID; qualityControlItem.ReceiptPositionCountedItemITL = Guid.NewGuid().ToString(); qualityControlItem.Tenant_RefID = securityTicket.TenantID; qualityControlItem.BatchNumber = sp.SerialNumber; qualityControlItem.Quantity = sp.ProductQuantity; if (sp.ExpirationDate.HasValue) { qualityControlItem.ExpiryDate = sp.ExpirationDate.Value; } qualityControlItem.QualityControl_PerformedByBusinessParticipant_RefID = sp.QualityControl_PerformedByBusinessParticipant_RefID; qualityControlItem.QualityControl_PerformedAtDate = sp.QualityControl_PerformedAtDate; qualityControlItem.Save(Connection, Transaction); } } #endregion #region Request Quantity Forwarding foreach (var company in Parameter.Companies) { #region Forwarding Instruction var query = new CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query() { ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID, ForwardTo_BusinessParticipant_RefID = company.CompanyBusinessParticipantID, IsDeleted = false, Tenant_RefID = securityTicket.TenantID }; var forwardingInstruction = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_ForwardingInstruction.Query.Search(Connection, Transaction, query).SingleOrDefault(); if (forwardingInstruction == null) { #region Create new var businessParticipant = CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query.Search(Connection, Transaction, new CL1_CMN_BPT.ORM_CMN_BPT_BusinessParticipant.Query() { IfTenant_Tenant_RefID = securityTicket.TenantID, IsDeleted = false }).Single(); forwardingInstruction.ORD_PRC_ProcurementOrder_Position_ForwardingInstructionID = Guid.NewGuid(); forwardingInstruction.Creation_Timestamp = DateTime.Now; forwardingInstruction.Tenant_RefID = securityTicket.TenantID; forwardingInstruction.ProcurementOrder_Position_RefID = procurementPosition.ORD_PRC_ProcurementOrder_PositionID; forwardingInstruction.ForwardTo_BusinessParticipant_RefID = businessParticipant.CMN_BPT_BusinessParticipantID; #endregion } forwardingInstruction.QuantityToForward = company.CompanyStockPackets.Sum(i => i.QuantityToTransfer); forwardingInstruction.Save(Connection, Transaction); #endregion var rqfHeader = new CL1_LOG_RCP_RQF.ORM_LOG_RCP_RQF_RequestQuantityForwarding_Header(); rqfHeader.Tenant_RefID = securityTicket.TenantID; rqfHeader.SplitFrom_ReceiptHeader_RefID = receiptPosition.Receipt_Header_RefID; rqfHeader.ExecutingBusinessParticipant_RefID = company.CompanyBusinessParticipantID; rqfHeader.Save(Connection, Transaction); var rqfPosition = new CL1_LOG_RCP_RQF.ORM_LOG_RCP_RQF_RequestQuantityForwarding_Position(); rqfPosition.Tenant_RefID = securityTicket.TenantID; rqfPosition.ReceivedQuantityForwarding_Header_RefID = rqfHeader.SplitFrom_ReceiptHeader_RefID; foreach (var rqfItem in company.CompanyStockPackets) { var rqfPositionItem = new CL1_LOG_RCP_RQF.ORM_LOG_RCP_RQF_Position_MemberItem(); rqfPositionItem.RequestQuantityForwarding_Position_RefID = rqfPosition.LOG_RCP_RQF_RequestQuantityForwarding_PositionID; rqfPositionItem.BatchNumber = rqfItem.SerialNumber; rqfPositionItem.Quantity = rqfItem.QuantityToTransfer; rqfPositionItem.Save(Connection, Transaction); } rqfPosition.TotalReceivedQuantity = company.CompanyStockPackets.Sum(x => x.QuantityToTransfer); rqfPosition.ExpectedQuantity = procurementPosition.Position_Quantity; rqfPosition.CreatedFrom_PositionForwardingInstruction_RefID = forwardingInstruction.ORD_PRC_ProcurementOrder_Position_ForwardingInstructionID; rqfPosition.Save(Connection, Transaction); } #endregion return(new FR_Guid(receiptPosition.LOG_RCP_Receipt_PositionID)); #endregion UserCode }