Exemplo n.º 1
0
 public object GetOrganizationIDByCD(object organizationCD)
 {
     return(PXAccess.GetOrganizationID((string)organizationCD));
 }
        protected virtual IEnumerable Cancel(PXAdapter a)
        {
            string organizationCD;
            string yearNumber;

            if (NewCalendarParams.View.Answer == WebDialogResult.None)             // First outer call
            {
                FinYearKey storedYearKey = new FinYearKey
                {
                    OrganizationID = OrgFinYear.Current?.OrganizationID,
                    Year           = OrgFinYear.Current?.Year
                };

                #region Deliberate Technomagic. Copy-pasted fron base PXCancel instead invocation
                Clear();
                SelectTimeStamp();
                #endregion

                StoredYearKey.Cache.Clear();
                StoredYearKey.Insert(storedYearKey);
                StoredYearKey.Cache.IsDirty = false;

                organizationCD = (string)a.Searches.GetSearchValueByPosition(0);
                if (organizationCD == null)
                {
                    yield break;
                }
                yearNumber = (string)a.Searches.GetSearchValueByPosition(1);
            }
            else             // Second call after SmartPanel closing
            {
                object       extValue = NewCalendarParams.Cache.GetValueExt <NewOrganizationCalendarParameters.organizationID>(NewCalendarParams.Current);
                PXFieldState state    = extValue as PXFieldState;
                organizationCD = state != null ? (string)state.Value : (string)extValue;
                yearNumber     = NewCalendarParams.Current.StartYear;
            }

            OrganizationFinYear targetYear = PXSelectJoin <
                OrganizationFinYear,
                InnerJoin <Organization,
                           On <OrganizationFinYear.organizationID, Equal <Organization.organizationID> > >,
                Where <Organization.organizationCD, Equal <Required <Organization.organizationCD> >,
                       And <OrganizationFinYear.year, Equal <Required <OrganizationFinYear.year> > > > >
                                             .SelectSingleBound(this, new object[] { }, organizationCD, yearNumber);

            OrganizationFinYear returnYear = null;
            if (targetYear == null)
            {
                OrganizationFinYear lastYear = LastOrganizationYear.SelectSingle(organizationCD);

                if (lastYear == null)
                {
                    if (NewCalendarParams.AskExtFullyValid((graph, viewName) =>
                    {
                        NewCalendarParams.Current.OrganizationID = PXAccess.GetOrganizationID(organizationCD);
                    },
                                                           DialogAnswerType.Positive))
                    {
                        OrganizationFinYear generatedFinYear;
                        using (PXTransactionScope ts = new PXTransactionScope())
                        {
                            generatedFinYear = GenerateSingleOrganizationFinYear(
                                (int)NewCalendarParams.Current.OrganizationID,
                                NewCalendarParams.Current.StartYear,
                                NewCalendarParams.Current.StartMasterFinPeriodID);
                            Actions.PressSave();
                            ts.Complete();
                        }
                        returnYear = generatedFinYear;
                    }
                    else
                    {
                        OrganizationFinYear storedYear = FinPeriodRepository.FindOrganizationFinYearByID(StoredYearKey.Current?.OrganizationID, StoredYearKey.Current?.Year);
                        returnYear = storedYear;
                    }
                }
                else
                {
                    returnYear = lastYear;
                }
            }
            else
            {
                returnYear = targetYear;
            }

            if (returnYear != null)
            {
                yield return(returnYear);
            }
            yield break;
        }