[-] BO: Fix #PSCFV-5207 update of some fields on multishop with deleted property
This commit is contained in:
@@ -842,6 +842,8 @@ class CarrierCore extends ObjectModel
|
||||
SET `id_reference` = '.(int)$id_reference.'
|
||||
WHERE `id_carrier` = '.(int)$this->id);
|
||||
|
||||
$this->id_reference = (int)$id_reference;
|
||||
|
||||
// Copy tax rules group
|
||||
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'carrier_tax_rules_group_shop` (`id_carrier`, `id_tax_rules_group`, `id_shop`)
|
||||
(SELECT '.(int)$this->id.', `id_tax_rules_group`, `id_shop`
|
||||
|
||||
@@ -518,6 +518,54 @@ abstract class ObjectModelCore
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Duplicate current object to database
|
||||
*
|
||||
* @return new object
|
||||
*/
|
||||
public function duplicateObject()
|
||||
{
|
||||
$definition = ObjectModel::getDefinition($this);
|
||||
|
||||
$res = Db::getInstance()->getRow('
|
||||
SELECT *
|
||||
FROM `'._DB_PREFIX_.bqSQL($definition['table']).'`
|
||||
WHERE `'.bqSQL($definition['primary']).'` = '.(int)$this->id
|
||||
);
|
||||
if (!$res)
|
||||
return false;
|
||||
unset($res[$definition['primary']]);
|
||||
|
||||
if (!Db::getInstance()->insert($definition['table'], $res))
|
||||
return false;
|
||||
|
||||
$object_id = Db::getInstance()->Insert_ID();
|
||||
|
||||
if ($definition['multilang'])
|
||||
{
|
||||
$res = Db::getInstance()->executeS('
|
||||
SELECT *
|
||||
FROM `'._DB_PREFIX_.bqSQL($definition['table']).'_lang`
|
||||
WHERE `'.bqSQL($definition['primary']).'` = '.(int)$this->id
|
||||
);
|
||||
|
||||
if (!$res)
|
||||
return false;
|
||||
|
||||
foreach ($res as $row)
|
||||
{
|
||||
$row[$definition['primary']] = (int)$object_id;
|
||||
if (!Db::getInstance()->insert($definition['table'].'_lang', $row))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$object_duplicated = new $definition['classname']((int)$object_id);
|
||||
$object_duplicated->duplicateShops((int)$this->id);
|
||||
|
||||
return $object_duplicated;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update current object to database
|
||||
|
||||
@@ -696,20 +696,19 @@ class AdminControllerCore extends Controller
|
||||
if ($this->deleted && $this->beforeDelete($object))
|
||||
{
|
||||
// Create new one with old objet values
|
||||
$object_new = new $this->className($object->id);
|
||||
$object_new->id = null;
|
||||
$object_new->date_add = '';
|
||||
$object_new->date_upd = '';
|
||||
|
||||
// Update old object to deleted
|
||||
$object->deleted = 1;
|
||||
$object->update();
|
||||
|
||||
// Update new object with post values
|
||||
$this->copyFromPost($object_new, $this->table);
|
||||
$result = $object_new->add();
|
||||
$object_new = $object->duplicateObject();
|
||||
if (Validate::isLoadedObject($object_new))
|
||||
$this->afterDelete($object_new, $object->id);
|
||||
{
|
||||
// Update old object to deleted
|
||||
$object->deleted = 1;
|
||||
$object->update();
|
||||
|
||||
// Update new object with post values
|
||||
$this->copyFromPost($object_new, $this->table);
|
||||
$result = $object_new->update();
|
||||
if (Validate::isLoadedObject($object_new))
|
||||
$this->afterDelete($object_new, $object->id);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user