本文整理汇总了PHP中VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField方法的典型用法代码示例。如果您正苦于以下问题:PHP VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField方法的具体用法?PHP VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField怎么用?PHP VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VirtueMartModelCustomfields
的用法示例。
在下文中一共展示了VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handleStockAfterStatusChangedPerProduct
function handleStockAfterStatusChangedPerProduct($newState, $oldState,$tableOrderItems, $quantity) {
if($newState == $oldState) return;
// $StatutWhiteList = array('P','C','X','R','S','N');
$db = JFactory::getDBO();
$db->setQuery('SELECT * FROM `#__virtuemart_orderstates` ');
$StatutWhiteList = $db->loadAssocList('order_status_code');
// new product is statut N
$StatutWhiteList['N'] = Array ( 'order_status_id' => 0 , 'order_status_code' => 'N' , 'order_stock_handle' => 'A');
if(!array_key_exists($oldState,$StatutWhiteList) or !array_key_exists($newState,$StatutWhiteList)) {
vmError('The workflow for '.$newState.' or '.$oldState.' is unknown, take a look on model/orders function handleStockAfterStatusChanged','Can\'t process workflow, contact the shopowner. Status is '.$newState);
return ;
}
//vmdebug( 'updatestock qt :' , $quantity.' id :'.$productId);
// P Pending
// C Confirmed
// X Cancelled
// R Refunded
// S Shipped
// N New or coming from cart
// TO have no product setted as ordered when added to cart simply delete 'P' FROM array Reserved
// don't set same values in the 2 arrays !!!
// stockOut is in normal case shipped product
//order_stock_handle
// 'A' : stock Available
// 'O' : stock Out
// 'R' : stock reserved
// the status decreasing real stock ?
// $stockOut = array('S');
if ($StatutWhiteList[$newState]['order_stock_handle'] == 'O') $isOut = 1;
else $isOut = 0;
if ($StatutWhiteList[$oldState]['order_stock_handle'] == 'O') $wasOut = 1;
else $wasOut = 0;
// Stock change ?
if ($isOut && !$wasOut) $product_in_stock = '-';
else if ($wasOut && !$isOut ) $product_in_stock = '+';
else $product_in_stock = '=';
// the status increasing reserved stock(virtual Stock = product_in_stock - product_ordered)
// $Reserved = array('P','C');
if ($StatutWhiteList[$newState]['order_stock_handle'] == 'R') $isReserved = 1;
else $isReserved = 0;
if ($StatutWhiteList[$oldState]['order_stock_handle'] == 'R') $wasReserved = 1;
else $wasReserved = 0;
if ($isReserved && !$wasReserved ) $product_ordered = '+';
else if (!$isReserved && $wasReserved ) $product_ordered = '-';
else $product_ordered = '=';
//Here trigger plgVmGetProductStockToUpdateByCustom
$productModel = VmModel::getModel('product');
if (!empty($tableOrderItems->product_attribute)) {
if(!class_exists('VirtueMartModelCustomfields'))require(VMPATH_ADMIN.DS.'models'.DS.'customfields.php');
$virtuemart_product_id = $tableOrderItems->virtuemart_product_id;
$product_attributes = json_decode($tableOrderItems->product_attribute,true);
foreach ($product_attributes as $virtuemart_customfield_id=>$param){
if ($param) {
if(is_array($param)){
reset($param);
$customfield_id = key($param);
} else {
$customfield_id = $param;
}
if ($customfield_id) {
if ($productCustom = VirtueMartModelCustomfields::getCustomEmbeddedProductCustomField ($customfield_id ) ) {
if ($productCustom->field_type == "E") {
if(!class_exists('vmCustomPlugin')) require(VMPATH_PLUGINLIBS.DS.'vmcustomplugin.php');
JPluginHelper::importPlugin('vmcustom');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('plgVmGetProductStockToUpdateByCustom',array(&$tableOrderItems,$param, $productCustom));
}
}
}
}
}
// we can have more then one product in case of pack
// in case of child, ID must be the child ID
// TO DO use $prod->amount change for packs(eg. 1 computer and 2 HDD)
if (is_array($tableOrderItems)) foreach ($tableOrderItems as $prod ) $productModel->updateStockInDB($prod, $quantity,$product_in_stock,$product_ordered);
else $productModel->updateStockInDB($tableOrderItems, $quantity,$product_in_stock,$product_ordered);
} else {
$productModel->updateStockInDB ($tableOrderItems, $quantity,$product_in_stock,$product_ordered);
}
}