- Создатель Синицын Владислав (доб.130), отредактировано 22 июн. 2023
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 месяца
Пример:
- Дата refPeriodEnd = 2023-06-30
2023-06-30 минус 000-03-00 = 2023-03-30
2023-03-30 плюс 000-00-01 = 2023-03-31 - Дата 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 месяца плюс 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"/>
т.е 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:CurrentPeriodEnd
<variable:parameter xlink:type="resource" xlink:label="CPend" id="CPend" select="xsd:date($par:refPeriodEnd)" as="xsd:date" name="par:CurrentPeriodEnd"/>
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 день
- Нет меток