Стартовый, 1 напр.
This commit is contained in:
@@ -120,6 +120,9 @@ public class Main implements Runnable {
|
|||||||
else if (data.getTarif().equals("Клиент АЦ")) {
|
else if (data.getTarif().equals("Клиент АЦ")) {
|
||||||
tarif_AC(astral, organization, data);
|
tarif_AC(astral, organization, data);
|
||||||
}
|
}
|
||||||
|
else if (data.getTarif().equals("Стартовый, 1 направ.")) {
|
||||||
|
tarif_Start(astral, organization, data);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
logger.info("Не задана логика для тарифа: \"{}\"", data.getTarif());
|
logger.info("Не задана логика для тарифа: \"{}\"", data.getTarif());
|
||||||
}
|
}
|
||||||
@@ -213,7 +216,7 @@ public class Main implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Step III: Проверяем кол-во Направлений
|
// Step III: Проверяем кол-во Направлений
|
||||||
if (!calcRecipients(product, data)) { //TODO надо проверять по категориям
|
if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям
|
||||||
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
|
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -244,7 +247,7 @@ public class Main implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Step II: Проверяем кол-во Направлений
|
// Step II: Проверяем кол-во Направлений
|
||||||
if (!calcRecipients(product, data)) { //TODO надо проверять по категориям
|
if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям
|
||||||
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
|
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -332,7 +335,38 @@ public class Main implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean calcRecipients(Product product, ExcelDataRow data) {
|
// Тариф: Стартовый, 1 направ.
|
||||||
|
private void tarif_Start(AstralSession astral, Organization organization, ExcelDataRow data) {
|
||||||
|
// Step 0: Количество доступных продуктов
|
||||||
|
if (organization.products.size() == 0) {
|
||||||
|
logger.warn("({}/{}): Нет доступных продуктов!", organization.inn, organization.kpp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step I: Проверяем разницу дат.
|
||||||
|
// Сертификат должен быть выдан в тот же день или позже, чем тариф
|
||||||
|
Product product = organization.products.get(0);
|
||||||
|
Tarif tarif = product.contractTariffs.get(0);
|
||||||
|
if (product.certs.size() > 1) {
|
||||||
|
logger.warn("({}/{}): Обнаружено более 1 сертификата!", organization.inn, organization.kpp);
|
||||||
|
}
|
||||||
|
Cert cert = product.certs.get(0);
|
||||||
|
|
||||||
|
long tarifDateLong = tarif.date_initialDate.getTime();
|
||||||
|
long certDateLong = cert.startCertDate.getTime();
|
||||||
|
|
||||||
|
if (certDateLong < tarifDateLong) {
|
||||||
|
logger.error("({}/{}): Ошибка: сертификат выдан раньше тарифа!", organization.inn, organization.kpp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Step II: Проверяем кол-во Направлений
|
||||||
|
if (!calcRecipients1(product, data)) { //TODO надо проверять по категориям
|
||||||
|
logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean calcRecipients4(Product product, ExcelDataRow data) {
|
||||||
int countFNS = 0,
|
int countFNS = 0,
|
||||||
countFSS = 0,
|
countFSS = 0,
|
||||||
countRosstat = 0,
|
countRosstat = 0,
|
||||||
@@ -418,6 +452,49 @@ public class Main implements Runnable {
|
|||||||
return boolFNS && boolFSS && boolRosstat && boolPFR && boolRosalco && boolRPN;
|
return boolFNS && boolFSS && boolRosstat && boolPFR && boolRosalco && boolRPN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean calcRecipients1(Product product, ExcelDataRow data) {
|
||||||
|
int countFNS = 0,
|
||||||
|
countFSS = 0,
|
||||||
|
countRosstat = 0,
|
||||||
|
countPFR = 0,
|
||||||
|
countRosalco = 0,
|
||||||
|
countRPN = 0;
|
||||||
|
|
||||||
|
for (Recipient recipient : product.recipients) {
|
||||||
|
switch (recipient.protocolId) {
|
||||||
|
case 12:
|
||||||
|
case 10: break;
|
||||||
|
case 6:
|
||||||
|
case 13:
|
||||||
|
countFNS += (recipient.kpp.size() > 0 ? recipient.kpp.size() : 1);
|
||||||
|
break;
|
||||||
|
case 5: countFSS++; break;
|
||||||
|
case 4: countRosstat++; break;
|
||||||
|
case 2: countPFR++; break;
|
||||||
|
case 9: countRosalco++; break;
|
||||||
|
case 15: countRPN++; break;
|
||||||
|
default: logger.warn("Не известный тип Направления: {}/{}/{}", recipient.protocolId, recipient.code, recipient.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean boolFNS = (countFNS == 0 || countFNS == 1 + data.getAddonKpp());
|
||||||
|
if (countFNS == 0 && data.getAddonKpp() > 0) {
|
||||||
|
logger.warn("({}/{}): Внимание! Странное значение ФНС/Доп.КПП", data.getInn(), data.getInn());
|
||||||
|
}
|
||||||
|
boolean boolFSS = (countFSS == 0 || countFSS == 1);
|
||||||
|
boolean boolRosstat = (countRosstat == 0 || countRosstat == 1);
|
||||||
|
boolean boolPFR = (countPFR == 0 || countPFR == 1);
|
||||||
|
|
||||||
|
if (countFNS + countFSS + countRosstat + countPFR > 1 + data.getAddonKpp() + data.getAddonNaprov()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean boolRosalco = (countRosalco == 0 || countRosalco == 1);
|
||||||
|
boolean boolRPN = (countRPN == 0 || countRPN == 1);
|
||||||
|
|
||||||
|
return boolFNS && boolFSS && boolRosstat && boolPFR && boolRosalco && boolRPN;
|
||||||
|
}
|
||||||
|
|
||||||
private int countActiveCert(JsonObject historyCert) {
|
private int countActiveCert(JsonObject historyCert) {
|
||||||
JsonArray rows = historyCert.get("rows").getAsJsonArray();
|
JsonArray rows = historyCert.get("rows").getAsJsonArray();
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user