Esempio n. 1
0
 private static void GetCostDetailsForMerge(MergeAllowedForContractsDto mergeAllowedForContracts, MergeDetailDto mergeDetails)
 {
     if (mergeDetails.Costs != null)
     {
         IEnumerable <MergeCostDetailDto> invoicedCosts = mergeDetails.Costs.Where(cost => cost.IsCostInvoiced);
         if (invoicedCosts.Any())
         {
             foreach (MergeCostDetailDto cost in invoicedCosts)
             {
                 if (cost.RateTypeId == (int)RateType.Rate || cost.RateTypeId == (int)RateType.Percent)
                 {
                     mergeAllowedForContracts.IsAllowed = false;
                     mergeAllowedForContracts.Message   = "The cost with rate/percent have been invoiced";
                 }
                 else if (cost.RateTypeId == (int)RateType.Percent)
                 {
                     mergeAllowedForContracts.IsAllowed = true;
                 }
             }
         }
         else
         {
             mergeAllowedForContracts.IsAllowed = true;
         }
     }
 }
Esempio n. 2
0
        public async Task <MergeAllowedForContractsDto> GetContextualDataForContractMergeAsync(string company, long sectionId, int?dataVersionId = null)
        {
            var queryParameters = new DynamicParameters();

            queryParameters.Add("@sectionId", sectionId);
            queryParameters.Add(DataVersionIdParameter, dataVersionId);
            queryParameters.Add("@CompanyId", company);
            var            mergeAllowedForContracts = new MergeAllowedForContractsDto();
            MergeDetailDto mergeDetails;

            using (var contextualData = await ExecuteQueryMultipleAsync(StoredProcedureNames.GetContextualDataForContractMerge, queryParameters, true))
            {
                if (contextualData != null)
                {
                    mergeDetails = (await contextualData.ReadAsync <MergeDetailDto>()).FirstOrDefault();
                    if (mergeDetails != null)
                    {
                        // setting the  default value as true since merge to enabled/disabled
                        // based on the number of splits/invoiced/allocation/costs
                        mergeAllowedForContracts.IsAllowed = true;

                        if (!mergeDetails.HasChild)
                        {
                            mergeAllowedForContracts.IsAllowed = false;
                            mergeAllowedForContracts.Message   = "The contract doesn't have any split/tranch";
                        }
                        else if (mergeDetails.IsAllocated)
                        {
                            mergeAllowedForContracts.IsAllowed = false;
                            mergeAllowedForContracts.Message   = "The contract is allocated";
                        }
                        else if (mergeDetails.IsInvoiced)
                        {
                            mergeAllowedForContracts.IsAllowed = false;
                            mergeAllowedForContracts.Message   = "The contract is invoiced";
                        }
                        else if (mergeDetails.HasCost)
                        {
                            mergeDetails.Costs = await contextualData.ReadAsync <MergeCostDetailDto>();

                            GetCostDetailsForMerge(mergeAllowedForContracts, mergeDetails);
                        }
                        else if (mergeDetails.IsClosed)
                        {
                            mergeAllowedForContracts.IsAllowed = false;
                            mergeAllowedForContracts.Message   = "The contract is closed";
                        }
                        else if (!mergeDetails.IsDisabled && mergeDetails.HasChild)
                        {
                            mergeAllowedForContracts.IsAllowed = false;
                            mergeAllowedForContracts.Message   = "All the splits are already merged";
                        }
                    }
                }
            }

            return(mergeAllowedForContracts);
        }