par:refPeriodStart

<variable:parameter xlink:type="resource" xlink:label="refPstart" id="refPstart" select="if (exists(//xbrli:period/xbrli:startDate)) then max(//xbrli:period/xbrli:startDate) else xsd:date('2016-01-01')" as="xsd:date" name="par:refPeriodStart"/>

Описание

Если  в  xbrl присутствует xbrli:startDate,  то берется максимальная дата xbrli:startDate
Если в  xbrl не присутствует xbrli:startDate, то берется дата 2016-01-01



par:refPeriodEnd

   <variable:parameter xlink:type="resource" xlink:label="refPend" id="refPend" select="if (exists(max(//xbrli:period/(xbrli:instant | xbrli:endDate)))) then max(//xbrli:period/(xbrli:instant | xbrli:endDate)) else xsd:date('2016-12-31')" as="xsd:date" name="par:refPeriodEnd" required="true"/> 

Если в  xbrl присутствует xbrli:instant | xbrli:endDate, то берется максимальная дата xbrli:instant | xbrli:endDate

Если в  xbrl не  присутствует xbrli:instant | xbrli:endDate, то берется  дата 2016-12-31



par:param_min1

  <variable:parameter xlink:type="resource" xlink:label="param_min1" id="param_min1" select="if ((fn:day-from-date($par:refPeriodEnd)=30) and (fn:month-from-date($par:refPeriodEnd)=6)) then ($par:refPeriodEnd - xsd:yearMonthDuration('P3M') + xsd:dayTimeDuration('P1D')) else ($par:refPeriodEnd - xsd:yearMonthDuration('P3M'))" as="xsd:date" name="par:param_min1"/> 

Если равняется  par:refPeriodEnd  = 30  и par:refPeriodEnd  = 6, то par:refPeriodEnd - 3 месяца плюс 1 день.

Если не равняется  par:refPeriodEnd  = 30  и par:refPeriodEnd  = 6, то par:refPeriodEnd минус 3 месяца

Пример:

  1. Дата refPeriodEnd = 2023-06-30 
    2023-06-30 минус 000-03-00 = 2023-03-30 
    2023-03-30 плюс 000-00-01 = 2023-03-31

  2.  Дата refPeriodEnd = 2023-07-31
     2023-07-31 минус 000-03-00 = 2023-04-30



par:param_min2

     <variable:parameter xlink:type="resource" xlink:label="param_min2" id="param_min2" select="if ((fn:day-from-date($par:refPeriodEnd)=30) and ((fn:month-from-date($par:refPeriodEnd)=6)or(fn:month-from-date($par:refPeriodEnd)=9))) then ($par:refPeriodEnd - xsd:yearMonthDuration('P6M') + xsd:dayTimeDuration('P1D')) else ($par:refPeriodEnd - xsd:yearMonthDuration('P6M'))" as="xsd:date" name="par:param_min2"/> 

Если равняется  par:refPeriodEnd  = 30  и par:refPeriodEnd  = 6, или par:refPeriodEnd  = 9,  то par:refPeriodEnd минус 6 месяца плюс 1 день.

Если не равняется par:refPeriodEnd  = 30  и par:refPeriodEnd  = 6, или par:refPeriodEnd  = 9, то par:refPeriodEnd минус 6 месяца 


par:param_min3

     <variable:parameter xlink:type="resource" xlink:label="param_min3" id="param_min3" select="if ((fn:day-from-date($par:refPeriodEnd)=30) and (fn:month-from-date($par:refPeriodEnd)=9)) then ($par:refPeriodEnd - xsd:yearMonthDuration('P9M') + xsd:dayTimeDuration('P1D')) else ($par:refPeriodEnd - xsd:yearMonthDuration('P9M'))" as="xsd:date" name="par:param_min3"/> 

Если равняется  par:refPeriodEnd  = 30  и par:refPeriodEnd  = 9,  то par:refPeriodEnd минус 9  месяца плюс  1 день.

Если не равняется par:refPeriodEnd  = 30  и par:refPeriodEnd  = 9,  то par:refPeriodEnd минус 9  месяца


par:startMonth

 <variable:parameter xlink:type="resource" xlink:label="startMonth" id="startMonth" select="if ((fn:month-from-date($par:refPeriodEnd)=1) or (fn:month-from-date($par:refPeriodEnd)=3) or (fn:month-from-date($par:refPeriodEnd)=5) or (fn:month-from-date($par:refPeriodEnd)=7) or (fn:month-from-date($par:refPeriodEnd)=8) or (fn:month-from-date($par:refPeriodEnd)=10) or (fn:month-from-date($par:refPeriodEnd)=12)) then ($par:refPeriodEnd - xsd:yearMonthDuration('P1M'))else ($par:refPeriodEnd - xsd:yearMonthDuration('P1M') + xsd:dayTimeDuration(fn:concat('P',xsd:string(31-fn:day-from-date($par:refPeriodEnd)),'D')))" as="xsd:date" name="par:startMonth"/> 

