Skip to content

Generali / Europska

Helper to add into your Generali/Europska product to help you with common scenarios/problems

Interface

Use

In your class definition add , GeneraliInterface after implements GeneralProductInterface
and in your section of uses (at the top) add

use BP\Products\Interfaces\GeneraliInterface;

Constants

// Payment frequency
self::FREQUENCY_YEAR = 1;
self::FREQUENCY_HALF = 2;
self::FREQUENCY_QUARTER = 4;

// Legal form
self::FO = 1;
self::SE = 3;
self::COM = 2;
self::ORGANIZATION = 'O';
self::PERSON = 'P';

// Vehicle type constants (codelist 6205)
self::VEHICLE_A1 = 1;
self::VEHICLE_B1 = 2;
self::VEHICLE_C1 = 3;
self::VEHICLE_C2 = 18;
self::VEHICLE_D1 = 4;
self::VEHICLE_D2 = 19;
self::VEHICLE_E1 = 5;
self::VEHICLE_E2 = 20;
self::VEHICLE_F1 = 6;
self::VEHICLE_G1 = 7;
self::VEHICLE_G2 = 8;
self::VEHICLE_H1 = 9;
self::VEHICLE_H2 = 21;
self::VEHICLE_H3 = 22;
self::VEHICLE_I1 = 10;
self::VEHICLE_J1 = 11;
self::VEHICLE_J2 = 12;
self::VEHICLE_K1 = 13;
self::VEHICLE_K2 = 14;
self::VEHICLE_L1 = 15;
self::VEHICLE_L2 = 16;
self::VEHICLE_L3 = 17;
self::VEHICLE_L4 = 23;
self::VEHICLE_L5 = 24;

// Fuel types
self::FUEL_OTHER = 'V';

// Roles
self::ROLE_OWNER = 6;
self::ROLE_HOLDER = 7;
self::ROLE_INSURED = 7;
self::ROLE_POLICYHOLDER = 4;

// Approvals
self::ACCEPT_EL_COM = 'ODESILAT_NAVRH_EK';   // ok
self::ACCEPT_EL_DOCS = '';    // parameter odesilat-el-kor
self::APPROVAL_MARKETING = 'KOMPLEX';    // ok

// Values
self::OBJECT_ID = 1;
self::UNDEFINED_END = '2300-01-01';
self::TRUE = 'true';
self::FALSE = 'false';
self::ANO = 'ANO';
self::NE = 'NE';
self::ZDROJ = 'POISTNAKALKULACKA';
self::WEBVZN = 'O';
self::TSJSML = 'N';  // Also value for TEL_SJED
self::BARVA_TISKU = 'F';

// Model / Brand
self::OTHER_BRAND = 'OSTATNE';
self::OTHER_MODEL = '579';

Trait

Use

Right below your class definition add

use BP\Products\Traits\GeneraliTrait;

Predefined

Don't reimplement if you don't have to

initialize()

/**
 * Initialize default data, like apiUrl
 *
 * @return void
 */

// If you need to initialize custom data
// Create customInitialize method

Methods

addData(SimpleXMLElement &$xml, string $ident, int $type, $value)

/**
 * Helper for xml-hodnota-u-3 tag
 *
 * @param SimpleXMLElement &$xml
 * @param string $ident
 * @param int $type
 * @param mixed $value
 * @return void
 */

// Example
$this->addData($data->udaje, 'TSJSML', 3, 'N');     // Telefonické zjednanie zmluvy A/N

addDoc(array $doc, int $type, string $name): bool

/**
 * Add document from url
 *
 * @param array $doc
 * @param int $type
 * @param string $name
 * @return bool
 */

// Example (see getDocuments() example)

addRole(SimpleXMLElement &$xml, SimpleXMLElement &$addresses, int $type, int $uid)

/**
 * Helper for xml-role-u-3 tag
 *
 * @param SimpleXMLElement &$xml
 * @param SimpleXMLElement &$addresses
 * @param string $type
 * @param int $uid
 * @return void
 */

// Example
$owner = $this->assignPersonData(
    $data->strany,
    $data->adresy,
    $this->ownerData()
);

//...

$this->addRole($object->role, $data->adresy, self::ROLE_HOLDER, $holder);
$this->addRole($object->role, $data->adresy, self::ROLE_OWNER, $owner);
$this->addRole($data->role, $data->adresy, self::ROLE_POLICYHOLDER, $policyholder);

