[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-09-28 Thread Nicolas Malin (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Malin updated OFBIZ-12303:
--
Priority: Minor  (was: Critical)

> ShoppingCart object does not recognize two products with different 
> configurations
> -
>
> Key: OFBIZ-12303
> URL: https://issues.apache.org/jira/browse/OFBIZ-12303
> Project: OFBiz
>  Issue Type: Bug
>  Components: ecommerce
>Affects Versions: 17.12.04
> Environment: Centos Linux 8;
> openjdk version "11.0.9" 2020-10-20 LTS;
> PostgreSQL 12.1
>Reporter: Alexander Tzvetanov
>Priority: Minor
>  Labels: easyfix
> Attachments: OFBIZ-12303.patch, OFBIZ-12303.patch
>
>
> By adding two equal products with different configurations in eCommerce cart 
> it results in qty aggregation instead of adding 2 separate cart lines.
>  This is very easy to reproduce in Ofbiz demo site.
>  1. Select PC configuration as it is by default  with 2 GB memory;
>  2. Add it to cart;
>  3. Change a little PC's - i.e. with different memory (1 GB);
>  4. Add to cart again.
>  In result of that in the cart appears the first config with 2 GB twice. The 
> correct behavior is to add 2 different cart lines with 2 different prices.
> I found that the issue is in the class ConfigItem - equals method.
>  In my site I've done a quick fix. I am attaching my code to this bug only 
> for demonstration of the problem.
>  Please apply fix for the next Ofbiz version.
> {noformat}
> applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
> Original code:
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> Objects.equals(getOptions(), that.getOptions());
> }
> Changed code:
> private boolean isConfigOptionsSelectionEqual( List 
> otherOptions) {
>   List mineOptions = getOptions();
>   for (int i = 0; i < mineOptions.size(); i ++) {
>   if 
> (!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
> 
> mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
>   return false;
>   }
>   
>   }
>   return true;
> }
> 
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> // Objects.equals(getOptions(), that.getOptions()
> isConfigOptionsSelectionEqual(that.getOptions());
> }
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-09-20 Thread Nicolas Malin (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Malin updated OFBIZ-12303:
--
Attachment: OFBIZ-12303.patch

> ShoppingCart object does not recognize two products with different 
> configurations
> -
>
> Key: OFBIZ-12303
> URL: https://issues.apache.org/jira/browse/OFBIZ-12303
> Project: OFBiz
>  Issue Type: Bug
>  Components: ecommerce
>Affects Versions: 17.12.04
> Environment: Centos Linux 8;
> openjdk version "11.0.9" 2020-10-20 LTS;
> PostgreSQL 12.1
>Reporter: Alexander Tzvetanov
>Priority: Critical
>  Labels: easyfix
> Attachments: OFBIZ-12303.patch, OFBIZ-12303.patch
>
>
> By adding two equal products with different configurations in eCommerce cart 
> it results in qty aggregation instead of adding 2 separate cart lines.
>  This is very easy to reproduce in Ofbiz demo site.
>  1. Select PC configuration as it is by default  with 2 GB memory;
>  2. Add it to cart;
>  3. Change a little PC's - i.e. with different memory (1 GB);
>  4. Add to cart again.
>  In result of that in the cart appears the first config with 2 GB twice. The 
> correct behavior is to add 2 different cart lines with 2 different prices.
> I found that the issue is in the class ConfigItem - equals method.
>  In my site I've done a quick fix. I am attaching my code to this bug only 
> for demonstration of the problem.
>  Please apply fix for the next Ofbiz version.
> {noformat}
> applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
> Original code:
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> Objects.equals(getOptions(), that.getOptions());
> }
> Changed code:
> private boolean isConfigOptionsSelectionEqual( List 
> otherOptions) {
>   List mineOptions = getOptions();
>   for (int i = 0; i < mineOptions.size(); i ++) {
>   if 
> (!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
> 
> mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
>   return false;
>   }
>   
>   }
>   return true;
> }
> 
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> // Objects.equals(getOptions(), that.getOptions()
> isConfigOptionsSelectionEqual(that.getOptions());
> }
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-09-17 Thread Nicolas Malin (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Malin updated OFBIZ-12303:
--
Attachment: OFBIZ-12303.patch

> ShoppingCart object does not recognize two products with different 
> configurations
> -
>
> Key: OFBIZ-12303
> URL: https://issues.apache.org/jira/browse/OFBIZ-12303
> Project: OFBiz
>  Issue Type: Bug
>  Components: ecommerce
>Affects Versions: 17.12.04
> Environment: Centos Linux 8;
> openjdk version "11.0.9" 2020-10-20 LTS;
> PostgreSQL 12.1
>Reporter: Alexander Tzvetanov
>Priority: Critical
>  Labels: easyfix
> Attachments: OFBIZ-12303.patch
>
>
> By adding two equal products with different configurations in eCommerce cart 
> it results in qty aggregation instead of adding 2 separate cart lines.
>  This is very easy to reproduce in Ofbiz demo site.
>  1. Select PC configuration as it is by default  with 2 GB memory;
>  2. Add it to cart;
>  3. Change a little PC's - i.e. with different memory (1 GB);
>  4. Add to cart again.
>  In result of that in the cart appears the first config with 2 GB twice. The 
> correct behavior is to add 2 different cart lines with 2 different prices.
> I found that the issue is in the class ConfigItem - equals method.
>  In my site I've done a quick fix. I am attaching my code to this bug only 
> for demonstration of the problem.
>  Please apply fix for the next Ofbiz version.
> {noformat}
> applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
> Original code:
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> Objects.equals(getOptions(), that.getOptions());
> }
> Changed code:
> private boolean isConfigOptionsSelectionEqual( List 
> otherOptions) {
>   List mineOptions = getOptions();
>   for (int i = 0; i < mineOptions.size(); i ++) {
>   if 
> (!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
> 
> mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
>   return false;
>   }
>   
>   }
>   return true;
> }
> 
> @Override
> public boolean equals(Object o) {
> if (this == o) return true;
> if (o == null || getClass() != o.getClass()) return false;
> ConfigItem that = (ConfigItem) o;
> return Objects.equals(getConfigItem(), that.getConfigItem()) &&
> Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
> // Objects.equals(getOptions(), that.getOptions()
> isConfigOptionsSelectionEqual(that.getOptions());
> }
> {noformat}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-08-13 Thread Alexander Tzvetanov (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Tzvetanov updated OFBIZ-12303:

Description: 
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
 This is very easy to reproduce in Ofbiz demo site.
 1. Select PC configuration as it is by default  with 2 GB memory;
 2. Add it to cart;
 3. Change a little PC's - i.e. with different memory (1 GB);
 4. Add to cart again.
 In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
 In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
 Please apply fix for the next Ofbiz version.

{noformat}
applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

Original code:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ConfigItem that = (ConfigItem) o;
return Objects.equals(getConfigItem(), that.getConfigItem()) &&
Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
Objects.equals(getOptions(), that.getOptions());
}


