Author Topic: How can I remove one US state from drop down list on billing address form?  (Read 2720 times)

z-analysts

  • Jr. Member
  • **
  • Posts: 162
Hi all,

I have a site where we are not selling in one US state because of the complex sales tax rules. To accomplish this I though I could unpublish the one state in the countries configuration. However, the problem I have is that the unpublished state name still appears in the list of US states on the billing address form. How can I remove it from the drop down list?

Thank you!

VM 2.0.8e
Joomla 2.5.6

BoiceNet

  • Beginner
  • *
  • Posts: 24
Not sure if this is the best place to take care of your request, but there is a table in the database that holds all of the state names. It's the only place I've found which contains a list of all 50 states for the US. You could remove the state from the table and it should no longer show up anywhere there is a listing of states.

[attachment cleanup by admin]

ivus

  • Full Member
  • ***
  • Posts: 534
  • - YAY me... proud member of the 500 club...
Hi guys,

There's an admin area to do this.

VirtueMart > Configuration > Countries

In the list of country names you should be able to find the US.

United States  [States]

Click on the part that says "States" and it'll take you to another list that only contains the state from the US.

I hope this helps  ;D

BoiceNet

  • Beginner
  • *
  • Posts: 24
Excellent! Thank you, ivus.

I figured there was an easier way to take care of this. I did not click on the [states] link in the Countries area. Definitely a better way.

bb

z-analysts

  • Jr. Member
  • **
  • Posts: 162
Dear Ivus,

Thank you for your reply however that is what I did. The problem is that the state name still appears in the drop down list on the Add/Edit Billing form.  Please advise.

Regards,

ivus

  • Full Member
  • ***
  • Posts: 534
  • - YAY me... proud member of the 500 club...
Hi guys,

OK... I see the problem.

Simple fix : "/administrator/components/com_virtuemart/models/state.php"

Find the following function public function getStates()

ORIGINAL:
Code: [Select]
public function getStates($countryId, $noLimit=false)
{
$quer= 'SELECT * FROM `#__virtuemart_states`  WHERE `virtuemart_country_id`= "'.(int)$countryId.'"
ORDER BY `#__virtuemart_states`.`state_name`';

if ($noLimit) {
    $this->_data = $this->_getList($quer);
}
else {
    $this->_data = $this->_getList($quer, $this->getState('limitstart'), $this->getState('limit'));
}

if(count($this->_data) >0){
$this->_total = $this->_getListCount($quer);
}

return $this->_data;
}

CHANGED:
Code: [Select]
public function getStates($countryId, $noLimit=false)
{
$app = JFactory::getApplication ();
$quer = 'SELECT * FROM `#__virtuemart_states`  WHERE `virtuemart_country_id`= "'.(int)$countryId.'"';
if ($app->isSite ()) {
$quer .= ' AND `published`="1" ';
}
$quer .= 'ORDER BY `#__virtuemart_states`.`state_name`';

if ($noLimit) {
    $this->_data = $this->_getList($quer);
}
else {
    $this->_data = $this->_getList($quer, $this->getState('limitstart'), $this->getState('limit'));
}

if(count($this->_data) >0){
$this->_total = $this->_getListCount($quer);
}

return $this->_data;
}

I added a PUBLISHED clause.

Now it should work.

ivus  ;D