addSubject(SimpleXMLElement &$xml, $type, array $datas = [], int $objectId = self::OBJECT_ID)

/**
 * Helper for xml-predmet-u-3 tag
 *
 * @param SimpleXMLElement &$xml
 * @param mixed $type   (druh-rizika)
 * @param array $datas  (udaje)
 * @param int $objectId (objekt-unik-id)
 * @return void
 */

// Example
$this->addSubject($data->predmety, 8059, [
    ['KRYTI', 3, $this->package]
]);

addObject(SimpleXMLElement &$xml, $type, array $datas = [], int $addressId = 0): int

/**
 * Helper for xml-predmet-u-3 tag
 *
 * @param SimpleXMLElement &$xml
 * @param int|string $type
 * @param array $datas
 * @param int $addressId
 * @return int (uid)
 */

// Example
$objectUid = $this->addObject(
    $objects,
    209,
    [
        ['CENA', 6, $addEquip['sum']],
        ['POPIS', 3, (
            $this->isAad() ? 'Na základe AAD protokolu' : 'Na základe faktúry'
        )]
    ],
    $this->assignAddressData(
        $data->adresy,
        null
    )
);

addUnikId(SimpleXMLElement &$xml): int

/**
 * Add unique id element and return id
 *
 * @param SimpleXMLElement &$xml
 * @return int (uid)
 */

// Example
$uid = $this->addUnikId($addr);

addWithVal(SimpleXMLElement &$xml, string $name, $value)

/**
 * Add child with child hodnota = $value
 *
 * @param SimpleXMLElement &$xml
 * @param string $name
 * @param string $value
 * @return void
 */

// Example
$this->addWithVal($addr, 'ulice', $address->street);

addVal(SimpleXMLElement &$xml, $value)

/**
 * Add child with hodnota = $val
 *
 * @param SimpleXMLElement &$xml
 * @param string $value
 * @return void
 */

// Example
$this->addVal($hodnota, $value);

assignAddressData(&$addresses, $data = null): int

/**
 * Assign address data into right fields
 *
 * @param SimpleXmlElement $xml
 * @param Address $address
 * @return int (uid)
 */

// Example
$person->addChild(
    'adresa-unik-id',
    htmlspecialchars(
        $this->assignAddressData($addresses, $data)
    )
);

assignPersonData(&$persons, &$addresses, $data): int

/**
 * Assign person data into xml
 *
 * @param SimpleXmlElement $persons
 * @param SimpleXmlElement $addresses
 * @param Person $data
 * @return int (uid)
 */

// Example
$owner = $this->assignPersonData(
    $data->strany,
    $data->adresy,
    $this->ownerData()
);

assignPersonData(&$persons, &$addresses, $data): int

/**
 * Assign person data into xml
 *
 * @param SimpleXmlElement $persons
 * @param SimpleXmlElement $addresses
 * @param Person $data
 * @return int (uid)
 */

// Example
$owner = $this->assignPersonData(
    $data->strany,
    $data->adresy,
    $this->ownerData()
);

dataToXml(SimpleXMLElement $data): string

/**
 * Convert date to right format
 *
 * @param string $date
 * @return string
 */

// Example
    ...
    // Convert to xml
    $xml = $this->dataToXml($data);

    // Call api
    $data = $this->callApiXml('savePolicy', $xml);
    ...

date(string $date = 'now'): string

/**
 * Convert date to right format
 *
 * @param string $date
 * @return string
 */

// Example
$data->{'datum-sjednani'}->hodnota = $this->date();

dateTime(string $dateTime = 'now'): string

/**
 * Convert datetime to right format
 *
 * @param string $dateTime
 * @return string
 */

// Example
$this->dateTime($this->fullStart());

checkResponse(string $xml): bool

/**
 * Check if XML response has right format
 *
 * @param string $xml
 * @return bool
 */

// Example
    // Call api
    $data = $this->callApiXml('ratePolicy', $data);

    // Return value
    if ($this->checkResponse($data)) {
        // Process response
    }

dodavka(): bool

/**
 * Get right value for param DODAVKA
 *
 * @return bool
 */

