Exemple #1
0
// 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";
Exemple #2
0
 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]));
 }
Exemple #3
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');
Exemple #4
0
$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) {
Exemple #5
0
 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();
 }
Exemple #6
0
 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));
 }
Exemple #7
0
 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);
     }
 }
Exemple #8
0
<?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();
}
Exemple #9
0
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>
Exemple #10
0
<?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);
        }
    }
}