protected static FR_Guid Execute(DbConnection Connection, DbTransaction Transaction, P_L5PO_SCDfHoP_1117 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { //Leave UserCode region to enable user code saving #region UserCode var returnValue = new FR_Guid(); //Put your code here List <Guid> positionIDs = new List <Guid>(); //if parameter contains headerID, discounts for all positions of header will be created/edited. if (Parameter.ProcurementOrderHeaderID != Guid.Empty) { //Find all header positions var procurementOrderPositions = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction , new ORM_ORD_PRC_ProcurementOrder_Position.Query() { ProcurementOrder_Header_RefID = Parameter.ProcurementOrderHeaderID, Tenant_RefID = securityTicket.TenantID, IsDeleted = false }); if (procurementOrderPositions != null && procurementOrderPositions.Count > 0) { positionIDs.AddRange(procurementOrderPositions.Select(x => x.ORD_PRC_ProcurementOrder_PositionID).ToList()); } } else if (Parameter.ProcurementOrderPositionIDList != null && Parameter.ProcurementOrderPositionIDList.Length > 0) { positionIDs.AddRange(Parameter.ProcurementOrderPositionIDList); } if (positionIDs.Count > 0) { var discountTypeParam = new P_L2DT_GDTfGPMIL_1546(); discountTypeParam.GlobalPropertyMatchingID_List = new string[] { EnumUtils.GetEnumDescription(EDiscountType.CashDiscount), }; var discountTypes = cls_Get_DiscountTypes_for_GlobalPropertyMatchingID_List.Invoke(Connection, Transaction, discountTypeParam, securityTicket).Result; if (discountTypes != null && discountTypes.Length > 0) { var discountTypeID = discountTypes.First().ORD_PRC_DiscountTypeID; foreach (var item in positionIDs) { var positionDiscount = ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, ORD_PRC_ProcurementOrder_Position_RefID = item, ORD_PRC_DiscountType_RefID = discountTypeID }); if (positionDiscount != null && positionDiscount.Count > 0) { //update existing discount for position positionDiscount.First().DiscountValue = Parameter.DiscountValue; positionDiscount.First().Save(Connection, Transaction); } else { //create new discount for position ORM_ORD_PRC_ProcurementOrder_Position_Discount newPosition = new ORM_ORD_PRC_ProcurementOrder_Position_Discount(); newPosition.IsDeleted = false; newPosition.Tenant_RefID = securityTicket.TenantID; newPosition.Creation_Timestamp = DateTime.Now; newPosition.DiscountValue = Parameter.DiscountValue; newPosition.ORD_PRC_ProcurementOrder_Position_DiscountID = Guid.NewGuid(); newPosition.ORD_PRC_DiscountType_RefID = discountTypeID; newPosition.ORD_PRC_ProcurementOrder_Position_RefID = item; newPosition.Save(Connection, Transaction); } } } } return(returnValue); #endregion UserCode }
protected static FR_Guids Execute(DbConnection Connection, DbTransaction Transaction, P_L5PO_SPD_1148 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_Guids(); //Put your code here List <Guid> discountGuidList = new List <Guid>(); if (Parameter.Discounts != null) { List <Guid> positionIDs = new List <Guid>(); if (Parameter.SaveNaturalDiscountForAllPositions) { var position = new ORM_ORD_PRC_ProcurementOrder_Position(); position.Load(Connection, Transaction, Parameter.ProcurementOrderPositionID); var headerID = position.ProcurementOrder_Header_RefID; var headerPositions = ORM_ORD_PRC_ProcurementOrder_Position.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Position.Query { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, ProcurementOrder_Header_RefID = headerID }).ToList(); positionIDs.AddRange(headerPositions.Select(x => x.ORD_PRC_ProcurementOrder_PositionID)); } var positionDiscounts = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, ORD_PRC_ProcurementOrder_Position_RefID = Parameter.ProcurementOrderPositionID } ).ToArray(); //Preload discount types and choose those that are applying to stock reciept positions var discountTypesParam = new P_L2DT_GDTfGPMIL_1546(); discountTypesParam.GlobalPropertyMatchingID_List = new string[] { EnumUtils.GetEnumDescription(EDiscountType.MainDiscount), EnumUtils.GetEnumDescription(EDiscountType.Discount2), EnumUtils.GetEnumDescription(EDiscountType.Discount3), EnumUtils.GetEnumDescription(EDiscountType.NaturalDiscount) }; var discountTypes = cls_Get_DiscountTypes_for_GlobalPropertyMatchingID_List.Invoke(Connection, Transaction, discountTypesParam, securityTicket).Result; ORM_ORD_PRC_ProcurementOrder_Position_Discount discount = null; foreach (var item in discountTypes) { var paramDiscount = Parameter.Discounts.SingleOrDefault(x => x.DiscountTypeID == item.ORD_PRC_DiscountTypeID); if (paramDiscount == null) { continue; } discount = positionDiscounts.SingleOrDefault(x => x.ORD_PRC_DiscountType_RefID == item.ORD_PRC_DiscountTypeID); if (discount == null) { discount = new ORM_ORD_PRC_ProcurementOrder_Position_Discount { ORD_PRC_ProcurementOrder_Position_DiscountID = Guid.NewGuid(), ORD_PRC_DiscountType_RefID = item.ORD_PRC_DiscountTypeID, ORD_PRC_ProcurementOrder_Position_RefID = Parameter.ProcurementOrderPositionID, Tenant_RefID = securityTicket.TenantID, Creation_Timestamp = DateTime.Now, IsDeleted = false }; } discount.DiscountValue = paramDiscount.DiscountValue; discount.Save(Connection, Transaction); discountGuidList.Add(discount.ORD_PRC_ProcurementOrder_Position_DiscountID); } //if SaveNaturalDiscountForAllPositions, change discount value for natural discount for all positions of procurement header if (Parameter.SaveNaturalDiscountForAllPositions) { foreach (var currentPosID in positionIDs) { if (currentPosID != Parameter.ProcurementOrderPositionID) { var posDiscounts = CL1_ORD_PRC.ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query.Search(Connection, Transaction, new ORM_ORD_PRC_ProcurementOrder_Position_Discount.Query { Tenant_RefID = securityTicket.TenantID, IsDeleted = false, ORD_PRC_ProcurementOrder_Position_RefID = currentPosID } ).ToArray(); //Preload discount types and choose those that are applying to stock reciept positions var discountTypesPar = new P_L2DT_GDTfGPMIL_1546(); discountTypesPar.GlobalPropertyMatchingID_List = new string[] { EnumUtils.GetEnumDescription(EDiscountType.NaturalDiscount) }; var discNaturalType = cls_Get_DiscountTypes_for_GlobalPropertyMatchingID_List.Invoke(Connection, Transaction, discountTypesPar, securityTicket).Result; ORM_ORD_PRC_ProcurementOrder_Position_Discount discountNatural = null; foreach (var item in discNaturalType) { var paramDiscount = Parameter.Discounts.SingleOrDefault(x => x.DiscountTypeID == discNaturalType.First().ORD_PRC_DiscountTypeID); if (paramDiscount == null) { continue; } discountNatural = posDiscounts.SingleOrDefault(x => x.ORD_PRC_DiscountType_RefID == discNaturalType.First().ORD_PRC_DiscountTypeID); if (discountNatural == null) { discountNatural = new ORM_ORD_PRC_ProcurementOrder_Position_Discount { ORD_PRC_ProcurementOrder_Position_DiscountID = Guid.NewGuid(), ORD_PRC_DiscountType_RefID = item.ORD_PRC_DiscountTypeID, ORD_PRC_ProcurementOrder_Position_RefID = currentPosID, Tenant_RefID = securityTicket.TenantID, Creation_Timestamp = DateTime.Now, IsDeleted = false }; } discountNatural.DiscountValue = paramDiscount.DiscountValue; discountNatural.Save(Connection, Transaction); discountGuidList.Add(discount.ORD_PRC_ProcurementOrder_Position_DiscountID); } } } } } returnValue.Result = discountGuidList.ToArray(); return(returnValue); #endregion UserCode }