public function concession() { $data = [['order_id' => 6770383, 'order_shipment_id' => 7860154, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6802456, 'order_shipment_id' => 7862061, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6811037, 'order_shipment_id' => 7862606, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6814970, 'order_shipment_id' => 7865608, 'order_market_id' => 3, 'price' => 38], ['order_id' => 6820057, 'order_shipment_id' => 7865838, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6830149, 'order_shipment_id' => 7866212, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6839322, 'order_shipment_id' => 7866739, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6839542, 'order_shipment_id' => 7866753, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6845260, 'order_shipment_id' => 7867024, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6845375, 'order_shipment_id' => 7867037, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6845649, 'order_shipment_id' => 7867048, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6845791, 'order_shipment_id' => 7867056, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6855142, 'order_shipment_id' => 7867541, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6863932, 'order_shipment_id' => 7867973, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6865930, 'order_shipment_id' => 7868055, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6866113, 'order_shipment_id' => 7868063, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6866235, 'order_shipment_id' => 7868072, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6871579, 'order_shipment_id' => 7868314, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6873993, 'order_shipment_id' => 7868413, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6883414, 'order_shipment_id' => 7868925, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6898254, 'order_shipment_id' => 7869706, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6901295, 'order_shipment_id' => 7869840, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6903634, 'order_shipment_id' => 7869965, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6914740, 'order_shipment_id' => 7870454, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6925299, 'order_shipment_id' => 7870968, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6969158, 'order_shipment_id' => 7872185, 'order_market_id' => 1, 'price' => 29], ['order_id' => 6992063, 'order_shipment_id' => 7872942, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7006051, 'order_shipment_id' => 7873344, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7006249, 'order_shipment_id' => 7873350, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7011287, 'order_shipment_id' => 7873472, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7012180, 'order_shipment_id' => 7873496, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7068887, 'order_shipment_id' => 7877466, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7070206, 'order_shipment_id' => 7877529, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7098672, 'order_shipment_id' => 7878617, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7100246, 'order_shipment_id' => 7878676, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7105488, 'order_shipment_id' => 7878889, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7130251, 'order_shipment_id' => 7879659, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7131487, 'order_shipment_id' => 7879685, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7209153, 'order_shipment_id' => 7881878, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7212063, 'order_shipment_id' => 7881949, 'order_market_id' => 2, 'price' => 35], ['order_id' => 7213893, 'order_shipment_id' => 7882001, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7225310, 'order_shipment_id' => 7882431, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7261875, 'order_shipment_id' => 7883655, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7267563, 'order_shipment_id' => 7883887, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7268260, 'order_shipment_id' => 7883926, 'order_market_id' => 1, 'price' => 29], ['order_id' => 7286594, 'order_shipment_id' => 7884528, 'order_market_id' => 2, 'price' => 35]]; App::uses('BackOrderRestock', 'Lib'); foreach ($data as $line) { $this->hr(); $this->Order = ClassRegistry::init('Order'); $this->OrderItem = ClassRegistry::init('OrderItem'); $this->OrderShipment = ClassRegistry::init('OrderShipment'); $this->OrderShipmentPackage = ClassRegistry::init("OrderShipmentPackage"); $this->OrderShipmentItem = ClassRegistry::init("OrderShipmentItem"); $this->ProductCredit = ClassRegistry::init('ProductCredit'); $this->UserNote = ClassRegistry::init('UserNote'); $oid = $line['order_id']; $sid = $line['order_shipment_id']; $omid = $line['order_market_id']; $price = $line['price']; $shipment_query = "\r\nselect *\r\nfrom order_shipments os\r\njoin orders o\r\n on o.id= os.order_id\r\nleft join order_shipment_packages osp on osp.order_shipment_id = os.id\r\nleft join order_shipment_items osi\r\n on osi.order_shipment_id = os.id\r\nleft join order_items oi\r\n on oi.id = osi.order_item_id\r\nleft join items i\r\n on i.id = oi.item_id\r\nleft JOIN item_availability_times iat\r\n ON iat.item_id = i.id\r\n AND iat.start_date < o.date_completed\r\n AND (iat.end_date IS NULL\r\n OR iat.end_date > o.date_completed)\r\n AND iat.ns_warehouse_id = CASE o.order_market_id\r\n WHEN 1 THEN 1\r\n WHEN 2 THEN 1\r\n WHEN 3 THEN 1\r\n WHEN 4 THEN 1\r\n WHEN 5 THEN 2\r\n WHEN 6 THEN 3\r\n WHEN 7 THEN 2\r\n END\r\nwhere os.id = {$sid}\r\n "; $shipment_item = $this->OrderShipment->query($shipment_query); $this->OrderShipment->clear(); $this->OrderShipmentPackage->clear(); $this->OrderShipmentItem->clear(); $this->OrderItem->clear(); // db values $o_pid = $shipment_item[0]['o']['presenter_id']; $o_uid = $shipment_item[0]['o']['user_id']; $os_id = $shipment_item[0]['os']['id']; $os_date_shipped = $shipment_item[0]['os']['date_shipped']; $os_carrier = $shipment_item[0]['os']['carrier']; $os_tracking = $shipment_item[0]['os']['tracking_number']; $osp_id = $shipment_item[0]['osp']['id']; $osp_carrier = $shipment_item[0]['osp']['carrier']; $osp_tracking = $shipment_item[0]['osp']['tracking_number']; $oi_id = $shipment_item[0]['oi']['id']; $oi_qty = $shipment_item[0]['oi']['quantity']; $oi_status = $shipment_item[0]['oi']['order_item_hold_code_id']; $oi_parent_id = $shipment_item[0]['oi']['parent_id']; $osi_id = $shipment_item[0]['osi']['id']; $osi_status = $shipment_item[0]['osi']['order_item_status']; $item_name = $shipment_item[0]['i']['name']; $item_sku = $shipment_item[0]['i']['sku']; $order_market_id = $shipment_item[0]['o']['order_market_id']; $restock_date = $shipment_item[0]['iat']['estimated_date']; $this->OrderShipment->id = $os_id; $this->OrderShipmentPackage->id = $osp_id; $this->OrderShipmentItem->id = $osi_id; $this->OrderItem->id = $oi_id; $this->out("<info>O: {$oid} OS: {$os_id} OSP: {$osp_id} OSI: {$osi_id}</info>"); // check for empty shippments if (is_null($oi_id)) { $this->OrderShipment->saveField('tracking_number', NULL); $this->OrderShipment->saveField('date_shipped', NULL); $this->OrderShipment->saveField('carrier', NULL); $this->OrderShipment->saveField('order_shipment_status_id', OrderShipment::TYPE_UNSHIPPABLE); $this->OrderShipmentPackage->saveField("tracking_number", NULL); $this->OrderShipmentPackage->saveField("carrier", NULL); $this->out("Empty shipment"); continue; } //check if it's in a prekit if (!is_null($oi_parent_id)) { $parent_oi_record = $this->OrderItem->findById($oi_parent_id); if ($parent_oi_record['OrderItem']['item_id'] == 682) { $this->out("Prekit - resetting BO status"); // remove backorder $original_shipment_id = $parent_oi_record['OrderItem']['order_shipment_id']; $this->OrderItem->saveField('order_shipment_id', $original_shipment_id); $this->OrderShipmentItem->saveField('order_shipment_id', $original_shipment_id); $this->OrderShipment->saveField('tracking_number', NULL); $this->OrderShipment->saveField('date_shipped', NULL); $this->OrderShipment->saveField('carrier', NULL); $this->OrderShipment->saveField('order_shipment_status_id', OrderShipment::TYPE_PREKIT_RESET); $this->OrderShipmentPackage->saveField("tracking_number", NULL); $this->OrderShipmentPackage->saveField("carrier", NULL); //add user note $this->UserNote->clear(); $this->UserNote->save(['user_id' => $o_uid, 'note' => "Backorder removed. Item in prekit so it was already shipped", 'reference_type' => 'order', 'reference_id' => $oid, 'user_note_status' => 'normal', 'admin_user_id' => 584]); $this->out("Note added: " . $oid); continue; } } // reset backorder status if (empty($restock_date)) { $restock_date = "2016-01-15 00:00:00"; $this->out("No restock date"); } $options = ["date" => $restock_date, "sku_quantity" => 1000]; $order_item_restock = new BackOrderRestock($options); $order = ['OrderItem' => ['quantity' => $oi_qty, 'id' => $oi_id], 'Order' => ['id' => $oid]]; $order_item_restock->setRestockForOrder($order); $this->out("Restock reset"); // reset remove the link to the shipment on the order_items and order_shipment_items records $this->OrderItem->saveField('order_shipment_id', NULL); $this->out("OrderItem updated"); $this->OrderShipmentItem->saveField('order_shipment_id', NULL); $this->OrderShipmentItem->saveField('order_item_status', OrderShipmentItem::STATUS_ON_BCKORDR); $this->out("OrderShipmentItem updated"); $this->OrderShipment->saveField('order_shipment_status_id', OrderShipment::TYPE_BACKORDER_RESET); $this->out("<error>Item reset for backorder</error>"); //update the shipment status to dead - 11 $this->OrderShipment->saveField('tracking_number', NULL); $this->OrderShipment->saveField('date_shipped', NULL); $this->OrderShipment->saveField('carrier', NULL); $this->out("OrderShipment updated"); $this->OrderShipmentPackage->saveField("tracking_number", NULL); $this->OrderShipmentPackage->saveField("carrier", NULL); $this->out("OrderShipmentPackage updated"); // add ycash if ($price > 0) { $this->ProductCredit->credit(ProductCredit::METHOD_SYSTEM, ProductCredit::TYPE_CONCESSION, $omid, $o_pid, $o_uid, Money::fromString($price), "shipping concession:missing backorders 2016-01-15", $oid); $this->out("Ycash paid: " . $price); } //add user note $this->UserNote->clear(); $this->UserNote->save(['user_id' => $o_uid, 'note' => "Ycash ({$price}) added for missed backorder ({$sid}) reset to backorder on 2016-01-15", 'reference_type' => 'order', 'reference_id' => $oid, 'user_note_status' => 'normal', 'admin_user_id' => 584]); $this->out("Note added: " . $oid); } }