/** * 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); } }
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); } } }