Changed code:
private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
List mineOptions = getOptions();
for (int i = 0; i < mineOptions.size(); i ++) {
if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
  
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
return false;
}

}
return true;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ConfigItem that = (ConfigItem) o;
return Objects.equals(getConfigItem(), that.getConfigItem()) &&
Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
// Objects.equals(getOptions(), that.getOptions()
isConfigOptionsSelectionEqual(that.getOptions());
}
{noformat}
 

  was:
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
 This is very easy to reproduce in Ofbiz demo site.
 1. Select PC configuration as it is by default  with 2 GB memory;
 2. Add it to cart;
 3. Change a little PC's - i.e. with different memory (1 GB);
 4. Add to cart again.
 In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
 In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
 Please apply fix for the next Ofbiz version.



FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
 


 

Original code: 

 @Override 

 public boolean equals(Object o) { 

 if (this == o) return true; 

 if (o == null || getClass() != o.getClass()) return false; 

 ConfigItem that = (ConfigItem) o; 

 return Objects.equals(getConfigItem(), that.getConfigItem()) && 

 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) && 

 Objects.equals(getOptions(), that.getOptions()); 

 } 

  

-
 

Changed code: 

 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) { 

 List mineOptions = getOptions(); 

 for (int i = 0; i < mineOptions.size(); i ++) { 

 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) &&  

   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) { 

 return false; 

 } 

  

 } 

 return true; 

 } 

  

 @Override 

 public boolean equals(Object o) { 

 if (this == o) return true; 

 if (o == null || getClass() != o.getClass()) return false; 

 ConfigItem that = 

[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-08-13 Thread Alexander Tzvetanov (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Tzvetanov updated OFBIZ-12303:

Description: 
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
 This is very easy to reproduce in Ofbiz demo site.
 1. Select PC configuration as it is by default  with 2 GB memory;
 2. Add it to cart;
 3. Change a little PC's - i.e. with different memory (1 GB);
 4. Add to cart again.
 In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
 In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
 Please apply fix for the next Ofbiz version.



FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
 


 

Original code: 

 @Override 

 public boolean equals(Object o) { 

 if (this == o) return true; 

 if (o == null || getClass() != o.getClass()) return false; 

 ConfigItem that = (ConfigItem) o; 

 return Objects.equals(getConfigItem(), that.getConfigItem()) && 

 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) && 

 Objects.equals(getOptions(), that.getOptions()); 

 } 

  

-
 

Changed code: 

 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) { 

 List mineOptions = getOptions(); 

 for (int i = 0; i < mineOptions.size(); i ++) { 

 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) &&  

   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) { 

 return false; 

 } 

  

 } 

 return true; 

 } 

  

 @Override 

 public boolean equals(Object o) { 

 if (this == o) return true; 

 if (o == null || getClass() != o.getClass()) return false; 

 ConfigItem that = (ConfigItem) o; 

 return Objects.equals(getConfigItem(), that.getConfigItem()) && 

 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) && 

 // Objects.equals(getOptions(), that.getOptions() 

 isConfigOptionsSelectionEqual(that.getOptions()); 

 } 

 

  was:
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
This is very easy to reproduce in Ofbiz demo site.
1. Select PC configuration as it is by default  with 2 GB memory;
2. Add it to cart;
3. Change a little PC's - i.e. with different memory (1 GB);
4. Add to cart again.
In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
Please apply fix for the next Ofbiz version.

