src/Controller/AppBundle/Acceptation/KennisRegels.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller\AppBundle\Acceptation;
  3. use App\Controller\AppBundle\Connector\Awacs\AwacsViewRequest;
  4. use App\Controller\AppBundle\Connector\Awacs\Collection;
  5. use App\Controller\AppBundle\Connector\Awacs\FieldLabel;
  6. use App\Controller\AppBundle\Connector\Awacs\FieldNumberMap;
  7. use App\Controller\AppBundle\Connector\Awacs\FieldPrimary;
  8. use App\Controller\AppBundle\Connector\Awacs\Filter;
  9. use App\Controller\AppBundle\Entity\PolisInformation;
  10. use App\Entity\Slotvraag;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. class KennisRegels
  13. {
  14.     /**
  15.      * @param string $polis
  16.      * @return array
  17.      * @throws \Exception
  18.      */
  19.     public static function checkKennisregel(string $poliskeyEntityManagerInterface $em$premie$pakketFactor 1$pakketFactorASR 1, &$cart null$isNNFixedPrice false$exclAssBel 0.0$num$process)
  20.     {
  21.         if (str_contains($poliskey'WACBES')) {
  22.             $type 'wachtpolissen';
  23.         } else {
  24.             $type 'polissen';
  25.         }
  26.         $collection = new Collection($type);
  27.         $slotvragen $em->getRepository(Slotvraag::class)->findAll();
  28.         foreach ($slotvragen as $slotvraag) {
  29.             $collection->addField(new FieldLabel($slotvraag->getValue()));
  30.         }
  31.         for ($i 1$i 13$i++) {
  32.             $collection->addField(FieldLabel::name('polis''kr'.$i));
  33.         }
  34.         $collection->addField(FieldLabel::name('polis''incassobedrag'));
  35.         $collection->addField(FieldLabel::name('polis''acceptatie'));
  36.         $collection->addField(FieldLabel::name('polis''prolongatiekosten'));
  37.         $collection->addField(FieldLabel::name('polis''maatschappij'));
  38.         $collection->addField(FieldLabel::name('polis''hoofdbranche'));
  39.         $collection->addField(FieldLabel::name('polis''branche'));
  40.         if ($isNNFixedPrice) {
  41.             self::nnFixedPriceAdditions($collection);
  42.         }
  43.         $collection->addFilter(new Filter(new FieldPrimary(), $poliskey'='));
  44.         $request = new AwacsViewRequest($collection);
  45.         $res $request->send('Bedrijf8'$slotvragen);
  46.         $kr = [];
  47.         $succes true;
  48.         $financial = [];
  49.         $entity $res->entities()[0];
  50.         $kr['acceptatie'] = $entity->field('acceptatie')->value();
  51.         if ($entity->field('acceptatie')->value() === '') {
  52.             $kr['acceptatie'] = '1';
  53.         }
  54.         
  55.         $maatschappij $entity->field('maatschappij')->value();
  56.         $branche $entity->field('branche')->value();
  57.         $hoofdbranche $entity->field('hoofdbranche')->value();
  58.         $cart->kennisregelsText[$num] = [];
  59.         if ($kr['acceptatie'] !== '1') {
  60.             $list = [];
  61.             foreach ($slotvragen as $slotvraag) {
  62.                 /** @var Slotvraag $slotvraag */
  63.                 if ($slotvraag->branche == $branche && $slotvraag->hoofdbranche == $hoofdbranche && $slotvraag->maatschappijCode == $maatschappij) {
  64.                     if ($entity->fieldByNumber($slotvraag->getValue())->value() == '2' || $entity->fieldByNumber($slotvraag->getValue())->value() == '3') {
  65.                         $cart->kennisregelsText[$num][] = $slotvraag->getName();
  66.                         $list[] = $slotvraag->getValue();
  67.                     }
  68.                 }
  69.             }
  70.             for ($i 1$i 13$i++) {
  71.                 if (!in_array(FieldNumberMap::getNumber('polis''kr'.$i), $list) && ($entity->field('kr'.$i)->value() == '2' || $entity->field('kr'.$i)->value() == '3')) {
  72.                     $cart->kennisregelsText[$num][] = 'Kennisregel ' $i ' (niet gemapped)';
  73.                 }
  74.             }
  75.         }
  76.         try {
  77.             if ($process->isMutation()) {
  78.                 $financial['Bestaande polis pakketkortingfactor'] = $process->mutationPakketkortingFactor;
  79.             } else {
  80.                 $financial['a.s.r. factor'] = $pakketFactorASR;
  81.                 $financial['NN/DAS factor'] = $pakketFactor;
  82.             }
  83.         } catch (\Throwable $e) {
  84.         }
  85.         $brutoPremie = ((floatval($premie) - $exclAssBel) / 1.21) + $exclAssBel;
  86.         $financial['portaal bruto premie'] = $brutoPremie;
  87.         if ($res->entities()[0]->field('hoofdbranche')->value() == 20000) { //abbonnement
  88.             $financial['portaal pakketkorting'] = 0.0;
  89.             $exclAssBelInclPakketkorting $exclAssBel;
  90.         } else {
  91.             if ($res->entities()[0]->field('maatschappij')->value() != 'V059') {
  92.                 $financial['portaal pakketkorting'] = ($pakketFactor) * floatval($brutoPremie);
  93.                 $exclAssBelInclPakketkorting $exclAssBel $pakketFactor;
  94.             } else {
  95.                 $financial['portaal pakketkorting'] = ($pakketFactorASR) * floatval($brutoPremie);
  96.                 $exclAssBelInclPakketkorting $exclAssBel $pakketFactorASR;
  97.             }
  98.         }
  99.         if (!$process->isMutation()) {
  100.             if ($res->entities()[0]->field('prolongatiekosten')->value() == "2.07") {
  101.                 $financial['portaal prologantie kosten'] = 2.07;
  102.             } else {
  103.                 $financial['portaal prologantie kosten'] = 0;
  104.             }
  105.         } else {
  106.             $financial['portaal prologantie kosten'] = $process->mutationProlongatiekosten;
  107.         }
  108.         if ($res->entities()[0]->field('maatschappij')->value() == 'V059') {
  109.             $financial['portaal netto premie'] = $brutoPremie $financial['portaal pakketkorting'] + floatval($financial['portaal prologantie kosten']);
  110.         } else {
  111.             $financial['portaal netto premie'] = $brutoPremie $financial['portaal pakketkorting'] + floatval($financial['portaal prologantie kosten']);
  112.         }
  113.         $financial['portaal assurantiebelasting'] = ($financial['portaal netto premie'] - $exclAssBelInclPakketkorting) * 0.21;
  114.         $financial['portaal incassobedrag'] = $financial['portaal netto premie'] + $financial['portaal assurantiebelasting'];
  115.         $financial['ANVA incassobedrag'] = floatval($res->entities()[0]->field('incassobedrag')->value());
  116.         $financial['Verschil (portaal - anva) incassobedrag'] = round(($financial['portaal incassobedrag']) - floatval($res->entities()[0]->field('incassobedrag')->value()), 2);
  117.         $financial['Premieverschil'] = abs($financial['Verschil (portaal - anva) incassobedrag']) < 0.05 'Nee' 'Ja';
  118.         $kr['premie'] = abs($financial['portaal incassobedrag'] - floatval($res->entities()[0]->field('incassobedrag')->value())) < 0.05;
  119.         $kr['abs'] = abs($financial['portaal incassobedrag'] - floatval($res->entities()[0]->field('incassobedrag')->value()));
  120.         if ($isNNFixedPrice) {
  121.             $kr['premie'] = true;
  122.         }
  123.         $financial['poliskey'] = $poliskey;
  124.         $cart->financial[] = $financial;
  125.         $kr['success'] = $succes;
  126.         if ($isNNFixedPrice) {
  127.             $kr['tariferingsfactor_1'] = $res->entities()[0]->field('tariferingsfactor_1')->value();
  128.             $kr['tariferingsfactor_2'] = $res->entities()[0]->field('tariferingsfactor_2')->value();
  129.             $wa 0.0;
  130.             $vcbc 0.0;
  131.             foreach ($res->entities()[0]->collection('dekkingen') as $dekking) {
  132.                 if ($dekking->field('dekking')->value() == '2010') {
  133.                     $wa $dekking->field('incassobedrag')->value();
  134.                 } elseif ($dekking->field('dekking')->value() == '2020' || $dekking->field('dekking')->value() == '2030') {
  135.                     $vcbc $dekking->field('incassobedrag')->value();
  136.                 }
  137.             }
  138.             if ($vcbc != 0.0) {
  139.                 $kr['ratio'] = $wa / ($vcbc $wa);
  140.             } else {
  141.                 $kr['ratio'] = 1;
  142.             }
  143.             $kr['b/m_terugvaltrede'] = $res->entities()[0]->field('b/m_percentage')->value();
  144.             $kr['nnAuto'] = true;
  145.         }
  146.         return $kr;
  147.     }
  148.     public static function nnFixedPriceAdditions(&$collection) {
  149.         $collection->addField(FieldLabel::name('polis''tariferingsfactor_1'));
  150.         $collection->addField(FieldLabel::name('polis''tariferingsfactor_2'));
  151.         $collection->addField(FieldLabel::name('polis''b/m_percentage'));
  152.         $dekkingen = new Collection('dekkingen');
  153.         $dekkingen->addField(FieldLabel::name('dekking''incassobedrag'));
  154.         $dekkingen->addField(FieldLabel::name('dekking''dekking'));
  155.         $collection->addCollection($dekkingen);
  156.     }
  157. }