Beispiel #1
0
 /**
  * Displays the view, collects needed data for the different layouts
  *
  * Okey I try now a completly new idea.
  * We make a function for every tab and the display is getting the right tabs by an own function
  * putting that in an array and after that we call the preparedataforlayoutBlub
  *
  * @author Max Milbers
  */
 function display($tpl = null)
 {
     $document = JFactory::getDocument();
     $mainframe = JFactory::getApplication();
     $pathway = $mainframe->getPathway();
     $layoutName = $this->getLayout();
     $model = VmModel::getModel();
     $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id');
     // 		if ($layoutName=='default') {
     if (empty($virtuemart_vendor_id)) {
         $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $vendors = $model->getVendors();
         $model->addImages($vendors);
         $this->assignRef('vendors', $vendors);
     } else {
         $vendor = $model->getVendor($virtuemart_vendor_id);
         $model->addImages($vendor);
         if (VmConfig::get('enable_content_plugin', 0)) {
             if (!class_exists('shopFunctionsF')) {
                 require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
             }
             shopFunctionsF::triggerContentPlugin($vendor, 'vendor', 'vendor_store_desc');
             shopFunctionsF::triggerContentPlugin($vendor, 'vendor', 'vendor_terms_of_service');
         }
         $this->assignRef('vendor', $vendor);
         if (!class_exists('VirtueMartModelVendor')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
         }
         $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id);
         //$usermodel = VmModel::getModel('user');
         //$virtuemart_userinfo_id = $usermodel->getBTuserinfo_id($userId);
         //$usermodel->getVendor($virtuemart_vendor_id);
         //$userFields = $usermodel->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id,true,true);
         //$this->assignRef('userFields', $userFields);
         if ($layoutName == 'tos') {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
         } elseif ($layoutName == 'contact') {
             $user = JFactory::getUser();
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $this->assignRef('user', $user);
         } else {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_DETAILS'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_DETAILS'));
             $this->setLayout('details');
         }
         $linkdetails = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=details&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_DETAILS') . '</a>';
         $linkcontact = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=contact&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_CONTACT') . '</a>';
         $linktos = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_TOS') . '</a>';
         //$this->assignRef('lineSeparator', $lineSeparator);
         $this->assignRef('linkdetails', $linkdetails);
         $this->assignRef('linkcontact', $linkcontact);
         $this->assignRef('linktos', $linktos);
     }
     parent::display($tpl);
 }
