Hi,
Thank you for your feedback. It's amazing that for two months no one reported us those issues.
When you create a new address it becomes a new address entity. Then, you can select it for shipping and/or billing. You don't really create a shipping or a billing address but an address which can be affected as billing address and/or shipping address on the checkout.
That's why you got a bit confused with the process in the beginning.
Apart from that, there are indeed issues with the addresses handling. Thanks to your thorough report, we were able to reproduce all the problems on one of our test website and fix them. They will be included in next release.
In the mean time here is what to do to fix them manually (assuming that you have the latest version 1.3.9) :
First, you need to replace the file components/com_hikashop/views/checkout/tmpl/address.php with the file in the archive enclosed in this post
Then, you need to edit the file components/com_hikashop/views/checkout/view.html.php and near line 285, in the function address, replace the code
$shipping_address=$app->getUserState( HIKASHOP_COMPONENT.'.shipping_address' );
if(empty($billing_address) && count($addresses)){
by the code
$billing_address=$app->getUserState( HIKASHOP_COMPONENT.'.billing_address' );
if(empty($billing_address) && count($addresses)){
Finally, you need to edit the file components/com_hikashop/controllers/checkout.php and near line 640, in the function address, replace the code
if(JRequest::getString('same_address','yes')=='yes'||empty($shipping)){
$shipping = $billing;
}
$app =& JFactory::getApplication();
$oldShippingAddress=$app->getUserState( HIKASHOP_COMPONENT.'.shipping_address' );
$app->setUserState( HIKASHOP_COMPONENT.'.shipping_address',$shipping );
$app->setUserState( HIKASHOP_COMPONENT.'.billing_address',$billing );
if($shipping!=$oldShippingAddress){
if(strpos($this->checkout_workflow,'shipping')!==false){
$this->before_shipping();
}
if(strpos($this->checkout_workflow,'payment')!==false){
$this->before_payment();
}
}
by the code
if(JRequest::getString('same_address','')=='yes'||empty($shipping)){
$shipping = $billing;
}
$app =& JFactory::getApplication();
$oldShippingAddress=$app->getUserState( HIKASHOP_COMPONENT.'.shipping_address' );
$oldBillingAddress=$app->getUserState( HIKASHOP_COMPONENT.'.billing_address' );
$app->setUserState( HIKASHOP_COMPONENT.'.shipping_address',$shipping );
$app->setUserState( HIKASHOP_COMPONENT.'.billing_address',$billing );
if($shipping!=$oldShippingAddress){
if(strpos($this->checkout_workflow,'shipping')!==false){
$this->before_shipping();
}
if(strpos($this->checkout_workflow,'payment')!==false){
$this->before_payment();
}
return false;
}elseif($billing!=$oldBillingAddress){
return false;
}
That will fix the behavior of the address selection.
Last problem you talked about: the fact that you can't complete the order. That's either because you don't have any payment methods displayed for selection or you don't have any shipping methods displayed for selection. Usually, you should get an error message when that happen but if your template is missing the jdoc include message tag, it won't be displayed.
I invite you to read our FAQ regarding shipping and payment methods issues:
www.hikashop.com/support/documentation/i...ins-listing.html#faq