/**
  * Run by monthly cron to create CSV and send out charm 10/50k PRS orders
  */
 public function report_10k()
 {
     ini_set("max_execution_time", 900);
     ini_set("max_input_time", 60);
     ini_set("memory_limit", "2048M");
     $charm = new Charm();
     unset($this->Order->virtualFields);
     $validStatuses = $this->Order->getCommissionableStatusesString();
     //MIKEFIX
     $sql = "\r\n\t\t\tSELECT\r\n\t\t\t\tsum(commissionable_total) as total,\r\n\t\t\t\tu.first_name,\r\n\t\t\t\tu.last_name,\r\n\t\t\t\tp.presenter_sequence_id,\r\n\t\t\t\tp.id,\r\n\t\t\t\tp.market_id,\r\n\t\t\t\tu.id,\r\n\t\t\t\te.email\r\n\t\t\tFROM\r\n\t\t\t\torders o\r\n\t\t\tJOIN presenters p  ON p.id = o.presenter_id\r\n\t\t\tJOIN users u ON u.id = p.user_id\r\n\t\t\tJOIN emails e ON u.id = e.user_id AND e.email_type_id = 1\r\n\t\t\tWHERE\r\n\t\t\t\t\torder_type_id = 3\r\n\t\t\t\t\tAND order_status_id IN {$validStatuses}\r\n\t\t\tGROUP BY presenter_id\r\n\t\t\tHAVING total >= 10000\r\n\t\t\t";
     $this->out("Starting large SQL call....", Shell::NORMAL);
     $tenK = $this->Order->query($sql);
     $this->out("Finished SQL call", Shell::NORMAL);
     $results = [];
     foreach ($tenK as $value) {
         if ($value[0]['total'] < 10000 && $value[0]['total'] != NULL) {
             continue;
         }
         $results[$value['p']['presenter_sequence_id']] = $value;
         $results[$value['p']['presenter_sequence_id']]['consultant_address'] = $this->Address->find('first', array('conditions' => array('user_id' => $value['u']['id'], 'address_type_id' => 2, 'address1 is not null'), 'contain' => array('State', 'Country'), 'order' => array('Address.id desc')));
         $hit_10k = FALSE;
         $hit_50k = FALSE;
         $hit_100k = FALSE;
         $hit_500k = FALSE;
         $hit_1M = FALSE;
         $sum = 0;
         $orders = $this->Order->find('all', array('conditions' => ['presenter_id' => $value['p']['id'], 'order_type_id' => 3, 'order_status_id' => $this->Order->getCommissionableStatuses()], 'order' => 'date_completed asc'));
         foreach ($orders as $order) {
             $sum += $order['Order']['commissionable_total'];
             if ($sum >= 10000 && $hit_10k === FALSE) {
                 $results[$value['p']['presenter_sequence_id']]['club']['10k'] = $order['Order']['date_completed'];
                 $hit_10k = TRUE;
             } elseif ($sum >= 50000 && $hit_50k === FALSE) {
                 $results[$value['p']['presenter_sequence_id']]['club']['50k'] = $order['Order']['date_completed'];
                 $hit_50k = TRUE;
             } elseif ($sum >= 100000 && $hit_100k === FALSE) {
                 $results[$value['p']['presenter_sequence_id']]['club']['100k'] = $order['Order']['date_completed'];
                 $hit_100k = TRUE;
             } elseif ($sum >= 500000 && $hit_500k === FALSE) {
                 $results[$value['p']['presenter_sequence_id']]['club']['500k'] = $order['Order']['date_completed'];
                 $hit_100k = TRUE;
             } elseif ($sum >= 1000000 && $hit_1M === FALSE) {
                 $results[$value['p']['presenter_sequence_id']]['club']['1M'] = $order['Order']['date_completed'];
                 $hit_100k = TRUE;
             }
         }
     }
     $tmp_dir = sys_get_temp_dir();
     $fp = fopen($tmp_dir . '/10k_club.csv', 'w');
     $header = array('Presenter Id', 'Name', 'Total', '10K', '50k', '100k', 'Addr1', 'Addr2', 'Addr3', 'City', 'State', 'Zip', 'Country', 'Club');
     fputcsv($fp, $header);
     foreach ($results as $line) {
         $val = array();
         $val[] = $line['p']['presenter_sequence_id'];
         $val[] = $line['u']['first_name'] . " " . $line['u']['last_name'];
         $val[] = $line['0']['total'];
         $val[] = $line['club']['10k'];
         $val[] = $line['club']['50k'];
         $val[] = $line['club']['100k'];
         $val[] = $line['consultant_address']['Address']['address1'];
         $val[] = $line['consultant_address']['Address']['address2'];
         $val[] = $line['consultant_address']['Address']['address3'];
         $val[] = $line['consultant_address']['Address']['city'];
         $val[] = $line['consultant_address']['State']['name'];
         $val[] = $line['consultant_address']['Address']['postal_code'];
         $val[] = $line['consultant_address']['Country']['name'];
         //create comparison year/month
         $prev_month = date("Y-m", strtotime('first day of previous month'));
         $club = '';
         if (substr($line['club']['10k'], 0, 7) == $prev_month) {
             $club = '10k';
         } elseif (substr($line['club']['50k'], 0, 7) == $prev_month) {
             $club = '50k';
         }
         if (!empty($club)) {
             $recipient = ["first_name" => $line['u']['first_name'], "last_name" => $line['u']['last_name'], "address1" => $line['consultant_address']['Address']['address1'], "address2" => $line['consultant_address']['Address']['address2'], "address3" => $line['consultant_address']['Address']['address3'], "city" => $line['consultant_address']['Address']['city'], "state" => $line['consultant_address']['State']['name'], "postcode" => $line['consultant_address']['Address']['postal_code'], "country" => $line['consultant_address']['Country']['name'], "achievement" => $club, "presenter_id" => $line['p']['id'], "user_id" => $line['u']['id'], "email" => $line['e']['email'], "market_id" => $line['p']['market_id']];
             if ($order_id = $charm->createCharmOrders($recipient)) {
                 $this->out('Charm Order: ' . $order_id . ' (Market:' . $recipient['market_id'] . ') (Club:' . $club . ') Ready for NetSuite.', Shell::NORMAL);
             } else {
                 $this->out("ERROR - Order not created", Shell::NORMAL);
             }
         }
         $val[] = $club;
         fputcsv($fp, $val);
     }
     fclose($fp);
     if (YOUNIQUE_TESTSERVER != TRUE) {
         $file = $tmp_dir . '/10k_club.csv';
         $link = $this->_upload("10K.csv", $file);
         $this->out('Test server: ' . YOUNIQUE_TESTSERVER ? "Yes" : "No");
         $this->_sendEmail("*****@*****.**", '10K report ', $link);
         $this->out($file);
         $this->out("S3 Link: " . $link);
     }
 }
 public function charmOrderFix()
 {
     $charm_names = [525 => "Yellow", 526 => "Pink", 527 => "Blue", 535 => "Faststart"];
     $this->Order = ClassRegistry::init('Order');
     $this->Address = ClassRegistry::init('Address');
     $this->State = ClassRegistry::init('State');
     $charm = new Charm();
     $orders = $this->Order->find('all', ['conditions' => ['order_type_id' => Order::TYPE_CHARM, 'order_status_id' => OrderStatus::STATUS_ENTERED, 'secondary_order_status_id' => Order::SECONDARY_STATUS_SNAP_CANCEL], 'contain' => ['OrderCustomer' => ['OrderItem', 'Address', 'Email']], 'limit' => 10]);
     $result = [];
     foreach ($orders as $key => $order) {
         $address = $this->Address->findByUserId($order['Order']['user_id']);
         $state = $this->State->findById($address['Address']['state_id']);
         $result = ["first_name" => $order['OrderCustomer']['first_name'], "last_name" => $order['OrderCustomer']['last_name'], "address1" => $order['OrderCustomer']['Address']['address1'], "address2" => $order['OrderCustomer']['Address']['address2'], "address3" => $order['OrderCustomer']['Address']['address3'], "city" => $order['OrderCustomer']['Address']['city'], "state" => $state['State']['name'], "postcode" => $order['OrderCustomer']['Address']['postal_code'], "country" => $order['OrderCustomer']['Address']['Country']['name'], "achievement" => $charm_names[$order['OrderCustomer']['OrderItem'][0]['item_id']], "presenter_id" => $order['Order']['presenter_id'], "user_id" => $order['Order']['user_id'], "email" => $order['OrderCustomer']['Email']['email'], "market_id" => $order['Order']['market_id']];
         if ($order_id = $charm->createCharmOrders($result)) {
             $this->out("Charm Order: " . $order_id . ' (Market:' . $result['market_id'] . ') Ready for NetSuite.', Shell::NORMAL);
         } else {
             $this->out("ERROR - Order not created", Shell::NORMAL);
         }
         unset($result);
     }
 }