// Example
$this->addData($object->udaje, 'DODAVKA', 1, $this->dodavka());

getDocuments(): array

/**
 * Helper to get documents array
 *
 * @return array
 *  [
 *      [
 *          'name' => 'document.name',
 *          'id' => 'document.id'
 *      ]
 *  ]
 */

// Example
if ($data = $this->getDocuments()) {
    foreach ($data as $doc) {
        if (mb_substr($doc['name'], 0, 7) === 'Navrhop') {
            if (!$this->addDoc($doc, DOC_TYPE_CONTRACT, 'draft')) {
                return false;
            }
        }
    }
}

login(): bool

/**
 * Login to rest Api
 *
 * @return bool
 */

// Example
    if ($this->login()) {
        // Call other api
    }

ico(): string

/**
 * Get right value for param ICO
 *
 * @return string
 */

// Example
$this->addData($object->udaje, 'ICO', 3, $this->ico());

leasml(): string

/**
 * Get right value for param LEASML
 *
 * !!! add Field::IS_LEASING into $requiredInCreate
 *
 * @return string
 */

// Example
$this->addData($data->udaje, 'LEASML', 3, $this->leasml());

odesilatElKor(): string

/**
 * Get right value for param odesilat-el-kor
 *
 * !!! Add ACCEPT_EL_DOCS into required accepts in otherUsedFields
 *
 * @return string 'true' | 'false'
 */

// Example
$data->{'odesilat-el-kor'}->hodnota = $this->odesilatElKor();

pracovnikOzSpravce(): string

/**
 * Get value for pracovnik-oz-spravce param
 *
 * !!! Add pracovnik-oz-spravce right before odesilat-el-kor into xml template, like this
 * <pracovnik-oz-spravce></pracovnik-oz-spravce>
 * <odesilat-el-kor></odesilat-el-kor>
 *
 * @return string
 */

// Example
$data->{'pracovnik-oz-spravce'}->hodnota = $this->pracovnikOzSpravce();

price(SimpleXMLElement $data, int $frequency)

/**
 * Get price of insurance
 *
 * @param  SimpleXMLElement $data
 * @param  int $frequency
 * @return mixed
 */

// Example
if ($year = $this->price($data, self::FREQUENCY_YEAR)) {
    return [
        FREQUENCY_YEAR => $year,
        FREQUENCY_HALF => $this->price($data, self::FREQUENCY_HALF),
        FREQUENCY_QUARTER => $this->price($data, self::FREQUENCY_QUARTER)
    ];
}

startTime(): string

/**
 * Return datetime of start
 *
 * @return string
 */

// Example
$data->{'cas-pocatku-zmeny'}->hodnota = $this->startTime();

textModel(): string

/**
 * Get vehicle model text
 *
 * @return string
 */

// Example
$this->addTextToPdf(1, $this->value('brand') . ' ' . $this->textModel(), 59, 118.5);

typKldr(): string

/**
 * Get right value for param TYPKLDR
 *
 * @return string
 */

// Example
$this->addData($object->udaje, 'TYPKLDR', 3, $this->typKldr());

year(string $date = 'now'): string

/**
 * Convert date to right year format
 *
 * @param string $date
 * @return string
 */

// Example
protected function parseHolderBirth(string $value): string
{
    return $this->year($value);
}

zpusSkod(): string

Uses Field::BLOCK_HOLDER => Field::ACCIDENTS_LAST_3YEARS

/**
 * Get right value for param ZPUS_SKOD
 *
 * @return string
 */

// Example
$this->addData($data->udaje, 'ZPUS_SKOD', 1, $this->zpusSkod());

Parsers

Predefined parsers so you only call $this->value('field'); for these parsers and they will be parsed into right format
Don't redefine them if you doesn't need different outputs

Automatically parsed fields

  • [Field::BLOCK_HOLDER, Field::BIRTH] (parseHolderBirth)
  • [Field::BLOCK_HOLDER, Field::BLOCK_PERM_ADDRESS, Field::ZIP] (parseHolderPermanentAddressZip)
  • Field::PAYMENT_FREQUENCY
  • Field::PAYMENT_METHOD
  • Field::START
  • Field::VEHICLE_MODEL
  • Field::VEHICLE_TYPE
  • Field::YEAR_CREATED

Available parse method

  • parseLegalForm