72 lines
2.0 KiB
PHP
72 lines
2.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace External\ZNZBundle\Synchronizers;
|
|
|
|
use Query\Operator;
|
|
|
|
class PriceListSynchronizer extends BaseSynchronizer
|
|
{
|
|
protected static string $type = 'pricelist';
|
|
|
|
public static function getHandledTables(): array
|
|
{
|
|
return [
|
|
'CenoveUrovne' => 'processPriceList',
|
|
];
|
|
}
|
|
|
|
public function processPriceList(array $item): void
|
|
{
|
|
$priceListId = $this->znzUtil->getMapping(static::getType(), $item['CenovaUroven']);
|
|
|
|
if ($item['meta']['delete'] ?? false) {
|
|
if ($priceListId) {
|
|
sqlQueryBuilder()
|
|
->delete('pricelists')
|
|
->where(Operator::equals(['id' => $priceListId]))
|
|
->execute();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if (!$priceListId) {
|
|
$priceListId = sqlGetConnection()->transactional(function () use ($item) {
|
|
sqlQueryBuilder()
|
|
->insert('pricelists')
|
|
->directValues(
|
|
[
|
|
'name' => $item['Nazev'],
|
|
'currency' => $item['Mena'],
|
|
]
|
|
)
|
|
->execute();
|
|
|
|
$priceListId = (int) sqlInsertId();
|
|
|
|
$this->znzUtil->createMapping(static::getType(), $item['CenovaUroven'], $priceListId);
|
|
|
|
sqlQueryBuilder()
|
|
->update('znz_pricelists')
|
|
->directValues(['is_default' => $item['Vychozi'] ? 1 : 0])
|
|
->where(Operator::equals(['id_znz' => $item['CenovaUroven']]))
|
|
->execute();
|
|
|
|
return $priceListId;
|
|
});
|
|
}
|
|
|
|
sqlQueryBuilder()
|
|
->update('pricelists')
|
|
->directValues(
|
|
[
|
|
'name' => $item['Nazev'],
|
|
]
|
|
)
|
|
->where(Operator::equals(['id' => $priceListId]))
|
|
->execute();
|
|
}
|
|
}
|