// END INCLUDES =============================== $msql = SafeMySQL::getInstance(); //$sql = "CALL `create_packages`"; //$msql->query($sql); /* grab only fulfillment records that 1. contain actual orders 2. where 3PL export is enabled (need to setup) */ // LIMIT TO STALCO FOR NOW, NEED TO EXPAND THE MODULE $sql = "\nSELECT \n\t distinct(f.fulfillment_id)\n\t, f.*\nFROM \n\tfulfillments f\n\tjoin packages p on p.fulfillment_id = f.fulfillment_id\nWHERE \n\tf.active = 1 \n\t#and f.fulfillment_3pl = 1\n\tand f.fulfillment_id = 10\n\tand p.sent is null\nLIMIT 1"; $setFulfillment = $msql->getAll($sql); if (!$setFulfillment) { //var_dump($msql); die; } foreach ($setFulfillment as $fulfillment) { $fulfillmentModel = new Fulfillment(); $fulfillmentModel->fillFromArray($fulfillment); // STALCO CONNECTION DETAILS - NEED TO SETUP IN THE DB EVENTUALLY $key = "{8f403968-22c2-46f2-8942-6aaa7b846398}"; // $fulfillmentModel->key $warehouseId = 1; // $fulfillmentModel-> $id = 829; // $fulfillmentModel-> $CustomerID = 16; // $fulfillmentModel-> $username = '******'; // $fulfillmentModel-> $password = '******'; // $fulfillmentModel-> $soapUrl = "https://secure-wms.com/webserviceexternal/contracts.asmx";
public function fulfillmentAction() { $clearArray = array('fulfillment_id', 'o_status'); $this->filter($clearArray); if (!isset($this->params['r_dates'])) { $today = date("d.m.Y"); $this->params['r_dates'] = $today . '-' . $today; } if (!isset($this->params['show_orders'])) { $this->params['show_orders'] = 0; } $pagination = new Pagination(array('action' => $this->action, 'controller' => $this->controller, 'params' => $this->params, 'ajax' => true)); $showOrders = AF::get($this->params, 'show_orders') ? true : false; if ($showOrders && isset($this->params['from']) && in_array($this->params['from'], Fulfillment::orderSType())) { switch ($this->params['from']) { case 'shippable_orders': $this->params['o_status'] = implode(',', array(Order::STATUS_OK, Order::STATUS_SENT)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'shippable_products': $this->params['o_status'] = implode(',', array(Order::STATUS_OK, Order::STATUS_SENT)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'orders_pending_post': $this->params['o_status'] = implode(',', array(Order::STATUS_OK)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'orders_sent_to_fulfillment': $this->params['o_status'] = implode(',', array(Order::STATUS_SENT)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'orders_pending_tracking': $this->params['o_status'] = implode(',', array(Order::STATUS_SENT, Order::STATUS_SHIPPED)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['p_tracking_number'] = ''; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'shipped_orders': $this->params['o_status'] = implode(',', array(Order::STATUS_SHIPPED)); $this->params['o_flag'] = Order::FlAG_PAID; $this->params['o_not_flag'] = Order::FlAG_TEST; break; case 'returned_orders': $this->params['o_status'] = implode(',', array(Order::STATUS_RETURNED)); $this->params['o_not_flag'] = Order::FlAG_TEST; break; } } $models = AFActiveDataProvider::models('Fulfillment', $this->params, $pagination); if ($showOrders) { $dataProvider = $models->getStatusReportByOrder(); $total = null; $fields = array('order_id_link', 'created_formatted', 'shippable_products', 'return_reason_formatted', 'status'); } else { $dataProvider = $models->getStatusReport(); $total = $models->getTotalReport(); $fields = array('fulfillment_formatted', 'shippable_orders_link', 'shippable_products_link', 'orders_pending_post_link', 'orders_sent_to_fulfillment_link', 'orders_pending_tracking_link', 'shipped_orders_link', 'returned_orders_link'); } $filterFields = OrderLog::$FilterFields = $models->getoutFilterFields($clearArray, array('r_dates')); $fulfillments = $models->getReportFulfillments(); // set ajax table if (AF::isAjaxRequestModels()) { $this->view->includeFile('_fulfillment_table', array('application', 'views', 'reports'), array('access' => $this->access, 'controller' => $this->controller, 'dataProvider' => $dataProvider, 'pagination' => $pagination, 'filterFields' => $filterFields, 'total' => $total[0], 'fields' => $fields, 'ajax' => true, 'fulfillments' => $fulfillments)); die; } if (isset($this->params['download_csv'])) { $csvField = $fields; $changeArray = array('shippable_orders_link' => 'shippable_orders', 'shippable_products_link' => 'shippable_products', 'orders_pending_post_link' => 'orders_pending_post', 'orders_sent_to_fulfillment_link' => 'orders_sent_to_fulfillment', 'orders_pending_tracking_link' => 'orders_pending_tracking', 'shipped_orders_link' => 'shipped_orders', 'returned_orders_link' => 'returned_orders', 'order_id_link' => 'order_id', 'return_reason_formatted' => 'return_reason'); foreach ($changeArray as $k => $v) { $key = array_search($k, $csvField); if ($key || $key === 0) { $csvField[$key] = $v; } } Csv::printDataProviderCsv($dataProvider, $csvField, 'fulfillment_report'); } Assets::css('jquery-ui'); Assets::js('//code.jquery.com/ui/1.10.3/jquery-ui.js'); Assets::js('dateRange/jquery.daterange'); Assets::js('ajax_table'); $this->render('fulfillment', array('dataProvider' => $dataProvider, 'pagination' => $pagination, 'filterFields' => $filterFields, 'fields' => $fields, 'fulfillments' => $fulfillments, 'total' => $total[0])); }
echo __('group_by_fulfillments'); ?> </option> <option value="1" <?if($filterFields['show_orders']==1){?>selected="" <?}?>><?php echo __('group_by_orders'); ?> </option> </select> <?if($filterFields['show_orders']==1){?> <select name="from" class="chosen-select select-xlarge af_select_ajax" data-placeholder="<?php echo __('all_type'); ?> "> <option value=""></option> <?foreach(Fulfillment::orderSType() as $itemType){?> <option value="<?php echo $itemType; ?> " <?if($filterFields['from']==$itemType){?>selected=""<?}?>><?php echo __($itemType); ?> </option> <?}?> </select> <?}?> <br> <select multiple name="fulfillment_id" class="chosen-select select-xlarge af_select_ajax" data-placeholder="<?php echo __('choose_fulfilment');
$msql = SafeMySQL::getInstance(); //$sql = "CALL `create_packages`"; //$msql->query($sql); /* grab only fulfillment records that 1. contain actual orders 2. where custom export is enabled 3. where actual fulfillment_field_records exist */ $sql = "\nSELECT \n\t distinct(f.fulfillment_id)\n\t, f.*\nFROM \n\tfulfillments f\n\tjoin packages p on p.fulfillment_id = f.fulfillment_id\nWHERE \n\tf.active = 1 \n\tand f.fulfillment_custom = 1\n\tand p.sent is null\n\tand f.fulfillment_id in (\n\t\tselect \n\t\t\tf2.fulfillment_id \n\t\tfrom \n\t\t\tfulfillment_fields f2 \n\t\twhere \n\t\t\tf2.fulfillment_id = f.fulfillment_id)\n\t"; $setFulfillment = $msql->getAll($sql); if (!$setFulfillment) { //var_dump($msql); die; } $orderRows = array(); foreach ($setFulfillment as $fulfillment) { $fulfillmentModel = new Fulfillment(); $fulfillmentModel->fillFromArray($fulfillment); $firstRow = true; $orderRows = array(); // grab the packages $sql = "\n\tSELECT \n\t\t distinct p.package_id\n\t\t, p.customer_id\n\tFROM \n\t\tpackages p\n\t\tjoin packages_orders po on po.package_id = p.package_id\n\t\tjoin orders o on o.order_id = po.order_id\n\tWHERE \n\t\tp.sent is null\n\t\tand p.fulfillment_id = ?i\n\t\tAND FIND_IN_SET('test', `o`.`flags`)=0 "; $packages = $msql->getInd('package_id', $sql, $fulfillmentModel->fulfillment_id); foreach ($packages as $p) { $package = new Package(); $package->loadFullPackage($p['package_id']); $orderRows = array_merge($orderRows, $package->getPackageCustom($fulfillmentModel, $firstRow)); unset($package); $firstRow = false; } //var_dump($orderRows); exit; if (!$orderRows) {
function deleteAction() { $id = AF::get($_POST, 'id', 0); $modelsID = explode(',', $id); $errors = FALSE; foreach ($modelsID as $id) { $model = new Fulfillment(); $model->model_uset_id = $this->user->user_id; if ($model->findByPk($id)) { $model->delete($id); } else { $errors = TRUE; } if ($model->getErrors()) { $errors = TRUE; } unset($model); } if (isset($_POST['ajax'])) { AF::setJsonHeaders('json'); if ($errors) { Message::echoJsonError(__('fulfillment_not_deleted')); } else { $countE = AF::get($_POST, 'countE', 100000); if (count($modelsID) >= $countE) { $link = AF::link(array('fulfillments' => 'view')); Message::echoJsonRedirect($link); } else { Message::echoJsonSuccess(__('fulfillment_deleted')); } } } $this->redirect(); }
function updateAction() { $model = new Campaign(); if (isset($_POST['country_id'])) { $_POST['country_id'] = implode(',', $_POST['country_id']); } // check if this is an attachment campaign. if so, we don't want to validate the urls or fulfillment_id if it isnot presesnt $attach = false; if (isset($_POST['attach']) && $_POST['attach']) { $attach = true; $_POST['url'] = $_POST['order_url'] = $_POST['return_url'] = 'attach'; if (!strlen($_POST['fulfillment_id'])) { $_POST['fulfillment_id'] = 0; } } else { $_POST['attach'] = 0; } // Uncomment the following line if AJAX validation is needed $this->performAjaxValidation($model); if (isset($_POST['ajax']) && $_POST['ajax'] == 'categorys-form') { $model->fillFromArray($_POST, FALSE); $model->user_id_updated = $this->user->user_id; $model->updated = 'NOW():sql'; $model->model_uset_id = $this->user->user_id; $fulfillment_change = AF::get($_POST, 'fulfillment_change'); Campaigns::fulfillmentRelationship($model->campaign_id, $model->fulfillment_id, $fulfillment_change); if ($model->restrictions()->save()) { Message::echoJsonSuccess(__('campaign_updated')); } else { Message::echoJsonError(__('campaign_no_updated')); } die; } $id = AF::get($this->params, 'id', FALSE); if (!$id) { throw new AFHttpException(0, 'no_id'); } if (!$model->restrictions()->cache()->findByPk($id)) { throw new AFHttpException(0, 'incorrect_id'); } $model->country_id = explode(',', $model->country_id); Assets::js('jquery.form'); $this->addToPageTitle('Update campaign'); //array_unshift($fulfillments, array('fulfillment_id'=>0, 'alias'=>__('none'))); // Is this used still? $ccomboModel = new CCombo(); $ccomboModel->campaign_id = $model->campaign_id; $isCombo = $ccomboModel->checkRelationship(); $countries = Country::model()->cache()->findAllInArray(); $profiles = Profile::model()->cache()->findAllInArray(); // prepend dry run gateway array_unshift($profiles, array('profile_id' => 0, 'profile_name' => 'DRY RUN GATEWAY')); $fulfillments = Fulfillment::model()->cache()->findAllInArray(); $currencies = $model->getCountOrders() > 0 ? array() : Currency::model()->cache()->findAllInArray(); $domains = Domain::model()->cache()->findAllInArray(); $this->render('update', array('model' => $model, 'countries' => $countries, 'profiles' => $profiles, 'currencies' => $currencies, 'fulfillments' => $fulfillments, 'isCombo' => $isCombo, 'domains' => $domains)); }
public function loadPackage($pid) { //$this->package_id = $pid; $this->fillFromDbPk($pid); // load fulfillment $this->fulfillment = Fulfillment::model()->fillFromDbPk($this->fulfillment_id); // load customer $this->customer = new Customer(); $this->customer->fillFromDbPk($this->customer_id); $sql = "SELECT order_id\n FROM packages_orders\n WHERE package_id = ?i\n\t\t\t\torder by package_id asc"; $db = self::$_msql = SafeMySQL::getInstance(); $this->order_ids = $db->getCol($sql, $this->package_id); $this->orders = array(); foreach ($this->order_ids as $id) { $this->orders[$id] = new Order(); $this->orders[$id]->allFIelds = true; $this->orders[$id]->fillFromDbPk($id); } }
<?php include_once '../settings/autoload.php'; $msql = SafeMySQL::getInstance(); $sql = "SELECT *\n FROM `fulfillments` as f\n WHERE f.`active` = 1\n\t\tand f.download_enabled = 1"; $setFulfillment = $msql->getAll($sql); foreach ($setFulfillment as $fulfillment) { $fulfillmentModel = new Fulfillment(); $fulfillmentModel->fillFromArray($fulfillment); $fulfillmentModel->downloadFromFulfillment(); }
echo __('yes'); ?> </option> </select> <span class="help-inline"></span> </div> </div> <div class="control-group"> <label class="control-label"><?php echo $modelLables['send_time']; ?> </label> <div class="controls"> <input maxlength="8" class="input-xlarge" type="text" name="send_time" value="<?php echo $model->send_time ? $model->send_time : Fulfillment::defaultDelayTime(); ?> "> <span class="help-inline">Example: 05:47</span> </div> </div> <div class="control-group"> <label class="control-label"><?php echo __('active'); ?> </label> <div class="controls"> <label class="checkbox"> <input type="checkbox" value="1" name="active" <?if($model->active){?>checked="" <?}?>> <span class="help-inline"></span>
<?php include_once '../settings/autoload.php'; $msql = SafeMySQL::getInstance(); $sql = "SELECT *\n FROM `fulfillments` as f\n WHERE f.`active` = 1"; $setFulfillment = $msql->getAll($sql); if (!$setFulfillment) { die; } foreach ($setFulfillment as $fulfillment) { $fulfillmentModel = new Fulfillment(); $fulfillmentModel->fillFromArray($fulfillment); $sql = "(\n SELECT o.*, o.`created` as 'order_created', p.*, s.*, sc.`shipcat_code`, sc.`shipcat_name`, g.`gateway_id`, g.`alias`, opn.`card_number`, opn.`expiry_date`, `countries1`.`country_name` AS `country_name`, `countries2`.`country_name` AS `billing_country_name`, `states1`.`state_name` AS `state_name`, `states2`.`state_name` AS `billing_state_name`\n FROM `orders` AS o\n JOIN `campaigns` AS c ON o.`campaign_id` = c.`campaign_id`\n JOIN `orders_pn` AS opn ON o.`order_id` = opn.`order_id`\n JOIN `products` AS p ON o.`product_id` = p.`product_id`\n LEFT JOIN `shipping` AS s ON o.`shipping_id` = s.`shipping_id`\n LEFT JOIN `shipcat` AS sc ON s.`shipcat_id` = sc.`shipcat_id`\n LEFT JOIN `gateways` AS g ON c.`gateway_id` = g.`gateway_id`\n LEFT JOIN `countries` AS `countries1` ON o.`country_id` = `countries1`.`country_id`\n LEFT JOIN `countries` AS `countries2` ON o.`billing_country_id` = `countries2`.`country_id`\n LEFT JOIN `states` AS `states1` ON o.`country_id` = `states1`.`country_id` AND o.`state_id` = `states1`.`state_code`\n LEFT JOIN `states` AS `states2` ON o.`billing_country_id` = `states2`.`country_id` AND o.`billing_state_id` = `states2`.`state_code`\n WHERE o.`status` = 'ok' AND c.`fulfillment_id` = ?i)\n UNION\n (\n SELECT o.*, o.`created` as 'order_created', p.*, s.*, sc.`shipcat_code`, sc.`shipcat_name`, NULL, NULL, NULL, NULL, `countries1`.`country_name` AS `country_name`, `countries2`.`country_name` AS `billing_country_name`, `states1`.`state_name` AS `state_name`, `states2`.`state_name` AS `billing_state_name`\n FROM `orders` AS o\n JOIN `campaigns` AS c ON o.`campaign_id` = c.`campaign_id`\n JOIN `products` AS p ON o.`product_id` = p.`product_id`\n LEFT JOIN `shipping` AS s ON o.`shipping_id` = s.`shipping_id`\n LEFT JOIN `shipcat` AS sc ON s.`shipcat_id` = sc.`shipcat_id`\n LEFT JOIN `countries` AS `countries1` ON o.`country_id` = `countries1`.`country_id`\n LEFT JOIN `countries` AS `countries2` ON o.`billing_country_id` = `countries2`.`country_id`\n LEFT JOIN `states` AS `states1` ON o.`country_id` = `states1`.`country_id` AND o.`state_id` = `states1`.`state_code`\n LEFT JOIN `states` AS `states2` ON o.`billing_country_id` = `states2`.`country_id` AND o.`billing_state_id` = `states2`.`state_code`\n WHERE `status` = 'upsell' AND `ship_with` IN (\n SELECT `order_id`\n FROM `orders` AS o\n WHERE o.`status` = 'ok' AND c.`fulfillment_id` = ?i\n )\n )\n ORDER BY `order_id`"; $orders = $msql->getInd('order_id', $sql, $fulfillmentModel->fulfillment_id, $fulfillmentModel->fulfillment_id); if (!$orders) { continue; } $filePath = OrderFTP::createFtpOrders($orders, $fulfillmentModel); $fulfillmentModel->filePath = $filePath; if ($fulfillmentModel->uploadToFulfillment()) { $sql = "UPDATE `orders` as o\n JOIN `campaigns` AS c ON o.`campaign_id` = c.`campaign_id`\n JOIN `orders_pn` AS opn ON o.`order_id` = opn.`order_id`\n JOIN `products` AS p ON o.`product_id` = p.`product_id`\n LEFT JOIN `shipping` AS s ON o.`shipping_id` = s.`shipping_id`\n LEFT JOIN `shipcat` AS sc ON s.`shipcat_id` = sc.`shipcat_id`\n LEFT JOIN `gateways` AS g ON c.`gateway_id` = g.`gateway_id`\n SET o.`status` = 'sent'\n WHERE o.`status` = 'ok' AND o.`order_id` IN(?a)"; $msql->query($sql, OrderFTP::$updateOrders); foreach (OrderFTP::$updateOrders as $orderID) { OrderLog::createLog(0, $orderID, 19); } } }