| Current Path : /home/digilove/public_html/components/com_marketplace/models/ |
| Current File : /home/digilove/public_html/components/com_marketplace/models/orderhistory.php |
<?php
/**
* Marketplace - Component Marketplace
* ******************************************************************
*
* PHP version 7.0
*
* @category Component
* @package Joomla
* @author WebKul software private limited <support@webkul.com>
* @copyright 2010 WebKul software private limited
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @version GIT:5.2
* @filesource http://store.webkul.com
* @link Technical Support: webkul.uvdesk.com
* ******************************************************************
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.modellist');
if (!class_exists('MarketplaceModelOrderhistory')) {
/**
* Marketplace Model Orderhistory class
*
* @category Component
* @package Joomla
* @author WebKul software private limited <support@webkul.com>
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @link Technical Support: webkul.uvdesk.com
*/
class MarketplaceModelOrderhistory extends JModelList
{
var $_data = null;
var $_pagination = null;
protected $_total = null;
/**
* __construct function
*
* @param array $config var
*/
public function __construct($config = array())
{
if (empty($config['filter_fields'])) {
$config['filter_fields'] = array(
'order_number', 'o.order_number',
'first_name', 'uin.first_name',
'created_on','a.created_on',
'modified_on','a.modified_on'
);
}
parent::__construct($config);
}
/**
* Check Order And ItemId function
*
* @param integer $itemId var
* @param integer $virtuemartOrderId var
*
* @return void
*/
public function checkOrderAndItemId($itemId=0,$virtuemartOrderId=0)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('virtuemart_order_id'));
$query->from($db->quoteName('#__virtuemart_order_items'));
$query->where(
$db->quoteName('virtuemart_order_id').
"=".$db->quote($db->escape($virtuemartOrderId))
);
$query->where(
$db->quoteName('virtuemart_order_item_id').
"=".$db->quote($db->escape($itemId))
);
$db->setQuery($query);
try {
return $db->loadResult();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Shipping Detail function
*
* @param integer $virtuemart_order_id var
*
* @return void
*/
function getShippingDetail($virtuemart_order_id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('address_type'))
->from($db->quoteName('#__virtuemart_order_userinfos'))
->where(
$db->quoteName('virtuemart_order_id').
"=".$db->quote($virtuemart_order_id)
);
$db->setQuery($query);
try{
return $db->loadAssocList();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Country Name function
*
* @param string $id var
*
* @return void
*/
public function getCountryName($id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('country_name'))
->from($db->quoteName('#__virtuemart_countries'))
->where($db->quoteName('virtuemart_country_id')."=".$db->quote($id));
$db->setQuery($query);
try{
return $db->loadResult();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Payment Detail function
*
* @param integer $id var
*
* @return void
*/
public function getPaymentDetail($id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('payment_name'))
->select($db->quoteName('payment_desc'))
->from(
$db->quoteName('#__virtuemart_paymentmethods_'.VmConfig::$vmlang)
)
->where(
$db->quoteName('virtuemart_paymentmethod_id').
"=".$db->quote($id)
);
$db->setQuery($query);
try{
return $db->loadAssoc();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Shipment Name function
*
* @param integer $id var
*
* @return void
*/
public function getShipmentName($id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('shipment_name'))
->from(
$db->quoteName(
'#__virtuemart_shipmentmethods_'.VmConfig::$vmlang
)
)
->where(
$db->quoteName('virtuemart_shipmentmethod_id').
"=".$db->quote($id)
);
$db->setQuery($query);
try{
return $db->loadResult();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Number Order Item function
*
* @param integer $id Order Id
*
* @return void
*/
public function getNumberOrderItem($id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select(count($db->quoteName('virtuemart_order_item_id')))
->from($db->quoteName('#__virtuemart_order_items'))
->where($db->quoteName('virtuemart_order_id')."=".$db->quote($id));
$db->setQuery($query);
try{
return $db->loadResult();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Load a single order, Attention, this function is not protected!
* Do the right manangement before, to be certain
* we suggest to use getMyOrderDetails
*
* @param integer $virtuemart_order_id var
* @param boolean $userlang var
*
* @return void
*/
public function getVmOrder($virtuemart_order_id, $userlang=false)
{
$virtuemart_order_id = (int)$virtuemart_order_id;
$db = JFactory::getDBO();
$order = array();
// Get the order details
// Create a new query object.
$query = $db->getQuery(true);
$query
->select(array('o.*', 'u.*', 's.order_status_name'))
->from($db->quoteName('#__virtuemart_orders', 'o'))
->join(
'LEFT',
$db->quoteName('#__virtuemart_orderstates', 's') .
' ON (' . $db->quoteName('s.order_status_code') .
' = ' . $db->quoteName('o.order_status') . ')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_order_userinfos', 'u') .
' ON (' . $db->quoteName('u.virtuemart_order_id') .
' = ' . $db->quoteName('o.virtuemart_order_id') . ')'
)
->where(
$db->quoteName('o.virtuemart_order_id') . '='.
$virtuemart_order_id
);
$db->setQuery($query);
try{
$order['details'] = $db->loadObjectList('address_type');
}
catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
if ($order['details'] and isset($order['details']['BT'])) {
$concat = array();
if (!empty($order['details']['BT']->company)) {
$concat[]= $order['details']['BT']->company;
}
if (!empty($order['details']['BT']->first_name)) {
$concat[]= $order['details']['BT']->first_name;
}
if (!empty($order['details']['BT']->middle_name)) {
$concat[]= $order['details']['BT']->middle_name;
}
if (!empty($order['details']['BT']->last_name)) {
$concat[]= $order['details']['BT']->last_name;
}
$order['details']['BT']->order_name = '';
foreach ($concat as $c) {
$order['details']['BT']->order_name .= trim($c).' ';
}
$order['details']['BT']->order_name = trim(
htmlspecialchars(
strip_tags(
htmlspecialchars_decode(
$order['details']['BT']->order_name
)
)
)
);
}
if ($userlang) {
if (!empty($order['details']['BT']->order_language)) {
$olang = $order['details']['BT']->order_language;
VmConfig::loadJLang('com_virtuemart', true, $olang);
VmConfig::loadJLang('com_virtuemart_shoppers', true, $olang);
VmConfig::loadJLang('com_virtuemart_orders', true, $olang);
}
}
// Get the order history
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__virtuemart_order_histories'))
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
)
->order($db->quoteName('virtuemart_order_history_id') . ' ASC');
$db->setQuery($query);
try{
$order['history'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
// Get the order items
$query = $db->getQuery(true);
$query
->select(
array(
'virtuemart_order_item_id',
'product_quantity',
'order_item_name',
'order_item_sku',
'i.virtuemart_product_id',
'product_item_price',
'product_final_price',
'product_basePriceWithTax',
'product_discountedPriceWithoutTax',
'product_priceWithoutTax',
'product_subtotal_with_tax',
'product_subtotal_discount',
'product_tax',
'product_attribute',
'order_status',
'p.product_available_date',
'p.product_availability',
'intnotes',
'virtuemart_category_id',
'p.product_mpn'
)
)
->from($db->quoteName('#__virtuemart_order_items', 'i'))
->join(
'LEFT',
$db->quoteName('#__virtuemart_products', 'p') .
' ON (' . $db->quoteName('p.virtuemart_product_id') .
' = ' . $db->quoteName('i.virtuemart_product_id') . ')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_product_categories', 'c') .
' ON (' . $db->quoteName('p.virtuemart_product_id') .
' = ' . $db->quoteName('c.virtuemart_product_id') . ')'
)
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
)
->group($db->quoteName('virtuemart_order_item_id'));
$db->setQuery($query);
try{
$order['items'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
$customfieldModel = VmModel::getModel('customfields');
$pModel = VmModel::getModel('product');
foreach ($order['items'] as &$item) {
$ids = array();
$product = $pModel->getProduct($item->virtuemart_product_id);
if (is_object($product)) {
$pvar = get_object_vars($product);
foreach ( $pvar as $k => $v) {
if (!isset($item->$k)
and isset($product->$k)
and '_' != substr($k, 0, 1)
) {
$item->$k = $v;
}
}
}
if (!empty($item->product_attribute)) {
$myCustoms = @json_decode($item->product_attribute, true);
$myCustoms = (array) $myCustoms;
$item->customfields = array();
foreach ($myCustoms as $custom) {
if (!is_array($custom)) {
$custom = array( $custom =>false);
}
foreach ($custom as $id=>$field) {
$item->customfields[] = $customfieldModel
->getCustomEmbeddedProductCustomField($id);
$ids[] = $id;
}
}
}
if (!empty($product->customfields)) {
if (!isset($item->customfields)) {
$item->customfields = array();
}
foreach ($product->customfields as $customfield) {
if (!in_array($customfield->virtuemart_customfield_id, $ids)
and $customfield->field_type=='E'
and ($customfield->is_input
or $customfield->is_cart_attribute)
) {
$item->customfields[] = $customfield;
}
}
}
}
// Get the order items
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__virtuemart_order_calc_rules', 'z'))
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
);
$db->setQuery($query);
try{
$order['calc_rules'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
return $order;
}
/**
* Get List Query function
*
* @return void
*/
protected function getListQuery()
{
$userdetails = JFactory::getUser();
$db = $this->getDbo();
$query = $db->getQuery(true);
$app=JFactory::getApplication();
$params = JComponentHelper::getParams('com_marketplace');
$lazy_limit=trim($params->get('wk_lazy_load_limit'));
$query->select(
$this->getState(
'list.select', 'a.*', 'b.created_by'
)
)
->from($db->quoteName('#__virtuemart_order_items')." AS a")
->join(
'INNER',
$db->quoteName('#__virtuemart_products').
" AS b ON(".$db->quoteName("a.virtuemart_product_id").
"=".$db->quoteName("b.virtuemart_product_id").')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_orders').
" AS o ON(".$db->quoteName("a.virtuemart_order_id").
"=".$db->quoteName("o.virtuemart_order_id").')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_order_userinfos').
" AS uin ON(".$db->quoteName("uin.virtuemart_user_id").
"=".$db->quoteName("o.virtuemart_user_id").')'
);
if ($this->getState('filter.search')!== ''
&& $this->getState('filter.search') !== null
) {
$search = $db->quote(
'%' . str_replace(
' ',
'%',
$db->escape(trim($this->getState('filter.search')), true)
. '%'
)
);
$searches = array();
$searches[] = 'o.order_number LIKE ' . $search;
$searches[] = 'uin.first_name LIKE ' . $search;
$searches[] = 'uin.last_name LIKE ' . $search;
$query->where('(' . implode(' OR ', $searches) . ')');
}
$order_sttaus = $this->getState('list.order_status');
if (strlen($order_sttaus)) {
$query->where('o.order_status = "'.$order_sttaus.'"');
}
$query->where('b.created_by='.$userdetails->id);
$query->group($db->quoteName('o.virtuemart_order_id'));
$query->order(
$db->quoteName(
$db->escape($this->getState('list.ordering', 'a.created_on'))
)
. ' ' . $db->escape($this->getState('list.direction', 'DESC'))
);
return $query;
}
/**
* Populate State function
*
* @param [type] $ordering var
* @param [type] $direction var
*
* @return void
*/
protected function populateState($ordering = null, $direction = null)
{
$app = JFactory::getApplication();
if ($layout = $app->input->get('layout')) {
$this->context .= '.' . $layout;
}
$search = $this->getUserStateFromRequest(
$this->context . '.filter.search', 'filter_search'
);
$this->setState('filter.search', $search);
$status = $this->getUserStateFromRequest(
$this->context . '.list.order_status', 'filter_order_status'
);
$this->setState('list.order_status', $status);
parent::populateState('o.created_on', 'desc');
}
/**
* Delete Item function
*
* @param [type] $id var
*
* @return void
*/
function deleteItem($id)
{
return $this->productsTable->delete($id);
}
/**
* Get Total Cost function
*
* @param [type] $warehouseuser var
* @param [type] $vm_or_id var
*
* @return void
*/
function gettotalcost($warehouseuser,$vm_or_id)
{
$db=JFactory::getDBO();
$query=$db->getQuery(true);
$query->select('a.*,b.created_by')
->from('#__virtuemart_order_items as a')
->join(
'INNER',
'#__virtuemart_products as b ON'
.' a.virtuemart_product_id=b.virtuemart_product_id'
)
->where(
"b.created_by=".$warehouseuser." AND a.virtuemart_order_id=".
$vm_or_id." ORDER BY a.created_on DESC"
);
$db->setQuery($query);
try {
return $db->loadObjectList();
} catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Set order status of seller
*
* @param [int] $seller_id Seller Id
* @param [int] $order_id Order Id
* @param [char] $status var
*
* @return bool
*/
public function setOrderStatus($seller_id, $order_id, $status)
{
$curr_stat = $this->getOrderStatus($seller_id, $order_id);
if ($curr_stat == null || $curr_stat == false) {
$profile = new stdClass();
$profile->virtuemart_order_id = $order_id;
$profile->seller_id = $seller_id;
$profile->order_status = $status;
// Insert the object into the Marketplace Order Status table.
try {
$result = $this->_db->insertObject(
'#__marketplace_orderstatus',
$profile
);
return $result;
} catch (Exception $e) {
return false;
}
} else {
$db = $this->_db;
$query = $db->getQuery(true);
$fields = array(
$db->quoteName('order_status') . ' = ' .$db->quote($status)
);
$conditions = array(
$db->quoteName('seller_id') . ' = '. $seller_id,
$db->quoteName('virtuemart_order_id') . ' = ' . $order_id
);
$query->update(
$db->quoteName('#__marketplace_orderstatus')
)->set($fields)->where($conditions);
$db->setQuery($query);
try {
$result = $db->execute();
return $result;
} catch (Exception $e) {
return false;
}
}
}
/**
* Get order status of seller
*
* @param integer $seller_id var
* @param integer $order_id var
*
* @return char
*/
public function getOrderStatus($seller_id, $order_id)
{
$query = $this->_db->getQuery(true);
$query
->select($this->_db->quoteName('order_status'))
->from($this->_db->quoteName('#__marketplace_orderstatus'))
->where(
$this->_db->quoteName('seller_id')."=".
$this->_db->quote($seller_id)
)
->where(
$this->_db->quoteName('virtuemart_order_id').
"=".$this->_db->quote($order_id)
);
$this->_db->setQuery($query);
try {
$result = $this->_db->loadObject();
return $result;
} catch (Exception $e) {
return false;
}
}
}
}
?>