Tabel openstaande posten Exact Online per peildatum

Het ging om per periode orde van grootte honderdduizenden of meer aan posten verspreid over veel vennootschappen.

Complicerende factor is dat de view AROutstandingItemsPerFinancialPeriodUltimo niet parallel verwerkt wordt, maar per vennootschap. De reguliere 8-voudige verwerkingscapaciteit wordt hierdoor niet benut. Om toch parallel Exact Online te kunnen uitlezen wordt rechtstreeks gebruik gemaakt van de tabel AROutstandingItemsEx. Hiervoor is een peildatum nodig.

Niet alle vennootschappen hebben dezelfde periodekalender, maar voor de relevante is dat wel het geval: boekjaar van 1-1 t/m 31-12, met elke kalendermaand een periode.

De volgende view maakt een overzicht van alle administraties die deze periodekalender voeren:

create or replace view FinPeriodsStandardBase
as
select *
from   finperiods@eol
where  finyear_number_attr = year(trunc(sysdateutc))
and    number_attr=1
and    day(datestart) = 1
and    month(datestart) = 1
and    day(dateend) = 31
and    month(dateend) = 1

De volgende view selecteert de reguliere periodekalender, en laat alles wat gaat over de vennootschap achterwege. Er zullen dus 12 rijen voor elk kalenderjaar in zitten:

create or replace view FinPeriodsStandard
as
select finyear_number_attr
,      number_attr
,      datestart
,      dateend
from   FinPeriods@eol
where  division_code = ( select /*+ low_cost */ min(division_code) from   FinPeriodsStandardBase )
and    finyear_number_attr >= 2021
and    finyear_number_attr <= year(trunc(sysdateutc))

De volgende view beschrijft van welke vennootschapen de gegevens achterwege mogen blijven:

create or replace view CompaniesToIgnore
as
select code
,      name
from   SystemPartitions@DataDictionary
where  is_selected = true
and    code not in ( select /*+ low_cost */ distinct division_code from FinPeriodsStandardBase )

Tenslotte kan met de volgende query met parallelle uitvoering de lijst van openstaande posten opgevraagd worden:

create or replace view OpenstaandePostenRegulierSchema
as
select aom.*
from   ( select * from FinPeriodsStandard limit 12 ) fpd
join   AROutstandingItemsEx(Params_RefDate => fpd.dateend) aom
on     aom.division_code not in ( select /*+ low_cost */ code from CompaniesToIgnore )
```