Beispiel #2
0
 /**
  * Send the ask question email.
  * @author Kohl Patrick, Christopher Roussel
  */
 public function mailAskquestion()
 {
     vRequest::vmCheckToken();
     if (!class_exists('shopFunctionsF')) {
         require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     $model = tmsModel::getModel('vendor');
     $mainframe = JFactory::getApplication();
     $vars = array();
     $min = tsmConfig::get('asks_minimum_comment_length', 50) + 1;
     $max = tsmConfig::get('asks_maximum_comment_length', 2000) - 1;
     $commentSize = vRequest::getString('comment');
     if (function_exists('mb_strlen')) {
         $commentSize = mb_strlen($commentSize);
     } else {
         $commentSize = strlen($commentSize);
     }
     $validMail = filter_var(vRequest::getVar('email'), FILTER_VALIDATE_EMAIL);
     $virtuemart_vendor_id = vRequest::getInt('virtuemart_vendor_id', 1);
     if (!class_exists('VirtueMartModelVendor')) {
         require VMPATH_ADMIN . DS . 'models' . DS . 'vendor.php';
     }
     $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id);
     //$vendorUser = JFactory::getUser($userId);
     if ($commentSize < $min || $commentSize > $max || !$validMail) {
         $this->setRedirect(JRoute::_('index.php?option=com_virtuemart&view=vendor&task=contact&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE), tsmText::_('COM_VIRTUEMART_COMMENT_NOT_VALID_JS'));
         return;
     }
     $user = JFactory::getUser();
     $fromMail = vRequest::getVar('email');
     //is sanitized then
     $fromName = vRequest::getVar('name', '');
     //is sanitized then
     $fromMail = str_replace(array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail);
     $fromName = str_replace(array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromName);
     if (!empty($user->id)) {
         if (empty($fromMail)) {
             $fromMail = $user->email;
         }
         if (empty($fromName)) {
             $fromName = $user->name;
         }
     }
     $vars['user'] = array('name' => $fromName, 'email' => $fromMail);
     $VendorEmail = $model->getVendorEmail($virtuemart_vendor_id);
     $vars['vendor'] = array('vendor_store_name' => $fromName);
     if (shopFunctionsF::renderMail('vendor', $VendorEmail, $vars, 'vendor')) {
         $string = 'COM_VIRTUEMART_MAIL_SEND_SUCCESSFULLY';
     } else {
         $string = 'COM_VIRTUEMART_MAIL_NOT_SEND_SUCCESSFULLY';
     }
     $mainframe->enqueueMessage(tsmText::_($string));
     // Display it all
     $view = $this->getView('vendor', 'html');
     $view->setLayout('mail_confirmed');
     $view->display();
 }
    /**
     * @author Max Milbers
     */
    function determineStoreOwner() {
		if(!class_exists('VirtueMartModelVendor')) require(VMPATH_ADMIN.DS.'models'.DS.'vendor.php');
		$virtuemart_user_id = VirtueMartModelVendor::getUserIdByVendorId(1);
		if (isset($virtuemart_user_id) && $virtuemart_user_id > 0) {
		    $this->_user = JFactory::getUser($virtuemart_user_id);
		}
		else {
		    $this->_user = JFactory::getUser();
		}
		return $this->_user->id;
    }
Beispiel #4
0
 /**
  * Sets the internal user id with given vendor Id
  *
  * @author Max Milbers
  * @param int $vendorId
  */
 function getVendor($vendorId = 1, $return = TRUE)
 {
     $vendorModel = VmModel::getModel('vendor');
     $userId = VirtueMartModelVendor::getUserIdByVendorId($vendorId);
     if ($userId) {
         $this->setUserId($userId);
         if ($return) {
             return $this->getUser();
         }
     } else {
         return false;
     }
 }
Beispiel #5
0
 function display($tpl = null)
 {
     // Load the helper(s)
     $this->loadHelper('html');
     if (!class_exists('Permissions')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php';
     }
     $perm = Permissions::getInstance();
     $this->assignRef('perm', $perm);
     $model = VmModel::getModel();
     $currentUser = JFactory::getUser();
     $task = JRequest::getWord('task', 'edit');
     if ($task == 'editshop') {
         if (Vmconfig::get('multix', 'none') !== 'none') {
             //Maybe we must check here if the user is vendor and if he has an own id and else map to mainvendor.
             $userId = 0;
         } else {
             if (!class_exists('VirtueMartModelVendor')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
             }
             $userId = VirtueMartModelVendor::getUserIdByVendorId(1);
         }
         $this->SetViewTitle('STORE');
     } else {
         if ($task == 'add') {
             $userId = 0;
         } else {
             $userId = JRequest::getVar('virtuemart_user_id', 0);
             if (is_array($userId)) {
                 $userId = $userId[0];
             }
             $this->SetViewTitle('USER');
         }
     }
     $userId = $model->setId($userId);
     $layoutName = JRequest::getWord('layout', 'default');
     $layoutName = $this->getLayout();
     if ($layoutName == 'edit' || $layoutName == 'edit_shipto') {
         $editor = JFactory::getEditor();
         // Get the required helpers
         $this->loadHelper('shoppergroup');
         $this->loadHelper('image');
         //$userFieldsModel = VmModel::getModel('userfields');
         $userDetails = $model->getUser();
         if ($task == 'editshop' && $userDetails->user_is_vendor) {
             // 				$model->setCurrent();
             if (!empty($userDetails->vendor->vendor_store_name)) {
                 $this->SetViewTitle('STORE', $userDetails->vendor->vendor_store_name);
             } else {
                 $this->SetViewTitle('STORE', JText::_('COM_VIRTUEMART_NEW_VENDOR'));
             }
             $vendorid = $userDetails->virtuemart_vendor_id;
         } else {
             $vendorid = 0;
             $this->SetViewTitle('USER', $userDetails->JUser->get('name'));
         }
         $_new = $userDetails->JUser->get('id') < 1;
         $this->addStandardEditViewCommands($vendorid);
         // User details
         $_contactDetails = $model->getContactDetails();
         $_groupList = $model->getGroupList();
         if (!is_array($_groupList)) {
             $this->lists['gid'] = '<input type="hidden" name="gid" value="' . $userDetails->JUser->get('gid') . '" /><strong>' . JText::_($_groupList) . '</strong>';
         } else {
             $this->lists['gid'] = JHTML::_('select.genericlist', $_groupList, 'gid', 'size="10"', 'value', 'text', $userDetails->JUser->get('gid'));
         }
         $this->lists['canBlock'] = $currentUser->authorize('com_users', 'block user') && $userDetails->JUser->get('id') != $currentUser->get('id');
         // Can't block myself
         $this->lists['canSetMailopt'] = $currentUser->authorize('workflow', 'email_events');
         $this->lists['block'] = JHTML::_('select.booleanlist', 'block', 'class="inputbox"', $userDetails->JUser->get('block'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO');
         $this->lists['sendEmail'] = JHTML::_('select.booleanlist', 'sendEmail', 'class="inputbox"', $userDetails->JUser->get('sendEmail'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO');
         $this->lists['params'] = $userDetails->JUser->getParameters(true);
         // Shopper info
         $this->lists['shoppergroups'] = ShopFunctions::renderShopperGroupList($userDetails->shopper_groups, true);
         $this->lists['vendors'] = ShopFunctions::renderVendorList($userDetails->virtuemart_vendor_id);
         $this->lists['custnumber'] = $model->getCustomerNumberById($userDetails->JUser->get('id'));
         // Shipment address(es)
         $this->lists['shipTo'] = ShopFunctions::generateStAddressList($this, $model, 'addST');
         $new = false;
         if (JRequest::getInt('new', '0') === 1) {
             $new = true;
         }
         $virtuemart_userinfo_id_BT = $model->getBTuserinfo_id($userId);
         $userFieldsArray = $model->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id_BT, false);
         $userFieldsBT = $userFieldsArray[$virtuemart_userinfo_id_BT];
         //$this->lists['perms'] = JHTML::_('select.genericlist', Permissions::getUserGroups(), 'perms', '', 'group_name', 'group_name', $userDetails->perms);
         // Load the required scripts
         if (count($userFieldsBT['scripts']) > 0) {
             foreach ($userFieldsBT['scripts'] as $_script => $_path) {
                 JHTML::script($_script, $_path);
             }
         }
         // Load the required stylesheets
         if (count($userFieldsBT['links']) > 0) {
             foreach ($userFieldsBT['links'] as $_link => $_path) {
                 JHTML::stylesheet($_link, $_path);
             }
         }
         $this->assignRef('userFieldsBT', $userFieldsBT);
         $this->assignRef('userInfoID', $virtuemart_userinfo_id_BT);
         $virtuemart_userinfo_id = JRequest::getString('virtuemart_userinfo_id', '0', '');
         $userFieldsArray = $model->getUserInfoInUserFields($layoutName, 'ST', $virtuemart_userinfo_id, false);
         if ($new) {
             $virtuemart_userinfo_id = 0;
             // 				$userFieldsST = $userFieldsArray[$virtuemart_userinfo_id];
         } else {
             // 				$userFieldsST = $userFieldsArray[$virtuemart_userinfo_id];
             // 				if(empty($virtuemart_userinfo_id)){
             // 					$virtuemart_userinfo_id = $model->getBTuserinfo_id();
             // 				}
         }
         $userFieldsST = $userFieldsArray[$virtuemart_userinfo_id];
         $this->assignRef('shipToFields', $userFieldsST);
         $this->assignRef('shipToId', $virtuemart_userinfo_id);
         $this->assignRef('new', $new);
         if (!$_new) {
             // Check for existing orders for this user
             $orders = VmModel::getModel('orders');
             $orderList = $orders->getOrdersList($userDetails->JUser->get('id'), true);
         } else {
             $orderList = null;
         }
         if (count($orderList) > 0 || !empty($userDetails->user_is_vendor)) {
             if (!class_exists('CurrencyDisplay')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
             }
             $currency = CurrencyDisplay::getInstance();
             $this->assignRef('currency', $currency);
         }
         // 			vmdebug('user $userDetails ',	$userDetails 	);
         if (!empty($userDetails->user_is_vendor)) {
             $vendorModel = VmModel::getModel('vendor');
             $vendorModel->setId($userDetails->virtuemart_vendor_id);
             $vendorModel->addImages($userDetails->vendor);
             $this->assignRef('vendor', $userDetails->vendor);
             $currencyModel = VmModel::getModel('currency');
             $_currencies = $currencyModel->getCurrencies();
             $this->assignRef('currencies', $_currencies);
         }
         $this->assignRef('userDetails', $userDetails);
         $this->assignRef('orderlist', $orderList);
         $this->assignRef('contactDetails', $_contactDetails);
         $this->assignRef('editor', $editor);
     } else {
         JToolBarHelper::divider();
         JToolBarHelper::custom('toggle.user_is_vendor.1', 'publish', '', 'COM_VIRTUEMART_USER_ISVENDOR');
         JToolBarHelper::custom('toggle.user_is_vendor.0', 'unpublish', '', 'COM_VIRTUEMART_USER_ISNOTVENDOR');
         JToolBarHelper::divider();
         JToolBarHelper::deleteList();
         JToolBarHelper::editListX();
         //This is intentionally, creating new user via BE is buggy and can be done by joomla
         //JToolBarHelper::addNewX();
         $this->addStandardDefaultViewLists($model, 'ju.id');
         $userList = $model->getUserList();
         $this->assignRef('userList', $userList);
         $pagination = $model->getPagination();
         $this->assignRef('pagination', $pagination);
         $shoppergroupmodel = VmModel::getModel('shopperGroup');
         $defaultShopperGroup = $shoppergroupmodel->getDefault(0)->shopper_group_name;
         $this->assignRef('defaultShopperGroup', $defaultShopperGroup);
     }
     parent::display($tpl);
 }
Beispiel #6
0
 function createStandardRequest($calc, $products, $sign = 1)
 {
     if (!class_exists('TaxServiceSoap')) {
         require VMAVALARA_CLASS_PATH . DS . 'TaxServiceSoap.class.php';
     }
     if (!class_exists('DocumentType')) {
         require VMAVALARA_CLASS_PATH . DS . 'DocumentType.class.php';
     }
     if (!class_exists('DetailLevel')) {
         require VMAVALARA_CLASS_PATH . DS . 'DetailLevel.class.php';
     }
     if (!class_exists('Line')) {
         require VMAVALARA_CLASS_PATH . DS . 'Line.class.php';
     }
     if (!class_exists('ServiceMode')) {
         require VMAVALARA_CLASS_PATH . DS . 'ServiceMode.class.php';
     }
     if (!class_exists('Line')) {
         require VMAVALARA_CLASS_PATH . DS . 'Line.class.php';
     }
     if (!class_exists('GetTaxRequest')) {
         require VMAVALARA_CLASS_PATH . DS . 'GetTaxRequest.class.php';
     }
     if (!class_exists('GetTaxResult')) {
         require VMAVALARA_CLASS_PATH . DS . 'GetTaxResult.class.php';
     }
     if (!class_exists('Address')) {
         require VMAVALARA_CLASS_PATH . DS . 'Address.class.php';
     }
     if (is_object($calc)) {
         $calc = get_object_vars($calc);
     }
     $request = new GetTaxRequest();
     $origin = new Address();
     //In Virtuemart we have not differenct warehouses, but we have a shipment address
     //So when the vendor has a shipment address, we assume that it is his warehouse
     //Later we can combine products with shipment addresses for different warehouse (yehye, future music)
     //But for now we just use the BT address
     if (!class_exists('VirtueMartModelVendor')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
     }
     $userId = VirtueMartModelVendor::getUserIdByVendorId($calc['virtuemart_vendor_id']);
     $userModel = VmModel::getModel('user');
     $virtuemart_userinfo_id = $userModel->getBTuserinfo_id($userId);
     // this is needed to set the correct user id for the vendor when the user is logged
     $userModel->getVendor($calc['virtuemart_vendor_id']);
     $vendorFieldsArray = $userModel->getUserInfoInUserFields('mail', 'BT', $virtuemart_userinfo_id, FALSE, TRUE);
     $vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id];
     $origin->setLine1($vendorFields['fields']['address_1']['value']);
     $origin->setLine2($vendorFields['fields']['address_2']['value']);
     $origin->setCity($vendorFields['fields']['city']['value']);
     $origin->setCountry($vendorFields['fields']['virtuemart_country_id']['country_2_code']);
     $origin->setRegion($vendorFields['fields']['virtuemart_state_id']['state_2_code']);
     $origin->setPostalCode($vendorFields['fields']['zip']['value']);
     $request->setOriginAddress($origin);
     //Address
     if (isset($this->addresses[0])) {
         $destination = $this->addresses[0];
     } else {
         return FALSE;
     }
     if (!class_exists('calculationHelper')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'calculationh.php';
     }
     $calculator = calculationHelper::getInstance();
     $request->setCurrencyCode($calculator->_currencyDisplay->_vendorCurrency_code_3);
     //CurrencyCode
     $request->setDestinationAddress($destination);
     //Address
     $request->setCompanyCode($calc['company_code']);
     // Your Company Code From the Dashboard
     $request->setDocDate(date('Y-m-d'));
     //date, checked
     $request->setCustomerCode(self::$vmadd['customer_number']);
     //string Required
     if (isset(self::$vmadd['tax_usage_type'])) {
         $request->setCustomerUsageType(self::$vmadd['tax_usage_type']);
         //string   Entity Usage
     }
     if (isset(self::$vmadd['tax_exemption_number'])) {
         $request->setExemptionNo(self::$vmadd['tax_exemption_number']);
         //string   if not using ECMS which keys on customer code
     }
     if (isset(self::$vmadd['taxOverride'])) {
         $request->setTaxOverride(self::$vmadd['taxOverride']);
         avadebug('I set tax override ', self::$vmadd['taxOverride']);
     }
     $setAllDiscounted = false;
     if (isset($products['discountAmount'])) {
         if (!empty($products['discountAmount'])) {
             //$request->setDiscount($sign * $products['discountAmount'] * (-1));            //decimal
             $request->setDiscount($sign * $products['discountAmount']);
             //decimal
             vmdebug('We sent as discount ' . $request->getDiscount());
             $setAllDiscounted = true;
         }
         unset($products['discountAmount']);
     }
     $request->setDetailLevel('Tax');
     //Summary or Document or Line or Tax or Diagnostic
     $lines = array();
     $n = 0;
     $this->_lineNumbersToCartProductId = array();
     foreach ($products as $k => $product) {
         $n++;
         $this->_lineNumbersToCartProductId[$n] = $k;
         $line = new Line();
         $line->setNo($n);
         //string  // line Number of invoice
         $line->setItemCode($product['product_sku']);
         //string
         $line->setDescription($product['product_name']);
         //product description, like in cart, atm only the name, todo add customfields
         if (!empty($product['categories'])) {
             //avadebug('AvaTax setTaxCode Product has categories !',$catNames);
             if (!class_exists('TableCategories')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'tables' . DS . 'categories.php';
             }
             $db = JFactory::getDbo();
             $catTable = new TableCategories($db);
             foreach ($product['categories'] as $cat) {
                 $catTable->load($cat);
                 $catslug = $catTable->slug;
                 if (strpos($catslug, 'avatax-') !== FALSE) {
                     $taxCode = substr($catslug, 7);
                     if (!empty($taxCode)) {
                         $line->setTaxCode($taxCode);
                     } else {
                         vmError('AvaTax setTaxCode, category could not be parsed ' . $catslug);
                     }
                     break;
                 }
             }
         }
         //$line->setTaxCode("");             //string
         $line->setQty($product['amount']);
         //decimal
         $line->setAmount($sign * $product['price'] * $product['amount']);
         //decimal // TotalAmmount
         if ($setAllDiscounted or !empty($product['discount'])) {
             $line->setDiscounted(1);
         } else {
             $line->setDiscounted(0);
         }
         $line->setRevAcct("");
         //string
         $line->setRef1("");
         //string
         $line->setRef2("");
         //string
         if (isset(self::$vmadd['tax_usage_type'])) {
             $line->setCustomerUsageType(self::$vmadd['tax_usage_type']);
             //string   Entity Usage
         }
         if (isset(self::$vmadd['tax_exemption_number'])) {
             $line->setExemptionNo(self::$vmadd['tax_exemption_number']);
             //string   if not using ECMS which keys on customer code
         }
         if (isset(self::$vmadd['taxOverride'])) {
             //create new TaxOverride Object set
             //$line->setTaxOverride(self::$vmadd['taxOverride']);
         }
         $lines[] = $line;
     }
     $this->newATConfig($calc);
     $request->setLines($lines);
     return $request;
 }
 /**
  * Displays the view, collects needed data for the different layouts
  *
  * Okey I try now a completly new idea.
  * We make a function for every tab and the display is getting the right tabs by an own function
  * putting that in an array and after that we call the preparedataforlayoutBlub
  *
  * @author Max Milbers
  */
 function display($tpl = null)
 {
     $document = JFactory::getDocument();
     $mainframe = JFactory::getApplication();
     $pathway = $mainframe->getPathway();
     $layoutName = $this->getLayout();
     $model = VmModel::getModel();
     $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id');
     // 		if ($layoutName=='default') {
     if (empty($virtuemart_vendor_id)) {
         $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $this->vendors = $model->getVendors();
         $model->addImages($this->vendors);
     } else {
         $vendor = $model->getVendor($virtuemart_vendor_id);
         $model->addImages($vendor);
         if (VmConfig::get('enable_content_plugin', 0)) {
             // add content plugin //
             $dispatcher =& JDispatcher::getInstance();
             JPluginHelper::importPlugin('content');
             $vendor->text = $vendor->vendor_store_desc;
             $params = new JRegistry();
             if (!isset($vendor->event)) {
                 $vendor->event = new stdClass();
             }
             $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.vendor', &$vendor, &$params, 0));
             // More events for 3rd party content plugins
             // This do not disturb actual plugins, because we don't modify $vendor->text
             $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.vendor', &$vendor, &$params, 0));
             $vendor->event->afterDisplayTitle = trim(implode("\n", $res));
             $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.vendor', &$vendor, &$params, 0));
             $vendor->event->beforeDisplayContent = trim(implode("\n", $res));
             $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.vendor', &$vendor, &$params, 0));
             $vendor->event->afterDisplayContent = trim(implode("\n", $res));
             $vendor->vendor_store_desc = $vendor->text;
         }
         $this->vendor = $vendor;
         if (!class_exists('VirtueMartModelVendor')) {
             require JPATH_VM_ADMINISTRATOR . '/models/vendor.php';
         }
         $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id);
         //$usermodel = VmModel::getModel('user');
         //$virtuemart_userinfo_id = $usermodel->getBTuserinfo_id($userId);
         //$usermodel->getVendor($virtuemart_vendor_id);
         //$userFields = $usermodel->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id,true,true);
         //$this->assignRef('userFields', $userFields);
         if ($layoutName == 'tos') {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
         } elseif ($layoutName == 'contact') {
             $user = JFactory::getUser();
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $this->user = $user;
         } else {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_DETAILS') . ' ' . $this->vendor->vendor_store_name);
             $pathway->addItem($this->vendor->vendor_store_name);
             //JText::_('COM_VIRTUEMART_VENDOR_DETAILS'));
             $this->setLayout('details');
             $productModel = VmModel::getModel('product');
             $this->products = $productModel->getProductsInCategory(0, $virtuemart_vendor_id);
             if ($this->products) {
                 $productModel->addImages($this->products, 1);
                 $currency = CurrencyDisplay::getInstance();
                 $this->currency = $currency;
                 foreach ($this->products as $product) {
                     $product->stock = $productModel->getStockIndicator($product);
                 }
                 if (!class_exists('Permissions')) {
                     require JPATH_VM_ADMINISTRATOR . '/helpers/permissions.php';
                 }
                 $this->showBasePrice = Permissions::getInstance()->check('admin');
                 //todo add config settings
                 $this->perRow = VmConfig::get('products_per_row', 3);
                 $this->pagination = $productModel->getPagination($this->perRow);
             }
         }
         $this->linkdetails = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=details&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_DETAILS') . '</a>';
         $this->linkcontact = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=contact&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_CONTACT') . '</a>';
         $this->linktos = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=' . $virtuemart_vendor_id, FALSE) . '">' . JText::_('COM_VIRTUEMART_VENDOR_TOS') . '</a>';
     }
     parent::display($tpl);
 }
Beispiel #8
0
 public function getVendorAddressFields($vendorId = 0)
 {
     if ($vendorId != 0) {
         $this->_id = (int) $vendorId;
     }
     if (!$this->_vendorFields) {
         $userId = VirtueMartModelVendor::getUserIdByVendorId($this->_id);
         $userModel = VmModel::getModel('user');
         $virtuemart_userinfo_id = $userModel->getBTuserinfo_id($userId);
         // this is needed to set the correct user id for the vendor when the user is logged
         $userModel->getVendor($this->_id, FALSE);
         $vendorFieldsArray = $userModel->getUserInfoInUserFields('mail', 'BT', $virtuemart_userinfo_id, FALSE, TRUE);
         $this->_vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id];
     }
     return $this->_vendorFields;
 }
Beispiel #9
0
 function display($tpl = null)
 {
     // Load the helper(s)
     if (!class_exists('VmHTML')) {
         require VMPATH_ADMIN . DS . 'helpers' . DS . 'html.php';
     }
     $model = VmModel::getModel();
     $currentUser = JFactory::getUser();
     VmConfig::loadJLang('com_virtuemart_shoppers', TRUE);
     $task = vRequest::getCmd('task', 'edit');
     if ($task == 'editshop') {
         $isSuperOrVendor = VmConfig::isSuperVendor();
         if (empty($isSuperOrVendor)) {
             JFactory::getApplication()->redirect('index.php?option=com_virtuemart', vmText::_('JERROR_ALERTNOAUTHOR'), 'error');
         } else {
             if (!class_exists('VirtueMartModelVendor')) {
                 require VMPATH_ADMIN . DS . 'models' . DS . 'vendor.php';
             }
             $userId = VirtueMartModelVendor::getUserIdByVendorId($isSuperOrVendor);
         }
         $this->SetViewTitle('STORE');
     } else {
         if ($task == 'add') {
             $userId = 0;
         } else {
             $userId = vRequest::getVar('virtuemart_user_id', 0);
             if (is_array($userId)) {
                 $userId = $userId[0];
             }
             $this->SetViewTitle('USER');
         }
     }
     $userId = $model->setId($userId);
     //$layoutName = vRequest::getCmd('layout', 'default');
     $layoutName = $this->getLayout();
     if ($layoutName == 'edit' || $layoutName == 'edit_shipto') {
         $editor = JFactory::getEditor();
         if (!class_exists('VmImage')) {
             require VMPATH_ADMIN . DS . 'helpers' . DS . 'image.php';
         }
         $userDetails = $model->getUser();
         if ($task == 'editshop' && $userDetails->user_is_vendor) {
             // 				$model->setCurrent();
             if (!empty($userDetails->vendor->vendor_store_name)) {
                 $this->SetViewTitle('STORE', $userDetails->vendor->vendor_store_name, 'shop_mart');
             } else {
                 $this->SetViewTitle('STORE', vmText::_('COM_VIRTUEMART_NEW_VENDOR'), 'shop_mart');
             }
             $vendorid = $userDetails->virtuemart_vendor_id;
             if ($vendorid == 1) {
                 $this->checkTCPDFinstalled();
             }
         } else {
             $vendorid = 0;
             $this->SetViewTitle('USER', $userDetails->JUser->get('name'));
         }
         $_new = $userDetails->JUser->get('id') < 1;
         $this->addStandardEditViewCommands($vendorid);
         // User details
         $_contactDetails = $model->getContactDetails();
         $this->lists['canBlock'] = $currentUser->authorise('com_users', 'block user') && $userDetails->JUser->get('id') != $currentUser->get('id');
         // Can't block myself
         $this->lists['canSetMailopt'] = $currentUser->authorise('workflow', 'email_events');
         $this->lists['block'] = JHtml::_('select.booleanlist', 'block', 'class="inputbox"', $userDetails->JUser->get('block'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO');
         $this->lists['sendEmail'] = JHtml::_('select.booleanlist', 'sendEmail', 'class="inputbox"', $userDetails->JUser->get('sendEmail'), 'COM_VIRTUEMART_YES', 'COM_VIRTUEMART_NO');
         $this->lists['params'] = $userDetails->JUser->getParameters(true);
         // Shopper info
         $this->lists['shoppergroups'] = ShopFunctions::renderShopperGroupList($userDetails->shopper_groups, true, 'virtuemart_shoppergroup_id');
         $this->lists['vendors'] = ShopFunctions::renderVendorList($userDetails->virtuemart_vendor_id);
         $model->setId($userDetails->JUser->get('id'));
         $this->lists['custnumber'] = $model->getCustomerNumberById();
         // Shipment address(es)
         $this->lists['shipTo'] = ShopFunctions::generateStAddressList($this, $model, 'addST');
         $new = false;
         if (vRequest::getInt('new', '0') === 1) {
             $new = true;
         }
         $virtuemart_userinfo_id_BT = $model->getBTuserinfo_id($userId);
         $userFieldsArray = $model->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id_BT, false);
         $userFieldsBT = $userFieldsArray[$virtuemart_userinfo_id_BT];
         // Load the required scripts
         if (count($userFieldsBT['scripts']) > 0) {
             foreach ($userFieldsBT['scripts'] as $_script => $_path) {
                 JHtml::script($_script, $_path);
             }
         }
         // Load the required stylesheets
         if (count($userFieldsBT['links']) > 0) {
             foreach ($userFieldsBT['links'] as $_link => $_path) {
                 JHtml::stylesheet($_link, $_path);
             }
         }
         $this->assignRef('userFieldsBT', $userFieldsBT);
         $this->assignRef('userInfoID', $virtuemart_userinfo_id_BT);
         $addrtype = vRequest::getCmd('addrtype');
         $virtuemart_userinfo_id = 0;
         if ($layoutName == 'edit_shipto' or $task == 'addST' or $addrtype == 'ST') {
             $virtuemart_userinfo_id = vRequest::getString('virtuemart_userinfo_id', '0', '');
             $userFieldsArray = $model->getUserInfoInUserFields($layoutName, 'ST', $virtuemart_userinfo_id, false);
             if ($new) {
                 $virtuemart_userinfo_id = 0;
             } else {
             }
             $userFieldsST = $userFieldsArray[$virtuemart_userinfo_id];
             $this->assignRef('shipToFields', $userFieldsST);
             vmdebug('hm ST $virtuemart_userinfo_id', $virtuemart_userinfo_id);
         }
         $this->assignRef('shipToId', $virtuemart_userinfo_id);
         $this->assignRef('new', $new);
         if (!$_new) {
             // Check for existing orders for this user
             $orders = VmModel::getModel('orders');
             $orderList = $orders->getOrdersList($userDetails->JUser->get('id'), true);
         } else {
             $orderList = null;
         }
         if (count($orderList) > 0 || !empty($userDetails->user_is_vendor)) {
             if (!class_exists('CurrencyDisplay')) {
                 require VMPATH_ADMIN . DS . 'helpers' . DS . 'currencydisplay.php';
             }
             $currency = CurrencyDisplay::getInstance();
             $this->assignRef('currency', $currency);
         }
         if (!empty($userDetails->user_is_vendor)) {
             $vendorM = VmModel::getModel('vendor');
             //if(empty($userDetails->vendor->vendor_currency)){
             $vendorCurrency = $vendorM->getVendorCurrency(1);
             if ($vendorCurrency) {
                 $userDetails->vendor->vendor_currency = $vendorCurrency->vendor_currency;
                 vmdebug('No vendor currency given, fallback to main vendor', $userDetails->vendor->vendor_currency);
             }
             //}
             $vendorM->setId($userDetails->virtuemart_vendor_id);
             $vendorM->addImages($userDetails->vendor);
             $this->assignRef('vendor', $userDetails->vendor);
             $currencyModel = VmModel::getModel('currency');
             $_currencies = $currencyModel->getCurrencies();
             $this->assignRef('currencies', $_currencies);
             $configModel = VmModel::getModel('config');
             $TCPDFFontsList = $configModel->getTCPDFFontsList();
             $this->assignRef('pdfFonts', $TCPDFFontsList);
         }
         $this->assignRef('userDetails', $userDetails);
         $this->assignRef('orderlist', $orderList);
         $this->assignRef('contactDetails', $_contactDetails);
         $this->assignRef('editor', $editor);
     } else {
         JToolBarHelper::divider();
         JToolBarHelper::custom('toggle.user_is_vendor.1', 'publish', '', 'COM_VIRTUEMART_USER_ISVENDOR');
         JToolBarHelper::custom('toggle.user_is_vendor.0', 'unpublish', '', 'COM_VIRTUEMART_USER_ISNOTVENDOR');
         JToolBarHelper::divider();
         JToolBarHelper::deleteList();
         JToolBarHelper::editList();
         self::showACLPref('user');
         //This is intentionally, creating new user via BE is buggy and can be done by joomla
         //JToolBarHelper::addNewX();
         $this->addStandardDefaultViewLists($model, 'ju.id');
         $userList = $model->getUserList();
         $this->assignRef('userList', $userList);
         $this->pagination = $model->getPagination();
         $shoppergroupmodel = VmModel::getModel('shopperGroup');
         $this->defaultShopperGroup = $shoppergroupmodel->getDefault(0)->shopper_group_name;
     }
     if (!empty($this->orderlist)) {
         VmConfig::loadJLang('com_virtuemart_orders', TRUE);
     }
     parent::display($tpl);
 }
 public static function renderVendorAddress($vendorId, $lineSeparator = "<br />", $skips = array('name', 'username', 'email'))
 {
     if (!class_exists('VirtueMartModelVendor')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
     }
     $userId = VirtueMartModelVendor::getUserIdByVendorId($vendorId);
     $userModel = VmModel::getModel('user');
     $virtuemart_userinfo_id = $userModel->getBTuserinfo_id($userId);
     // this is needed to set the correct user id for the vendor when the user is logged
     $userModel->getVendor($vendorId);
     $vendorFieldsArray = $userModel->getUserInfoInUserFields('mail', 'BT', $virtuemart_userinfo_id, FALSE, TRUE);
     $vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id];
     $vendorAddress = '';
     foreach ($vendorFields['fields'] as $field) {
         if (in_array($field['name'], $skips)) {
             continue;
         }
         if (!empty($field['value'])) {
             $vendorAddress .= $field['value'];
             if ($field['name'] != 'title' and $field['name'] != 'first_name' and $field['name'] != 'middle_name' and $field['name'] != 'zip') {
                 $vendorAddress .= $lineSeparator;
             } else {
                 $vendorAddress .= ' ';
             }
         }
     }
     return $vendorAddress;
 }
Beispiel #11
0
 function getTax($calculationHelper, $calc, $price, $sale = false, $committ = false)
 {
     if ($calc->activated == 0) {
         return false;
     }
     $shopperData = $this->getShopperData();
     if (!$shopperData) {
         return false;
     }
     //if(self::$stop) return self::$stop;
     if (!class_exists('TaxServiceSoap')) {
         require VMAVALARA_CLASS_PATH . DS . 'TaxServiceSoap.class.php';
     }
     if (!class_exists('DocumentType')) {
         require VMAVALARA_CLASS_PATH . DS . 'DocumentType.class.php';
     }
     if (!class_exists('DetailLevel')) {
         require VMAVALARA_CLASS_PATH . DS . 'DetailLevel.class.php';
     }
     if (!class_exists('Line')) {
         require VMAVALARA_CLASS_PATH . DS . 'Line.class.php';
     }
     if (!class_exists('ServiceMode')) {
         require VMAVALARA_CLASS_PATH . DS . 'ServiceMode.class.php';
     }
     if (!class_exists('Line')) {
         require VMAVALARA_CLASS_PATH . DS . 'Line.class.php';
     }
     if (!class_exists('GetTaxRequest')) {
         require VMAVALARA_CLASS_PATH . DS . 'GetTaxRequest.class.php';
     }
     if (!class_exists('GetTaxResult')) {
         require VMAVALARA_CLASS_PATH . DS . 'GetTaxResult.class.php';
     }
     $client = new TaxServiceSoap('Development');
     $request = new GetTaxRequest();
     $origin = new Address();
     //$destination = $this->fillValidateAvalaraAddress($calc);
     //In Virtuemart we have not differenct warehouses, but we have a shipment address
     //So when the vendor has a shipment address, we assume that it is his warehouse
     //Later we can combine products with shipment addresses for different warehouse (yehye, future music)
     //But for now we just use the BT address
     if (!class_exists('VirtueMartModelVendor')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
     }
     $userId = VirtueMartModelVendor::getUserIdByVendorId($calc->virtuemart_vendor_id);
     $userModel = VmModel::getModel('user');
     $virtuemart_userinfo_id = $userModel->getBTuserinfo_id($userId);
     // this is needed to set the correct user id for the vendor when the user is logged
     $userModel->getVendor($calc->virtuemart_vendor_id);
     $vendorFieldsArray = $userModel->getUserInfoInUserFields('mail', 'BT', $virtuemart_userinfo_id, FALSE, TRUE);
     $vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id];
     //vmdebug('my vendor fields',$vendorFields);
     $origin->setLine1($vendorFields['fields']['address_1']['value']);
     $origin->setLine2($vendorFields['fields']['address_2']['value']);
     $origin->setCity($vendorFields['fields']['city']['value']);
     $origin->setCountry($vendorFields['fields']['virtuemart_country_id']['country_2_code']);
     $origin->setRegion($vendorFields['fields']['virtuemart_state_id']['state_2_code']);
     $origin->setPostalCode($vendorFields['fields']['zip']['value']);
     $request->setOriginAddress($origin);
     //Address
     if (isset($this->addresses[0])) {
         $destination = $this->addresses[0];
     } else {
         return FALSE;
     }
     $request->setDestinationAddress($destination);
     //Address
     //vmdebug('The date',$origin,$destination);
     $request->setCompanyCode($calc->company_code);
     // Your Company Code From the Dashboard
     if ($calc->committ and $sale) {
         $request->setDocType(DocumentType::$SalesInvoice);
         // Only supported types are SalesInvoice or SalesOrder
         $request->setCommit(true);
         //invoice number, problem is that the invoice number is at this time not known, but the order_number may reachable
         $request->setDocCode($committ);
         vmdebug('Request as SalesInvoice with invoiceNumber ' . $committ);
     } else {
         $request->setDocType(DocumentType::$SalesOrder);
         $request->setCommit(false);
         //invoice number, problem is that the invoice number is at this time not known, neither the order_number
         $request->setDocCode('VM2.0.16_order_request');
         vmdebug('Request as SalesOrder');
     }
     $request->setDocDate(date('Y-m-d'));
     //date
     //$request->setSalespersonCode("");             // string Optional
     $request->setCustomerCode($shopperData['customer_id']);
     //string Required
     if (isset($shopperData['tax_usage_type'])) {
         $request->setCustomerUsageType($shopperData['tax_usage_type']);
         //string   Entity Usage
     }
     $cartPrices = $calculationHelper->getCartPrices();
     //vmdebug('$cartPrices',$cartPrices);
     $request->setDiscount($cartPrices['discountAmount']);
     //decimal
     //$request->setDiscount(0.0);
     //	$request->setPurchaseOrderNo("");     //string Optional
     //If I understand correctly, we need to add for this an userfield, for example with the name
     //exemption_no, then user could enter their number.
     if (isset($shopperData['tax_exemption_number'])) {
         $request->setExemptionNo($shopperData['tax_exemption_number']);
         //string   if not using ECMS which keys on customer code
     }
     $request->setDetailLevel('Tax');
     //Summary or Document or Line or Tax or Diagnostic
     //	$request->setReferenceCode1("");       //string Optional
     //	$request->setReferenceCode2("");       //string Optional
     //	$request->setLocationCode("");        //string Optional - aka outlet id for tax forms
     /////////////////////////////////////////
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     $cart = VirtueMartCart::getCart();
     $products = array();
     if ($calculationHelper->inCart) {
         $products = $cart->products;
         $prices = $calculationHelper->getCartPrices();
         foreach ($products as $k => $product) {
             if (!empty($prices[$k]['discountedPriceWithoutTax'])) {
                 $price = $prices[$k]['discountedPriceWithoutTax'];
             } else {
                 if (!empty($prices[$k]['basePriceVariant'])) {
                     $price = $prices[$k]['basePriceVariant'];
                 } else {
                     vmdebug('There is no price in getTax for product ' . $k . ' ', $prices);
                     $price = 0.0;
                 }
             }
             $product->price = $price;
             if (!empty($price[$k]['discountAmount'])) {
                 $product->discount = $price[$k]['discountAmount'];
             } else {
                 $product->discount = FALSE;
             }
         }
     } else {
         $calculationHelper->_product->price = $price;
         $products[0] = $calculationHelper->_product;
         if (!isset($products[0]->amount)) {
             $products[0]->amount = 1;
         }
         if (isset($calculationHelper->productPrices['discountAmount'])) {
             $products[0]->discount = $calculationHelper->productPrices['discountAmount'];
         } else {
             $products[0]->discount = FALSE;
         }
     }
     $lines = array();
     $n = 0;
     $lineNumbersToCartProductId = array();
     foreach ($products as $k => $product) {
         $n++;
         $lineNumbersToCartProductId[$n] = $k;
         $line = new Line();
         $line->setNo($n);
         //string  // line Number of invoice
         $line->setItemCode($product->product_sku);
         //string
         $line->setDescription($product->product_name);
         //product description, like in cart, atm only the name, todo add customfields
         //$line->setTaxCode("");             //string
         $line->setQty($product->amount);
         //decimal
         $line->setAmount($product->price * $product->amount);
         //decimal // TotalAmmount
         $line->setDiscounted($product->discount * $product->amount);
         //boolean
         $line->setRevAcct("");
         //string
         $line->setRef1("");
         //string
         $line->setRef2("");
         //string
         if (isset($shopperData['tax_exemption_number'])) {
             $line->setExemptionNo($shopperData['tax_exemption_number']);
             //string
         }
         if (isset($shopperData['tax_usage_type'])) {
             $line->setCustomerUsageType($shopperData['tax_usage_type']);
             //string
         }
         $lines[] = $line;
     }
     $line = new Line();
     $line->setNo(++$n);
     //$lineNumbersToCartProductId[$n] = count($products)+1;
     $line->setItemCode($cart->virtuemart_shipmentmethod_id);
     $line->setDescription('Shipment');
     $line->setQty(1);
     //$line->setTaxCode();
     $cartPrices = $calculationHelper->getCartPrices();
     //vmdebug('$calculationHelper $cartPrices',$cartPrices);
     $line->setAmount($cartPrices['shipmentValue']);
     if (isset($shopperData['tax_exemption_number'])) {
         $line->setExemptionNo($shopperData['tax_exemption_number']);
         //string
     }
     if (isset($shopperData['tax_usage_type'])) {
         $line->setCustomerUsageType($shopperData['tax_usage_type']);
         //string
     }
     $lines[] = $line;
     //vmdebug('avalaragetTax setLines',$lines);
     $request->setLines($lines);
     //vmdebug('My request',$request);
     $totalTax = 0.0;
     try {
         if (!class_exists('TaxLine')) {
             require VMAVALARA_CLASS_PATH . DS . 'TaxLine.class.php';
         }
         if (!class_exists('TaxDetail')) {
             require VMAVALARA_CLASS_PATH . DS . 'TaxDetail.class.php';
         }
         vmSetStartTime('avagetTax');
         $getTaxResult = $client->getTax($request);
         vmTime('Avalara getTax', 'avagetTax');
         /*
         * [0] => getDocCode
             [1] => getAdjustmentDescription
             [2] => getAdjustmentReason
             [3] => getDocDate
             [4] => getTaxDate
             [5] => getDocType
             [6] => getDocStatus
             [7] => getIsReconciled
             [8] => getLocked
             [9] => getTimestamp
             [10] => getTotalAmount
             [11] => getTotalDiscount
             [12] => getTotalExemption
             [13] => getTotalTaxable
             [14] => getTotalTax
             [15] => getHashCode
             [16] => getVersion
             [17] => getTaxLines
             [18] => getTotalTaxCalculated
             [19] => getTaxSummary
             [20] => getTaxLine
             [21] => getTransactionId
             [22] => getResultCode
             [23] => getMessages
         */
         //vmdebug( 'GetTax is: '. $getTaxResult->getResultCode(),$getTaxResult);
         if ($getTaxResult->getResultCode() == SeverityLevel::$Success) {
             //vmdebug("DocCode: ".$request->getDocCode() );
             //vmdebug("DocId: ".$getTaxResult->getDocId()."\n");
             vmdebug("TotalAmount: " . $getTaxResult->getTotalAmount());
             $totalTax = $getTaxResult->getTotalTax();
             vmdebug("TotalTax: " . $totalTax);
             foreach ($getTaxResult->getTaxLines() as $ctl) {
                 if ($calculationHelper->inCart) {
                     $nr = $ctl->getNo();
                     if (isset($lineNumbersToCartProductId[$nr])) {
                         $quantity = $products[$lineNumbersToCartProductId[$nr]]->amount;
                         //on the long hand, the taxAmount must be replaced by taxAmountQuantity to avoid rounding errors
                         $prices[$lineNumbersToCartProductId[$ctl->getNo()]]['taxAmount'] = $ctl->getTax() / $quantity;
                         $prices[$lineNumbersToCartProductId[$ctl->getNo()]]['taxAmountQuantity'] = $ctl->getTax();
                     } else {
                         //$this->_cartPrices['shipmentValue'] = 0; //could be automatically set to a default set in the globalconfig
                         //$this->_cartPrices['shipmentTax'] = 0;
                         //$this->_cartPrices['shipmentTotal'] = 0;
                         //$prices = array('shipmentValue'=>$cartPrices['shipmentValue'],'shipmentTax'=> $ctl->getTax(), 'shipmentTotal' =>($cartPrices['shipmentValue'] +$ctl->getTax() ));
                         //vmdebug('my $cartPrices',$cartPrices);
                         $prices['shipmentTax'] = $ctl->getTax();
                         $prices['salesPriceShipment'] = $prices['shipmentValue'] + $ctl->getTax();
                         //$cartPrices = array_merge($prices,$cartPrices);
                         //$calculationHelper->setCartPrices( $cartPrices );
                         $totalTax = $totalTax - $ctl->getTax();
                         //vmdebug('my $cartPrices danach',$cartPrices);
                     }
                 }
                 //vmdebug('my lines ',$ctl);
                 //vmdebug( "     Line: ".$ctl->getNo()." Tax: ".$ctl->getTax()." TaxCode: ".$ctl->getTaxCode());
                 foreach ($ctl->getTaxDetails() as $ctd) {
                     //vmdebug( "          Juris Type: ".$ctd->getJurisType()."; Juris Name: ".$ctd->getJurisName()."; Rate: ".$ctd->getRate()."; Amt: ".$ctd->getTax() );
                 }
             }
             if ($calculationHelper->inCart) {
                 $calculationHelper->setCartPrices($prices);
             }
         } else {
             foreach ($getTaxResult->getMessages() as $msg) {
                 vmError($msg->getName() . ": " . $msg->getSummary());
             }
         }
     } catch (SoapFault $exception) {
         $msg = "Exception: ";
         if ($exception) {
             $msg .= $exception->faultstring;
         }
         vmdebug($msg . '<br />' . $client->__getLastRequest() . '<br />' . $client->__getLastResponse());
     }
     //self::$stop = $totalTax;
     return $totalTax;
 }
Beispiel #12
0
 public function display($tpl = null)
 {
     $document = JFactory::getDocument();
     if (empty($this->uselayout)) {
         $layout = JRequest::getWord('layout', 'mail');
     } else {
         $layout = $this->uselayout;
     }
     if ($layout == 'mail') {
         if (VmConfig::get('order_mail_html')) {
             $layout = 'mail_html';
         } else {
             $layout = 'mail_raw';
         }
     }
     $this->setLayout($layout);
     $tmpl = JRequest::getWord('tmpl');
     $print = false;
     if ($tmpl) {
         $print = true;
     }
     $this->assignRef('print', $print);
     $this->format = JRequest::getWord('format', 'html');
     if ($layout == 'invoice') {
         $document->setTitle(JText::_('COM_VIRTUEMART_INVOICE'));
     }
     $orderModel = VmModel::getModel('orders');
     $orderDetails = $this->orderDetails;
     if ($orderDetails == 0) {
         // If the user is not logged in, we will check the order number and order pass
         if ($orderPass = JRequest::getString('order_pass', false) and $orderNumber = JRequest::getString('order_number', false)) {
             $orderId = $orderModel->getOrderIdByOrderPass($orderNumber, $orderPass);
             if (empty($orderId)) {
                 echo 'Invalid order_number/password ' . JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS');
                 return 0;
             }
             $orderDetails = $orderModel->getOrder($orderId);
         }
         if ($orderDetails == 0) {
             $_currentUser = JFactory::getUser();
             $cuid = $_currentUser->get('id');
             // If the user is logged in, we will check if the order belongs to him
             $virtuemart_order_id = JRequest::getInt('virtuemart_order_id', 0);
             if (!$virtuemart_order_id) {
                 $virtuemart_order_id = $orderModel->getOrderIdByOrderNumber(JRequest::getString('order_number'));
             }
             $orderDetails = $orderModel->getOrder($virtuemart_order_id);
             if (!class_exists('Permissions')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'permissions.php';
             }
             if (!Permissions::getInstance()->check("admin")) {
                 if (!empty($orderDetails['details']['BT']->virtuemart_user_id)) {
                     if ($orderDetails['details']['BT']->virtuemart_user_id != $cuid) {
                         echo 'view ' . JText::_('COM_VIRTUEMART_RESTRICTED_ACCESS');
                         return;
                     }
                 }
             }
         }
     }
     if (empty($orderDetails['details'])) {
         echo JText::_('COM_VIRTUEMART_ORDER_NOTFOUND');
         return 0;
     }
     $this->assignRef('orderDetails', $orderDetails);
     if (empty($this->invoiceNumber)) {
         $invoiceNumberDate = array();
         if ($orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate)) {
             if (ShopFunctions::InvoiceNumberReserved($invoiceNumberDate[0])) {
                 if (!JFactory::getApplication()->isSite()) {
                     vmInfo('  InvoiceNumber is Reserved by Payment ');
                 }
                 if ($this->uselayout != 'mail') {
                     return;
                 }
             }
             $this->invoiceNumber = $invoiceNumberDate[0];
             $this->invoiceDate = $invoiceNumberDate[1];
             if (!$this->invoiceNumber or empty($this->invoiceNumber)) {
                 vmError('Cant create pdf, createInvoiceNumber failed');
                 if ($this->uselayout != 'mail') {
                     return;
                 }
             }
         } else {
             // Could OR should not create Invoice Number, createInvoiceNumber failed
             if ($this->uselayout != 'mail') {
                 return;
             }
         }
     }
     $shopperName = $orderDetails['details']['BT']->title . ' ' . $orderDetails['details']['BT']->first_name . ' ' . $orderDetails['details']['BT']->last_name;
     $this->assignRef('shopperName', $shopperName);
     //Todo multix
     $vendorId = 1;
     if (!class_exists('CurrencyDisplay')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     $currency = CurrencyDisplay::getInstance('', $vendorId);
     $this->assignRef('currency', $currency);
     //Create BT address fields
     $userFieldsModel = VmModel::getModel('userfields');
     $_userFields = $userFieldsModel->getUserFields('account', array('captcha' => true, 'delimiters' => true), array('delimiter_userinfo', 'user_is_vendor', 'username', 'password', 'password2', 'agreed', 'address_type'));
     $userfields = $userFieldsModel->getUserFieldsFilled($_userFields, $orderDetails['details']['BT']);
     $this->assignRef('userfields', $userfields);
     //Create ST address fields
     $orderst = array_key_exists('ST', $orderDetails['details']) ? $orderDetails['details']['ST'] : $orderDetails['details']['BT'];
     $shipmentFieldset = $userFieldsModel->getUserFields('shipment', array(), array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type'));
     $shipmentfields = $userFieldsModel->getUserFieldsFilled($shipmentFieldset, $orderst);
     $this->assignRef('shipmentfields', $shipmentfields);
     // Create an array to allow orderlinestatuses to be translated
     // We'll probably want to put this somewhere in ShopFunctions..
     $orderStatusModel = VmModel::getModel('orderstatus');
     $_orderstatuses = $orderStatusModel->getOrderStatusList();
     $orderstatuses = array();
     foreach ($_orderstatuses as $_ordstat) {
         $orderstatuses[$_ordstat->order_status_code] = JText::_($_ordstat->order_status_name);
     }
     $this->assignRef('orderstatuslist', $orderstatuses);
     $this->assignRef('orderstatuses', $orderstatuses);
     $_itemStatusUpdateFields = array();
     $_itemAttributesUpdateFields = array();
     foreach ($orderDetails['items'] as $_item) {
         // 			$_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = JHTML::_('select.genericlist', $orderstatuses, "item_id[".$_item->virtuemart_order_item_id."][order_status]", 'class="selectItemStatusCode"', 'order_status_code', 'order_status_name', $_item->order_status, 'order_item_status'.$_item->virtuemart_order_item_id,true);
         $_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = $_item->order_status;
     }
     if (empty($orderDetails['shipmentName'])) {
         if (!class_exists('vmPSPlugin')) {
             require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
         }
         JPluginHelper::importPlugin('vmshipment');
         $dispatcher = JDispatcher::getInstance();
         $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEShipment', array($orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_shipmentmethod_id, &$orderDetails['shipmentName']));
     }
     if (empty($orderDetails['paymentName'])) {
         if (!class_exists('vmPSPlugin')) {
             require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
         }
         JPluginHelper::importPlugin('vmpayment');
         $dispatcher = JDispatcher::getInstance();
         $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEPayment', array($orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_paymentmethod_id, &$orderDetails['paymentName']));
         if (is_array($returnValues)) {
             foreach ($returnValues as $val) {
                 if ($val == false and $layout != 'mail') {
                     // don't send the invoice
                     $app = JFactory::getApplication();
                     $app->redirect('index.php?option=com_virtuemart&view=orders', 'Klarna is doing the invoice');
                 }
             }
         }
     }
     $virtuemart_vendor_id = 1;
     $vendorModel = VmModel::getModel('vendor');
     $vendor = $vendorModel->getVendor($virtuemart_vendor_id);
     $vendorModel->addImages($vendor);
     $this->assignRef('vendor', $vendor);
     // 		vmdebug('vendor', $vendor);
     $task = JRequest::getWord('task', 0);
     if ($task == 'checkStoreInvoice') {
         $headFooter = false;
     } else {
         $headFooter = true;
     }
     $this->assignRef('headFooter', $headFooter);
     if (!class_exists('VirtueMartModelVendor')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
     }
     $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id);
     $usermodel = VmModel::getModel('user');
     // 		$usermodel->setId($userId);
     $virtuemart_userinfo_id = $usermodel->getBTuserinfo_id($userId);
     $vendorFieldsArray = $usermodel->getUserInfoInUserFields($layout, 'BT', $virtuemart_userinfo_id, false, true);
     $vendorFields = $vendorFieldsArray[$virtuemart_userinfo_id];
     $vendorAddress = '';
     foreach ($vendorFields['fields'] as $field) {
         if (!empty($field['value'])) {
             $vendorAddress .= $field['value'];
             if ($field['name'] != 'title' and $field['name'] != 'first_name' and $field['name'] != 'middle_name' and $field['name'] != 'zip') {
                 if ($headFooter) {
                     $vendorAddress .= "<br />";
                 } else {
                     $vendorAddress .= "\n";
                 }
             } else {
                 $vendorAddress .= ' ';
             }
         }
     }
     $this->assignRef('vendorAddress', $vendorAddress);
     $vendorEmail = $vendorModel->getVendorEmail($virtuemart_vendor_id);
     $vars['vendorEmail'] = $vendorEmail;
     if (!class_exists('ShopFunctions')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'shopfunctions.php';
     }
     // this is no setting in BE to change the layout !
     //shopFunctionsF::setVmTemplate($this,0,0,$layoutName);
     //vmdebug('renderMailLayout invoice '.date('H:i:s'),$this->order);
     if (strpos($layout, 'mail') !== false) {
         if ($this->doVendor) {
             //Old text key COM_VIRTUEMART_MAIL_SUBJ_VENDOR_C
             $this->subject = JText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_VENDOR_' . $orderDetails['details']['BT']->order_status, $this->shopperName, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total)), $orderDetails['details']['BT']->order_number);
             $recipient = 'vendor';
         } else {
             $this->subject = JText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_' . $orderDetails['details']['BT']->order_status, $vendor->vendor_store_name, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total)), $orderDetails['details']['BT']->order_number, $orderDetails['details']['BT']->order_pass);
             $recipient = 'shopper';
         }
         $this->assignRef('recipient', $recipient);
     }
     $tpl = null;
     // 		vmdebug('my view data',$this->getLayout(),$layout);
     // 		ob_start();
     // 		echo '<pre>';
     // 		echo debug_print_backtrace();
     // 		echo '</pre>';
     // 		$dumptrace = ob_get_contents();
     // 		ob_end_clean();
     // 		return false;
     parent::display($tpl);
 }
Beispiel #13
0
 /**
  * Displays the view, collects needed data for the different layouts
  *
  * Okey I try now a completly new idea.
  * We make a function for every tab and the display is getting the right tabs by an own function
  * putting that in an array and after that we call the preparedataforlayoutBlub
  *
  * @author Max Milbers
  */
 function display($tpl = null)
 {
     $document = JFactory::getDocument();
     $mainframe = JFactory::getApplication();
     $pathway = $mainframe->getPathway();
     $layoutName = $this->getLayout();
     $model = VmModel::getModel();
     $virtuemart_vendor_id = JRequest::getInt('virtuemart_vendor_id');
     // 		if ($layoutName=='default') {
     if (empty($virtuemart_vendor_id)) {
         $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_LIST'));
         $vendors = $model->getVendors();
         $model->addImages($vendors);
         $this->assignRef('vendors', $vendors);
     } else {
         $vendor = $model->getVendor($virtuemart_vendor_id);
         $model->addImages($vendor);
         if (VmConfig::get('enable_content_plugin', 0)) {
             // add content plugin //
             $dispatcher =& JDispatcher::getInstance();
             JPluginHelper::importPlugin('content');
             $vendor->text = $vendor->vendor_store_desc;
             jimport('joomla.html.parameter');
             $params = new JParameter('');
             if (JVM_VERSION === 2) {
                 $results = $dispatcher->trigger('onContentPrepare', array('com_virtuemart.vendor', &$vendor, &$params, 0));
                 // More events for 3rd party content plugins
                 // This do not disturb actual plugins, because we don't modify $vendor->text
                 $res = $dispatcher->trigger('onContentAfterTitle', array('com_virtuemart.vendor', &$vendor, &$params, 0));
                 $vendor->event->afterDisplayTitle = trim(implode("\n", $res));
                 $res = $dispatcher->trigger('onContentBeforeDisplay', array('com_virtuemart.vendor', &$vendor, &$params, 0));
                 $vendor->event->beforeDisplayContent = trim(implode("\n", $res));
                 $res = $dispatcher->trigger('onContentAfterDisplay', array('com_virtuemart.vendor', &$vendor, &$params, 0));
                 $vendor->event->afterDisplayContent = trim(implode("\n", $res));
             } else {
                 $results = $dispatcher->trigger('onPrepareContent', array(&$vendor, &$params, 0));
             }
             $vendor->vendor_store_desc = $vendor->text;
         }
         $this->assignRef('vendor', $vendor);
         if (!class_exists('VirtueMartModelVendor')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'vendor.php';
         }
         $userId = VirtueMartModelVendor::getUserIdByVendorId($virtuemart_vendor_id);
         //$usermodel = VmModel::getModel('user');
         //$virtuemart_userinfo_id = $usermodel->getBTuserinfo_id($userId);
         //$usermodel->getVendor($virtuemart_vendor_id);
         //$userFields = $usermodel->getUserInfoInUserFields($layoutName, 'BT', $virtuemart_userinfo_id,true,true);
         //$this->assignRef('userFields', $userFields);
         if ($layoutName == 'tos') {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_TOS'));
         } elseif ($layoutName == 'contact') {
             $user = JFactory::getUser();
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_CONTACT'));
             $this->assignRef('user', $user);
         } else {
             $document->setTitle(JText::_('COM_VIRTUEMART_VENDOR_DETAILS'));
             $pathway->addItem(JText::_('COM_VIRTUEMART_VENDOR_DETAILS'));
             $this->setLayout('details');
         }
         $linkdetails = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=details&virtuemart_vendor_id=' . $virtuemart_vendor_id) . '">' . JText::_('COM_VIRTUEMART_VENDOR_DETAILS') . '</a>';
         $linkcontact = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=contact&virtuemart_vendor_id=' . $virtuemart_vendor_id) . '">' . JText::_('COM_VIRTUEMART_VENDOR_CONTACT') . '</a>';
         $linktos = '<a href="' . JRoute::_('index.php?option=com_virtuemart&view=vendor&layout=tos&virtuemart_vendor_id=' . $virtuemart_vendor_id) . '">' . JText::_('COM_VIRTUEMART_VENDOR_TOS') . '</a>';
         //$this->assignRef('lineSeparator', $lineSeparator);
         $this->assignRef('linkdetails', $linkdetails);
         $this->assignRef('linkcontact', $linkcontact);
         $this->assignRef('linktos', $linktos);
     }
     parent::display($tpl);
 }