Beispiel #3
0
 private function _sendCharmOrder($array, $type)
 {
     $charm = new Charm();
     foreach ($array as $val) {
         $presenter_id = $this->Presenter->presenterIdFromPresenterSequenceId($val);
         //die("presenter_sequence_id = $val - presenter_id = $presenter_id \n");
         $user_ary = $this->Presenter->find('first', ['contain' => ['User'], "conditions" => ["presenter_sequence_id" => $val]]);
         $user_id = $user_ary['Presenter']['user_id'];
         $address_ary = $this->Address->find('first', ['contain' => ['State', 'Country'], "conditions" => ["user_id" => $user_id, "address_type_id" => 2]]);
         $market_id = $this->Country->getMarketFromCountryId($address_ary['Country']['id']);
         $recipient = ["first_name" => $user_ary['User']['first_name'], "last_name" => $user_ary['User']['last_name'], "address1" => $address_ary['Address']['address1'], "address2" => $address_ary['Address']['address2'], "address3" => $address_ary['Address']['address3'], "city" => $address_ary['Address']['city'], "state" => $address_ary['State']['abbrev'], "postcode" => $address_ary['Address']['postal_code'], "country" => $address_ary['Country']['name'], "achievement" => $type, "presenter_id" => $presenter_id, "user_id" => $user_id, "email" => $user_ary['User']['email'], "market_id" => $market_id, "country_id" => $address_ary['Address']['country_id']];
         if ($order_id = $charm->createCharmOrders($recipient)) {
             $this->out("{$order_id} Ready for NetSuite.", Shell::NORMAL);
             //die('end');
         } else {
             $this->out("ERROR - Order not created", Shell::NORMAL);
         }
     }
 }