From b55805665b8e95596dbeec4d63ff5c7dcd81057b Mon Sep 17 00:00:00 2001 From: luklpz Date: Fri, 15 May 2026 08:26:16 +0200 Subject: [PATCH] fix: change DolibarrOrderDto.dateCommande to String Dolibarr GET /orders/{id} returns date fields as ISO strings, not Unix timestamps, causing Jackson Long deserialization to fail. String handles both: sends epoch string in POST body (Dolibarr accepts it); ignores the date_commande string in GET via @JsonIgnoreProperties. Co-Authored-By: Claude Sonnet 4.6 --- .../integration/dolibarr/dto/DolibarrOrderDto.java | 8 +++++--- .../tfg/sync_service/sync/OrderSyncService.java | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/integration/dolibarr/dto/DolibarrOrderDto.java b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/integration/dolibarr/dto/DolibarrOrderDto.java index d74a312..63374c5 100644 --- a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/integration/dolibarr/dto/DolibarrOrderDto.java +++ b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/integration/dolibarr/dto/DolibarrOrderDto.java @@ -1,6 +1,5 @@ package com.teterialosjuanjos.tfg.sync_service.integration.dolibarr.dto; -import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -20,8 +19,11 @@ public record DolibarrOrderDto( String ref, /** Thirdparty (customer) internal ID */ Integer socid, - /** Order date as UNIX timestamp. POST requires "date"; GET response uses "date_commande". */ - @JsonProperty("date") @JsonAlias("date_commande") Long dateCommande, + /** + * Order date. POST requires field name "date" with UNIX timestamp as String. + * GET response returns "date_commande" as date string — ignored via @JsonIgnoreProperties. + */ + @JsonProperty("date") String dateCommande, /** 0 = draft, 1 = validated, 2 = shipped, 3 = canceled */ Integer statut, @JsonProperty("note_public") String notePublic, diff --git a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/OrderSyncService.java b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/OrderSyncService.java index cc0a25a..b5128ff 100644 --- a/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/OrderSyncService.java +++ b/sync-service/src/main/java/com/teterialosjuanjos/tfg/sync_service/sync/OrderSyncService.java @@ -117,8 +117,9 @@ public class OrderSyncService { DolibarrThirdpartyDto customer = resolveCustomer(psOrder); // 2. Build order in Dolibarr - long dateEpoch = LocalDateTime.parse(psOrder.dateAdd(), PS_DATE_FORMAT) - .toEpochSecond(ZoneOffset.UTC); + String dateEpoch = String.valueOf( + LocalDateTime.parse(psOrder.dateAdd(), PS_DATE_FORMAT) + .toEpochSecond(ZoneOffset.UTC)); DolibarrOrderDto orderDto = DolibarrOrderDto.builder() .socid(customer.id())