Changeset View
Changeset View
Standalone View
Standalone View
branches/5.2.x/units/orders/orders_event_handler.php
Show First 20 Lines • Show All 2266 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() | |||||
{ | |||||
$config_table = $this->Application->getUnitOption('conf', 'TableName'); | |||||
$this->Conn->Query('LOCK TABLES ' . $config_table . ' WRITE'); | |||||
$sql = 'UPDATE ' . $config_table . ' | |||||
SET VariableValue = VariableValue + 1 | |||||
WHERE VariableName = "Comm_Next_Order_Number"'; | |||||
$this->Conn->Query($sql); | |||||
$sql = 'SELECT VariableValue | |||||
FROM ' . $config_table . ' | |||||
WHERE VariableName = "Comm_Next_Order_Number"'; | |||||
$next_order_number = $this->Conn->GetOne($sql); | |||||
$this->Conn->Query('UNLOCK TABLES'); | |||||
$this->Application->SetConfigValue('Comm_Next_Order_Number', $next_order_number); | |||||
return $next_order_number - 1; | |||||
} | |||||
/** | |||||
* [HOOK] Ensures, that "Next Order Number" system setting is within allowed limits. | |||||
* | |||||
* @param kEvent $event Event. | |||||
* | |||||
* @return void | |||||
*/ | |||||
protected function OnBeforeNextOrderNumberChange(kEvent $event) | |||||
{ | |||||
/** @var kDBItem $system_setting */ | |||||
$system_setting = $event->MasterEvent->getObject(); | |||||
$old_value = $system_setting->GetOriginalField('VariableValue'); | |||||
$new_value = $system_setting->GetDBField('VariableValue'); | |||||
if ( $system_setting->GetDBField('VariableName') != 'Comm_Next_Order_Number' || $new_value == $old_value ) { | |||||
return; | |||||
} | |||||
$sql = 'SELECT MAX(Number) | |||||
FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName'); | |||||
$next_order_number = (int)$this->Conn->GetOne($sql) + 1; | |||||
if ( $new_value < $next_order_number ) { | |||||
$system_setting->SetError('VariableValue', 'value_out_of_range', null, array( | |||||
'min_value' => $next_order_number, | |||||
'max_value' => '∞', | |||||
)); | |||||
} | |||||
} | |||||
/** | |||||
* 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 |