graph TB;
A[Незаконное завладение имуществом?] -- Да --> B[С применением насилия или угрозы?]
B -- Да --> C[Группой лиц, рецидив, причинение вреда?]
B -- Нет --> D{Ст. 158}
C -- Да --> E{Ст. 161}
C -- Нет --> G{Ст. 162}
A -- Нет --> H[Нарушение обязательств возвращать имущество?]
H -- Нет --> I[Злоупотребление доверием/обман для получения имущества?]
I -- Да --> J{Ст. 159}
I -- Нет --> K[Хищение исторически, научно или художественно ценных предметов?]
K -- Да --> L{Ст. 164}
K -- Нет --> M[Присвоение или растрата?]
M -- Да --> N{Ст. 160}
M -- Нет --> O{Нет применимых статей}
H -- Да --> P{Ст. 163}
С начала проверяется, было ли незаконное завладение имуществом. Если да, то проверяется, было ли оно с применением насилия или угрозы. Если применялось насилие или угроза, проверяется участие группы лиц, рецидив или причинение вреда: если да, ст. 161, если нет - ст. 162. Если насилие или угроза не применялись, применяется ст. 158. Если незаконного завладения имуществом не было, проверяется, были ли нарушены обязательства по возврату имущества: если да, ст. 163. Если обязательства не нарушались, проверяется наличие злоупотребления доверием или обмана: если да, ст. 159. Если их не было, проверяется наличие хищения исторически, научно или художественно ценных предметов: если да, ст. 164. Если их не было, проверяется наличие присвоения или растраты: если да, ст. 160. Если и их не было, уголовные статьи с 158 по 164 не применяются.
function getApplicableArticles(caseFacts) {
let applicableArticles = [];
caseFacts.forEach(fact => {
if (fact.unlawfulDeprivationOfProperty) {
if (fact.immediateDangerToLife || fact.useOfForce) {
applicableArticles.push(161);
if (fact.groupConspiracy || fact.significantDamage) {
applicableArticles.push(162);
}
} else {
applicableArticles.push(158);
}
}
if (fact.unlawfulAquiring) {
applicableArticles.push(159);
}
if (fact.specialValueItemTheft) {
applicableArticles.push(164);
}
if (fact.personInPossessionOfProperty) {
applicableArticles.push(160);
}
});
return applicableArticles;
}