Changeset View
Changeset View
Standalone View
Standalone View
modules/in-commerce/units/orders/orders_event_handler.php
Show First 20 Lines • Show All 2265 Lines • ▼ Show 20 Line(s) | |||||
function maskCreditCard(&$object, $field) | function maskCreditCard(&$object, $field) | ||||
{ | { | ||||
$value = $object->GetDBField($field); | $value = $object->GetDBField($field); | ||||
$value = preg_replace('/'.substr($value, -4).'$/', str_repeat('X', 4), $value); | $value = preg_replace('/'.substr($value, -4).'$/', str_repeat('X', 4), $value); | ||||
$object->SetDBField($field, $value); | $object->SetDBField($field, $value); | ||||
} | } | ||||
/** | /** | ||||
* Set next available order number | * Set next available order number. | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event Event. | ||||
* | |||||
* @return void | |||||
*/ | */ | ||||
function setNextOrderNumber($event) | protected function setNextOrderNumber(kEvent $event) | ||||
{ | { | ||||
/** @var OrdersItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object OrdersItem */ | |||||
$sql = 'SELECT MAX(Number) | |||||
FROM ' . $this->Application->GetLiveName($object->TableName); | |||||
$next_order_number = $this->Conn->GetOne($sql) + 1; | |||||
$next_order_number = max($next_order_number, $this->Application->ConfigValue('Comm_Next_Order_Number')); | $next_order_number = $this->getNextOrderNumber(); | ||||
$this->Application->SetConfigValue('Comm_Next_Order_Number', $next_order_number + 1); | |||||
$object->SetDBField('Number', $next_order_number); | $object->SetDBField('Number', $next_order_number); | ||||
$object->SetDBField('SubNumber', 0); | $object->SetDBField('SubNumber', 0); | ||||
// set virtual field too | // set virtual field too | ||||
$number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_P'); | $number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_P'); | ||||
$sub_number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_S'); | $sub_number_format = (int)$this->Application->ConfigValue('Comm_Order_Number_Format_S'); | ||||
$order_number = sprintf('%0' . $number_format . 'd', $next_order_number) . '-' . str_repeat('0', $sub_number_format); | $order_number = sprintf('%0' . $number_format . 'd', $next_order_number) . '-' . str_repeat('0', $sub_number_format); | ||||
$object->SetDBField('OrderNumber', $order_number); | $object->SetDBField('OrderNumber', $order_number); | ||||
} | } | ||||
/** | /** | ||||
* Returns order number to be used next. | |||||
* | |||||
* @return integer | |||||
*/ | |||||
protected function getNextOrderNumber() | |||||
{ | |||||
$lock_clause = array( | |||||
TABLE_PREFIX . 'IdGenerator WRITE', | |||||
$this->Application->getUnitOption('conf', 'TableName') . ' WRITE', | |||||
$this->Application->getUnitOption($this->Prefix, 'TableName') . ' WRITE', | |||||
); | |||||
$this->Conn->Query('LOCK TABLES ' . implode(', ', $lock_clause)); | |||||
$sql = 'UPDATE ' . $this->Application->getUnitOption('conf', 'TableName') . ' | |||||
SET VariableValue = GREATEST(VariableValue, ' . $this->getLastUsedOrderNumber() . ') + 1 | |||||
WHERE VariableName = "Comm_Next_Order_Number"'; | |||||
$this->Conn->Query($sql); | |||||
$sql = 'SELECT VariableValue | |||||
FROM ' . $this->Application->getUnitOption('conf', 'TableName') . ' | |||||
WHERE VariableName = "Comm_Next_Order_Number"'; | |||||
$next_order_number = $this->Conn->GetOne($sql); | |||||
$this->Application->SetConfigValue('Comm_Next_Order_Number', $next_order_number); | |||||
$this->Conn->Query('UNLOCK TABLES'); | |||||
return $next_order_number - 1; | |||||
} | |||||
/** | |||||
* Returns last used order number. | |||||
* | |||||
* @return integer | |||||
*/ | |||||
protected function getLastUsedOrderNumber() | |||||
{ | |||||
$sql = 'SELECT MAX(Number) | |||||
FROM ' . $this->Application->getUnitOption($this->Prefix, 'TableName'); | |||||
return (int)$this->Conn->GetOne($sql); | |||||
} | |||||
/** | |||||
* Set's new order address based on another address from order (e.g. billing from shipping) | * Set's new order address based on another address from order (e.g. billing from shipping) | ||||
* | * | ||||
* @param unknown_type $object | * @param unknown_type $object | ||||
* @param unknown_type $from | * @param unknown_type $from | ||||
* @param unknown_type $to | * @param unknown_type $to | ||||
*/ | */ | ||||
function DoResetAddress(&$object, $from, $to) | function DoResetAddress(&$object, $from, $to) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 1733 Lines • Show Last 20 Lines |