Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Trace.debug("CardIssue. Функция проверки данных заявления.", Radix::Arte::EventSource:UserFunc);
- Tran tran = Tran.currentlyExecutedTran;
- XmlHelper xmlHlp = new XmlHelper(app.data, "http://schemas.tranzaxis.com/card-issue.xsd");
- Str CardProductId = xmlHlp.getStr("CardIssue/CardProductId",false);
- Str Period = xmlHlp.getStr("CardIssue/Period",false),
- DeliveryBranchId = xmlHlp.getStr("CardIssue/DeliveryBranchId",false),
- CourierCityId = xmlHlp.getStr("CardIssue/CourierCityId",false),
- CourierAddressInput = xmlHlp.getStr("CardIssue/CourierAddressInput",false),
- ContractId = xmlHlp.getStr("CardIssue/ContractId",false),
- FeeContractId = xmlHlp.getStr("CardIssue/FeeContractId",false),
- FeeAmt = xmlHlp.getStr("CardIssue/FeeAmt",false).split(" ")[0],
- TariffPlanGuid = xmlHlp.getStr("CardIssue/CommissionTypeId",false),
- //ThirdPerson = xmlHlp.getStr("CardIssue/ThirdPerson",false),
- FirstNameLat = xmlHlp.getStr("CardIssue/FirstNameLat",false),
- LastNameLat = xmlHlp.getStr("CardIssue/LastNameLat",false),
- ThirdPersonFIO = xmlHlp.getStr("CardIssue/ThirdPersonFIO",false),
- ThirdPersonBirth = xmlHlp.getStr("CardIssue/ThirdPersonBirth",false),
- ThirdPersonDoc = xmlHlp.getStr("CardIssue/ThirdPersonDoc",false),
- ThirdPersonReg = xmlHlp.getStr("CardIssue/ThirdPersonReg",false),
- ThirdPerson = (ThirdPersonBirth != "" ? "on" : ""),
- ThirdPersonPhone = xmlHlp.getStr("CardIssue/ThirdPersonPhone",false);
- try{
- if (utils::personOfcRestrictionChecker(app.subject) == true){
- throw new Exception("Уважаемый Клиент, в связи с не предоставлением документов по запросу, Банком установлено ограничение на оказание услуг через систему удаленного доступа \"Банк-он-Лайн\"");
- }
- Str prodId = app.type.getParamStr("CardProductId" + (ThirdPerson == "on" ? "3" : "") + "_" + CardProductId);
- //Str prodId = app.type.getParamStr("CardProductId" + (ThirdPersonBirth != null ? "3" : "") + "_" + CardProductId);
- if(prodId == null)
- throw new Exception("Указан неверный тип карты");
- //if(CardProductId != "1" && CardProductId != "2") throw new Exception("Указан некорректный карточный продукт(" + CardProductId + ").");
- if(Period == null || Period.length() == 0)
- throw new Exception("Указан некорректный срок действия карты.");
- if(DeliveryBranchId != "777" && (DeliveryBranchId == null || DeliveryBranchId.length() == 0 || Branch.loadByCode(app.instId, Long.valueOf(DeliveryBranchId)) == null))
- throw new Exception("Неверно указано отделение выдачи карты.");
- //--П.С.С.-13.08.15 - Проверка для доставки курьером--//
- if (DeliveryBranchId == "777") {
- if(ThirdPerson == "on"){
- throw new Exception("Нельзя доставлять карту на 3-е лицо");
- }
- if(CourierCityId == null){
- throw new Exception("Неверно указан город доставки");
- }
- if(CourierAddressInput == null){
- throw new Exception("Неверно указан адрес доставки");
- }
- }
- if(ContractId == null || ContractId.length() != 20)
- throw new Exception("Не указан номер счёта(" + ContractId + ").");
- if(FeeContractId == null || FeeContractId.length() != 20)
- throw new Exception("Не указан номер счёта для списания комиссии(" + FeeContractId + ").");
- if(FeeAmt == null || FeeAmt.length() == 0)
- throw new Exception("Ошибка при определении комиссии(" + FeeAmt + ").");
- if(FirstNameLat == null || FirstNameLat.length() == 0)
- throw new Exception("Не указано имя для печати на карте (" + FirstNameLat + ").");
- if(LastNameLat == null || LastNameLat.length() == 0)
- throw new Exception("Не указана фамилия для печати на карте (" + LastNameLat + ").");
- if(ThirdPerson == "on"){
- if(ThirdPersonFIO == null || ThirdPersonFIO.length() < 10 || ThirdPersonFIO.split(" ") == null || ThirdPersonFIO.split(" ").length < 3)
- throw new Exception("Не заданы ФИО держателя карты (" + ThirdPersonFIO + ").");
- if(ThirdPersonBirth == null || ThirdPersonBirth.length() < 1)
- throw new Exception("Не указаны дата и место рождения держателя карты).");
- if(ThirdPersonDoc == null || ThirdPersonDoc.length() < 1)
- throw new Exception("Не указан документ удостоверяющий держателя карты.");
- if(ThirdPersonReg == null || ThirdPersonReg.length() < 1)
- throw new Exception("Не указан адрес регистрации держателя карты.");
- if(ThirdPersonPhone == null || ThirdPersonPhone.length() < 1)
- throw new Exception("Не указан телефон держателя карты.");
- if(ThirdPersonBirth == null || ThirdPersonBirth.length() < 10)
- throw new Exception("Неверно указаны дата и место рождения держателя карты (" + ThirdPersonBirth + ").");
- if(ThirdPersonDoc == null || ThirdPersonDoc.length() < 10)
- throw new Exception("Неверно указан документ удостоверяющий держателя карты (" + ThirdPersonDoc + ").");
- if(ThirdPersonReg == null || ThirdPersonReg.length() < 10)
- throw new Exception("Неверно указан адрес регистрации держателя карты (" + ThirdPersonReg + ").");
- if(ThirdPersonPhone == null || ThirdPersonPhone.length() < 10)
- throw new Exception("Неверно указан телефон держателя карты (" + ThirdPersonPhone + ").");
- }
- Contract.Financial c1 = (Contract.Financial)Contract.loadByRid(app.instId, ContractId);
- Contract.Financial c2 = (Contract.Financial)Contract.loadByRid(app.instId, FeeContractId);
- if(c1 == null || c1.clientId != app.subjectId || c1.status != Tx::Contracts::Status:Active) // если указан "левый" счёт карты
- throw new Exception("Указан некорректный номер счёта(" + ContractId + ").");
- if(c2 == null || c2.clientId != app.subjectId || c2.status != Tx::Contracts::Status:Active) // если указан "левый" счёт для комиссии
- throw new Exception("Указан некорректный номер счёта для списания комиссии(" + FeeContractId + ").");
- /*
- // 10.09.2015 grigorjev.d.a. Временный запрет на указание в качестве основного счета/счета списания комиссии счета с грейсом
- if(c1.cachedType.getUserParamStr("isGrace") == "1" || c2.cachedType.getUserParamStr("isGrace") == "1")
- throw new Exception("Выполнение операции по данному счету невозможно! Счет относится к продукту \"Кредитная карта с льготным периодом кредитования.\"");
- */
- TariffPlan tplan = TariffPlan.loadByPK(TariffPlanGuid, false);
- Contract.Financial feeCon = (Contract.Financial)Contract.loadByRid(app.instId, FeeContractId);
- Int contractTypeId = (ThirdPerson == "on" ? app.getTypeParamInt("CardProductId3_" + CardProductId) : app.getTypeParamInt("CardProductId_" + CardProductId));
- ContractType.Issuing contractType = (ContractType.Issuing)ContractType.get(contractTypeId);
- ////////SD-7295
- if (contractType != null){
- Num depositBalanceVal = contractType.getUserParamNum("depositBalanceVal");
- if (depositBalanceVal != null){
- if (Tariff::getSubjectDepositsBalance(app.subject).getAmount() < depositBalanceVal){
- throw new AppException("Уважаемый клиент! Карта вкладчика возможна для оформления только в случае наличия вкладов в Банке на сумму от 1 500 000 рублей.");
- }
- }
- }
- if (contractType != null){
- Str e = Tariff::checkMaxCardsCount(app.subject, contractType);
- if (e != null){
- throw new AppException(e);
- }
- }
- ///////
- if (tplan != null && feeCon != null && contractType != null){
- Money fee = Tariff::calcFee(contractType, feeCon, tplan);
- Money availBalance = feeCon.getAvailableBalance(tran, tran.regTime, tran.operDay);
- RateGroup rg = feeCon.getRateGroup(tran);
- Num avail = availBalance.getAmount();
- if (fee == null)
- throw new Exception("Операция не может быть выполнена, ошибка в комиссии");
- if (!fee.getCcy().equals(availBalance.getCcy()))
- avail = rg.convertClient(tran, fee.getCurrency(), availBalance.getCurrency(), availBalance.getAmount());
- if(avail.compareTo(fee.getAmount()) < 0)
- throw new Exception("Недостаточно средств для оплаты комиссии (" + fee + "). Доступно " + MoneyFactory.get(avail,810).toStrWithCcyAlphaCode() + ".");
- } else throw new Exception("Операция не может быть выполнена");
- } catch (Exception e){
- CommonXsd:ResultSpecific rs = tran.rs.ResultSpecific != null ? tran.rs.ResultSpecific : tran.rs.addNewResultSpecific();
- rs.Description = e.getMessage();
- throw new DeclineException(Tx::Tran::TranResult:InvalidRequest, e.getMessage(), "CardIssue. Функция проверки данных заявления.");
- }
- Trace.event("check. app.data: " + app.dataAsStr, Radix::Arte::EventSource:TestCase);
- return true;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement