本文整理汇总了PHP中Dao::getResultsNative方法的典型用法代码示例。如果您正苦于以下问题:PHP Dao::getResultsNative方法的具体用法?PHP Dao::getResultsNative怎么用?PHP Dao::getResultsNative使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dao
的用法示例。
在下文中一共展示了Dao::getResultsNative方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: _getPurchaseSeries
private function _getPurchaseSeries($productId, $from, $to, $type = null)
{
$sql = 'select unitPrice, created from `purchaseorderitem` where active = 1 AND productId = :pid AND created >=:from and created <= :to order by created asc';
$result = Dao::getResultsNative($sql, array('pid' => trim($productId), 'from' => trim($from), 'to' => trim($to)));
$return = array();
foreach ($result as $row) {
$created = new UDate(trim($row['created']));
$return[] = array($created->format('U') * 1000, (double) trim($row['unitPrice']) * 1.1);
}
return $return;
}
示例2: getInfo
/**
* Getting the
* @param int $typeId
* @param string $reset
* @throws EntityException
*/
public function getInfo($typeId, $reset = false)
{
DaoMap::loadMap($this);
if (!isset($this->_cache[$typeId]) || $reset === true) {
if (!isset(DaoMap::$map[strtolower(get_class($this))]['infos']) || ($class = trim(DaoMap::$map[strtolower(get_class($this))]['infos']['class'])) === '') {
throw new EntityException('You can NOT get information from a entity' . get_class($this) . ', setup the relationship first!');
}
$sql = 'select value from ' . strtolower($class) . ' `info` where `info`.active = 1 and `info`.' . strtolower(get_class($this)) . 'Id = ? and `info`.TypeId = ?';
$result = Dao::getResultsNative($sql, array($this->getId(), $typeId), PDO::FETCH_NUM);
$this->_cache[$typeId] = array_map(create_function('$row', 'return $row[0];'), $result);
}
return $this->_cache[$typeId];
}
示例3: _findAllZombieAssets
private static function _findAllZombieAssets()
{
$start = self::_debug("Start to run " . __FUNCTION__ . ' =================== ', self::NEW_LINE, "\t");
$overDueDate = UDate::now()->format(self::ASSET_OVERDUE_TIME);
$sql = "select a.assetId from asset a left join product p on (p.fullDescAssetId = a.assetId) where p.id is null and type in(?, ?) ";
$result = Dao::getResultsNative($sql, array(trim(Asset::TYPE_PRODUCT_DEC), trim(Asset::TYPE_PRODUCT_IMG)));
$resultCount = count($result);
self::_debug("Found " . $resultCount . ': ', " ", "\t\t");
$assetIds = array();
for ($i = 0; $i < $resultCount; $i++) {
$assetIds[] = $result[$i]['assetId'];
}
self::_debug(implode(', ', $assetIds));
return $assetIds;
}
示例4: getItems
/**
* Getting the items
*
* @param unknown $sender
* @param unknown $param
* @throws Exception
*
*/
public function getItems($sender, $param)
{
$results = $errors = array();
try {
if (!isset($param->CallbackParameter->searchCriteria->supplierId) || !($supplier = Supplier::get(trim($param->CallbackParameter->searchCriteria->supplierId))) instanceof Supplier) {
throw new Exception('Invalid Supplier provided');
}
if (!isset($param->CallbackParameter->searchCriteria->invoiceNo) || ($invoiceNo = trim($param->CallbackParameter->searchCriteria->invoiceNo)) === '') {
throw new Exception('Invalid Invoice number provided');
}
ReceivingItem::getQuery()->eagerLoad('ReceivingItem.purchaseOrder', 'inner join', 'rec_item_po', 'rec_item_po.id = rec_item.purchaseOrderId');
if (ReceivingItem::countByCriteria('rec_item_po.supplierId = ? and rec_item.invoiceNo = ?', array($supplier->getId(), $invoiceNo)) === 0) {
throw new Exception('There is no such a invoice(invoice No=' . $invoiceNo . ') for supplier:' . $supplier->getName());
}
$sql = 'select ri.productId,
ri.unitPrice `unitPrice`,
sum(ri.qty) `qty`,
group_concat(distinct ri.id) `itemIds`,
group_concat(distinct po.id) `poIds`
from receivingitem ri
inner join purchaseorder po on (po.id = ri.purchaseOrderId)
where ri.active = 1 and ri.invoiceNo = ? and po.supplierId = ?
group by ri.productId, ri.unitPrice';
$params = array($invoiceNo, $supplier->getId());
$rows = Dao::getResultsNative($sql, $params);
$results['supplier'] = $supplier->getJson();
$results['items'] = array();
foreach ($rows as $row) {
$items = count($itemIds = explode(',', $row['itemIds'])) === 0 ? array() : ReceivingItem::getAllByCriteria('id in (' . implode(',', array_fill(0, count($itemIds), '?')) . ')', $itemIds);
$pos = count($poIds = explode(',', $row['poIds'])) === 0 ? array() : PurchaseOrder::getAllByCriteria('id in (' . implode(',', array_fill(0, count($poIds), '?')) . ')', $poIds);
$results['items'][] = array('product' => Product::get($row['productId'])->getJson(), 'totalQty' => $row['qty'], 'totalPrice' => $row['unitPrice'] * $row['qty'], 'items' => array_map(create_function('$a', 'return $a->getJson();'), $items), 'purchaseOrders' => array_map(create_function('$a', 'return $a->getJson();'), $pos));
}
} catch (Exception $ex) {
$errors[] = $ex->getMessage();
}
$param->ResponseData = StringUtilsAbstract::getJson($results, $errors);
}
示例5: dirname
<?php
require_once dirname(__FILE__) . '/../../bootstrap.php';
Core::setUser(UserAccount::get(UserAccount::ID_SYSTEM_ACCOUNT));
$productIds = Dao::getResultsNative('select distinct id from product where active = 1', array(), PDO::FETCH_ASSOC);
foreach ($productIds as $row) {
try {
$output = '';
$cmd = 'php ' . dirname(__FILE__) . '/pricematch.php ' . $row['id'];
$output = ExecWaitTimeout($cmd, 10);
// exec($cmd, $output);
echo print_r($output, true) . "\n";
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
}
/**
* Execute a command and kill it if the timeout limit fired to prevent long php execution
*
* @see http://stackoverflow.com/questions/2603912/php-set-timeout-for-script-with-system-call-set-time-limit-not-working
*
* @param string $cmd Command to exec (you should use 2>&1 at the end to pipe all output)
* @param integer $timeout
* @return string Returns command output
*/
function ExecWaitTimeout($cmd, $timeout = 5)
{
echo $cmd . "\n";
$descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
$pipes = array();
$timeout += time();
示例6: _getDeliveryMethods
/**
* Getting all the delivery methods
*
* @param unknown $params
*
* @return array
*/
private function _getDeliveryMethods($params)
{
$searchTxt = isset($params['searchTxt']) && ($searchTxt = trim($params['searchTxt'])) !== '' ? $searchTxt : '';
$sql = 'select distinct value from orderinfo where value like ? and active = 1 and typeId = ' . OrderInfoType::ID_MAGE_ORDER_SHIPPING_METHOD;
$results = array();
$results['items'] = array_map(create_function('$a', 'return $a["value"];'), Dao::getResultsNative($sql, array('%' . trim($searchTxt) . '%'), PDO::FETCH_ASSOC));
return $results;
}
示例7: _getRunRateData
private function _getRunRateData($productIds)
{
if (count($productIds) === 0) {
return array();
}
$_7DaysBefore = UDate::now()->modify('-7 day');
$_14DaysBefore = UDate::now()->modify('-14 day');
$_1mthBefore = UDate::now()->modify('-1 month');
$_3mthBefore = UDate::now()->modify('-3 month');
$_6mthBefore = UDate::now()->modify('-6 month');
$_12mthBefore = UDate::now()->modify('-12 month');
$sql = "select ord_item.productId `proId`,\n\t sum(if(ord.orderDate >= '" . $_7DaysBefore . "', ord_item.qtyOrdered, 0)) `7days`,\n\t sum(if(ord.orderDate >= '" . $_14DaysBefore . "', ord_item.qtyOrdered, 0)) `14days`,\n\t sum(if(ord.orderDate >= '" . $_1mthBefore . "', ord_item.qtyOrdered, 0)) `1month`,\n\t sum(if(ord.orderDate >= '" . $_3mthBefore . "', ord_item.qtyOrdered, 0)) `3month`,\n\t sum(if(ord.orderDate >= '" . $_6mthBefore . "', ord_item.qtyOrdered, 0)) `6month`,\n\t sum(if(ord.orderDate >= '" . $_12mthBefore . "', ord_item.qtyOrdered, 0)) `12month`\n\t from `orderitem` ord_item\n\t inner join `order` ord on (ord.type = :type and ord.active = 1 and ord.id = ord_item.orderId)\n\t where ord_item.active = 1 and ord_item.productId in (" . implode(', ', $productIds) . ")\n\t group by ord_item.productId";
return Dao::getResultsNative($sql, array('type' => Order::TYPE_INVOICE), PDO::FETCH_ASSOC);
}
示例8: getItems
/**
* Getting the items
*
* @param unknown $sender
* @param unknown $param
* @throws Exception
*
*/
public function getItems($sender, $param)
{
$results = $errors = array();
try {
$class = trim($this->_focusEntity);
$pageNo = 1;
$pageSize = DaoQuery::DEFAUTL_PAGE_SIZE;
if (isset($param->CallbackParameter->pagination)) {
$pageNo = $param->CallbackParameter->pagination->pageNo;
$pageSize = $param->CallbackParameter->pagination->pageSize;
}
$serachCriteria = isset($param->CallbackParameter->searchCriteria) ? json_decode(json_encode($param->CallbackParameter->searchCriteria), true) : array();
$where = array('cn.active = 1');
$params = array();
$innerJoinStrings = array();
foreach ($serachCriteria as $field => $value) {
if (is_array($value) && count($value) === 0 || is_string($value) && ($value = trim($value)) === '') {
continue;
}
$query = $class::getQuery();
switch ($field) {
case 'cn.creditNoteNo':
$where[] = 'cn.creditNoteNo = ?';
$params[] = $value;
break;
case 'cn.applyTo':
$where[] = 'cn.applyTo IN (' . implode(", ", array_fill(0, count($value), "?")) . ')';
$params = array_merge($params, $value);
break;
case 'cn.description':
$where[] = 'cn.description like ?';
$params[] = "%" . $value . "%";
break;
case 'ord.orderNo':
$query->eagerLoad("CreditNote.order", 'inner join', 'ord', '');
$where[] = 'ord.orderNo = ?';
$params[] = trim($value);
$innerJoinStrings[] = 'inner join `order` ord on (ord.id = cn.orderId)';
break;
case 'cust.id':
$value = explode(',', $value);
$where[] = 'cn.customerId IN (' . implode(", ", array_fill(0, count($value), "?")) . ')';
$params = array_merge($params, $value);
break;
case 'pro.ids':
$value = explode(',', $value);
$query->eagerLoad("CreditNote.items", 'inner join', 'cn_item', 'cn_item.creditNoteId = cn.id and cn_item.active = 1');
$where[] = 'cn_item.productId in (' . implode(", ", array_fill(0, count($value), "?")) . ')';
$innerJoinStrings[] = 'inner join `creditnoteitem` cn_item on (cn_item.creditNoteId = cn.id and cn_item.active = 1)';
$params = array_merge($params, $value);
break;
}
}
$stats = array();
$objects = $class::getAllByCriteria(implode(' AND ', $where), $params, true, $pageNo, $pageSize, array('cn.creditNoteNo' => 'desc'), $stats);
$results['pageStats'] = $stats;
$results['items'] = array();
foreach ($objects as $obj) {
$order = $obj->getOrder();
$customer = $obj->getCustomer();
$creditNoteItems = $obj->getCreditNoteItems();
$results['items'][] = $obj->getJson(array('order' => empty($order) ? '' : $order->getJson(), 'customer' => $customer->getJson(), 'creditNoteItems' => $creditNoteItems ? array_map(create_function('$a', 'return $a->getJson();'), $creditNoteItems) : ''));
}
$sql = 'select sum(`cn`.totalValue) `totalValue`, sum(`cn`.totalPaid) `totalPaid` from `creditnote` cn ' . implode(' ', $innerJoinStrings) . ' where cn.active = 1 AND (' . implode(' AND ', $where) . ')';
$sumResult = Dao::getResultsNative($sql, $params);
$results['totalValue'] = count($sumResult) > 0 ? $sumResult[0]['totalValue'] : 0;
$results['totalPaid'] = count($sumResult) > 0 ? $sumResult[0]['totalPaid'] : 0;
} catch (Exception $ex) {
$errors[] = $ex->getMessage() . $ex->getTraceAsString();
}
$param->ResponseData = StringUtilsAbstract::getJson($results, $errors);
}
示例9: preSave
/**
* (non-PHPdoc)
* @see BaseEntityAbstract::preSave()
*/
public function preSave()
{
if (trim($this->getId()) !== '') {
$oldStatuses = Dao::getResultsNative('select status from purchaseorder where id = ?', array($this->getId()));
if (count($oldStatuses) > 0 && ($oldStatus = trim($oldStatuses[0]['status'])) !== ($status = trim($this->getStatus()))) {
$msg = 'Changed status from "' . $oldStatus . '" to "' . $status . '"';
$this->addComment($msg, Comments::TYPE_SYSTEM)->addLog($msg, Log::TYPE_SYSTEM, 'PO_STATUS_CHANGE', __CLASS__ . '::' . __FUNCTION__);
}
}
if ($this->getFromPO() instanceof PurchaseOrder && intval($this->getIsCredit()) !== 1) {
throw new Exception('You can only set the From PO field, when this purchase order is for a credit');
}
}
示例10: dirname
<?php
require_once dirname(__FILE__) . '/../../bootstrap.php';
Core::setUser(UserAccount::get(UserAccount::ID_SYSTEM_ACCOUNT));
echo "Begin at MELB TIME: " . UDate::now(UDate::TIME_ZONE_MELB) . "\n";
if (isset($argv) && isset($argv[1]) && Product::get($argv[1]) instanceof Product) {
$productIds = Dao::getResultsNative('select distinct p.id from product p where p.id = ?', array($argv[1]), PDO::FETCH_ASSOC);
} else {
$productIds = Dao::getResultsNative('select distinct p.id from product p inner join productpricematchrule r on (r.productId = p.id and r.active = 1) where p.active = 1 order by p.id', array(), PDO::FETCH_ASSOC);
}
$rows = count($productIds);
echo "--- Got ({$rows}) products having price matching rules !";
foreach ($productIds as $row) {
try {
$output = '';
$timeout = 60;
// in seconds
$cmd = 'php ' . dirname(__FILE__) . '/pricematch.php ' . $row['id'];
$output = ExecWaitTimeout($cmd, $timeout);
// exec($cmd, $output);
echo print_r($output, true) . "\n";
} catch (Exception $e) {
echo $e->getMessage() . "\n";
}
}
echo "End at MELB TIME: " . UDate::now(UDate::TIME_ZONE_MELB) . "\n";
/**
* Execute a command and kill it if the timeout limit fired to prevent long php execution
*
* @see http://stackoverflow.com/questions/2603912/php-set-timeout-for-script-with-system-call-set-time-limit-not-working
*
示例11: importProductAttributes
/**
* Importing the attributes from magento
*
* @return void|CatelogConnector
*/
public function importProductAttributes()
{
$productAttributeSetIds = Dao::getResultsNative('select distinct pro_att_set.id from productattributeset pro_att_set where pro_att_set.isFromB2B = 1 and mageId <> 0', array(), PDO::FETCH_ASSOC);
if (count($productAttributeSetIds) === 0) {
return;
}
try {
$transStarted = false;
try {
Dao::beginTransaction();
} catch (Exception $e) {
$transStarted = true;
}
foreach ($productAttributeSetIds as $productAttributeSetId) {
$productAttributeSetId = $productAttributeSetId['id'];
$productAttributeSet = ProductAttributeSet::get($productAttributeSetId);
if (!$productAttributeSet instanceof ProductAttributeSet) {
continue;
}
$productAttributes = $this->getProductAttributeList($productAttributeSet->getMageId());
if (count($productAttributes) === 0) {
continue;
}
foreach ($productAttributes as $productAttribute) {
$mageId = trim($productAttribute->attribute_id);
$code = isset($productAttribute->code) ? trim($productAttribute->code) : '';
$type = isset($productAttribute->type) ? trim($productAttribute->type) : '';
if (!isset($productAttribute->required)) {
$required = false;
} else {
$required = trim($productAttribute->required) === '1' || $required === true || trim($productAttribute->required) === 'true' ? true : false;
}
$scope = isset($productAttribute->scope) ? trim($productAttribute->scope) : '';
$description = isset($productAttribute->description) ? trim($productAttribute->description) : $code;
Log::logging(0, get_class($this), 'getting productAttribute from magento (mageId="' . $mageId . '")', self::LOG_TYPE, '', __FUNCTION__);
$productAttribute = ProductAttribute::getByMageId($mageId);
if (!$productAttribute instanceof ProductAttribute) {
Log::logging(0, get_class($this), 'found new ProductAttribute from magento(mageId="' . $mageId . '", mageAttributeSetId="' . $productAttributeSet->getMageId() . '", code="' . $code . '", type="' . $type . '", required="' . $required . '", scope="' . $scope . '")', self::LOG_TYPE, '', __FUNCTION__);
echo 'found new ProductAttribute from magento(mageId="' . $mageId . '", mageAttributeSetId="' . $productAttributeSet->getMageId() . '", code="' . $code . '", type="' . $type . '", required="' . $required . '", scope="' . $scope . '")' . "\n";
$productAttribute = ProductAttribute::create($code, $type, $required, $scope, $description, true, $mageId, $productAttributeSet->getMageId());
} else {
Log::logging(0, get_class($this), 'found existing ProductAttribute from magento(mageId="' . $mageId . '", mageAttributeSetId="' . $productAttributeSet->getMageId() . '", code="' . $code . '", ID=' . $productAttributeSet->getId() . ', type="' . $type . '", required="' . $required . '", scope="' . $scope . '")', self::LOG_TYPE, '', __FUNCTION__);
echo 'found existing ProductAttribute from magento(mageId="' . $mageId . '", mageAttributeSetId="' . $productAttributeSet->getMageId() . '", code="' . $code . '", ID=' . $productAttributeSet->getId() . ', type="' . $type . '", required="' . $required . '", scope="' . $scope . '")' . "\n";
$productAttribute->setCode($code)->setType($type)->setRequired($required)->setScope($scope)->setDescription($description)->setIsFromB2B(true)->setAttributeSetMageId($productAttributeSet->getId())->setActive(true)->save();
}
}
}
if ($transStarted === false) {
Dao::commitTransaction();
}
} catch (Exception $e) {
if ($transStarted === false) {
Dao::commitTransaction();
}
throw $e;
}
return $this;
}
示例12: _topProductIds
private function _topProductIds()
{
$sql = 'select productId, sum(qtyOrdered) `sum` from orderitem where active = 1 group by productId order by `sum` desc limit 10';
$result = Dao::getResultsNative($sql);
return array_map(create_function('$a', 'return $a["productId"];'), $result);
}
示例13: getProducts
//.........这里部分代码省略.........
$params = array_merge($params, $skus);
} else {
if (($sku = trim($sku)) !== '') {
$where[] = 'pro.sku like :sku';
$params['sku'] = '%' . $sku . '%';
}
}
if (($name = trim($name)) !== '') {
$where[] = 'pro.name like :proName';
$params['proName'] = '%' . $name . '%';
}
if (($active = trim($active)) !== '') {
$where[] = 'pro.active = :active';
$params['active'] = intval($active);
}
if (($sellOnWeb = trim($sellOnWeb)) !== '') {
$where[] = 'pro.sellOnWeb = :sellOnWeb';
$params['sellOnWeb'] = intval($sellOnWeb);
}
if (count($manufacturerIds) > 0) {
$ps = array();
$keys = array();
foreach ($manufacturerIds as $index => $value) {
$key = 'manf_' . $index;
$keys[] = ':' . $key;
$ps[$key] = trim($value);
}
$where[] = 'pro.manufacturerId in (' . implode(',', $keys) . ')';
$params = array_merge($params, $ps);
}
if (count($statusIds) > 0) {
$ps = array();
$keys = array();
foreach ($statusIds as $index => $value) {
$key = 'stId_' . $index;
$keys[] = ':' . $key;
$ps[$key] = trim($value);
}
$where[] = 'pro.statusId in (' . implode(',', $keys) . ')';
$params = array_merge($params, $ps);
}
if (count($supplierIds) > 0) {
$ps = array();
$keys = array();
foreach ($supplierIds as $index => $value) {
$key = 'spId_' . $index;
$keys[] = ':' . $key;
$ps[$key] = trim($value);
}
self::getQuery()->eagerLoad('Product.supplierCodes', 'inner join', 'pro_sup_code', 'pro.id = pro_sup_code.productId and pro_sup_code.supplierId in (' . implode(',', $keys) . ')');
if (is_array($sumValues)) {
$innerJoins[] = 'inner join suppliercode pro_sup_code on (pro.id = pro_sup_code.productId and pro_sup_code.supplierId in (' . implode(',', $keys) . '))';
}
$params = array_merge($params, $ps);
}
if (count($categoryIds) > 0) {
$ps = array();
$keys = array();
foreach ($categoryIds as $index => $value) {
if (($category = ProductCategory::get($value)) instanceof ProductCategory) {
$key = 'cateId_' . $index;
$keys[] = ':' . $key;
$ps[$key] = $category->getId();
$parent_category_ids = array();
foreach ($category->getAllChildrenIds() as $child_category_id) {
$key = 'cateId_' . $index . '_' . $child_category_id;
$keys[] = ':' . $key;
$ps[$key] = $child_category_id;
}
}
}
var_dump($ps);
self::getQuery()->eagerLoad('Product.categories', 'inner join', 'pro_cate', 'pro.id = pro_cate.productId and pro_cate.categoryId in (' . implode(',', $keys) . ')');
if (is_array($sumValues)) {
$innerJoins[] = 'inner join product_category pro_cate on (pro.id = pro_cate.productId and pro_cate.categoryId in (' . implode(',', $keys) . '))';
}
$params = array_merge($params, $ps);
}
if (($stockLevel = trim($stockLevel)) !== '') {
$where[] = 'pro.stockOnHand <= pro.' . $stockLevel . ' and pro.' . $stockLevel . ' is not null';
}
if (($sh_from = trim($sh_from)) !== '') {
$where[] = 'pro.stockOnHand >= :stockOnHand_from';
$params['stockOnHand_from'] = intval($sh_from);
}
if (($sh_to = trim($sh_to)) !== '') {
$where[] = 'pro.stockOnHand <= :stockOnHand_to';
$params['stockOnHand_to'] = intval($sh_to);
}
$products = Product::getAllByCriteria(implode(' AND ', $where), $params, false, $pageNo, $pageSize, $orderBy, $stats);
if (is_array($sumValues)) {
$sql = 'select sum(pro.stockOnHand) `totalStockOnHand`, sum(pro.totalOnHandValue) `totalOnHandValue` from product pro ' . implode(' ', $innerJoins) . ' where pro.active = 1 and (' . implode(' AND ', $where) . ')';
$sumResult = Dao::getResultsNative($sql, $params);
if (count($sumResult) > 0) {
$sumValues['totalStockOnHand'] = $sumResult[0]['totalStockOnHand'];
$sumValues['totalOnHandValue'] = $sumResult[0]['totalOnHandValue'];
}
}
return $products;
}
示例14: preSave
/**
* (non-PHPdoc)
* @see BaseEntityAbstract::preSave()
*/
public function preSave()
{
if (trim($this->getInvDate()) === '') {
$this->setInvDate(Udate::zeroDate());
}
if (trim($this->getId()) !== '') {
//status changed
$originalOrder = self::get($this->getId());
if ($originalOrder instanceof Order && $originalOrder->getStatus()->getId() !== $this->getStatus()->getId()) {
$infoType = OrderInfoType::get(OrderInfoType::ID_MAGE_ORDER_STATUS_BEFORE_CHANGE);
$orderInfos = OrderInfo::find($this, $infoType, false, 1, 1);
$orderInfo = count($orderInfos) === 0 ? null : $orderInfos[0];
OrderInfo::create($this, $infoType, $originalOrder->getStatus()->getId(), $orderInfo);
$this->addLog('Changed Status from [' . $originalOrder->getStatus()->getName() . '] to [' . $this->getStatus() . ']', Log::TYPE_SYSTEM, 'Auto Log', get_class($this) . '::' . __FUNCTION__);
//get the required kits qty
if (in_array(intval($this->getStatus()->getId()), array(OrderStatus::ID_PICKED, OrderStatus::ID_SHIPPED))) {
$sql = "select sum(ord_item.qtyOrdered) `requiredQty`, ord_item.productId `productId`, pro.sku `sku` from orderitem ord_item inner join product pro on (pro.id = ord_item.productId and pro.isKit = 1) where ord_item.orderId = ? and ord_item.active = 1 group by pro.id";
$result = Dao::getResultsNative($sql, array($this->getId()), PDO::FETCH_ASSOC);
if (count($result) > 0) {
$errMsg = array();
foreach ($result as $row) {
$requiredQty = $row['requiredQty'];
$sku = $row['sku'];
if (($kitsCount = count($kits = Kit::getAllByCriteria('soldOnOrderId = ? and productId =? ', array($this->getId(), $row['productId'])))) < $requiredQty) {
$errMsg[] = 'Product (SKU=' . $sku . ') needs to be sold as a kit(req Qty=' . $requiredQty . ', providedQty=' . $kitsCount . '): ' . implode(', ', array_map(create_function('$a', 'return $a->getBarcode();'), $kits));
}
}
if (count($errMsg) > 0) {
throw new EntityException(implode('; ', $errMsg));
}
}
}
}
}
}