. */ namespace SP\Core\Upgrade; use SP\Core\Exceptions\SPException; use SP\Core\TaskFactory; use SP\Storage\DbWrapper; use SP\Storage\QueryData; /** * Class Customer * * @package SP\Core\Upgrade */ class Customer { /** * Actualizar registros con clientes no existentes * * @param int $customerId Id de cliente por defecto * @return bool */ public static function fixCustomerId($customerId) { TaskFactory::$Message->setTask(__FUNCTION__); TaskFactory::$Message->setMessage(__('Actualizando IDs de clientes')); TaskFactory::sendTaskMessage(); try { DbWrapper::beginTransaction(); if ($customerId === 0) { $customerId = self::createOrphanCustomer(); } $Data = new QueryData(); $Data->addParam($customerId); $query = /** @lang SQL */ 'UPDATE accHistory SET acchistory_customerId = ? WHERE acchistory_customerId NOT IN (SELECT id FROM customers ORDER BY id) OR acchistory_customerId IS NULL'; $Data->setQuery($query); DbWrapper::getQuery($Data); $query = /** @lang SQL */ 'UPDATE Account SET account_customerId = ? WHERE account_customerId NOT IN (SELECT id FROM customers ORDER BY id) OR account_customerId IS NULL'; $Data->setQuery($query); DbWrapper::getQuery($Data); DbWrapper::endTransaction(); return true; } catch (SPException $e) { DbWrapper::rollbackTransaction(); return false; } } /** * Crear un cliente para elementos huérfanos * * @return int */ public static function createOrphanCustomer() { $query = /** @lang SQL */ '\''; $Data = new QueryData(); $Data->setQuery($query); $Data->setOnErrorMessage(__('Error al crear el cliente', false)); DbWrapper::getQuery($Data); return DbWrapper::getLastId(); } }