public function admin_getNetsuiteData() { $result = []; $result['meta'] = []; $warehouse_names = []; $result['meta']['market'] = $this->Market->find('list'); $result['meta']['status'] = $this->OrderShipmentStatus->find('list'); //Hash::extract($this->OrderShipmentStatus->find('all'), '{n}.OrderShipmentStatus'); $result['meta']['status'][9] = '*Order Closed'; $result['meta']['status'][10] = '*In snap'; $result['meta']['status'][11] = '*Backorder reset'; $result['meta']['status'][12] = '*Has replacement'; $result['meta']['status'][13] = '*Prekit reset'; $result['meta']['status'][0] = 'No Status'; $result['total_open'] = $this->Order->find('count', ['conditions' => ['order_status_id' => [Order::STATUS_ENTERED, Order::STATUS_PROCESSING]]]); $result['not_in_ns'] = $this->Order->notInNetSuite(true); $result['no_ship_method'] = $this->Order->noShipmentMethod(true); $result['compliance_hold'] = $this->Order->complianceHold(true); $result['ns_error_import'] = $this->Order->find('count', ['conditions' => ['order_status_id' => Order::STATUS_ENTERED, 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_SUBMIT]]); $result['ns_error_stale'] = $this->Order->staleNetSuite(false, true); // $result['ns_backorder'] = $this->Order->staleNetSuite(true,true); $result['ns_error_other'] = $this->Order->find('count', ['conditions' => ['order_status_id' => Order::STATUS_ENTERED, 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_OTHER]]); $in_snap = $this->Order->find('all', ['fields' => ['order_market_id', 'count(id) as qty'], 'conditions' => ['order_status_id' => Order::STATUS_PROCESSING, 'order_market_id > 0'], 'group' => ['order_market_id']]); $total = 0; foreach ($in_snap as $data_set) { $total += $data_set[0]['qty']; $wms = WarehouseUtil::nameByMarket($data_set['Order']['order_market_id']); $warehouse_names[$data_set['Order']['order_market_id']] = $wms; array_key_exists($wms, $result['in_snap']) ? $result['in_snap'][$wms] += $data_set[0]['qty'] : ($result['in_snap'][$wms] = $data_set[0]['qty']); } $result['in_snap']['total'] = $total; unset($total); unset($data_set); unset($in_snap); $in_snap_stale = $this->Order->find('all', ['fields' => ['order_market_id', 'count(id) as qty'], 'conditions' => ['order_status_id' => Order::STATUS_PROCESSING, 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_RETURN], 'group' => ['order_market_id']]); $total = 0; foreach ($in_snap_stale as $data_set) { $total += $data_set[0]['qty']; $wms = array_key_exists($data_set['Order']['order_market_id'], $warehouse_names) ? $warehouse_names[$data_set['Order']['order_market_id']] : WarehouseUtil::nameByMarket($data_set['Order']['order_market_id']); array_key_exists($wms, $result['in_snap_stale']) ? $result['in_snap_stale'][$wms] += $data_set[0]['qty'] : ($result['in_snap_stale'][$wms] = $data_set[0]['qty']); } $result['in_snap_stale']['total'] = $total; unset($total); unset($data_set); unset($in_snap); // Days $days = 3; $result['sla_lehi'] = $this->Order->outOfWindow(1, true, $days); $result['sla_netherlands'] = $this->Order->outOfWindow(2, true, $days); $result['sla_mexico'] = $this->Order->outOfWindow(3, true, $days); $result['sla_total'] = array_sum([$result['sla_lehi'], $result['sla_netherlands'], $result['sla_mexico']]); $days = 5; $result['sla_lehi_5'] = $this->Order->outOfWindow(1, true, $days); $result['sla_netherlands_5'] = $this->Order->outOfWindow(2, true, $days); $result['sla_mexico_5'] = $this->Order->outOfWindow(3, true, $days); $result['sla_total_5'] = array_sum([$result['sla_lehi_5'], $result['sla_netherlands_5'], $result['sla_mexico_5']]); $days = 10; $result['sla_lehi_10'] = $this->Order->outOfWindow(1, true, $days); $result['sla_netherlands_10'] = $this->Order->outOfWindow(2, true, $days); $result['sla_mexico_10'] = $this->Order->outOfWindow(3, true, $days); $result['sla_total_10'] = array_sum([$result['sla_lehi_10'], $result['sla_netherlands_10'], $result['sla_mexico_10']]); $shipped = $this->Order->find('all', ['fields' => ['order_market_id', 'count(id) as qty'], 'conditions' => ['order_status_id' => [Order::STATUS_SHIPPED], 'date_completed >= DATE_SUB( NOW(), INTERVAL 3 DAY)'], 'group' => ['order_market_id']]); foreach ($shipped as $data_set) { $wms = array_key_exists($data_set['Order']['order_market_id'], $warehouse_names) ? $warehouse_names[$data_set['Order']['order_market_id']] : WarehouseUtil::nameByMarket($data_set['Order']['order_market_id']); array_key_exists($wms, $result['shipped']) ? $result['shipped'][$wms] += (int) $data_set[0]['qty'] : ($result['shipped'][$wms] = (int) $data_set[0]['qty']); } unset($data_set); unset($in_snap); // $result['ns_import_errors'] = $this->Order->find('all', [ // 'conditions' => [ // 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_SUBMIT, // ], // 'contain' => ['OrderShipment'] // ]); // // foreach($result['ns_import_errors'] as &$error) // { // // check fail points // // // char encoding // $input_fields = [ // "first_name" => $error['OrderShipment'][0]['first_name'], // "last_name" => $error['OrderShipment'][0]['last_name'], // "address1" => $error['OrderShipment'][0]['address1'], // "address2" => $error['OrderShipment'][0]['address2'], // "address3" => $error['OrderShipment'][0]['address3'], // "city" => $error['OrderShipment'][0]['city'], // "phone" => $error['OrderShipment'][0]['phone'], // "postal_code" => $error['OrderShipment'][0]['postal_code'], // "email_address" => $error['OrderShipment'][0]['email_address'] // ]; // foreach($input_fields as $field => $value) // { // if(mb_detect_encoding($value) == 'UTF-8') // { // $error['errors'][] = "Encoding: " . $field . " - " . $value; // } // } // // address field length // foreach($input_fields as $field => $value) // { // if(strlen($value) > 30) // { // $error['errors'][] = "Address: " . $field . " - " . $value; // } // } // $error['market'] = $result['meta']['market'][$error['Order']['order_market_id']]; // } // // $result['snap_export_errors'] = $this->Order->find('all', [ // 'conditions' => [ // 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_RETURN, // ], // 'fields' => [ // 'date(min(date_completed)) oldest, count(id) as qty, order_market_id' // ], // 'group' => 'order_market_id' // // ]); // // $result['other_errors'] = $this->Order->find('all', [ // 'conditions' => [ // 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_OTHER, // ] // ]); // // $result['backorder_items'] = $this->Order->query(" // SELECT count(oi.id) count, i.sku, i.name // FROM order_items oi // LEFT JOIN items i ON oi.item_id = i.id // LEFT JOIN order_shipment_items osi ON oi.id = osi.order_item_id // LEFT JOIN order_customers oc ON oi.order_customer_id = oc.id // LEFT JOIN orders o ON oc.order_id = o.id // WHERE i.id IN ( // SELECT id as item_id // FROM items // ) // AND ( // osi.order_shipment_id = 0 // OR // ( // osi.order_shipment_id IS NULL // AND // osi.id IS NOT NULL // ) // ) // AND order_status_id in (3,8) // GROUP BY i.id; // "); // // $result['backorder_orders'] = $this->Order->query(" // SELECT * // FROM order_items oi // LEFT JOIN items i ON oi.item_id = i.id // LEFT JOIN order_shipment_items osi ON oi.id = osi.order_item_id // LEFT JOIN order_customers oc ON oi.order_customer_id = oc.id // LEFT JOIN orders o ON oc.order_id = o.id // WHERE i.id IN ( // SELECT id as item_id // FROM items // ) // AND ( // osi.order_shipment_id = 0 // OR // ( // osi.order_shipment_id IS NULL // AND // osi.id IS NOT NULL // ) // ) // AND order_status_id in (3,8) // ; // "); // // $backorder_ids = []; // foreach($result['backorder_orders'] as $backorder) // $backorder_ids[] = $backorder['o']['id']; // // // orders not in snap // $result['snap_import_errors'] = $this->Order->find('all', [ // 'conditions' => [ // 'order_status_id' => [ // Order::STATUS_ENTERED, // Order::STATUS_PROCESSING // ], // 'secondary_order_status_id' => Order::SECONDARY_NETSUITE_ERROR_SNAP, // 'NOT' => [ // 'id' => $backorder_ids // ] // ], // 'fields' => [ // 'date(min(date_completed)) oldest, count(id) as qty, order_market_id' // ], // 'group' => 'order_market_id' // ]); // $this->sendSuccess($result); }