/// <summary> /// Check All Organizations & Set Error to FinPeriod Field /// </summary> private void ValidateRelatedToMainFinPeriods(PXCache cache, object oldRow, object newRow, bool externalCall, int?newMainCalendarOrgID, int?oldMainCalendarOrgID, FinPeriod newMainOrgFinPeriod) { string oldMainOrgFinPeriodID = (string)cache.GetValue(oldRow, _FieldName); FinPeriod oldMainOrgFinPeriod = FinPeriodRepository.FindByID(oldMainCalendarOrgID, oldMainOrgFinPeriodID); if (newMainOrgFinPeriod.MasterFinPeriodID != oldMainOrgFinPeriod?.MasterFinPeriodID) { HashSet <int?> usedOrgIDs = new HashSet <int?>(); if (IsHeader) { usedOrgIDs.AddRange(CalendarOrganizationIDProvider.GetDetailOrganizationIDs(cache.Graph)); } if (!usedOrgIDs.Any()) { return; } ProcessingResult existenceValidationResult = FinPeriodRepository.FinPeriodsForMasterExist(newMainOrgFinPeriod.MasterFinPeriodID, usedOrgIDs.ToArray()); if (!existenceValidationResult.IsSuccess) { SetErrorAndResetForMainFields(cache, oldRow, newRow, oldMainCalendarOrgID, newMainCalendarOrgID, externalCall, new PXSetPropertyException(existenceValidationResult.GeneralMessage)); } } }
public virtual string CalcFinPeriodIDForMaster(PXCache cache, object row, string masterFinPeriodID) { return(FinPeriodRepository .GetFinPeriodByMasterPeriodID( CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, row), masterFinPeriodID) .Result ?.FinPeriodID); }
public FinPeriodIDAttribute( Type sourceType = null, Type branchSourceType = null, Type branchSourceFormulaType = null, Type organizationSourceType = null, Type useMasterCalendarSourceType = null, Type defaultType = null, bool redefaultOrRevalidateOnOrganizationSourceUpdated = true, bool useMasterOrganizationIDByDefault = false, Type[] sourceSpecificationTypes = null, Type masterFinPeriodIDType = null, Type headerMasterFinPeriodIDType = null, bool filterByOrganizationID = true, bool redefaultOnDateChanged = true) : base( dateType: sourceType, searchByDateType: typeof(Search <FinPeriod.finPeriodID, Where <FinPeriod.startDate, LessEqual <Current2 <QueryParams.sourceDate> >, And <FinPeriod.endDate, Greater <Current2 <QueryParams.sourceDate> > > > >), defaultType: defaultType, redefaultOrRevalidateOnOrganizationSourceUpdated: redefaultOrRevalidateOnOrganizationSourceUpdated, filterByOrganizationID: true, useMasterOrganizationIDByDefault: useMasterOrganizationIDByDefault, redefaultOnDateChanged: redefaultOnDateChanged) { HeaderFindingMode = HeaderFindingModes.Current; CalculatePeriodByHeader = true; AutoCalculateMasterPeriod = true; MasterFinPeriodIDType = masterFinPeriodIDType; HeaderMasterFinPeriodIDType = headerMasterFinPeriodIDType; FilterByOrganizationID = filterByOrganizationID; UseMasterOrganizationIDByDefault = useMasterOrganizationIDByDefault; UseMasterCalendarSourceType = useMasterCalendarSourceType; RedefaultOrRevalidateOnOrganizationSourceUpdated = redefaultOrRevalidateOnOrganizationSourceUpdated; PeriodKeyProvider = CalendarOrganizationIDProvider = new CalendarOrganizationIDProvider( new PeriodKeyProviderBase.SourcesSpecificationCollection() { SpecificationItems = new PeriodKeyProviderBase.SourceSpecificationItem() { BranchSourceType = branchSourceType, BranchSourceFormulaType = branchSourceFormulaType, OrganizationSourceType = organizationSourceType, }.SingleToList() }, sourceSpecificationTypes: sourceSpecificationTypes, useMasterCalendarSourceType: useMasterCalendarSourceType, useMasterOrganizationIDByDefault: useMasterOrganizationIDByDefault); }
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); } }
protected virtual FinPeriod GetAndValidateMainFinPeriod(PXCache cache, object oldRow, object newRow, bool externalCall) { int?newMainCalendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, newRow); int?oldMainCalendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, oldRow); string newMainOrgFinPeriodID = null; FinPeriod newMainOrgFinPeriod = null; newMainOrgFinPeriodID = (string)cache.GetValue(newRow, _FieldName); if (newMainOrgFinPeriodID == null) { return(null); } newMainOrgFinPeriod = FinPeriodRepository.FindByID(newMainCalendarOrgID, newMainOrgFinPeriodID); if (newMainOrgFinPeriod == null) { string errorMessage = null; if (newMainCalendarOrgID == FinPeriod.organizationID.MasterValue) { errorMessage = PXMessages.LocalizeFormatNoPrefix(Messages.MasterFinPeriodDoesNotExist, FormatForError(newMainOrgFinPeriodID)); } else { errorMessage = PXMessages.LocalizeFormatNoPrefix( Messages.FinPeriodDoesNotExistForCompany, FormatForError(newMainOrgFinPeriodID), PXAccess.GetOrganizationCD(newMainCalendarOrgID)); } SetErrorAndResetForMainFields(cache, oldRow, newRow, oldMainCalendarOrgID, newMainCalendarOrgID, externalCall, new PXSetPropertyException(errorMessage)); return(null); } return(newMainOrgFinPeriod); }
protected override void RedefaultPeriodID(PXCache cache, object row) { if (HeaderMasterFinPeriodIDType != null) { if (CalculatePeriodByHeader) { string newFinPeriodID = null; int?calendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, row); if (calendarOrgID != null) { FinPeriod orgFinPeriod = FinPeriodRepository.GetFinPeriodByMasterPeriodID( calendarOrgID, GetHeaderMasterFinPeriodID(cache, row)) .Result; if (orgFinPeriod != null) { newFinPeriodID = FormatForDisplay(orgFinPeriod.FinPeriodID); } } cache.SetValueExt(row, _FieldName, newFinPeriodID); } } else { base.RedefaultPeriodID(cache, row); if (AutoCalculateMasterPeriod) { SetMasterPeriodID(cache, row); } } }
public virtual string CalcMasterPeriodID(PXCache cache, object row) { string finPeriodID; finPeriodID = (string)cache.GetValue(row, _FieldName); int?calendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(cache.Graph, cache, row); if (calendarOrgID == FinPeriod.organizationID.MasterValue) { return(finPeriodID); } string masterFinPeriodID = null; if (finPeriodID != null) { FinPeriod orgFinPeriod = FinPeriodRepository.FindByID(calendarOrgID, finPeriodID); masterFinPeriodID = orgFinPeriod?.MasterFinPeriodID; } return(masterFinPeriodID); }
public override void FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e) { SetUseMasterCalendarValue(sender, e.Row); if (HeaderMasterFinPeriodIDType != null && CalculatePeriodByHeader) { int?calendarOrgID = CalendarOrganizationIDProvider.GetCalendarOrganizationID(sender.Graph, sender, e.Row); FinPeriod orgFinPeriod = FinPeriodRepository.GetFinPeriodByMasterPeriodID( calendarOrgID, GetHeaderMasterFinPeriodID(sender, e.Row)) .Result; if (orgFinPeriod != null) { e.NewValue = FormatForDisplay(orgFinPeriod.FinPeriodID); } } else { base.FieldDefaulting(sender, e); } }