|
declare default element namespace 'http://пф.рф/ВС/СЗВ-М/2017-01-01';
|
|
declare namespace УТ = "http://пф.рф/унифицированныеТипы/2014-01-01";
|
|
declare namespace АФ = "http://пф.рф/АФ";
|
|
declare namespace АФ3 = "http://пф.рф/АФ/2017-01-01";
|
|
declare variable $document as document-node() external;
|
|
declare variable $root := $document/ЭДПФР;
|
|
declare variable $szv:=$root/СЗВ-М;
|
|
declare variable $innArray:=$root/СЗВ-М/СписокЗЛ//ИНН;
|
|
declare function local:result($path as xs:string, $expected as xs:anyAtomicType, $objectName as xs:string, $objectValue as xs:anyAtomicType) as node()
|
|
{
|
|
|
|
if ($path = '0') then
|
|
element {xs:QName("Результат")}
|
|
{
|
|
$path
|
|
}
|
|
else
|
|
element {xs:QName("Результат")}
|
|
{
|
|
element {xs:QName("ПутьДоЭлемента")}
|
|
{
|
|
$path
|
|
},
|
|
element {xs:QName("ОжидаемоеЗначение")}
|
|
{
|
|
$expected
|
|
},
|
|
element {xs:QName("Объект")}
|
|
{
|
|
element {xs:QName("Наименование")}
|
|
{
|
|
$objectName
|
|
},
|
|
element {xs:QName("Значение")}
|
|
{
|
|
$objectValue
|
|
}
|
|
}
|
|
}
|
|
|
|
};
|
|
declare function local:all-whitespace($arg as xs:string?) as xs:boolean
|
|
{
|
|
|
|
normalize-space($arg) = ''
|
|
|
|
};
|
|
declare function local:isEmpty($element) as xs:boolean
|
|
{
|
|
|
|
local:all-whitespace(string($element))
|
|
|
|
};
|
|
declare function local:notExistsOrEmpty($element) as xs:boolean
|
|
{
|
|
|
|
not(exists($element)) or local:isEmpty($element)
|
|
|
|
};
|
|
declare function local:repeat-string($stringToRepeat as xs:string?, $count as xs:integer) as xs:string
|
|
{
|
|
|
|
string-join((for $i in 1 to $count return $stringToRepeat),'')
|
|
|
|
};
|
|
declare function local:pad-integer-to-length($integerToPad as xs:anyAtomicType?, $length as xs:integer) as xs:string
|
|
{
|
|
|
|
concat(local:repeat-string('0',$length - string-length(string($integerToPad))),string($integerToPad))
|
|
|
|
};
|
|
declare function local:createDate($year as xs:anyAtomicType?, $month as xs:anyAtomicType?, $day as xs:anyAtomicType?) as xs:date
|
|
{
|
|
|
|
xs:date(format-number(number($year),'0000')||'-'||format-number(number($month),'00')||'-'||format-number(number($day),'00'))
|
|
|
|
};
|
|
declare function local:getResult($res as item()*) as item()*
|
|
{
|
|
if (exists($res)) then $res else local:result('0','','','')
|
|
};
|
|
<БлокПроверок ID="ВСЗЛ.СЗВ-М.1" name="Блок проверок сведений о застрахованных лицах">
|
|
<Проверка ID="2">
|
|
<Описание>Элемент ИНН застрахованного лица должен быть заполнен</Описание>
|
|
<РезультатЗапроса>
|
|
{
|
|
local:getResult(
|
|
for $zl at $idx in $szv/СписокЗЛ/ЗЛ
|
|
return if (not(local:notExistsOrEmpty($zl/ИНН))) then ()
|
|
else local:result(concat('ЭДПФР/СЗВ-М/СписокЗЛ/ЗЛ[',$idx,']'),'','','')
|
|
)}
|
|
</РезультатЗапроса>
|
|
<КодРезультата>20</КодРезультата>
|
|
</Проверка>
|
|
<Проверка ID="3">
|
|
<Описание>Период представления СЗВ-М должен быть не ранее апреля 2016 года</Описание>
|
|
<РезультатЗапроса>
|
|
{
|
|
local:getResult(
|
|
let $dt := local:createDate($szv/ОтчетныйПериод/КалендарныйГод, $szv/ОтчетныйПериод/Месяц, 1)
|
|
let $limitDate := xs:date('2016-04-01')
|
|
return if ($dt < $limitDate) then local:result('ЭДПФР/СЗВ-М/ОтчетныйПериод','','','')
|
|
else ()
|
|
)}
|
|
</РезультатЗапроса>
|
|
<КодРезультата>50</КодРезультата>
|
|
</Проверка>
|
|
<Проверка ID="4">
|
|
<Описание>Для всех типов форм СЗВ-М отчетный период, за который подается форма, должен быть меньше либо равен месяцу, в котором проводится проверка</Описание>
|
|
<РезультатЗапроса>
|
|
{
|
|
local:getResult(
|
|
let $month := xs:integer($szv/ОтчетныйПериод/Месяц)
|
|
let $year := xs:integer($szv/ОтчетныйПериод/КалендарныйГод)
|
|
let $limitDate := xs:date(current-dateTime() + xs:dayTimeDuration('PT9H'))
|
|
let $limitMonth := month-from-date($limitDate)
|
|
let $limitYear := year-from-date($limitDate)
|
|
return if ($year < $limitYear or ($year = $limitYear and $month <= $limitMonth)) then ()
|
|
else local:result('ЭДПФР/СЗВ-М/ОтчетныйПериод','','','')
|
|
)}
|
|
</РезультатЗапроса>
|
|
<КодРезультата>50</КодРезультата>
|
|
</Проверка>
|
|
</БлокПроверок>
|
|
|