/** * Set the policy options * * @param float $sumInsured * @param float $premium * @param float $nilExcessOption * @return $this */ public function setPolicyOptions($sumInsured, $premium, $nilExcessOption) { $policyOptions = PolicyOptionsManager::addPolicyOption($this->container->get('rrp.legacy.const.policy_option_rrp')); $amountsCovered = PolicyOptionsManager::addPolicyOption($sumInsured); $optionPremiums = PolicyOptionsManager::addPolicyOption($premium - $nilExcessOption); if (0 != $nilExcessOption) { $policyOptions = PolicyOptionsManager::addPolicyOption($this->container->get('rrp.legacy.const.policy_option_rrp-nilexcess'), $policyOptions); $amountsCovered = PolicyOptionsManager::addPolicyOption($sumInsured, $amountsCovered); $optionPremiums = PolicyOptionsManager::addPolicyOption($nilExcessOption, $optionPremiums); } $this->appData->setPolicyOptions($policyOptions)->setAmountsCovered($amountsCovered)->setOptionPremiums($optionPremiums); return $this; }
/** * @inheritdoc */ public function create($policy, $mta, $premium, $quote, $ipt, $nilExcessOption) { $this->legacyMtaData->setPolicyNumber($policy->getAppData()->getPolicyNumber()); $now = new \DateTime(); $isNilExcess = PolicyOptionsManager::isOptionSet($policy->getAppData()->getPolicyOptions(), $this->getContainer()->get('rrp.legacy.const.policy_option_rrp-nilexcess'), $policy->getAppData()->getAmountsCovered()); $proRataCalcs = new ProRataCalculations($mta->getPolicyStartedAt(), $mta->getMtaEffectiveAt()); $premiumAdjustment = $proRataCalcs->getAdjustment($policy->getAppData()->getPolicyLength(), $policy->getAppData()->getPolicyLength(), $premium, $policy->getAppData()->getPremium()); $quoteAdjustment = $proRataCalcs->getAdjustment($policy->getAppData()->getPolicyLength(), $policy->getAppData()->getPolicyLength(), $quote, $policy->getAppData()->getQuote()); $iptAdjustment = $proRataCalcs->getAdjustment($policy->getAppData()->getPolicyLength(), $policy->getAppData()->getPolicyLength(), $ipt, $policy->getAppData()->getIpt()); $amountToPay = $quoteAdjustment; $monthsRemaining = $proRataCalcs->getMonthsRemaining($policy->getAppData()->getPolicyLength()); $policyOptions = PolicyOptionsManager::addPolicyOption($this->container->get('rrp.legacy.const.policy_option_rrp')); $amountsCovered = PolicyOptionsManager::addPolicyOption($mta->getPropertyRental()); $policyOptionPremium = PolicyOptionsManager::getOption($policy->getAppData()->getPolicyOptions(), $this->container->get('rrp.legacy.const.policy_option_rrp'), $policy->getAppData()->getOptionPremiums()); $policyOptionNilExcess = 0.0; if ($isNilExcess) { $policyOptionNilExcess = PolicyOptionsManager::getOption($policy->getAppData()->getPolicyOptions(), $this->container->get('rrp.legacy.const.policy_option_rrp-nilexcess'), $policy->getAppData()->getOptionPremiums()); } $policyOptionAdjustment = $proRataCalcs->getAdjustment($policy->getAppData()->getPolicyLength(), $policy->getAppData()->getPolicyLength(), $premium - $nilExcessOption, $policyOptionPremium); $optionPremiums = PolicyOptionsManager::addPolicyOption($policyOptionAdjustment); if ($isNilExcess) { $nilExcessAdjustment = $proRataCalcs->getAdjustment($policy->getAppData()->getPolicyLength(), $policy->getAppData()->getPolicyLength(), $nilExcessOption, $policyOptionNilExcess); $policyOptions = PolicyOptionsManager::addPolicyOption($this->container->get('rrp.legacy.const.policy_option_rrp-nilexcess'), $policyOptions); $amountsCovered = PolicyOptionsManager::addPolicyOption($mta->getPropertyRental(), $amountsCovered); $optionPremiums = PolicyOptionsManager::addPolicyOption($nilExcessAdjustment, $optionPremiums); } $this->legacyMtaData->setPolicyOptions($policyOptions)->setAmountsCovered($amountsCovered)->setOptionPremiums($optionPremiums)->setDateAdded($now->format('Y-m-d'))->setStatus('pending')->setPremium($premiumAdjustment)->setQuote($quoteAdjustment)->setIpt($iptAdjustment)->setAmountToPay($amountToPay)->setMonthsRemaining($monthsRemaining)->setAdminCharge(0.0)->setPropAddress1('')->setPropAddress3('')->setPropAddress5('')->setPropPostcode('')->setRiskArea('')->setRiskAreaB('')->setChangeCorrespondenceAndPersonal('')->setParagonMortgageNumber(''); $propertyRental = PolicyOptionsManager::getOption($policy->getAppData()->getPolicyOptions(), $this->getContainer()->get('rrp.legacy.const.policy_option_rrp'), $policy->getAppData()->getAmountsCovered()); $notes = $now->format('d/m/Y') . "\n" . "MTA by Agent via Connect\n"; if ($mta->getPropertyRental() != $propertyRental) { $notes .= "Property rental changed from £" . round($propertyRental, 2) . " to £" . round($mta->getPropertyRental(), 2) . "\n"; } $referral = new RentRecoveryPlusReferral(); $referral->setFromMta($mta, $premium); if ($referral->isReferralRequired()) { $notes .= "\nThis policy has been referred for the following reason(s)\n\n" . implode("\n", $referral->getReferralReason()); } $this->legacyMtaData->SetDisplayNotes($notes); $endTime = new \DateTime($policy->getAppData()->getEndDate()); $monthsRemaining = (int) $endTime->format('m') - (int) $now->format('m'); if ($monthsRemaining < 0) { $monthsRemaining += 13; } else { $monthsRemaining += 1; } $this->legacyMtaData->setMonthsRemaining($monthsRemaining)->setPaidNet('no')->setDateAdded($now->format('Y-m-d'))->setDateOnRisk($mta->getMtaEffectiveAt())->setDateOffRisk(null); /** @var RentRecoveryPlusAnswers $underwriting */ $underwriting = UnderwritingDecoratorFactory::getDecorator(UnderwritingDecoratorFactory::UNDERWRITING_RENT_RECOVERY_PLUS, $this->container->get('rrp.config.underwriting_question_set_id'), $now->format('Y-m-d'), $policy->getAppData()->getPolicyNumber()); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_CONTINUATION] = null; $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_RENT_IN_ADVANCE] = null; $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_CLAIM_CIRCUMSTANCES] = $mta->getHasPossibleClaimCircumstances(); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_PERMITTED_OCCUPIERS] = $mta->getHasPermittedOccupiersOnly(); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_TENANCY_DISPUTES] = $mta->getHasTenancyDisputes(); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_TENANCY_AST] = TenancyAgreementTypes::isAssuredShortholdTenancy($mta->getTenancyAgreementType()); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_DEPOSIT_SUFFICIENT] = $mta->getIsDepositSufficient(); $underwritingAnswers[RentRecoveryPlusAnswers::QUESTION_ID_PRIOR_CLAIMS] = $mta->getHasPriorClaims(); $underwriting->setAnswers($underwritingAnswers)->saveAnswers(); $mtaID = $this->legacyMta->create($this->legacyMtaData); if ($mtaID) { if ($this->rrpMta->create($mta, $mtaID)) { return $mtaID; } } return false; }