Files
kupshop/bundles/External/ZNZBundle/Synchronizers/PriceListSynchronizer.php
2025-08-02 16:30:27 +02:00

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();
}
}