protected virtual void SetUseMasterCalendarValue(PXCache sender, object row)
        {
            if (UseMasterCalendarSourceType == null)
            {
                return;
            }

            bool useMasterCalendarValue =
                CalendarOrganizationIDProvider.GetBranchIDsValueFromField(sender.Graph, sender, row,
                                                                          CalendarOrganizationIDProvider.GetSourcesSpecification(sender, row).MainSpecificationItem)
                .SourceBranchIDs.FirstOrDefault() == null &&
                CalendarOrganizationIDProvider.GetOrganizationIDsValueFromField(sender.Graph, sender, row,
                                                                                CalendarOrganizationIDProvider.GetSourcesSpecification(sender, row).MainSpecificationItem)
                .SourceOrganizationIDs.FirstOrDefault() == null;

            sender.SetValueExt(row,
                               UseMasterCalendarSourceType.Name,
                               useMasterCalendarValue);
        }
        protected override void ValidatePeriodAndSourcesImpl(PXCache cache, object oldRow, object newRow,
                                                             bool externalCall)
        {
            int?newMainCalendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, newRow);
            int?oldMainCalendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, oldRow);

            if (HeaderMasterFinPeriodIDType != null && CalculatePeriodByHeader)
            {
                if (newMainCalendarOrgID != oldMainCalendarOrgID)
                {
                    string headerMasterPeriodID = GetHeaderMasterFinPeriodID(cache, newRow);

                    if (headerMasterPeriodID != null)
                    {
                        ProcessingResult <FinPeriod> procResult = FinPeriodRepository.GetFinPeriodByMasterPeriodID(newMainCalendarOrgID, headerMasterPeriodID);

                        if (!procResult.IsSuccess)
                        {
                            SetErrorAndResetToOldForField(
                                cache,
                                oldRow,
                                newRow,
                                CalendarOrganizationIDProvider.GetSourcesSpecification(cache, newRow).MainSpecificationItem.BranchSourceType.Name,
                                new PXSetPropertyException(procResult.GetGeneralMessage()),
                                externalCall);
                        }
                    }
                }
            }
            else
            {
                FinPeriod newMainOrgFinPeriod = GetAndValidateMainFinPeriod(cache, oldRow, newRow, externalCall);

                if (newMainOrgFinPeriod == null)
                {
                    return;
                }

                ValidateRelatedToMainFinPeriods(cache, oldRow, newRow, externalCall, newMainCalendarOrgID, oldMainCalendarOrgID, newMainOrgFinPeriod);

                ValidateNotMainRowLevelSources(cache, oldRow, newRow, externalCall, newMainOrgFinPeriod);
            }
        }