Skip to content

Commit 18a87c1

Browse files
committed
transform ean 8 to ean 13 when adding to cart
1 parent 7c402a1 commit 18a87c1

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

core/src/main/java/io/snabble/sdk/ProductApi.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
import com.google.gson.Gson;
77
import com.google.gson.GsonBuilder;
88
import com.google.gson.JsonParseException;
9-
import com.google.gson.annotations.SerializedName;
109

1110
import org.apache.commons.io.IOUtils;
11+
import org.apache.commons.lang3.StringUtils;
1212

1313
import java.io.IOException;
1414
import java.io.InputStream;
1515
import java.nio.charset.Charset;
16-
import java.util.Map;
1716
import java.util.concurrent.CountDownLatch;
1817

1918
import io.snabble.sdk.utils.Logger;
@@ -104,7 +103,7 @@ public void findBySku(String sku, final OnProductAvailableListener productAvaila
104103
get(url, productAvailableListener);
105104
}
106105

107-
public void findByCode(String code, final OnProductAvailableListener productAvailableListener) {
106+
public void findByCode(final String code, final OnProductAvailableListener productAvailableListener) {
108107
if (productAvailableListener == null) {
109108
return;
110109
}
@@ -123,7 +122,28 @@ public void findByCode(String code, final OnProductAvailableListener productAvai
123122

124123
url = url.replace("{code}", code);
125124

126-
get(url, productAvailableListener);
125+
// TODO remove when backend has implemented ean8->ean13 lookups
126+
get(url, new OnProductAvailableListener() {
127+
@Override
128+
public void onProductAvailable(Product product, boolean wasOnlineProduct) {
129+
success(productAvailableListener, product);
130+
}
131+
132+
@Override
133+
public void onProductNotFound() {
134+
if (code.length() >= 8 && code.length() < 13) {
135+
String newCode = StringUtils.repeat('0', 13 - code.length()) + code;
136+
findByCode(newCode, productAvailableListener);
137+
} else {
138+
notFound(productAvailableListener);
139+
}
140+
}
141+
142+
@Override
143+
public void onError() {
144+
error(productAvailableListener);
145+
}
146+
});
127147
}
128148

129149
public void findByWeighItemId(String weighItemId, final OnProductAvailableListener productAvailableListener) {

core/src/main/java/io/snabble/sdk/ShoppingCart.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import android.os.Looper;
55
import android.os.SystemClock;
66

7+
import org.apache.commons.lang3.StringUtils;
8+
79
import java.util.ArrayList;
810
import java.util.Collections;
911
import java.util.List;
@@ -361,6 +363,9 @@ private String findCodeByScannedCode(Product product, ScannableCode scannableCod
361363
if (scannedCode.length() > 0 && scannedCode.startsWith("0")) {
362364
scannedCode = scannedCode.substring(1, scannedCode.length());
363365
return findCodeByScannedCode(product, ScannableCode.parse(project, scannedCode));
366+
} else if (scannedCode.length() >= 8 && scannedCode.length() < 13) {
367+
scannedCode = StringUtils.repeat('0', 13 - scannedCode.length()) + scannedCode;
368+
return findCodeByScannedCode(product, ScannableCode.parse(project, scannedCode));
364369
}
365370

366371
return scannedCode;

0 commit comments

Comments
 (0)