{{ FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

 Original code:
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 Objects.equals(getOptions(), that.getOptions());
 }
 
 
-
 Changed code:
 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
 List mineOptions = getOptions();
 for (int i = 0; i < mineOptions.size(); i ++) {
 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
 return false;
 }
 
 }
 return true;
 }
 
 @Override
 public boolean equals(Object o) {
    

[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-08-12 Thread Alexander Tzvetanov (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Tzvetanov updated OFBIZ-12303:

Description: 
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
This is very easy to reproduce in Ofbiz demo site.
1. Select PC configuration as it is by default  with 2 GB memory;
2. Add it to cart;
3. Change a little PC's - i.e. with different memory (1 GB);
4. Add to cart again.
In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
Please apply fix for the next Ofbiz version.

{{ FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

 Original code:
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 Objects.equals(getOptions(), that.getOptions());
 }
 
 
-
 Changed code:
 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
 List mineOptions = getOptions();
 for (int i = 0; i < mineOptions.size(); i ++) {
 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
 return false;
 }
 
 }
 return true;
 }
 
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 // Objects.equals(getOptions(), that.getOptions()
 isConfigOptionsSelectionEqual(that.getOptions());
 } 
}}

  was:
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
This is very easy to reproduce in Ofbiz demo site.
1. Select PC configuration as it is by default  with 2 GB memory;
2. Add it to cart;
3. Change a little PC's - i.e. with different memory (1 GB);
4. Add to cart again.
In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
Please apply fix for the next Ofbiz version.

 FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

 Original code:
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 Objects.equals(getOptions(), that.getOptions());
 }
 
 
-
 Changed code:
 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
 List mineOptions = getOptions();
 for (int i = 0; i < mineOptions.size(); i ++) {
 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
 return false;
 }
 
 }
 return true;
 }
 
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != 

[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-08-12 Thread Alexander Tzvetanov (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Tzvetanov updated OFBIZ-12303:

Description: 
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
This is very easy to reproduce in Ofbiz demo site.
1. Select PC configuration as it is by default  with 2 GB memory;
2. Add it to cart;
3. Change a little PC's - i.e. with different memory (1 GB);
4. Add to cart again.
In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
Please apply fix for the next Ofbiz version.

 FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

 Original code:
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 Objects.equals(getOptions(), that.getOptions());
 }
 
 
-
 Changed code:
 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
 List mineOptions = getOptions();
 for (int i = 0; i < mineOptions.size(); i ++) {
 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
 return false;
 }
 
 }
 return true;
 }
 
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 // Objects.equals(getOptions(), that.getOptions()
 isConfigOptionsSelectionEqual(that.getOptions());
 } 

 

  was:
By adding two equal products with different configurations in eCommerce cart it 
results in qty aggregation instead of adding 2 separate cart lines.
This is very easy to reproduce in Ofbiz demo site.
1. Select PC configuration as it is by default  with 2 GB memory;
2. Add it to cart;
3. Change a little PC's - i.e. with different memory (1 GB);
4. Add to cart again.
In result of that in the cart appears the first config with 2 GB twice. The 
correct behavior is to add 2 different cart lines with 2 different prices.

I found that the issue is in the class ConfigItem - equals method.
In my site I've done a quick fix. I am attaching my code to this bug only for 
demonstration of the problem.
Please apply fix for the next Ofbiz version.

 FIle: 
pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java

 Original code:
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != o.getClass()) return false;
 ConfigItem that = (ConfigItem) o;
 return Objects.equals(getConfigItem(), that.getConfigItem()) &&
 Objects.equals(getConfigItemAssoc(), 
that.getConfigItemAssoc()) &&
 Objects.equals(getOptions(), that.getOptions());
 }
 
 
-
 Changed code:
 private boolean isConfigOptionsSelectionEqual( List 
otherOptions) {
 List mineOptions = getOptions();
 for (int i = 0; i < mineOptions.size(); i ++) {
 if 
(!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
   
mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
 return false;
 }
 
 }
 return true;
 }
 
 @Override
 public boolean equals(Object o) {
 if (this == o) return true;
 if (o == null || getClass() != 

[jira] [Updated] (OFBIZ-12303) ShoppingCart object does not recognize two products with different configurations

2021-08-12 Thread Alexander Tzvetanov (Jira)


 [ 
https://issues.apache.org/jira/browse/OFBIZ-12303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Tzvetanov updated OFBIZ-12303:

Summary: ShoppingCart object does not recognize two products with different 
configurations  (was: ChoppingCart object does not recognize two products with 
different configurations)

> ShoppingCart object does not recognize two products with different 
> configurations
> -
>
> Key: OFBIZ-12303
> URL: https://issues.apache.org/jira/browse/OFBIZ-12303
> Project: OFBiz
>  Issue Type: Bug
>  Components: ecommerce
>Affects Versions: 17.12.04
> Environment: Centos Linux 8;
> openjdk version "11.0.9" 2020-10-20 LTS;
> PostgreSQL 12.1
>Reporter: Alexander Tzvetanov
>Priority: Critical
>  Labels: easyfix
>
> By adding two equal products with different configurations in eCommerce cart 
> it results in qty aggregation instead of adding 2 separate cart lines.
> This is very easy to reproduce in Ofbiz demo site.
> 1. Select PC configuration as it is by default  with 2 GB memory;
> 2. Add it to cart;
> 3. Change a little PC's - i.e. with different memory (1 GB);
> 4. Add to cart again.
> In result of that in the cart appears the first config with 2 GB twice. The 
> correct behavior is to add 2 different cart lines with 2 different prices.
> I found that the issue is in the class ConfigItem - equals method.
> In my site I've done a quick fix. I am attaching my code to this bug only for 
> demonstration of the problem.
> Please apply fix for the next Ofbiz version.
>  FIle: 
> pplications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigWrapper.java
> 
>  Original code:
>  @Override
>  public boolean equals(Object o) {
>  if (this == o) return true;
>  if (o == null || getClass() != o.getClass()) return false;
>  ConfigItem that = (ConfigItem) o;
>  return Objects.equals(getConfigItem(), that.getConfigItem()) &&
>  Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
>  Objects.equals(getOptions(), that.getOptions());
>  }
>  
>  
> -
>  Changed code:
>  private boolean isConfigOptionsSelectionEqual( List 
> otherOptions) {
>  List mineOptions = getOptions();
>  for (int i = 0; i < mineOptions.size(); i ++) {
>  if 
> (!(mineOptions.get(i).getId().equals(otherOptions.get(i).getId()) && 
>    
> mineOptions.get(i).isSelected()==otherOptions.get(i).isSelected())) {
>  return false;
>  }
>  
>  }
>  return true;
>  }
>  
>  @Override
>  public boolean equals(Object o) {
>  if (this == o) return true;
>  if (o == null || getClass() != o.getClass()) return false;
>  ConfigItem that = (ConfigItem) o;
>  return Objects.equals(getConfigItem(), that.getConfigItem()) &&
>  Objects.equals(getConfigItemAssoc(), 
> that.getConfigItemAssoc()) &&
>  // Objects.equals(getOptions(), that.getOptions()
>  isConfigOptionsSelectionEqual(that.getOptions());
>  } 
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)