//CURRENT STOCK (ALREADY RETRIEVED ABOVE) $current_stock = intval($products_stock[$stock_id]); //CURRENT OPEN ORDERS $already_ordered = $class_do->refillOpenOrdersQuantity($segment_id, $pid, $aid); //Check if we have too much refill $over_refill = $current_stock + $already_ordered - $target_after_levelling; $logger->write("- article {$pid}-{$aid}, Total orders = {$row['total_qty']}" . ", Over refill = {$over_refill}"); if ($over_refill > 0) { //cancel orders $order_ids = explode(',', $row['order_ids']); $order_status = explode(',', $row['order_status']); $canceled_qty = 0; foreach ($order_ids as $key => $order_id) { //AR is always 1 qty, so cancel all orders //1 by 1 until total over_refill is reached $new_status = $class_do->doCancelOrders($order_id, $order_status[$key], 'auto-set'); if (statusIsCancelConfirmed($new_status)) { $canceled_qty++; $canceled_qty_total++; $logger->write(" > cancel {$canceled_qty}, ID: {$order_id}"); if ($canceled_qty >= $over_refill) { break; } } else { $logger->write(" > cancel failed, ID: {$order_id}"); } } } } $logger->write("Total canceled Qty = {$canceled_qty_total}"); }
if (count($item) == 0) { $result = "<br /><strong>DP-{$items_id}</strong> is not found"; } else { $result = '<br />' . oiErrorStatus($items_id, $item['status'], $class_do->statusName()); } echo utf8_encode($result); exit; } elseif ($_POST['me_action'] == 'UPDATEOISTATUS') { $items_id = tep_db_prepare_input($_POST['oi_id']); $old_status = tep_db_prepare_input($_POST['old_status']); $new_status = tep_db_prepare_input($_POST['new_status']); $item = $class_do->retrieveDetail($items_id); if ($item['status'] == $old_status) { $status_to_alert_success = array('3', '4'); if ($new_status == 10) { $class_do->doCancelOrders($items_id, $old_status, $session_userinfo['username']); } else { $class_do->updateStatus($items_id, $new_status, $session_userinfo['username']); } list($new_status, $sub_status) = explode('-', $new_status); $status_name = $sub_status != '' ? subStatusNameShort($new_status, $sub_status) : $class_do->statusNameShort(); if ($sub_status == '') { $status_name = $status_name[$new_status]; } $result = array(); $result['oi_id'] = $items_id; $result['old_status'] = $old_status; $result['new_status'] = $new_status; $result['msg_success'] = !in_array($old_status, $status_to_alert_success) ? '' : 'DP-' . $items_id . ' » set to ' . $status_name; $result['msg_errors'] = ''; } else {
function doCancelOrders($opid, $old_status, $username, $cancel_by = 'J', $cancel_depot = true) { $item = $this->retrieveProductDetail($opid); $new_status = '10'; if (count($item) > 0 && $item['status'] == $old_status) { //RESET STATUS $this->updateProductStatus($opid, $new_status, $username, $cancel_by); $this->updateProductStockStatus($opid, '0'); $this->updateOrderItemMode($oid, '0'); $this->recalcProductsCounter($item['orders_id']); cancelOrderStockHandler('JG', $opid, $item['stock_status'], $item['status'], $item['print_count'], $item['print_confirmed'], $item['products_id'], $item['products_articles_id'], $item['products_quantity']); if ($cancel_depot) { //RESET DEPOT ORDERS IF ALREADY CREATED FOR THIS ORDER use_class('depot_orders'); $class_do = new depot_orders(); $do = $class_do->retrieveDetailTransmigran('JG', $opid); if (!is_null($do) && $do['status'] < 4 && $do['status'] != 12) { $class_do->doCancelOrders($do['depot_orders_id'], $do['status'], $username); } } //SEND EMAIL TO ADMIN $arr_status = $this->productStatusNameShort(); $o = $this->retrieveDetail($item['orders_id']); $is_sp = false; $email_data = array(); $email_data = $item; $email_data['orders_date'] = $o['date_purchased']; $email_data['customers_name'] = $o['customers_name']; $email_data['status'] = $arr_status[$email_data['status']]; $languages[2]['path'] = 'german'; include DIR_WS_EMAILS . $languages[2]['path'] . '/cancel-order-notification.php'; $from_email_name = FROM_EMAIL_NAME; $from_email_address = FROM_EMAIL_ADDRESS; $to_name = EMAIL_NAME_ADMIN1; $to_email_address = EMAIL_ADDRESS_ADMIN1; tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address); } else { $new_status = $item['status']; } return $new_status; }
} elseif ($oi['stock_status'] == 'P') { //ADD BACK FG STOCK AUTOMATICALLY $stock_id = $oi['products_id'] . $oi['products_articles_id']; $order_qty = $oi['order_quantity']; $class_pm->stockAdd($whid_prod, $oi['products_id'], $oi['products_articles_id'], $order_qty, 'ADD-FG ' . $order_type . '-' . $oiid); $products_stock_bali[$stock_id] += $order_qty; } } $oi_trans = null; //PRODUCT IS ALREADY MOVED TO IN HH TAB (MMO) - Retrieve MMO details as $oi_trans if ($oi['status'] == $new_status) { $oi_trans = $class_do->retrieveDetailTransmigran($order_type, $oiid); } //CANCEL MMO IF NOT YET IN PRODUCTION if (!is_null($oi_trans) && $oi_trans['status'] < 4) { $class_do->doCancelOrders($oi_trans['depot_orders_id'], $oi_trans['status'], 'auto-set'); } //REQUEST DEPOT REFILL IF ORDER WAS NOT YET IN PRODUCTION if (is_null($oi_trans) && $oi['status'] < 4 || !is_null($oi_trans) && $oi_trans['status'] < 4) { $refill_type = depot_orders::AUTO_REFILL_ID_DSO; $refill_qty_request = $order_qty; } //Orders with DS Prioritized should keep their "mode" if ($oi['ds_prioritized'] == '1') { if ($oi['mode'] == modeKey('MMO')) { $items_mmo[] = $oiid; } elseif ($oi['mode'] == modeKey('MTO')) { $items_mto[] = $oiid; } } else { if (is_null($oi_trans) || $oi_trans['status'] < 7) {
function doCancelOrders($oid, $old_status, $username, $cancel_by = 'J', $cancel_depot = true) { global $session_userinfo; $item = $this->retrieveItemDetail($oid); $new_status = '10'; if (count($item) > 0 && $item['status'] == $old_status) { //RESET STATUS $this->updateItemStatus($oid, $new_status, $username, $cancel_by); $this->updateItemStockStatus($oid, '0'); $this->updateOrderItemMode($oid, '0'); $this->recalculateOrderItemCount($item['jng_sp_orders_id']); cancelOrderStockHandler('SP', $oid, $item['stock_status'], $item['status'], $item['print_count'], $item['print_confirmed'], $item['products_id'], $item['products_articles_id'], $item['order_quantity'], $item['is_promotion_order']); if ($cancel_depot) { //RESET DEPOT ORDERS IF ALREADY CREATED FOR THIS ORDER use_class('depot_orders'); $class_do = new depot_orders(); $do = $class_do->retrieveDetailTransmigran('SP', $oid); if (!is_null($do) && $do['status'] < 4 && $do['status'] != 12) { $class_do->doCancelOrders($do['depot_orders_id'], $do['status'], $username); } } use_class("jng_sp"); $class_sp = new jng_sp(); $arr_status = $this->statusNameShort(); $o = $this->retrieveDetail($item['jng_sp_orders_id']); $sp = $class_sp->retrieveDetail($o['jng_sp_id']); $is_sp = true; if ($sp['jng_sp_id'] == 5) { //SEND EMAIL TO J&G EMAIL SERVICE $email_data = array(); $email_data = $item; $email_data['orders_date'] = $o['order_date']; $email_data['customers_name'] = $o['customer_billing_firstname'] . ' ' . $o['customer_billing_lastname']; $email_data['status'] = $arr_status[$email_data['status']]; $email_data['orders_id'] = $o['order_id']; $email_data['sp_code'] = $sp['package_prefix']; $languages[2]['path'] = 'german'; include DIR_FS_MINIERP . DIR_WS_EMAILS . $languages[2]['path'] . '/cancel-order-notification.php'; $from_email_name = FROM_EMAIL_NAME; $from_email_address = FROM_EMAIL_ADDRESS; $to_name = EMAIL_NAME_SERVICE; $to_email_address = EMAIL_ADDRESS_SERVICE; $email_subject = 'Cancelled Amazon Orders'; tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address); } //SEND EMAIL TO ADMIN $email_data = array(); $email_data = $item; $email_data['orders_date'] = $o['order_date']; $email_data['customers_name'] = $o['customer_billing_firstname'] . ' ' . $o['customer_billing_lastname']; $email_data['status'] = $arr_status[$email_data['status']]; $email_data['orders_id'] = $item['jng_sp_orders_id']; $email_data['sp_code'] = $sp['package_prefix']; $languages[2]['path'] = 'german'; include DIR_FS_MINIERP . DIR_WS_EMAILS . $languages[2]['path'] . '/cancel-order-notification.php'; $from_email_name = FROM_EMAIL_NAME; $from_email_address = FROM_EMAIL_ADDRESS; $to_name = EMAIL_NAME_ADMIN1; $to_email_address = EMAIL_ADDRESS_ADMIN1; tep_mail($to_name, $to_email_address, $email_subject, $email_text, $from_email_name, $from_email_address); } else { $new_status = $item['status']; } return $new_status; }