public function postExecute($order_id = null, $result = null) { $data = parent::postExecute($order_id, $result); if ($order_id != null) { $log_model = new waLogModel(); $log_model->add('order_delete', $order_id); $order_model = new shopOrderModel(); $app_settings_model = new waAppSettingsModel(); if ($data['before_state_id'] != 'refunded') { $update_on_create = $app_settings_model->get('shop', 'update_stock_count_on_create_order'); // for logging changes in stocks shopProductStocksLogModel::setContext(shopProductStocksLogModel::TYPE_ORDER, 'Order %s was deleted', array('order_id' => $order_id)); if ($update_on_create) { $order_model->returnProductsToStocks($order_id); } else { if (!$update_on_create && $data['before_state_id'] != 'new') { $order_model->returnProductsToStocks($order_id); } } shopProductStocksLogModel::clearContext(); } $order = $order_model->getById($order_id); if ($order && $order['paid_date']) { // Remember paid_date in log params for Restore action $olpm = new shopOrderLogParamsModel(); $olpm->insert(array('name' => 'paid_date', 'value' => $order['paid_date'], 'order_id' => $order_id, 'log_id' => $data['id'])); // Empty paid_date and update stats so that deleted orders do not affect reports $order_model->updateById($order_id, array('paid_date' => null, 'paid_year' => null, 'paid_month' => null, 'paid_quarter' => null)); $order_model->recalculateProductsTotalSales($order_id); shopCustomers::recalculateTotalSpent($order['contact_id']); } } return $data; }
public function postExecute($order_id = null, $result = null) { $data = parent::postExecute($order_id, $result); $order_model = new shopOrderModel(); if (is_array($order_id)) { $order = $order_id; $order_id = $order['id']; } else { $order = $order_model->getById($order_id); } shopCustomers::recalculateTotalSpent($order['contact_id']); if ($order_id != null) { $log_model = new waLogModel(); $log_model->add('order_refund', $order_id); $order_model = new shopOrderModel(); $order_model->updateById($order_id, array('paid_date' => null, 'paid_year' => null, 'paid_month' => null, 'paid_quarter' => null)); // for logging changes in stocks shopProductStocksLogModel::setContext(shopProductStocksLogModel::TYPE_ORDER, 'Order %s was refunded', array('order_id' => $order_id)); $order_model->returnProductsToStocks($order_id); shopAffiliate::cancelBonus($order_id); $order_model->recalculateProductsTotalSales($order_id); } return $data; }
<?php $model = new waModel(); $rows = $model->query("SELECT o.id, o.create_datetime, MIN(l.datetime) as datetime FROM shop_order o\n JOIN shop_order_log l ON o.id = l.order_id\n WHERE o.paid_year = 1970 AND (l.action_id = 'pay' OR l.action_id = 'complete')\n GROUP BY o.id"); $on_created = $this->getOption('order_paid_date') == 'create'; $order_model = new shopOrderModel(); foreach ($rows as $row) { if ($on_created) { $time = strtotime($row['create_datetime']); } else { $time = strtotime($row['datetime']); } $order_model->updateById($row['id'], array('paid_year' => date('Y', $time), 'paid_quarter' => floor((date('n', $time) - 1) / 3) + 1, 'paid_month' => date('n', $time), 'paid_date' => date('Y-m-d', $time))); }
<?php $order_model = new shopOrderModel(); $sql = "SELECT * FROM shop_order WHERE state_id = 'deleted' AND paid_date IS NOT NULL"; foreach ($order_model->query($sql) as $order) { $order_id = $order['id']; shopCustomers::recalculateTotalSpent($order['contact_id']); $order_model->updateById($order_id, array('paid_date' => null, 'paid_year' => null, 'paid_month' => null, 'paid_quarter' => null)); $order_model->returnProductsToStocks($order_id); shopAffiliate::cancelBonus($order_id); $order_model->recalculateProductsTotalSales($order_id); }
public function postExecute($order_id = null, $result = null) { if (!$result) { return; } $order_model = new shopOrderModel(); if (is_array($order_id)) { $order = $order_id; $order_id = $order['id']; } else { $order = $order_model->getById($order_id); } $data = is_array($result) ? $result : array(); $data['order_id'] = $order_id; $data['action_id'] = $this->getId(); $data['before_state_id'] = $order['state_id']; if ($this->state_id) { $data['after_state_id'] = $this->state_id; } else { $data['after_state_id'] = $order['state_id']; } $order_log_model = new shopOrderLogModel(); $data['id'] = $order_log_model->add($data); $update = isset($result['update']) ? $result['update'] : array(); $update['update_datetime'] = date('Y-m-d H:i:s'); $data['update'] = $update; if ($this->state_id) { $update['state_id'] = $this->state_id; } $order_model->updateById($order['id'], $update); $order_params_model = new shopOrderParamsModel(); if (isset($update['params'])) { $order_params_model->set($order['id'], $update['params'], false); } $order['params'] = $order_params_model->get($order_id); // send notifications shopNotifications::send('order.' . $this->getId(), array('order' => $order, 'customer' => new waContact($order['contact_id']), 'status' => $this->getWorkflow()->getStateById($data['after_state_id'])->getName(), 'action_data' => $data)); /** * @event order_action.callback * @event order_action.pay * @event order_action.ship * @event order_action.process * @event order_action.delete * @event order_action.restore * @event order_action.complete * @event order_action.comment * * @param array[string]mixed $data * @param array[string]int $data['order_id'] * @param array[string]int $data['action_id'] * @param array[string]int $data['before_state_id'] * @param array[string]int $data['after_state_id'] * @param array[string]int $data['id'] Order log record id */ wa('shop')->event('order_action.' . $this->getId(), $data); return $data; }