Если равняется  par:refPeriodEnd  = 1  или par:refPeriodEnd  = 3,  или par:refPeriodEnd  = 5  или par:refPeriodEnd  = 7  или par:refPeriodEnd  = 8  или par:refPeriodEnd  = 10  или par:refPeriodEnd  = 12  то par:refPeriodEnd минус 1  месяц

Если не равняется par:refPeriodEnd  = 1  или par:refPeriodEnd  = 3,  или par:refPeriodEnd  = 5  или par:refPeriodEnd  = 7  или par:refPeriodEnd  = 8  или par:refPeriodEnd  = 10  или par:refPeriodEnd  = 12,  то par:refPeriodEnd минус 1  месяц + дней до 31 числа


par:startQuart

  <variable:parameter xlink:type="resource" xlink:label="startQuart" id="startQuart" select="if ((fn:month-from-date($par:refPeriodEnd)=3) or (fn:month-from-date($par:refPeriodEnd)=12) or (fn:month-from-date($par:refPeriodEnd)=9)) then ($par:refPeriodEnd - xsd:yearMonthDuration('P3M')) else ($par:refPeriodEnd - xsd:yearMonthDuration('P3M') + xsd:dayTimeDuration('P1D'))" as="xsd:date" name="par:startQuart"/> 
Если равняется  par:refPeriodEnd  = 1  или par:refPeriodEnd  = 3,  или par:refPeriodEnd  = 12  или par:refPeriodEnd  = 9,  то par:refPeriodEnd минус 3 месяца

Если не равняется  par:refPeriodEnd  = 1  или par:refPeriodEnd  = 3,  или par:refPeriodEnd  = 12  или par:refPeriodEnd  = 9,  то par:refPeriodEnd минус 3  месяца плюс 1 дней


par:startRepYear

    <variable:parameter xlink:type="resource" xlink:label="startRepYear" id="startRepYear" select="xsd:date(fn:concat(xsd:string(fn:year-from-date($par:refPeriodEnd) - 1),'-12-31'))" as="xsd:date" name="par:startRepYear"/>
 par:refPeriodEnd   = минус 1 год, маска  12 месяцев, 31 день.
 т.е  2023-12-31 преобразуется в 2022-12-31


par:CurrentPeriodStart

    <variable:parameter xlink:type="resource" xlink:label="CPstart" id="CPstart" select="xsd:date($par:refPeriodStart)" as="xsd:date" name="par:CurrentPeriodStart"/>
 par:CurrentPeriodStart равняется par:refPeriodStart 


par:CurrentPeriodEnd

 <variable:parameter xlink:type="resource" xlink:label="CPend" id="CPend" select="xsd:date($par:refPeriodEnd)" as="xsd:date" name="par:CurrentPeriodEnd"/>
 par:CurrentPeriodEnd равняется par:refPeriodEnd 


par:PriorPeriod-1Start

   <variable:parameter xlink:type="resource" xlink:label="PP-1start" id="PP-1start" select="xsd:date($par:CurrentPeriodStart) - xsd:yearMonthDuration('P1Y')" as="xsd:date" name="par:PriorPeriod-1Start"/> 

par:PriorPeriod-1Start = par:CurrentPeriodStart минус 1 год


par:PriorPeriod-1End

    <variable:parameter xlink:type="resource" xlink:label="PP-1end" id="PP-1end" select="xsd:date($par:CurrentPeriodStart)" as="xsd:date" name="par:PriorPeriod-1End"/>

par:PriorPeriod-1End = par:CurrentPeriodStart


par:PriorPeriod-2Start

     <variable:parameter xlink:type="resource" xlink:label="PP-2start" id="PP-2start" select="xsd:date($par:CurrentPeriodStart) - xsd:yearMonthDuration(if($par:ReportingPeriodScope eq 'I') then 'P1Y' else 'P2Y')" as="xsd:date" name="par:PriorPeriod-2Start"/>

par:PriorPeriod-2Start" = если месяц равен первому кварталу, то минус год если не равен первому кварталу, то минус 2 года 


