Exemplo n.º 1
0
 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);
     }
 }