diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/AbstractTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/AbstractTarifProcessor.java index 2081c7b..fa651e0 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/AbstractTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/AbstractTarifProcessor.java @@ -9,10 +9,7 @@ import org.slf4j.LoggerFactory; import ru.dmitriymx.astralcheckreport.AstralSession; import ru.dmitriymx.astralcheckreport.ExcelDataRow; import ru.dmitriymx.astralcheckreport.Main; -import ru.dmitriymx.astralcheckreport.objects.Cert; -import ru.dmitriymx.astralcheckreport.objects.LeftObject; -import ru.dmitriymx.astralcheckreport.objects.Organization; -import ru.dmitriymx.astralcheckreport.objects.Product; +import ru.dmitriymx.astralcheckreport.objects.*; import java.util.List; @@ -45,7 +42,7 @@ public abstract class AbstractTarifProcessor { } } - protected int countActiveCert(List historyCert) { + int countActiveCert(List historyCert) { int result = 0; for (Cert cert : historyCert) { if (cert.endCertDate.after(Main.currentDate)) { @@ -56,5 +53,21 @@ public abstract class AbstractTarifProcessor { return result; } + boolean checkDateCert(Organization organization) { + 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); + + if (cert.startCertDate.before(tarif.date_initialDate)) { + logger.error("({}/{}): Ошибка: сертификат выдан раньше тарифа!", organization.inn, organization.kpp); + return false; + } + + return true; + } + protected abstract void process0(AstralSession astral, Organization organization, ExcelDataRow data); } diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/Akcia3MountTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/Akcia3MountTarifProcessor.java index 661ede6..74f52d9 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/Akcia3MountTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/Akcia3MountTarifProcessor.java @@ -52,18 +52,7 @@ public class Akcia3MountTarifProcessor extends AbstractTarifProcessor { // Step III: Проверяем разницу дат. // Сертификат должен быть выдан в тот же день или позже, чем тариф - 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; - } + checkDateCert(organization); } else { logger.trace("Тариф игнорируется: \"{}\"", tarif.name); diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/BasicTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/BasicTarifProcessor.java index 7779989..bd6f3f9 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/BasicTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/BasicTarifProcessor.java @@ -20,22 +20,10 @@ public class BasicTarifProcessor extends AbstractTarifProcessor { protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) { // 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; - } + if (!checkDateCert(organization)) return; // Step II: Проверяем кол-во Направлений + Product product = organization.products.get(0); if (!calcRecipients2(product, data)) { //TODO надо проверять по категориям logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp); } diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/GroupCompanyTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/GroupCompanyTarifProcessor.java index 776f43b..77711ca 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/GroupCompanyTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/GroupCompanyTarifProcessor.java @@ -25,22 +25,10 @@ public class GroupCompanyTarifProcessor extends AbstractTarifProcessor { // Step II: Проверяем разницу дат. // Сертификат должен быть выдан в тот же день или позже, чем тариф - 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; - } + if (!checkDateCert(organization)) return; // Step III: Проверяем кол-во Направлений + Product product = organization.products.get(0); if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp); } diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/OptimalniyTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/OptimalniyTarifProcessor.java index eee7b98..c7ade9f 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/OptimalniyTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/OptimalniyTarifProcessor.java @@ -19,22 +19,10 @@ public class OptimalniyTarifProcessor extends AbstractTarifProcessor { protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) { // 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; - } + if (!checkDateCert(organization)) return; // Step II: Проверяем кол-во Направлений + Product product = organization.products.get(0); if (!calcRecipients4(product, data)) { //TODO надо проверять по категориям logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp); } diff --git a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/StartTarifProcessor.java b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/StartTarifProcessor.java index fb62230..ad030d0 100644 --- a/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/StartTarifProcessor.java +++ b/src/main/java/ru/dmitriymx/astralcheckreport/tarifs/StartTarifProcessor.java @@ -20,22 +20,10 @@ public class StartTarifProcessor extends AbstractTarifProcessor { protected void process0(AstralSession astral, Organization organization, ExcelDataRow data) { // 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; - } + if (!checkDateCert(organization)) return; // Step II: Проверяем кол-во Направлений + Product product = organization.products.get(0); if (!calcRecipients1(product, data)) { //TODO надо проверять по категориям logger.warn("({}/{}): Внимание! Не соответствие количества направлений!", organization.inn, organization.kpp); }