public virtual OrganizationDependedPeriodKey GetFullKey(PXCache cache, object row)
        {
            OrganizationDependedPeriodKey key = PeriodKeyProvider.GetKey(cache.Graph, cache, row);

            key.PeriodID = (string)cache.GetValue(row, _FieldName);

            return(key);
        }
        protected virtual bool PeriodSourceFieldsEqual(PXCache cache, object oldRow, object newRow)
        {
            if (oldRow != null && newRow == null ||
                oldRow == null && newRow != null)
            {
                return(false);
            }

            string newOrgFinPeriodID = (string)cache.GetValue(newRow, _FieldName);
            string oldOrgFinPeriodID = (string)cache.GetValue(oldRow, _FieldName);

            return(PeriodKeyProvider.IsKeySourceValuesEquals(cache, oldRow, newRow) &&
                   newOrgFinPeriodID == oldOrgFinPeriodID);
        }
        public virtual void FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e)
        {
            GetFields(sender, e.Row);

            Type defaultType = DefaultTypeRestrictedByOrganization ?? DefaultType;

            if (defaultType != null && (_sourceDate != DateTime.MinValue ||
                                        (SourceType != null && (BranchSourceType != null || OrganizationSourceType != null))))
            {
                e.NewValue = (string)GetPeriod(sender.Graph,
                                               defaultType,
                                               new QueryParams()
                {
                    SourceDate = _sourceDate == DateTime.MinValue ? (DateTime?)null : _sourceDate
                },
                                               PeriodKeyProvider.GetKeyAsArrayOfObjects(sender.Graph, sender, e.Row),
                                               e.Row.SingleToListOrNull(),
                                               DefaultingQueryParametersDelegate);
            }
        }
 protected override object[] GetPeriodKey(PXCache cache, object row)
 {
     return(PeriodKeyProvider.GetKeyAsArrayOfObjects(cache.Graph, cache, row));
 }
 protected override bool IsSourcesValuesDefined(PXCache cache, object row)
 {
     return(base.IsSourcesValuesDefined(cache, row) &&
            PeriodKeyProvider.IsKeyDefined(cache.Graph, cache, row));
 }
        public override void CacheAttached(PXCache sender)
        {
            base.CacheAttached(sender);

            sender.Graph.RowPersisting.AddHandler(sender.GetItemType(), RowPersisting);

            if (PeriodKeyProvider != null)
            {
                HashSet <PXCache> subscribedCaches = new HashSet <PXCache>();

                foreach (CalendarOrganizationIDProvider.SourceSpecificationItem sourceSpecification in PeriodKeyProvider.GetSourceSpecificationItems(sender, null))
                {
                    SubscribeForSourceSpecificationItem(sender, subscribedCaches, sourceSpecification);
                }
            }
        }