Ejemplo n.º 1
0
 public GenericFinPeriodSelectorAttribute(
     Type searchType,
     ICalendarOrganizationIDProvider sourceOrganizationIDProvider,
     bool takeBranchForSelectorFromQueryParams       = false,
     bool takeOrganizationForSelectorFromQueryParams = false,
     bool masterPeriodBasedOnOrganizationPeriods     = true,
     FinPeriodSelectorAttribute.SelectionModesWithRestrictions selectionModeWithRestrictions = FinPeriodSelectorAttribute.SelectionModesWithRestrictions.Undefined,
     Type[] fieldList = null)
     : base(GetSearchType(searchType, takeBranchForSelectorFromQueryParams, takeOrganizationForSelectorFromQueryParams),
            fieldList)
 {
     OrigSearchType = searchType;
     SourceOrganizationIDProvider               = sourceOrganizationIDProvider;
     TakeBranchForSelectorFromQueryParams       = takeBranchForSelectorFromQueryParams;
     TakeOrganizationForSelectorFromQueryParams = takeOrganizationForSelectorFromQueryParams;
     MasterPeriodBasedOnOrganizationPeriods     = masterPeriodBasedOnOrganizationPeriods;
 }
        protected override void ValidateFinPeriodsStatus(PXCache sender, object row, string finPeriodID, ICalendarOrganizationIDProvider calendarOrganizationIDProvider)
        {
            FASetup setup = PXSetupOptional <FASetup> .Select(sender.Graph);

            if (setup == null || setup.UpdateGL == true)
            {
                base.ValidateFinPeriodsStatus(sender, row, finPeriodID, calendarOrganizationIDProvider);
            }
        }
        public static ValidationResult ValidateRowLevelSources(
            ICalendarOrganizationIDProvider calendarOrganizationIDProvider,
            PXCache cache,
            object row,
            Func <int?, bool?> /*<Calendar OrganizationID, result>*/ validationDelegate,
            bool skipMain = false)
        {
            ValidationResult result = new ValidationResult();

            List <CalendarOrganizationIDProvider.KeyWithSourceValues> branchValues =
                calendarOrganizationIDProvider.GetSourcesSpecification(cache, row).SpecificationItems
                .Where(specification => !specification.IsMain || !skipMain)
                .Select(specification => calendarOrganizationIDProvider.GetBranchIDsValueFromField(cache.Graph, cache, row, specification))
                .ToList();

            foreach (CalendarOrganizationIDProvider.KeyWithSourceValues branchValue in branchValues)
            {
                bool hasError = false;

                foreach (int?branchID in branchValue.SourceBranchIDs)
                {
                    if (branchID == null)
                    {
                        continue;
                    }

                    bool branchError    = false;
                    int? organizationID = PXAccess.GetParentOrganizationID(branchID);

                    if (!result.OrganizationIDsWithErrors.Contains(organizationID))
                    {
                        if (validationDelegate(organizationID) == false)
                        {
                            result.OrganizationIDsWithErrors.Add(organizationID);
                            branchError = true;
                            hasError    = true;
                        }
                    }
                    else
                    {
                        branchError = true;
                        hasError    = true;
                    }

                    if (branchError)
                    {
                        if (!result.BranchIDsWithErrors.Contains(branchID))
                        {
                            result.BranchIDsWithErrors.Add(branchID);
                        }
                    }
                }

                if (hasError)
                {
                    result.BranchValuesWithErrors.Add(branchValue);
                }
            }

            return(result);
        }