par:RegStartInsYear-1End

       <variable:parameter xlink:type="resource" xlink:label="RegStartInsYear-1End" id="RegStartInsYear-1End" select="xsd:date(fn:concat(xsd:string(fn:year-from-date($par:refPeriodEnd) - 2),'-12-31'))" as="xsd:date" name="par:RegStartInsYear-1End"/> 

RegStartInsYear-1End = par:refPeriodEnd минус 2 года,  12 месяцев и 31 день

 т.е  2023-12-31 преобразуется в 2021-12-31


par:RegStartDurYear-1End

   <variable:parameter xlink:type="resource" xlink:label="RegStartDurYear-1End" id="RegStartDurYear-1End" select="xsd:date(fn:concat(xsd:string(fn:year-from-date($par:refPeriodEnd) - 2),'-12-31')) + xsd:dayTimeDuration('P1D')" as="xsd:date" name="par:RegStartDurYear-1End"/> 

RegStartDurYear-1End = par:refPeriodEnd минус 2 года,  маска 12 месяцев и 31 день плюс 1 день

 т.е  2023-12-31 преобразуется в 2021-12-31 + 1 день  = 2022-01-01


par:RegStartInsQuart-1End

   <variable:parameter xlink:type="resource" xlink:label="RegStartInsQuart-1End" id="RegStartInsQuart-1End" select="if(fn:month-from-date($par:refPeriodEnd)>5) then xsd:date(fn:concat(xsd:string(fn:year-from-date($par:startQuart)-1),'-0',xsd:string(fn:month-from-date($par:startQuart)),'-',xsd:string(fn:day-from-date($par:startQuart)))) else xsd:date(fn:concat(xsd:string(fn:year-from-date($par:startQuart)-1),'-',xsd:string(fn:month-from-date($par:startQuart)),'-',xsd:string(fn:day-from-date($par:startQuart))))" as="xsd:date" name="par:RegStartInsQuart-1End"/>

RegStartDurYear-1End = если par:refPeriodEnd  больше 5,  то минус 1 квартал и на конце 0. 
 если на 31 попадет, то число будет 30, а не 31. 

Если RegStartDurYear-1End = если par:refPeriodEnd  меньше 5, то минус 1 квартал.


par:RegStartInsYear

   <variable:parameter xlink:type="resource" xlink:label="RegStartInsYear" id="RegStartInsYear" select="xsd:date(fn:concat(xsd:string(fn:year-from-date($par:refPeriodEnd) - 1),'-12-31'))" as="xsd:date" name="par:RegStartInsYear"/> 

par:RegStartInsYear = par:refPeriodEnd минус 1 года, маска  12 месяцев и 31 день

т.е 2023-12-31 преобразуется в 2022-12-31


par:RegStartDurYear

<variable:parameter xlink:type="resource" xlink:label="RegStartDurYear" id="RegStartDurYear" select="xsd:date(fn:concat(xsd:string(fn:year-from-date($par:refPeriodEnd) - 1),'-12-31')) + xsd:dayTimeDuration('P1D')" as="xsd:date" name="par:RegStartDurYear"/>

par:RegStartInsYear = par:refPeriodEnd минус 1 года, +1 день  маска  12 месяцев и 31 день

т.е 2023-12-31  преобразуется в 2023-01-01


par:RegStartInsQuart

<variable:parameter xlink:type="resource" xlink:label="RegStartInsQuart" id="RegStartInsQuart" select="if ((fn:month-from-date($par:refPeriodEnd)=3) or (fn:month-from-date($par:refPeriodEnd)=12) or (fn:month-from-date($par:refPeriodEnd)=9)) then ($par:refPeriodEnd - xsd:yearMonthDuration('P3M')) else ($par:refPeriodEnd - xsd:yearMonthDuration('P3M') + xsd:dayTimeDuration('P1D'))" as="xsd:date" name="par:RegStartInsQuart"/>

Если par:RegStartInsQuart равняется   par:refPeriodEnd = 3 или 12 или 9, то par:refPeriodEnd минус 3 месяца

Если par:RegStartInsQuart не равняется par:refPeriodEnd = 3 или 12 или 9, то par:refPeriodEnd минус 3 месяца +1 день


par:RegStartInsQuart

<<variable:parameter xlink:type="resource" xlink:label="RegStartDurQuart" id="RegStartDurQuart" select="xsd:date($par:RegStartInsQuart) + xsd:dayTimeDuration('P1D')" as="xsd:date" name="par:RegStartDurQuart"/>
  </gen:link>

par:RegStartDurQuart = par:RegStartInsQuart + 1 день



  • No labels