diff --git a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/ProductSyncService.java b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/ProductSyncService.java index 2fbcd8f..d927078 100644 --- a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/ProductSyncService.java +++ b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/ProductSyncService.java @@ -86,16 +86,25 @@ public class ProductSyncService { if (!dolibarrSkus.contains(mapping.getSku()) && mapping.getPrestashopId() != null) { try { prestashopClient.deleteProduct(mapping.getPrestashopId()); - productMappingRepository.delete(mapping); - processed++; - log.info("ProductSync: deleted PS product SKU={} psId={} (no longer in Dolibarr)", - mapping.getSku(), mapping.getPrestashopId()); - } catch (PrestashopApiException | RestClientException | HttpMessageConversionException e) { + } catch (PrestashopApiException e) { + if (e.getStatusCode() != null && e.getStatusCode().value() == 404) { + log.debug("ProductSync: PS product already gone SKU={} psId={}", mapping.getSku(), mapping.getPrestashopId()); + } else { + failed++; + errors.add("Delete SKU %s: %s".formatted(mapping.getSku(), e.getMessage())); + log.warn("ProductSync delete failed SKU={}: {}", mapping.getSku(), e.getMessage()); + continue; + } + } catch (RestClientException | HttpMessageConversionException e) { failed++; - String msg = "Delete SKU %s: %s".formatted(mapping.getSku(), e.getMessage()); - errors.add(msg); - log.warn("ProductSync delete failed: {}", msg); + errors.add("Delete SKU %s: %s".formatted(mapping.getSku(), e.getMessage())); + log.warn("ProductSync delete failed SKU={}: {}", mapping.getSku(), e.getMessage()); + continue; } + productMappingRepository.delete(mapping); + processed++; + log.info("ProductSync: deleted PS product SKU={} psId={} (no longer in Dolibarr)", + mapping.getSku(), mapping.getPrestashopId()); } } } catch (RuntimeException e) {