protected static FR_L3DO_SDO_1801 Execute(DbConnection Connection, DbTransaction Transaction, P_L3DO_SDO_1801 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L3DO_SDO_1801(); returnValue.Result = new L3DO_SDO_1801(); ORM_CMN_UniversalContactDetail universalContactDetails = new ORM_CMN_UniversalContactDetail(); universalContactDetails.CMN_UniversalContactDetailID = Guid.NewGuid(); universalContactDetails.Contact_Email = Parameter.UniversalContactDetails.Email; universalContactDetails.Contact_Telephone = Parameter.UniversalContactDetails.Phone; universalContactDetails.Country_Name = Parameter.UniversalContactDetails.Country; universalContactDetails.Country_639_1_ISOCode = Parameter.UniversalContactDetails.CountryIso; universalContactDetails.Creation_Timestamp = DateTime.Now; universalContactDetails.First_Name = Parameter.UniversalContactDetails.FirstName; universalContactDetails.Last_Name = Parameter.UniversalContactDetails.LastName; universalContactDetails.Street_Name = Parameter.UniversalContactDetails.StreetName; universalContactDetails.Street_Number = Parameter.UniversalContactDetails.StreetNumber; universalContactDetails.ZIP = Parameter.UniversalContactDetails.Zip; universalContactDetails.Town = Parameter.UniversalContactDetails.Town; universalContactDetails.Tenant_RefID = securityTicket.TenantID; universalContactDetails.POBox = Parameter.UniversalContactDetails.POBox; universalContactDetails.Save(Connection, Transaction); ORM_CMN_NumberRange_UsageArea numberRangeUsageArea = ORM_CMN_NumberRange_UsageArea.Query.Search(Connection, Transaction, new ORM_CMN_NumberRange_UsageArea.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, GlobalStaticMatchingID = NumberRangeGlobalPropertyMatchingID }).FirstOrDefault(); if (numberRangeUsageArea == null) { throw new Exception(String.Format("Number range usage area with GPMID = {0} was not found.", NumberRangeGlobalPropertyMatchingID)); } ORM_CMN_NumberRange numberRange = ORM_CMN_NumberRange.Query.Search(Connection, Transaction, new ORM_CMN_NumberRange.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, NumberRange_UsageArea_RefID = numberRangeUsageArea.CMN_NumberRange_UsageAreaID }).FirstOrDefault(); if (numberRange == null) { throw new Exception(String.Format("Number range for area with GPMID = {0} was not found.", NumberRangeGlobalPropertyMatchingID)); } numberRange.Value_Current++; numberRange.Save(Connection, Transaction); string distributionOrderNumber = numberRange.FixedPrefix + numberRange.Value_Current.ToString().PadLeft(numberRange.Formatting_NumberLength, numberRange.Formatting_LeadingFillCharacter[0]); ORM_ORD_DIS_DistributionOrder_Header header = new ORM_ORD_DIS_DistributionOrder_Header(); header.Charged_CostCenter_RefID = Parameter.IsCostCenterOrderRefID; header.Creation_Timestamp = DateTime.Now; header.DistributeTo_UCDAddress_RefID = universalContactDetails.CMN_UniversalContactDetailID; header.DistributionOrderDate = DateTime.Now; header.DistributionOrderNumber = distributionOrderNumber; header.IfForDelivery_LogisticsProvider_RefID = Parameter.IsForDeliveryLogisticProviderRefID.ToString(); header.IfForDelivery_ShipmentType_RefID = Parameter.IsForDeliveryShipmentTypeRefID; header.IfForPickup_PointOfSale_RefID = Parameter.IsForPickupPointOfSaleRefID; header.IsCostCenterOrder = Parameter.IsCostCenterOrder; header.IsDeleted = false; header.IsForDelivery = Parameter.IsForDelivery; header.ORD_DIS_DistributionOrder_HeaderID = Guid.NewGuid(); header.Tenant_RefID = securityTicket.TenantID; header.InternallyCharged_Currency_RefID = Parameter.CurrencyID; header.InternallyCharged_TotalNetPriceValue = 0; header.IsForPickup = Parameter.IsForPickup; foreach (var item in Parameter.DistributionOrderPositions) { if (item.Quantity == 0) { continue; } ORM_CMN_PRO_ASS_AssortmentVariant assortmentVariant = ORM_CMN_PRO_ASS_AssortmentVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, Ext_CMN_PRO_Product_Variant_RefID = item.ProductVariantID }).FirstOrDefault(); ORM_ORD_DIS_DistributionOrder_Position position = null; if (assortmentVariant == null) { //This means that this product might be local one position = new ORM_ORD_DIS_DistributionOrder_Position(); position.Product_RefID = item.ProductID; position.Product_Variant_RefID = item.ProductVariantID; } else { //This means that product is from assortment and we are supposed to take orginal product. List <ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant> assortmentVendorVariats = ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_ASS_AssortmentVariant_RefID = assortmentVariant.CMN_PRO_ASS_AssortmentVariantID }); ORM_CMN_PRO_ASS_AssortmentVariant_VendorVariant defaultVendorVariant = assortmentVendorVariats.FirstOrDefault(x => x.IsDefaultVendorVariant == true); if (defaultVendorVariant == null) { defaultVendorVariant = assortmentVendorVariats.First(); } if (defaultVendorVariant != null) { ORM_CMN_PRO_Product_Variant productVariant = ORM_CMN_PRO_Product_Variant.Query.Search(Connection, Transaction, new ORM_CMN_PRO_Product_Variant.Query() { IsDeleted = false, Tenant_RefID = securityTicket.TenantID, CMN_PRO_Product_VariantID = defaultVendorVariant.CMN_PRO_Product_Variant_RefID }).FirstOrDefault(); if (productVariant != null) { position = new ORM_ORD_DIS_DistributionOrder_Position(); position.Product_RefID = productVariant.CMN_PRO_Product_RefID; position.Product_Variant_RefID = productVariant.CMN_PRO_Product_VariantID; } } } if (position != null) { position.Creation_Timestamp = DateTime.Now; position.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; position.ORD_DIS_DistributionOrder_PositionID = Guid.NewGuid(); position.Quantity = item.Quantity; position.Tenant_RefID = securityTicket.TenantID; position.InternallyCharged_TotalNetPriceValue = item.PriceValueTotal; position.Save(Connection, Transaction); if (item.DistributionOrderPositionCustomizations != null && item.DistributionOrderPositionCustomizations.Where(x => x.CustomizationVariantID != Guid.Empty).Count() > 0) { foreach (var itemCustomization in item.DistributionOrderPositionCustomizations) { if (itemCustomization.CustomizationVariantID != Guid.Empty) { ORM_ORD_DIS_DistributionOrder_Position_Customization customization = new ORM_ORD_DIS_DistributionOrder_Position_Customization(); customization.ORD_DIS_DistributionOrder_Position_CustomizationID = itemCustomization.DistributionOrderPositionCustomizationID; customization.Tenant_RefID = securityTicket.TenantID; customization.DistributionOrder_Position_RefID = position.ORD_DIS_DistributionOrder_PositionID; customization.CustomizationVariant_Name = itemCustomization.CustomizationVariantName; customization.Customization_Variant_RefID = itemCustomization.CustomizationVariantID; customization.Customization_Name = itemCustomization.CustomizationName; customization.Save(Connection, Transaction); } } } } header.InternallyCharged_TotalNetPriceValue += position.InternallyCharged_TotalNetPriceValue; } header.Save(Connection, Transaction); foreach (var item in Parameter.Documents) { ORM_DOC_Document document = new ORM_DOC_Document(); document.Alias = item.Alias; document.PrimaryType = item.PrimaryType; document.DOC_DocumentID = item.DocumentID; document.Creation_Timestamp = DateTime.Now; document.Tenant_RefID = securityTicket.TenantID; document.Save(Connection, Transaction); ORM_ORD_DIS_DistributionOrder_Header_Document orderDocument = new ORM_ORD_DIS_DistributionOrder_Header_Document(); orderDocument.Creation_Timestamp = DateTime.Now; orderDocument.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; orderDocument.Document_RefID = document.DOC_DocumentID; orderDocument.ORD_DIS_DistributionOrder_Header_DocumentID = Guid.NewGuid(); orderDocument.Tenant_RefID = securityTicket.TenantID; orderDocument.Save(Connection, Transaction); } ORM_USR_Account account = ORM_USR_Account.Query.Search(Connection, Transaction, new ORM_USR_Account.Query() { Tenant_RefID = securityTicket.TenantID, USR_AccountID = securityTicket.AccountID, IsDeleted = false }).FirstOrDefault(); ORM_ORD_DIS_DistributionOrder_Header_History history = new ORM_ORD_DIS_DistributionOrder_Header_History(); history.Comment = Parameter.UniversalContactDetails.Comment; history.Creation_Timestamp = DateTime.Now; history.DistributionOrder_Header_RefID = header.ORD_DIS_DistributionOrder_HeaderID; history.IsCreated = true; history.ORD_DIS_DistributionOrder_Header_HistoryID = Guid.NewGuid(); history.Tenant_RefID = securityTicket.TenantID; history.TriggeredBy_BusinessParticipant_RefID = account != null ? account.BusinessParticipant_RefID : Guid.Empty; history.Save(Connection, Transaction); returnValue.Result.DistributionOrderHeaderID = header.ORD_DIS_DistributionOrder_HeaderID; returnValue.Result.DistributionOrderNumber = header.DistributionOrderNumber; return(returnValue); #endregion UserCode }
protected static FR_L5PP_GSHwDOfPfT_1013_Array Execute(DbConnection Connection, DbTransaction Transaction, P_L5PP_GSHwDOfPfT_1013 Parameter, CSV2Core.SessionSecurity.SessionSecurityTicket securityTicket = null) { #region UserCode var returnValue = new FR_L5PP_GSHwDOfPfT_1013_Array(); //Put your code here List <L5PP_GSHwDOfPfT_1013> retVal = new List <L5PP_GSHwDOfPfT_1013>(); returnValue.Result = retVal.ToArray(); #region Retrieve Headers // get all headers P_L2SH_GSHfT_1527 shipmentHeadersParam = new P_L2SH_GSHfT_1527(); shipmentHeadersParam.IsShipped = false; shipmentHeadersParam.ShipmentNumber = Parameter.ShipmentNumber; shipmentHeadersParam.ShipmentCreationDateFrom = Parameter.ShipmentCreationDateFrom; shipmentHeadersParam.ShipmentCreationDateTo = Parameter.ShipmentCreationDateTo; var headersResult = cls_Get_ShippmentHeaders_for_TenantID.Invoke(Connection, Transaction, shipmentHeadersParam, securityTicket).Result; if (headersResult == null) { return(returnValue); } // filter headers List <L2SH_GSHfT_1527> headers = new List <L2SH_GSHfT_1527>(); List <L2SH_GSHfT_1527> tempHeaders = new List <L2SH_GSHfT_1527>(); if (Parameter.HasPositionsPartiallyToPick) { // filtered by passed parameter option tempHeaders = headersResult.Where(i => i.IsPartiallyReadyForPicking && !i.IsManuallyCleared_ForPicking).ToList(); // add not inserted shipment headers headers.AddRange(tempHeaders.Where(i => !headers.Any(j => j.LOG_SHP_Shipment_HeaderID == i.LOG_SHP_Shipment_HeaderID)).ToList()); } if (Parameter.IsReadyForPicking) { // filtered by passed parameter option tempHeaders = headersResult.Where(i => i.IsReadyForPicking && !i.IsManuallyCleared_ForPicking).ToList(); // add not inserted shipment headers headers.AddRange(tempHeaders.Where(i => !headers.Any(j => j.LOG_SHP_Shipment_HeaderID == i.LOG_SHP_Shipment_HeaderID)).ToList()); } if (Parameter.IsInPickingProcess) { // filtered by passed parameter option tempHeaders = headersResult.Where(i => i.HasPickingStarted || i.HasPickingFinished || i.IsManuallyCleared_ForPicking).ToList(); // add not inserted shipment headers headers.AddRange(tempHeaders.Where(i => !headers.Any(j => j.LOG_SHP_Shipment_HeaderID == i.LOG_SHP_Shipment_HeaderID)).ToList()); } if (Parameter.NoPositionsFullyToPick) { // filtered by passed parameter option tempHeaders = headersResult.Where(i => !(i.IsPartiallyReadyForPicking && !i.IsManuallyCleared_ForPicking) && !(i.IsReadyForPicking && !i.IsManuallyCleared_ForPicking) && !(i.HasPickingStarted || i.HasPickingFinished || i.IsManuallyCleared_ForPicking) ).ToList(); // add not inserted shipment headers headers.AddRange(tempHeaders.Where(i => !headers.Any(j => j.LOG_SHP_Shipment_HeaderID == i.LOG_SHP_Shipment_HeaderID)).ToList()); } #endregion L5PP_GSHwDOfPfT_1013 retValItem; foreach (var header in headers) { #region Getting data #region Shipment positions // get one shipment position for shipment header ORM_LOG_SHP_Shipment_Position.Query shipmentPositionsQuery = new ORM_LOG_SHP_Shipment_Position.Query(); shipmentPositionsQuery.LOG_SHP_Shipment_Header_RefID = header.LOG_SHP_Shipment_HeaderID; shipmentPositionsQuery.Tenant_RefID = securityTicket.TenantID; shipmentPositionsQuery.IsDeleted = false; List <ORM_LOG_SHP_Shipment_Position> shipmentPositions = ORM_LOG_SHP_Shipment_Position.Query.Search(Connection, Transaction, shipmentPositionsQuery); if (shipmentPositions == null || shipmentPositions.Count == 0) { continue; } #endregion #region Distribution order position for shipment position // get one distribution order position for shipment position ORM_ORD_DIS_DistributionOrderPosition_2_ShipmentOrderPosition distributionOrder2ShipmentPosition = null; foreach (var shipmentPosition in shipmentPositions) { ORM_ORD_DIS_DistributionOrderPosition_2_ShipmentOrderPosition.Query distributionOrder2ShipmentPositionQuery = new ORM_ORD_DIS_DistributionOrderPosition_2_ShipmentOrderPosition.Query(); distributionOrder2ShipmentPositionQuery.LOG_SHP_Shipment_Position_RefID = shipmentPosition.LOG_SHP_Shipment_PositionID; distributionOrder2ShipmentPositionQuery.Tenant_RefID = securityTicket.TenantID; distributionOrder2ShipmentPositionQuery.IsDeleted = false; distributionOrder2ShipmentPosition = ORM_ORD_DIS_DistributionOrderPosition_2_ShipmentOrderPosition.Query .Search(Connection, Transaction, distributionOrder2ShipmentPositionQuery).FirstOrDefault(); if (distributionOrder2ShipmentPosition != null) { break; } } if (distributionOrder2ShipmentPosition == null) { continue; } #endregion #region Disrtibution order position ORM_ORD_DIS_DistributionOrder_Position orm_DistributionOrderPosition = new ORM_ORD_DIS_DistributionOrder_Position(); var distributionOrderPosition = orm_DistributionOrderPosition.Load(Connection, Transaction, distributionOrder2ShipmentPosition.ORD_DIS_DistributionOrder_Position_RefID); if (distributionOrderPosition.Status != FR_Status.Success || orm_DistributionOrderPosition.ORD_DIS_DistributionOrder_PositionID == Guid.Empty) { continue; } #endregion #region Distribution order header // get sitribution order header for distribution order position ORM_ORD_DIS_DistributionOrder_Header.Query distributionOrderHeaderQuery = new ORM_ORD_DIS_DistributionOrder_Header.Query(); distributionOrderHeaderQuery.ORD_DIS_DistributionOrder_HeaderID = orm_DistributionOrderPosition.DistributionOrder_Header_RefID; distributionOrderHeaderQuery.Tenant_RefID = securityTicket.TenantID; distributionOrderHeaderQuery.IsDeleted = false; ORM_ORD_DIS_DistributionOrder_Header distributionOrderHeader = ORM_ORD_DIS_DistributionOrder_Header.Query.Search(Connection, Transaction, distributionOrderHeaderQuery).FirstOrDefault(); if (distributionOrderHeader == null) { continue; } // apply filter for distribution order header if (Parameter.OrderDateFrom != null) { if (distributionOrderHeader.DistributionOrderDate < Parameter.OrderDateFrom) { continue; } } if (Parameter.OrderDateTo != null) { if (distributionOrderHeader.DistributionOrderDate > Parameter.OrderDateTo) { continue; } } if (!String.IsNullOrEmpty(Parameter.DistributionOrderNumber)) { if (!distributionOrderHeader.DistributionOrderNumber.ToUpper().Contains(Parameter.DistributionOrderNumber.ToUpper())) { continue; } } #endregion #region CostCenter // get cost center for distribution order header ORM_CMN_STR_CostCenter orm_CostCenter = new ORM_CMN_STR_CostCenter(); var costCenter = orm_CostCenter.Load(Connection, Transaction, distributionOrderHeader.Charged_CostCenter_RefID); if (costCenter.Status != FR_Status.Success || orm_CostCenter.CMN_STR_CostCenterID == Guid.Empty) { continue; } if (!String.IsNullOrEmpty(Parameter.CostCenter)) { // apply filter for cost center if (!orm_CostCenter.Name.Contents.Any(i => i.Content.ToLower().Contains(Parameter.CostCenter))) { continue; } } #endregion #region Office // get office for cost center ORM_CMN_STR_Office_2_CostCenter.Query office2CostCenterQuery = new ORM_CMN_STR_Office_2_CostCenter.Query(); office2CostCenterQuery.CostCenter_RefID = orm_CostCenter.CMN_STR_CostCenterID; office2CostCenterQuery.Tenant_RefID = securityTicket.TenantID; office2CostCenterQuery.IsDefault = false; ORM_CMN_STR_Office_2_CostCenter office2CostCenter = ORM_CMN_STR_Office_2_CostCenter.Query.Search(Connection, Transaction, office2CostCenterQuery).FirstOrDefault(); ORM_CMN_STR_Office orm_Office = null; if (office2CostCenter != null) { orm_Office = new ORM_CMN_STR_Office(); var office = orm_Office.Load(Connection, Transaction, office2CostCenter.Office_RefID); if (office.Status != FR_Status.Success || orm_Office.CMN_STR_OfficeID == Guid.Empty) { // there is no office with such ID orm_Office = null; } else { // office loaded, apply filter if (!String.IsNullOrEmpty(Parameter.OrganizationalUnit)) { if (!(orm_Office.Office_InternalName.ToLower().Contains(Parameter.OrganizationalUnit) || orm_Office.Office_Name.Contents.Any(i => i.Content.ToLower().Contains(Parameter.OrganizationalUnit)))) { continue; } } } } #endregion #endregion retValItem = new L5PP_GSHwDOfPfT_1013(); retValItem.LOG_SHP_Shipment_HeaderID = header.LOG_SHP_Shipment_HeaderID; retValItem.ShipmentHeader_Number = header.ShipmentHeader_Number; retValItem.IsShipped = header.IsShipped; retValItem.IsBilled = header.IsBilled; retValItem.IsReadyForPicking = header.IsReadyForPicking; retValItem.IsPartiallyReadyForPicking = header.IsPartiallyReadyForPicking; retValItem.HasPickingStarted = header.HasPickingStarted; retValItem.HasPickingFinished = header.HasPickingFinished; retValItem.IsManuallyCleared_ForPicking = header.IsManuallyCleared_ForPicking; retValItem.ShipmentCreationDate = header.Creation_Timestamp; retValItem.ORD_DIS_DistributionOrder_HeaderID = distributionOrderHeader.ORD_DIS_DistributionOrder_HeaderID; retValItem.DistributionOrderNumber = distributionOrderHeader.DistributionOrderNumber; retValItem.DistributionOrderDate = distributionOrderHeader.DistributionOrderDate; retValItem.CMN_STR_CostCenterID = orm_CostCenter.CMN_STR_CostCenterID; retValItem.CostCenterName = orm_CostCenter.Name; retValItem.CMN_STR_OfficeID = orm_Office != null ? orm_Office.CMN_STR_OfficeID : Guid.Empty; retValItem.OfficeInternalName = orm_Office != null ? orm_Office.Office_InternalName : String.Empty; retVal.Add(retValItem); } retVal = retVal.Skip(Parameter.From).Take(Parameter.Size).ToList(); returnValue.Result = retVal.ToArray(); return(returnValue); #endregion UserCode }