AntonLV преди 10 години
родител
ревизия
f1f6dfb21a

+ 17 - 0
inc/classes/BxDolPayments.php

@@ -53,6 +53,23 @@ class BxDolPayments extends BxDol implements iBxDolSingleton
     	return true;
     }
 
+	public function getDetailsUrl()
+    {
+    	if(!BxDolRequest::serviceExists($this->_sActive, 'get_details_url', 'Details'))
+    		return '';
+
+    	return BxDolService::call($this->_sActive, 'get_details_url', array(), 'Details');
+    }
+
+    public function isAcceptingPayments($iVendorId, $sPaymentType = '')
+    {
+    	if(empty($this->_sActive) || !BxDolRequest::serviceExists($this->_sActive, 'is_accepting_payments'))
+    		return false;
+
+    	$aSrvParams = array($iVendorId, $sPaymentType);
+        return BxDolService::call($this->_sActive, 'is_accepting_payments', $aSrvParams);
+    }
+
 	public function getPayments()
     {
         $aPayments = array(

+ 4 - 8
inc/params.inc.php

@@ -10,7 +10,6 @@
 define('BX_DOL_START', microtime ());
 
 //--- Main URLs ---//
-
 define('BX_DOL_URL_PLUGINS', BX_DOL_URL_ROOT . 'plugins/');
 define('BX_DOL_URL_PLUGINS_PUBLIC', BX_DOL_URL_ROOT . 'plugins_public/');
 define('BX_DOL_URL_MODULES', BX_DOL_URL_ROOT . 'modules/');
@@ -18,7 +17,6 @@ define('BX_DOL_URL_CACHE_PUBLIC', BX_DOL_URL_ROOT . 'cache_public/');
 define('BX_DOL_URL_BASE', BX_DOL_URL_ROOT . 'template/');
 
 //--- Main Pathes ---//
-
 define('BX_DIRECTORY_PATH_INC', BX_DIRECTORY_PATH_ROOT . 'inc/');
 define('BX_DIRECTORY_PATH_BASE', BX_DIRECTORY_PATH_ROOT . 'template/');
 define('BX_DIRECTORY_PATH_CACHE', BX_DIRECTORY_PATH_ROOT . 'cache/');
@@ -32,7 +30,6 @@ define('BX_DIRECTORY_PATH_LOGS', BX_DIRECTORY_PATH_ROOT . 'logs/');
 define('BX_DIRECTORY_STORAGE', BX_DIRECTORY_PATH_ROOT . 'storage/');
 
 //--- System settings ---//
-
 define('BX_DOL_DIR_RIGHTS', 0777);
 define('BX_DOL_FILE_RIGHTS', 0666);
 
@@ -46,15 +43,17 @@ define('BX_DOL_TRANSCODER_OBJ_ICON_FAVICON', 'sys_icon_favicon');
 define('BX_DOL_TRANSCODER_OBJ_COVER', 'sys_cover');
 
 //--- Module types ---//
-
 if (!defined('BX_DOL_MODULE_TYPE_MODULE')) {
     define('BX_DOL_MODULE_TYPE_MODULE', 'module');
     define('BX_DOL_MODULE_TYPE_LANGUAGE', 'language');
     define('BX_DOL_MODULE_TYPE_TEMPLATE', 'template');
 }
 
-//--- Studio settings ---//
+//--- Payment types ---//
+define('BX_PAYMENT_TYPE_SINGLE', 'single');
+define('BX_PAYMENT_TYPE_RECURRING', 'recurring');
 
+//--- Studio settings ---//
 define('BX_DOL_STUDIO_FOLDER', 'studio');
 
 define('BX_DOL_URL_STUDIO', BX_DOL_URL_ROOT . BX_DOL_STUDIO_FOLDER . '/');
@@ -66,19 +65,16 @@ define('BX_DOL_DIR_STUDIO_CLASSES', BX_DOL_DIR_STUDIO . 'classes/');
 define('BX_DOL_DIR_STUDIO_BASE', BX_DOL_DIR_STUDIO . 'template/');
 
 //--- User Roles ---//
-
 define('BX_DOL_ROLE_GUEST', 0);
 define('BX_DOL_ROLE_MEMBER', 1);
 define('BX_DOL_ROLE_ADMIN', 2);
 
 //--- Profile Statuses ---//
-
 define('BX_PROFILE_STATUS_SUSPENDED', 'suspended'); ///< profile status - suspended, profile is syspended by admin/moderator and usually can't access the site
 define('BX_PROFILE_STATUS_ACTIVE', 'active'); ///< profile status - active, profile is active on the site
 define('BX_PROFILE_STATUS_PENDING', 'pending'); ///< profile status - pending, default method of approving is manual approving
 
 //--- Include files needed for basic functionality ---//
-
 require_once(BX_DIRECTORY_PATH_CLASSES . 'BxDol.php');
 require_once(BX_DIRECTORY_PATH_INC . 'utils.inc.php');
 require_once(BX_DIRECTORY_PATH_INC . 'version.inc.php');

+ 33 - 0
modules/base/payment/classes/BxBaseModPaymentDetails.php

@@ -0,0 +1,33 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
+ * CC-BY License - http://creativecommons.org/licenses/by/3.0/
+ *
+ * @defgroup    BasePayment Base classes for Payment like modules
+ * @ingroup     TridentModules
+ *
+ * @{
+ */
+
+class BxBaseModPaymentDetails extends BxDol
+{
+	protected $MODULE;
+	protected $_oModule;
+
+	function __construct()
+    {
+        parent::__construct();
+
+        $this->_oModule = BxDolModule::getInstance($this->MODULE);
+    }
+
+	public function serviceGetDetailsUrl()
+    {
+    	if(!$this->_oModule->isLogged())
+            return '';
+
+    	return  $this->_oModule->_oConfig->getUrl('URL_DETAILS');
+    }
+}
+
+/** @} */

+ 2 - 0
modules/boonex/market/classes/BxMarketConfig.php

@@ -46,9 +46,11 @@ class BxMarketConfig extends BxBaseModTextConfig
             'FIELD_TEXT_ID' => 'product-text',
         	'FIELD_CATEGORY' => 'cat',
         	'FIELD_HEADER_BEG_SINGLE' => 'header_beg_single',
+        	'FIELD_WARNING_SINGLE' => 'warning_single',
         	'FIELD_PRICE_SINGLE' => 'price_single',
         	'FIELD_HEADER_END_SINGLE' => 'header_end_single',
         	'FIELD_HEADER_BEG_RECURRING' => 'header_beg_recurring',
+        	'FIELD_WARNING_RECURRING' => 'warning_recurring',
         	'FIELD_PRICE_RECURRING' => 'price_recurring',
         	'FIELD_DURATION_RECURRING' => 'duration_recurring',
         	'FIELD_HEADER_END_RECURRING' => 'header_end_recurring',

+ 21 - 6
modules/boonex/market/classes/BxMarketFormEntry.php

@@ -21,6 +21,8 @@ class BxMarketFormEntry extends BxBaseModTextFormEntry
 
         $CNF = &$this->_oModule->_oConfig->CNF;
 
+        $iProfileId = bx_get_logged_profile_id();
+
         if(isset($this->aInputs[$CNF['FIELD_TITLE']], $this->aInputs[$CNF['FIELD_NAME']])) {
         	$sJsObject = $this->_oModule->_oConfig->getJsObject('entry');
 
@@ -38,33 +40,46 @@ class BxMarketFormEntry extends BxBaseModTextFormEntry
             $this->aInputs[$CNF['FIELD_FILE']]['ghost_template'] = '';
         }
 
-        if($this->_oModule->_oDb->getParam($CNF['OPTION_ENABLE_RECURRING']) != 'on') {
+        $bRecurring = $this->_oModule->_oDb->getParam($CNF['OPTION_ENABLE_RECURRING']) == 'on';
+        if(!$bRecurring) {
         	$this->aInputs[$CNF['FIELD_DURATION_RECURRING']]['type'] = 'hidden';
 			$this->aInputs[$CNF['FIELD_PRICE_RECURRING']]['type'] = 'hidden';
 			$this->aInputs[$CNF['FIELD_PRICE_RECURRING']]['value'] = 0;
 
-			unset($this->aInputs[$CNF['FIELD_HEADER_BEG_SINGLE']]);
-			unset($this->aInputs[$CNF['FIELD_HEADER_END_SINGLE']]);
 			unset($this->aInputs[$CNF['FIELD_HEADER_BEG_RECURRING']]);
 			unset($this->aInputs[$CNF['FIELD_HEADER_END_RECURRING']]);
         }
 
+        $oPayment = BxDolPayments::getInstance();
+        if(isset($this->aInputs[$CNF['FIELD_WARNING_SINGLE']])) {
+	        if(!$oPayment->isAcceptingPayments($iProfileId, BX_PAYMENT_TYPE_SINGLE)) 
+	        	$this->aInputs[$CNF['FIELD_WARNING_SINGLE']]['value'] = MsgBox(_t($this->aInputs[$CNF['FIELD_WARNING_SINGLE']]['value'], $oPayment->getDetailsUrl()));
+	        else 
+	        	unset($this->aInputs[$CNF['FIELD_WARNING_SINGLE']]);
+        }
+
+        if(isset($this->aInputs[$CNF['FIELD_WARNING_RECURRING']])) {
+	        if($bRecurring && !$oPayment->isAcceptingPayments($iProfileId, BX_PAYMENT_TYPE_RECURRING))
+	        	$this->aInputs[$CNF['FIELD_WARNING_RECURRING']]['value'] = MsgBox(_t($this->aInputs[$CNF['FIELD_WARNING_RECURRING']]['value'], $oPayment->getDetailsUrl()));
+	        else 
+	        	unset($this->aInputs[$CNF['FIELD_WARNING_RECURRING']]);
+        }
+
 		if(isset($this->aInputs[$CNF['FIELD_ALLOW_PURCHASE_TO']]))
 			$this->aInputs[$CNF['FIELD_ALLOW_PURCHASE_TO']] = BxDolPrivacy::getGroupChooser($CNF['OBJECT_PRIVACY_PURCHASE']);
 
-		$iOwnerId = bx_get_logged_profile_id();
 		$aDynamicGroups = array(
 			array ('key' => '', 'value' => '----'),
 			array ('key' => 'c', 'value' => _t('_bx_market_privacy_group_customers'))
 		);
 
 		if(isset($this->aInputs[$CNF['FIELD_ALLOW_COMMENT_TO']])) {
-			$this->aInputs[$CNF['FIELD_ALLOW_COMMENT_TO']] = BxDolPrivacy::getGroupChooser($CNF['OBJECT_PRIVACY_COMMENT'], $iOwnerId, array('dynamic_groups' => $aDynamicGroups));
+			$this->aInputs[$CNF['FIELD_ALLOW_COMMENT_TO']] = BxDolPrivacy::getGroupChooser($CNF['OBJECT_PRIVACY_COMMENT'], $iProfileId, array('dynamic_groups' => $aDynamicGroups));
 			$this->aInputs[$CNF['FIELD_ALLOW_COMMENT_TO']]['db']['pass'] = 'Xss';
 		}
 
 		if(isset($this->aInputs[$CNF['FIELD_ALLOW_VOTE_TO']])) {
-			$this->aInputs[$CNF['FIELD_ALLOW_VOTE_TO']] = BxDolPrivacy::getGroupChooser($CNF['OBJECT_PRIVACY_VOTE'], $iOwnerId, array('dynamic_groups' => $aDynamicGroups));
+			$this->aInputs[$CNF['FIELD_ALLOW_VOTE_TO']] = BxDolPrivacy::getGroupChooser($CNF['OBJECT_PRIVACY_VOTE'], $iProfileId, array('dynamic_groups' => $aDynamicGroups));
 			$this->aInputs[$CNF['FIELD_ALLOW_VOTE_TO']]['db']['pass'] = 'Xss';
 		}
     }

+ 4 - 1
modules/boonex/market/classes/BxMarketModule.php

@@ -41,8 +41,11 @@ class BxMarketModule extends BxBaseModTextModule
 
     public function serviceEntityCreate ()
     {
-    	$this->_oTemplate->addJs(array('entry.js'));
+    	$oPayments = BxDolPayments::getInstance();
+    	if(!$oPayments->isAcceptingPayments($this->_iProfileId))
+    		return MsgBox(_t('_bx_market_err_not_accept_payments', $oPayments->getDetailsUrl()));
 
+    	$this->_oTemplate->addJs(array('entry.js'));
     	return $this->_oTemplate->getJsCode('entry') . parent::serviceEntityCreate();
     }
 

+ 3 - 2
modules/boonex/market/install/langs/en.xml

@@ -245,8 +245,6 @@
 	<string name="_bx_market_grid_txt_lcs_type_single"><![CDATA[one-time]]></string>
 	<string name="_bx_market_grid_txt_lcs_type_recurring"><![CDATA[recurring]]></string>
 	<string name="_bx_market_grid_txt_lcs_never"><![CDATA[never]]></string>
-	<string name=""><![CDATA[]]></string>
-	<string name=""><![CDATA[]]></string>
 
     <string name="_bx_market_pre_lists_cats"><![CDATA[Product categories]]></string>
     <string name="_bx_market_cat_administration"><![CDATA[Administration]]></string>
@@ -305,6 +303,9 @@
     <string name="_bx_market_vote_counter"><![CDATA[{0} ratings]]></string>
 
 	<string name="_bx_market_err_access_denied"><![CDATA[Access denied.]]></string>
+	<string name="_bx_market_err_not_accept_payments"><![CDATA[You need to activate at least one payment provider. You may do it via My Account menu -> Orders page -> <a href="{0}">Settings</a> tab.]]></string>
+	<string name="_bx_market_err_not_accept_payments_single"><![CDATA[You need to activate at least one payment provider, which is working with Shopping Cart. You may do it via My Account menu -> Orders page -> <a href="{0}">Settings</a> tab.]]></string>
+	<string name="_bx_market_err_not_accept_payments_recurring"><![CDATA[You need to activate at least one payment provider, which is working with Subscriptions. You may do it via My Account menu -> Orders page -> <a href="{0}">Settings</a> tab.]]></string>
 
     <string name="_bx_market_txt_all_entries_by"><![CDATA[<a href="{0}">All Products by {1} ({2})</a>]]></string>
     <string name="_bx_market_txt_category"><![CDATA[Category:]]></string>

+ 38 - 32
modules/boonex/market/install/sql/install.sql

@@ -271,7 +271,9 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_market', 'bx_market', 'header_beg_privacy', '', '', 0, 'block_header', '_bx_market_form_entry_input_sys_header_beg_privacy', '_bx_market_form_entry_input_header_beg_privacy', '', 0, 1, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_market', 'bx_market', 'header_end_single', '', '', 0, 'block_end', '_bx_market_form_entry_input_sys_header_end_single', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
 ('bx_market', 'bx_market', 'header_end_recurring', '', '', 0, 'block_end', '_bx_market_form_entry_input_sys_header_end_recurring', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
-('bx_market', 'bx_market', 'header_end_privacy', '', '', 0, 'block_end', '_bx_market_form_entry_input_sys_header_end_privacy', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
+('bx_market', 'bx_market', 'header_end_privacy', '', '', 0, 'block_end', '_bx_market_form_entry_input_sys_header_end_privacy', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_market', 'bx_market', 'warning_single', '_bx_market_err_not_accept_payments_single', '', 0, 'value', '_bx_market_form_entry_input_sys_warning_single', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0),
+('bx_market', 'bx_market', 'warning_recurring', '_bx_market_err_not_accept_payments_recurring', '', 0, 'value', '_bx_market_form_entry_input_sys_warning_recurring', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 0);
 
 
 INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for_levels`, `active`, `order`) VALUES 
@@ -283,22 +285,24 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_market_entry_add', 'pictures', 2147483647, 1, 6),
 ('bx_market_entry_add', 'files', 2147483647, 1, 7),
 ('bx_market_entry_add', 'header_beg_single', 2147483647, 1, 8),
-('bx_market_entry_add', 'price_single', 2147483647, 1, 9),
-('bx_market_entry_add', 'header_end_single', 2147483647, 1, 10),
-('bx_market_entry_add', 'header_beg_recurring', 2147483647, 1, 11),
-('bx_market_entry_add', 'duration_recurring', 2147483647, 1, 12),
-('bx_market_entry_add', 'price_recurring', 2147483647, 1, 13),
-('bx_market_entry_add', 'header_end_recurring', 2147483647, 1, 14),
-('bx_market_entry_add', 'header_beg_privacy', 2147483647, 1, 15),
-('bx_market_entry_add', 'allow_view_to', 2147483647, 1, 16),
-('bx_market_entry_add', 'allow_purchase_to', 2147483647, 1, 17),
-('bx_market_entry_add', 'allow_comment_to', 2147483647, 1, 18),
-('bx_market_entry_add', 'allow_vote_to', 2147483647, 1, 19),
-('bx_market_entry_add', 'header_end_privacy', 2147483647, 1, 20),
-('bx_market_entry_add', 'notes', 2147483647, 1, 21),
-('bx_market_entry_add', 'location', 2147483647, 1, 22),
-('bx_market_entry_add', 'do_submit', 2147483647, 0, 23),
-('bx_market_entry_add', 'do_publish', 2147483647, 1, 24),
+('bx_market_entry_add', 'warning_single', 2147483647, 1, 9),
+('bx_market_entry_add', 'price_single', 2147483647, 1, 10),
+('bx_market_entry_add', 'header_end_single', 2147483647, 1, 11),
+('bx_market_entry_add', 'header_beg_recurring', 2147483647, 1, 12),
+('bx_market_entry_add', 'warning_recurring', 2147483647, 1, 13),
+('bx_market_entry_add', 'duration_recurring', 2147483647, 1, 14),
+('bx_market_entry_add', 'price_recurring', 2147483647, 1, 15),
+('bx_market_entry_add', 'header_end_recurring', 2147483647, 1, 16),
+('bx_market_entry_add', 'header_beg_privacy', 2147483647, 1, 17),
+('bx_market_entry_add', 'allow_view_to', 2147483647, 1, 18),
+('bx_market_entry_add', 'allow_purchase_to', 2147483647, 1, 19),
+('bx_market_entry_add', 'allow_comment_to', 2147483647, 1, 20),
+('bx_market_entry_add', 'allow_vote_to', 2147483647, 1, 21),
+('bx_market_entry_add', 'header_end_privacy', 2147483647, 1, 22),
+('bx_market_entry_add', 'notes', 2147483647, 1, 23),
+('bx_market_entry_add', 'location', 2147483647, 1, 24),
+('bx_market_entry_add', 'do_submit', 2147483647, 0, 25),
+('bx_market_entry_add', 'do_publish', 2147483647, 1, 26),
 
 ('bx_market_entry_delete', 'notes', 2147483647, 0, 0),
 ('bx_market_entry_delete', 'location', 2147483647, 0, 0),
@@ -334,21 +338,23 @@ INSERT INTO `sys_form_display_inputs`(`display_name`, `input_name`, `visible_for
 ('bx_market_entry_edit', 'pictures', 2147483647, 1, 7),
 ('bx_market_entry_edit', 'files', 2147483647, 1, 8),
 ('bx_market_entry_edit', 'header_beg_single', 2147483647, 1, 9),
-('bx_market_entry_edit', 'price_single', 2147483647, 1, 10),
-('bx_market_entry_edit', 'header_end_single', 2147483647, 1, 11),
-('bx_market_entry_edit', 'header_beg_recurring', 2147483647, 1, 12),
-('bx_market_entry_edit', 'duration_recurring', 2147483647, 1, 13),
-('bx_market_entry_edit', 'price_recurring', 2147483647, 1, 14),
-('bx_market_entry_edit', 'header_end_recurring', 2147483647, 1, 15),
-('bx_market_entry_edit', 'header_beg_privacy', 2147483647, 1, 16),
-('bx_market_entry_edit', 'allow_view_to', 2147483647, 1, 17),
-('bx_market_entry_edit', 'allow_purchase_to', 2147483647, 1, 18),
-('bx_market_entry_edit', 'allow_comment_to', 2147483647, 1, 19),
-('bx_market_entry_edit', 'allow_vote_to', 2147483647, 1, 20),
-('bx_market_entry_edit', 'header_end_privacy', 2147483647, 1, 21),
-('bx_market_entry_edit', 'notes', 2147483647, 1, 22),
-('bx_market_entry_edit', 'location', 2147483647, 1, 23),
-('bx_market_entry_edit', 'do_submit', 2147483647, 1, 24),
+('bx_market_entry_edit', 'warning_single', 2147483647, 1, 10),
+('bx_market_entry_edit', 'price_single', 2147483647, 1, 11),
+('bx_market_entry_edit', 'header_end_single', 2147483647, 1, 12),
+('bx_market_entry_edit', 'header_beg_recurring', 2147483647, 1, 13),
+('bx_market_entry_edit', 'warning_recurring', 2147483647, 1, 14),
+('bx_market_entry_edit', 'duration_recurring', 2147483647, 1, 15),
+('bx_market_entry_edit', 'price_recurring', 2147483647, 1, 16),
+('bx_market_entry_edit', 'header_end_recurring', 2147483647, 1, 17),
+('bx_market_entry_edit', 'header_beg_privacy', 2147483647, 1, 18),
+('bx_market_entry_edit', 'allow_view_to', 2147483647, 1, 19),
+('bx_market_entry_edit', 'allow_purchase_to', 2147483647, 1, 20),
+('bx_market_entry_edit', 'allow_comment_to', 2147483647, 1, 21),
+('bx_market_entry_edit', 'allow_vote_to', 2147483647, 1, 22),
+('bx_market_entry_edit', 'header_end_privacy', 2147483647, 1, 23),
+('bx_market_entry_edit', 'notes', 2147483647, 1, 24),
+('bx_market_entry_edit', 'location', 2147483647, 1, 25),
+('bx_market_entry_edit', 'do_submit', 2147483647, 1, 26),
 
 ('bx_market_entry_view', 'notes', 2147483647, 0, 0),
 ('bx_market_entry_view', 'location', 2147483647, 0, 0),

+ 1 - 6
modules/boonex/payment/classes/BxPaymentDetails.php

@@ -19,11 +19,8 @@ class BxPaymentDetailsFormCheckerHelper extends BxDolFormCheckerHelper
     }
 }
 
-class BxPaymentDetails extends BxDol
+class BxPaymentDetails extends BxBaseModPaymentDetails
 {
-    protected $MODULE;
-	protected $_oModule;
-
 	protected $_sLangsPrefix;
     protected $_bCollapseFirst;
 
@@ -33,8 +30,6 @@ class BxPaymentDetails extends BxDol
 
     	parent::__construct();
 
-    	$this->_oModule = BxDolModule::getInstance($this->MODULE);
-
     	$this->_sLangsPrefix = $this->_oModule->_oConfig->getPrefix('langs');
         $this->_bCollapseFirst = true;
     }

+ 24 - 3
modules/boonex/payment/classes/BxPaymentModule.php

@@ -9,9 +9,6 @@
  * @{
  */
 
-define('BX_PAYMENT_TYPE_SINGLE', 'single');
-define('BX_PAYMENT_TYPE_RECURRING', 'recurring');
-
 define('BX_PAYMENT_ORDERS_TYPE_PENDING', 'pending');
 define('BX_PAYMENT_ORDERS_TYPE_PROCESSED', 'processed');
 define('BX_PAYMENT_ORDERS_TYPE_SUBSCRIPTION', 'subscription');
@@ -127,6 +124,30 @@ class BxPaymentModule extends BxBaseModPaymentModule
     /**
      * Payment Details Methods
      */
+    public function serviceIsAcceptingPayments($iVendorId, $sPaymentType = '')
+    {
+    	$bResult = false;
+
+    	switch($sPaymentType) {
+    		case BX_PAYMENT_TYPE_SINGLE:
+    			$aProvidersCart = $this->_oDb->getVendorInfoProvidersCart($iVendorId);
+    			$bResult = !empty($aProvidersCart);
+    			break;
+
+    		case BX_PAYMENT_TYPE_RECURRING:
+    			$aProvidersSubscription = $this->_oDb->getVendorInfoProvidersSubscription($iVendorId);
+    			$bResult = !empty($aProvidersSubscription);
+    			break;
+
+    		default:
+    			$aProvidersCart = $this->_oDb->getVendorInfoProvidersCart($iVendorId);
+    			$aProvidersSubscription = $this->_oDb->getVendorInfoProvidersSubscription($iVendorId);
+    			$bResult = !empty($aProvidersCart) || !empty($aProvidersSubscription);
+    	}
+
+		return $bResult;
+    }
+
     public function serviceGetOptionsSiteAdmin()
     {
         $aResult = array(

+ 2 - 0
modules/boonex/payment/install/langs/en.xml

@@ -147,6 +147,8 @@
 	<string name="_bx_payment_err_inactive_vendor"><![CDATA[The vendor status is not active.]]></string>
 	<string name="_bx_payment_err_incorrect_provider"><![CDATA[Incorrect or unavailable payment provider.]]></string>
 	<string name="_bx_payment_err_not_accept_payments"><![CDATA[The vendor does not accept payments.]]></string>
+	<string name="_bx_payment_err_not_accept_payments_single"><![CDATA[The vendor does not accept payments via shopping cart.]]></string>
+	<string name="_bx_payment_err_not_accept_payments_recurring"><![CDATA[The vendor does not work with subscriptions.]]></string>
 	<string name="_bx_payment_err_nothing_selected"><![CDATA[You need to select at least one item.]]></string>
 	<string name="_bx_payment_err_self_purchase"><![CDATA[You cannot purchase your own item. It's just a bad luck thing, you know.]]></string>
 	<string name="_bx_payment_err_required_login"><![CDATA[You need to login.]]></string>

+ 3 - 0
modules/boonex/russian/data/langs/bx_market/ru.xml

@@ -301,6 +301,9 @@
 	<string name="_bx_market_vote_counter"><![CDATA[{0} голосов]]></string>
 
 	<string name="_bx_market_err_access_denied"><![CDATA[Доступ запрещен.]]></string>
+	<string name="_bx_market_err_not_accept_payments"><![CDATA[Вам необходимо активировать хотя бы одину платежную систему. Вы можете сделать это через меню Мой аккаунт -> страница Заказы -> <a href="{0}">вкладка Настройки</a>.]]></string>
+	<string name="_bx_market_err_not_accept_payments_single"><![CDATA[Вам необходимо активировать хотя бы одину платежную систему, работающую с корзиной. Вы можете сделать это через меню Мой аккаунт -> страница Заказы -> <a href="{0}">вкладка Настройки</a>.]]></string>
+	<string name="_bx_market_err_not_accept_payments_recurring"><![CDATA[Вам необходимо активировать хотя бы одину платежную систему, работающую с подписками. Вы можете сделать это через меню Мой аккаунт -> страница Заказы -> <a href="{0}">вкладка Настройки</a>.]]></string>
 
     <string name="_bx_market_txt_all_entries_by"><![CDATA[<a href="{0}">Все продукты от {1} ({2})</a>]]></string>
     <string name="_bx_market_txt_category"><![CDATA[Категория:]]></string>