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