Compare commits

...

243 Commits

Author SHA1 Message Date
7bf0d63d71 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!276
2026-04-28 08:20:10 +00:00
7942a0dfc0 Release 1.2.60+4 2026-04-28 10:17:47 +02:00
16a6ad77c1 Merge branch 'release-1.2-SCPN1-10682' into 'release/1.2'
release-1.2-SCPN1-10682

See merge request r-d-technique/tiers/reflex-wms-connector!275
2026-04-28 08:12:57 +00:00
8d87e02969 SCPN1-10682
(cherry picked from commit 51fdb6d38250095825f9d31d1cfc9d52e3e4bb1a)
2026-04-28 09:53:57 +02:00
1aea681783 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!272
2026-04-24 09:14:05 +00:00
959a0d02a8 Release 1.2.60+3 2026-04-24 11:12:50 +02:00
ed1d989b2d Merge branch 'Release-1.2-SCPN1-10159' into 'release/1.2'
Release-1.2-SCPN1-10159 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!271
2026-04-24 09:05:06 +00:00
f490cce345 Merge branch 'develop-1.2' into Release-1.2-SCPN1-10159 2026-04-24 09:58:40 +02:00
2a70e2ca76 back SCPN1 10519
(cherry picked from commit 2b25c4853d)
2026-04-24 09:43:40 +02:00
a25e4046a3 back SCPN1-10519 2026-04-24 09:31:22 +02:00
f8b0538588 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!269
2026-04-23 07:12:27 +00:00
012c4007c7 Release 1.2.60+2 2026-04-23 09:11:07 +02:00
f131a91b36 Merge branch 'release1.2-SCPN1-10621' into 'release/1.2'
SCPN1-10586

See merge request r-d-technique/tiers/reflex-wms-connector!268
2026-04-23 07:07:11 +00:00
b7d97fbd63 SCPN1-10586 2026-04-22 17:59:40 +02:00
b594dc3f7e Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 into main 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!266
2026-04-22 07:43:18 +00:00
86b209e56e Release 1.2.60+1 2026-04-22 09:41:41 +02:00
33e1abe3e1 Merge branch 'release1.2-SCPN1-10621' into 'release/1.2'
SCPN1-10621 into "Release1.2 "

See merge request r-d-technique/tiers/reflex-wms-connector!264
2026-04-22 07:21:10 +00:00
498fd030a6 SCPN1-10586 2026-04-21 08:35:05 +02:00
fc78dbdb66 SCPN1-10586 2026-04-20 16:40:44 +02:00
8721201385 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!262
2026-04-20 12:24:33 +00:00
f2ef0553b7 SCPN1-10586 2026-04-20 13:48:04 +02:00
05a944250c Release 1.2.59+1 2026-04-20 13:44:28 +02:00
2ef220f2ca Merge branch 'release-1.2-v13' into 'release/1.2'
release-1.2-v13 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!260
2026-04-20 09:44:06 +00:00
f4cb551271 Merge branch 'develop-1.2' into release-1.2-v13
# Conflicts:
#	RFXtoRP_HsaItm_ItemCreated.ftl
#	RFXtoRP_HsrCarrierApt_AppointmentCarrierInformationUpdatedToConfigure.ftl
#	RFXtoRP_HsrCarrierApt_AppointmentCustomFieldsUpdated.ftl
#	RFXtoRP_HsrCarrierApt_BookingWMSUpdateAppointment.ftl
#	RFXtoRP_HsrCarrierApt_SiteCancelAppointment.ftl
#	RFXtoRP_HsrCarrierApt_UpdateAppointment.ftl
#	RFXtoRP_PlatformLogCreate.ftl
#	RPtoRFX_AppointmentEvent.ftl
#	RPtoRFX_CarrierAppointmentCreated.ftl
#	RPtoRFX_CarrierAppointmentReasonUpdatedByNumber.ftl
#	RPtoRFX_CarrierAppointmentReasonUpdatedByRef.ftl
#	RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByNumber.ftl
#	RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByRef.ftl
#	RPtoRFX_CarrierAppointmentSlotUpdatedByNumber.ftl
2026-04-20 11:17:43 +02:00
6353ffa18f SCPN1-10586 2026-04-17 17:17:45 +02:00
2b443f56a5 SCPN1-10586 2026-04-17 14:17:20 +02:00
4d70e05947 Merge branch 'develop-1.2' of https://gitlab.hardis-group.com/r-d-technique/tiers/reflex-wms-connector into develop-1.2 2026-04-17 10:59:55 +02:00
6eebe5c805 SCPN1-10586 2026-04-17 10:59:47 +02:00
9a9e6922da SCPN1-10586
(cherry picked from commit 2bfb866dcc)
2026-04-16 17:36:06 +02:00
af5775375e SCPN1-10586
(cherry picked from commit 13fe55ae1a)
2026-04-16 17:17:55 +02:00
f29f1b6dc4 SCPN1-10579 2026-04-14 15:18:20 +02:00
6fac2a7a2c SCPN1-10579 2026-04-14 14:35:04 +02:00
7f6fb9b63a SCPN1-10560
(cherry picked from commit 8e1d0e3a17)
2026-04-13 15:11:23 +02:00
a570da2699 espace 2026-04-03 16:17:36 +02:00
0795d36caa SCPN1-10402
(cherry picked from commit 4e3162556c)
2026-04-03 14:31:15 +02:00
f30e7b94d3 SCPN1-10402 2026-03-31 17:54:52 +02:00
45904e8b6f SCPN1-10402 2026-03-31 09:46:33 +02:00
71e4b030f7 Merge branch 'develop' into develop-1.2
# Conflicts:
#	README.md
#	RFXtoRP_HfDtlStockLs.ftl
#	RFXtoRP_HfDtlStockLs_StockSnapshotted_SegmentationKeys.ftl
#	RFXtoRP_HliPrepaL.ftl
#	RFXtoRP_HliReceiptLr.ftl
#	RFXtoRP_HliReceiptLr_ExecutionflowLinesAdded.ftl
#	RFXtoRP_HlrProL.ftl
#	RFXtoRP_HlrProL_ExecutionflowLinesAdded.ftl
#	RFXtoRP_HsaCarrier.ftl
#	RFXtoRP_HsaCarrier_ActorCreated.ftl
#	RFXtoRP_HsaCons.ftl
#	RFXtoRP_HsaCons_ActorCreated.ftl
#	RFXtoRP_HsaDesPatch.ftl
#	RFXtoRP_HsaDespNt.ftl
#	RFXtoRP_HsaDispute.ftl
#	RFXtoRP_HsaDispute_Created.ftl
#	RFXtoRP_HsaIpgMove_GoodsReceived.ftl
#	RFXtoRP_HsaIpgMove_StockMoved_SegmentationKeys.ftl
#	RFXtoRP_HsaLstCarSta.ftl
#	RFXtoRP_HsaLstCarSta_LoadingCompleted.ftl
#	RFXtoRP_HsaProStatus.ftl
#	RFXtoRP_HsaProStatus_ExecutionflowCancelled.ftl
#	RFXtoRP_HsaProStatus_PreparationCompleted.ftl
#	RFXtoRP_HsaProStatus_PreparationExpected.ftl
#	RFXtoRP_HsaProStatus_PreparationStarted.ftl
#	RFXtoRP_HsaProStatus_TransportStarted.ftl
#	RFXtoRP_HsaSup_ActorCreated.ftl
#	RFXtoRP_HsrCarrierApt.ftl
#	RFXtoRP_HsrCarrierApt_AppointmentCarrierInformationUpdatedToConfigure.ftl
#	RFXtoRP_HsrCarrierApt_AppointmentCustomFieldsUpdated.ftl
#	RFXtoRP_HsrCarrierApt_AppointmentMetadataUpdatedToConfigure.ftl
#	RFXtoRP_HsrCarrierApt_BookingForceBookAppointment.ftl
#	RFXtoRP_HsrCarrierApt_BookingWMSUpdateAppointment.ftl
#	RFXtoRP_HsrCarrierApt_CarrierDeparted.ftl
#	RFXtoRP_HsrCarrierApt_LoadingCompleted.ftl
#	RFXtoRP_HsrCarrierApt_UnloadingCompleted.ftl
#	RFXtoRP_HsrCarrierApt_UnloadingStarted.ftl
#	RFXtoRP_HsrDepot_ActorCreated.ftl
#	RFXtoRP_HsrLoadInfo.ftl
#	RFXtoRP_HsrPrepa.ftl
#	RFXtoRP_HsrPrepa_CarrierUpdated.ftl
#	RFXtoRP_HsrPrepa_ExecutionflowMetadataUpdated.ftl
#	RFXtoRP_HsrPrepa_HandlingUnitDispatched.ftl
#	RFXtoRP_HsrPrepa_HandlingunitGoodsPrepared.ftl
#	RFXtoRP_HsrPrepa_OrderCarrierUpdated.ftl
#	RFXtoRP_HsrPro.ftl
#	RFXtoRP_HsrPro_ExecutionflowDetected.ftl
#	RFXtoRP_HsrPro_ExecutionflowDetected_HeaderMetadata.ftl
#	RFXtoRP_HsrReceiptList.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowCancelled.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowDetected.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowDetected_HeaderMetadata.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowDetected_SegmentationKeys.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowReceiptCompleted.ftl
#	RFXtoRP_HsrReceiptList_ReceiptExpected.ftl
#	RFXtoRP_RestResponse.ftl
#	RPtoRFX_AppointmentEvent.ftl
#	RPtoRFX_CarrierAppointmentCreated.ftl
#	RPtoRFX_CarrierAppointmentPhysicalReceiptAssociationByNumber.ftl
#	RPtoRFX_CarrierAppointmentPhysicalReceiptAssociationByRef.ftl
#	RPtoRFX_CarrierAppointmentPhysicalReceiptDissociationByNumber.ftl
#	RPtoRFX_CarrierAppointmentPhysicalReceiptDissociationByRef.ftl
#	RPtoRFX_CarrierAppointmentReasonUpdatedByNumber.ftl
#	RPtoRFX_CarrierAppointmentReasonUpdatedByRef.ftl
#	RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByNumber.ftl
#	RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByRef.ftl
#	RPtoRFX_ExecutionflowEvent.ftl
#	RPtoRFX_PrepOrder_HeaderMetadata.ftl
#	RPtoRFX_PrepOrder_LineMetadata.ftl
#	RPtoRFX_Receipt.ftl
#	RPtoRFX_Receipt_HeaderMetadata.ftl
#	RPtoRFX_Receipt_LineMetadata.ftl
#	RPtoRFX_Receipt_OptionalAttributes.ftl
#	ReflexUtils.ftl
2026-03-31 09:32:40 +02:00
13b23c5819 SCPN1-9218 2026-03-24 17:17:52 +01:00
1be32968f2 SCPN1-10443 2026-03-20 13:28:08 +01:00
e269d41ccd SCPN1-10443 2026-03-19 14:30:08 +01:00
f48dc006d3 SCPN1-10459 2026-03-19 11:51:22 +01:00
fba2b820ac SCPN1-10443 2026-03-19 10:35:48 +01:00
3c6dd780de SCPN1-10443 2026-03-19 10:24:10 +01:00
326390e93d SCPN1-10443 2026-03-19 10:14:55 +01:00
06bcfecad6 SCPN1-10443 2026-03-19 10:08:13 +01:00
76d3db411f SCPN1-10443 2026-03-19 09:54:55 +01:00
c04e562c46 SCPN1-10408 2026-03-10 10:43:35 +01:00
21f622dfa2 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!255
2026-03-04 14:00:41 +00:00
35550c4e34 Release 1.2.58+3 2026-03-04 14:59:22 +01:00
39d0354d3f Merge branch 'SCPN1-10253-1.2' into 'release/1.2'
SCPN1-10253-1.2 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!254
2026-03-04 13:55:00 +00:00
d9dd53966a SCPN1-10253 2026-03-03 11:33:37 +01:00
68a39fab3d SCPN1-10253
(cherry picked from commit eea2a41313)
2026-03-02 16:19:36 +01:00
c472b1f7f5 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!250
2026-03-02 14:19:33 +00:00
f321bdd645 Release 1.2.58+2 2026-03-02 15:17:46 +01:00
b6f0c14942 Merge branch 'SCPN1-10253-1.2' into 'release/1.2'
SCPN1-10253-1.2 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!249
2026-03-02 13:54:41 +00:00
0f63aade04 SCPN1-10294 2026-03-02 14:48:40 +01:00
a1c5485beb SCPN1-10253 2026-03-02 12:09:35 +01:00
ce046a5684 SCPN1-10253
(cherry picked from commit 8d806117fa)
2026-03-02 12:07:40 +01:00
31526f0553 SCPN1-10253 2026-03-02 11:55:24 +01:00
bb2174a8bd SCPN1-10253 2026-02-27 16:27:33 +01:00
29522ebda7 SCPN1-10253 2026-02-27 11:10:59 +01:00
9dd1998c98 SCPN1-10253 2026-02-27 10:22:13 +01:00
4136118604 SCPN1-10253 2026-02-27 10:08:04 +01:00
3c4bb89516 SCPN1-10253 2026-02-27 09:49:31 +01:00
44c9ee7c0c SCPN1-10253 2026-02-27 09:36:46 +01:00
490355cab3 SCPN1-10253 2026-02-27 09:35:08 +01:00
5eb415bfd3 SCPN1-10253SCPN1-8260SCPN1-10253 2026-02-27 09:32:30 +01:00
b61d45d1aa SCPN1-10294 2026-02-25 11:05:10 +01:00
b4314fb6b1 SCPN1-10294 2026-02-24 15:04:19 +01:00
d5f48359b0 Merge branch 'develop-1.2' of https://gitlab.hardis-group.com/r-d-technique/tiers/reflex-wms-connector into develop-1.2 2026-02-24 11:37:17 +01:00
c0d58766d2 SCPN1-10294 2026-02-24 11:37:11 +01:00
f1dc82cdf0 SCPN1-10276 2026-02-23 13:35:49 +01:00
df8f126c13 SCPN1-10244 2026-02-16 17:12:02 +01:00
2c9d3109b7 SCPN1-9965
(cherry picked from commit e24e537650)
2026-02-16 11:49:20 +01:00
7c4c7ea395 SCPN1-9965 2026-02-13 10:58:13 +01:00
c9cba04714 Merge branch 'SCPN1-9965-tiny-url-appointment' into 'develop'
SCPN1-9965

Closes SCPN1-9965

See merge request r-d-technique/tiers/reflex-wms-connector!242

(cherry picked from commit 8974632c22)
2026-02-13 10:50:16 +01:00
c91019ce8c Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!240
2026-02-05 16:18:14 +00:00
c542805488 Release 1.2.58+1 2026-02-05 17:13:36 +01:00
e0e2cf1c7a Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!237
2026-02-05 09:19:16 +00:00
29713e51d4 Release 1.2.57+1 2026-02-05 10:17:24 +01:00
5fcc1a071d Merge branch 'release-1.2-SCPN1-10100' into 'release/1.2'
release-1.2-SCPN1-10100 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!238
2026-02-05 08:31:43 +00:00
c694bd1b63 SCPN1-10100
(cherry picked from commit d507003c2b)
2026-02-05 08:55:09 +01:00
d507003c2b SCPN1-10100 2026-02-04 08:58:03 +01:00
8dc7e1895f SCPN1-10100 2026-02-02 11:59:14 +01:00
dc28a7be8a SCPN1-10100 2026-02-02 11:25:53 +01:00
99357483f9 SCPN1-10100 2026-01-30 16:14:40 +01:00
31345b7911 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!233
2026-01-27 07:56:40 +00:00
74522e1b11 Release 1.2.56+2 2026-01-27 08:55:35 +01:00
71a7001af1 Merge branch 'release1.2-SCPN1-10095' into 'release/1.2'
release1.2-SCPN1-10095 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!231
2026-01-27 07:53:04 +00:00
f8e00cf7ba SCPN1-10095
(cherry picked from commit 3b36b44aea)
2026-01-27 08:36:29 +01:00
3b36b44aea SCPN1-10095 2026-01-26 16:56:28 +01:00
cf964959af SCPN1-10095
(cherry picked from commit fcad79967e)
2026-01-26 16:01:29 +01:00
fcad79967e SCPN1-10095 2026-01-26 15:42:18 +01:00
12c27f5a66 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!229
2026-01-22 14:40:48 +00:00
7d55f08194 Release 1.2.56+1 2026-01-22 15:34:14 +01:00
f96d8b9f09 Release 1.2.55+1 2026-01-22 15:32:21 +01:00
642ce4e4e2 Merge branch 'release1.2-fixv12' into 'release/1.2'
release1.2-fixv12 into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!228
2026-01-22 13:20:11 +00:00
50dca97d7a Merge branch 'develop-1.2' into release1.2-fixv12 2026-01-21 17:19:37 +01:00
ff5d6bc4d3 SCPN1-10068 2026-01-21 14:48:58 +01:00
f49eb55d6a Merge branch 'develop-1.2' of https://gitlab.hardis-group.com/r-d-technique/tiers/reflex-wms-connector into develop-1.2 2026-01-21 10:56:20 +01:00
2ed20478c4 SCPN1-10068 2026-01-21 10:56:14 +01:00
d3cb8ecc15 rollback 2026-01-20 15:09:51 +01:00
e53d81e534 fix error syntax 2026-01-16 16:55:43 +01:00
2ece576560 SCPN1-10040 2026-01-15 17:21:47 +01:00
629d465343 SCPN1-10040 2026-01-15 15:37:58 +01:00
0a34359e12 rollback 2026-01-15 09:31:58 +01:00
d908f7db77 SCPN1-9991 2026-01-14 11:03:00 +01:00
dc52629304 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!225
2026-01-14 08:27:42 +00:00
7329a2aa1c Release 1.2.54+3 2026-01-14 09:26:14 +01:00
e83b921cf3 Merge branch 'SCPN1-9990' into 'release/1.2'
SCPN1-9682

See merge request r-d-technique/tiers/reflex-wms-connector!224
2026-01-14 08:19:10 +00:00
f496ad60bd SCPN1-9682
(cherry picked from commit ca9706e5aa)
2026-01-14 09:16:08 +01:00
ca9706e5aa SCPN1-9682 2026-01-14 09:05:37 +01:00
5977dc3af0 hsrAntRec
(cherry picked from commit efddfdc821)
2026-01-13 18:09:24 +01:00
4496a4a2ce hsrAntRec 2026-01-13 18:01:25 +01:00
7e57d91cb6 The loading and unloading appointment is not yet managed. 2026-01-09 15:37:25 +01:00
7ed6f794a6 Merge branch 'release/1.2' into 'main-1.2'
release/1.2 into main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!222
2026-01-08 17:01:00 +00:00
c89575e040 Release 1.2.54+2 2026-01-08 17:52:51 +01:00
6657cec64c Merge branch 'release-1.2-fix-1.12-FTL' into 'release/1.2'
release-1.2-fix-1.12-FTL into release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!220
2026-01-08 16:45:55 +00:00
c0f25565a0 SCPN1-9943
(cherry picked from commit a6fec0c333)
(cherry picked from commit 6e89261c27)
2026-01-08 15:38:46 +01:00
6e89261c27 SCPN1-9943
(cherry picked from commit a6fec0c333)
2026-01-08 15:29:55 +01:00
d544571d1d Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!218
2026-01-08 09:29:58 +00:00
466e852f24 Release 1.2.54+1 2026-01-08 10:28:20 +01:00
eaa14b614a Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!217
2026-01-08 07:55:40 +00:00
8d5dafdeb5 Release 1.2.53+1 2026-01-08 08:52:16 +01:00
bbfe3aa53a Merge branch 'release-1.2-fix-1.12-FTL' into 'release/1.2'
release-1.2-fix-1.12-FTL

See merge request r-d-technique/tiers/reflex-wms-connector!214
2026-01-07 16:55:36 +00:00
9ef729bba9 Merge branch 'develop-1.2' into release-1.2-fix-1.12-FTL 2026-01-07 16:26:10 +01:00
d486819b60 rdz 2026-01-07 15:59:35 +01:00
d552dced98 RDV 2026-01-07 14:48:39 +01:00
ad8aae90fd RDV 2026-01-07 14:08:00 +01:00
ecc40ff1f5 RDV 2026-01-07 12:00:14 +01:00
7c04741bc6 RDV 2026-01-07 11:50:16 +01:00
3541a6cf8d RDV 2026-01-07 11:38:30 +01:00
0274bd65da RDV 2026-01-07 11:35:25 +01:00
6f73a656ed RDV 2026-01-07 11:16:57 +01:00
df7e596a93 RDV 2026-01-07 09:08:23 +01:00
5abbd7b0a2 RDV 2026-01-05 17:39:23 +01:00
a2d3922fb3 RDV 2026-01-05 16:06:09 +01:00
50366dab9e RDV 2026-01-02 09:30:57 +01:00
8205905ddd Merge branch 'release/1.2' into 'main-1.2'
Release/1.2

See merge request r-d-technique/tiers/reflex-wms-connector!212
2025-12-23 14:39:42 +00:00
d03dfcf6f4 Release 1.2.52+2 2025-12-23 15:37:19 +01:00
daf6b99496 Merge branch 'develop-1.2' into 'release/1.2'
Develop 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!210
2025-12-23 14:35:41 +00:00
ef2ae50b62 RDV 2025-12-23 15:23:35 +01:00
a314097423 RDV 2025-12-23 15:17:33 +01:00
6853819d49 RDV 2025-12-23 14:54:14 +01:00
7579ff4e68 RDV 2025-12-23 14:05:16 +01:00
5dd35ca77e RDV 2025-12-23 09:33:19 +01:00
2c5df0ae88 RDV 2025-12-23 08:42:42 +01:00
9bf87976ea RDV 2025-12-22 16:03:14 +01:00
e1c65e7efc RDV 2025-12-22 10:27:57 +01:00
055ff16537 RDV 2025-12-22 10:23:17 +01:00
fed3cf4311 RDV 2025-12-22 10:22:53 +01:00
915fae567d Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!209
2025-12-19 12:56:18 +00:00
8645b5de3d Release 1.2.52+1 2025-12-19 13:54:13 +01:00
028d845e87 Merge branch 'ftl-1.2-for-release1.12.1' into 'release/1.2'
ftl-1.2-for-release1.12.1

See merge request r-d-technique/tiers/reflex-wms-connector!206
2025-12-19 12:44:38 +00:00
d573b10846 RDV 2025-12-19 11:22:06 +01:00
9b9dc2cf97 Merge branch 'develop-1.2' into ftl-1.2-for-release1.12.1 2025-12-19 11:20:23 +01:00
f7de24d247 RDV 2025-12-19 11:17:48 +01:00
bfb1be01e9 Merge branch 'develop-1.2' into ftl-1.2-for-release1.12.1 2025-12-19 11:13:43 +01:00
9a252d63c7 RDV 2025-12-19 10:23:00 +01:00
94af964830 RDV 2025-12-19 09:44:27 +01:00
57c5ed1c9b RDV 2025-12-18 10:26:13 +01:00
677abd1d2d Merge branch 'release/1.2' into 'main-1.2'
SCPN1-9254

See merge request r-d-technique/tiers/reflex-wms-connector!204
2025-12-18 08:07:46 +00:00
665fabd498 Release 1.2.51+1 2025-12-18 09:04:24 +01:00
0028dd0742 Merge branch 'ftl-1.2-for-release1.12' into 'release/1.2'
Ftl 1.2 for release1.12

See merge request r-d-technique/tiers/reflex-wms-connector!203
2025-12-18 07:50:37 +00:00
468f63b334 Merge branch 'develop-1.2' into ftl-1.2-for-release1.12
# Conflicts:
#	README.md
#	RFXtoRP_HliPrepaL.ftl
#	RFXtoRP_HsaCons.ftl
#	RFXtoRP_HsaDispute.ftl
#	RFXtoRP_HsaItmLv.ftl
#	RFXtoRP_HsaLstCarSta.ftl
#	RFXtoRP_HsrCarrierApt.ftl
#	RFXtoRP_HsrPrepa_GoodsPrepared_HandlingUnitMetadata.ftl
#	RFXtoRP_HsrPro_ExecutionflowDetected_HeaderMetadata.ftl
#	RFXtoRP_HsrReceiptList_ExecutionflowDetected_HeaderMetadata.ftl
2025-12-18 08:15:17 +01:00
7e0cc94404 RDV 1.2 2025-12-17 21:53:17 +01:00
ae07548499 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!191
2025-12-03 09:20:38 +00:00
0ee0108a9d Release 1.2.50+1 2025-12-03 10:17:01 +01:00
42fbefc365 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!185
2025-11-26 08:43:12 +00:00
4fe7471545 Release 1.2.49+1 2025-11-26 09:37:05 +01:00
59034eeeef SCPN1-9640 2025-11-10 15:59:08 +01:00
dfdf51657b Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main1.2

See merge request r-d-technique/tiers/reflex-wms-connector!160
2025-11-06 10:10:42 +00:00
3d4c41b6d3 Release 1.2.48+1 2025-11-06 11:09:50 +01:00
2b779cf8aa Merge branch 'release1.2-SCPN1-9615' into 'release/1.2'
SCPN1-9615

See merge request r-d-technique/tiers/reflex-wms-connector!158
2025-11-06 09:41:23 +00:00
b812177bf5 SCPN1-9615
(cherry picked from commit d0e4342b34)
2025-11-05 15:54:44 +01:00
d0e4342b34 SCPN1-9615 2025-11-05 15:52:39 +01:00
88f619d5ee SCPN1-9577 2025-10-30 14:52:38 +01:00
3ec2f8f9bf Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!154
2025-10-29 09:50:21 +00:00
175f0169ea Release 1.2.47+1 2025-10-29 10:48:59 +01:00
639bbdbff5 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!153
2025-10-24 08:42:10 +00:00
22d9f48b09 Release 1.2.46+1 2025-10-24 10:39:14 +02:00
f0933a5c6a Merge branch 'release1.2-SCPN1-9399' into 'release/1.2'
SCPN1-9399 to release1.2

See merge request r-d-technique/tiers/reflex-wms-connector!146
2025-10-24 08:35:12 +00:00
4b090088db SCPN1-9399
(cherry picked from commit 160d1ca3bd)
2025-10-22 17:18:39 +02:00
160d1ca3bd SCPN1-9399 2025-10-22 17:18:18 +02:00
d3fa6876e7 json_string order
(cherry picked from commit 39b1359e8d)
2025-10-22 17:02:34 +02:00
39b1359e8d json_string order 2025-10-22 14:28:22 +02:00
31a257e529 SCPN1-9399 2025-10-22 08:52:33 +02:00
49bd1a7b71 brand 2025-10-22 08:52:13 +02:00
05c3d17a03 Merge branch 'release/1.2' into release1.2-SCPN1-9399 2025-10-21 18:17:32 +02:00
6530f7b0db brand 2025-10-21 18:08:20 +02:00
bdd17502d7 brand 2025-10-21 17:03:35 +02:00
1ed84f6c19 brand 2025-10-21 16:41:13 +02:00
5bc723540c SCPN1-9399 2025-10-21 16:38:03 +02:00
374aef32fd changement marque
(cherry picked from commit af60541221)
2025-10-21 16:21:01 +02:00
ca04c4cf37 SCPN1-9399 2025-10-21 11:35:43 +02:00
73f1b6ecc4 Brand 2025-10-21 10:31:00 +02:00
d734243979 comma hliprepaL 2025-10-20 15:40:00 +02:00
8a48556407 goods prepared hliprepa 2025-10-20 14:57:43 +02:00
be0bc9308c Erreur inclusion 2025-10-20 11:23:13 +02:00
3304d944e5 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!150
2025-10-16 13:49:13 +00:00
f23a11933d Release 1.2.45+4 2025-10-16 15:47:44 +02:00
d77f51fa52 Merge branch 'release-1.2-SCPN1-9437' into 'release/1.2'
SCPN1-9437 to release1.2

See merge request r-d-technique/tiers/reflex-wms-connector!149
2025-10-16 13:39:18 +00:00
c8806baf5c SCPN1-9437
(cherry picked from commit 374ab54994)
2025-10-16 15:10:27 +02:00
8ca2f62591 SCPN1-9437
(cherry picked from commit 8cafa21aa7)
2025-10-16 15:10:20 +02:00
97dbd248f8 SCPN1-9437
(cherry picked from commit d787148aae)
2025-10-16 15:10:12 +02:00
6bf2ea2329 SCPN1-9437
(cherry picked from commit 7786a93b25)
2025-10-16 15:10:01 +02:00
6bb1d45783 SCPN1-9437
(cherry picked from commit f05096636e)
2025-10-16 15:09:41 +02:00
374ab54994 SCPN1-9437 2025-10-16 11:09:22 +02:00
8cafa21aa7 SCPN1-9437 2025-10-16 11:00:26 +02:00
d787148aae SCPN1-9437 2025-10-16 10:50:49 +02:00
7786a93b25 SCPN1-9437 2025-10-16 10:27:57 +02:00
f05096636e SCPN1-9437 2025-10-16 10:23:56 +02:00
4f433f0da8 SCPN1-9400 2025-10-14 11:16:40 +02:00
f1d4ed44ff SCPN1-9400
(cherry picked from commit a262140b4b)
2025-10-14 10:47:41 +02:00
af60541221 changement marque 2025-10-09 15:12:34 +02:00
a880fff33b SCPN1-9094
(cherry picked from commit b8c463ffc1)
2025-10-08 09:30:56 +02:00
f2acf036b2 Merge branch 'develop-1.2' of https://gitlab.hardis-group.com/r-d-technique/tiers/reflex-wms-connector into develop-1.2 2025-10-01 10:16:56 +02:00
4f8b24b78c comment 2025-10-01 10:15:39 +02:00
9b09a076ad Merge branch 'develop-1.2-SCPN1-9094' into 'develop-1.2'
SCPN1-9094 to develop-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!145
2025-10-01 07:54:41 +00:00
b8c463ffc1 SCPN1-9094 2025-09-29 17:39:47 +02:00
d63a3d7a50 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 to main 1.2

See merge request r-d-technique/tiers/reflex-wms-connector!143
2025-09-26 07:23:49 +00:00
f373cbe734 Release 1.2.45+3 2025-09-26 09:22:26 +02:00
1256e3d68c Merge branch 'SCPN1-9348-1.2' into 'release/1.2'
SCPN1-9348-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!140
2025-09-26 07:12:32 +00:00
983a59b592 SCPN1-9348
(cherry picked from commit cb2f8fe59e)
2025-09-25 16:31:53 +02:00
cb2f8fe59e SCPN1-9348 2025-09-25 16:29:55 +02:00
c779d5305c Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!137
2025-09-09 13:54:26 +00:00
eb6fc3f4a3 Release 1.2.45+2 2025-09-09 15:48:03 +02:00
8cf596e251 Merge branch 'SCPN1-9296-1.2-2' into 'release/1.2'
SCPN1-9296

See merge request r-d-technique/tiers/reflex-wms-connector!136
2025-09-09 13:46:36 +00:00
55070c8ce3 SCPN1-9296 2025-09-09 15:44:56 +02:00
0f7990b20e Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!134
2025-09-09 07:30:44 +00:00
7d874d7a68 Correction list 2025-09-09 08:13:16 +02:00
68668789b6 Renotified 2025-09-08 17:08:03 +02:00
1df16adb0a Merge branch 'release/1.2' into 'main-1.2'
Release/2.0 -> Main-2.0

See merge request r-d-technique/tiers/reflex-wms-connector!130
2025-09-08 08:55:21 +00:00
17830c1c6e Corrections 250908 2025-09-08 09:57:24 +02:00
0ad605af1d Correction 080925 2025-09-08 09:45:36 +02:00
af712829f2 SCPN1-9254
(cherry picked from commit 7c15a16e57)
2025-08-29 11:48:34 +02:00
a939e6067e Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!126
2025-08-26 14:42:01 +00:00
b66ec8c589 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!122
2025-07-10 09:35:24 +00:00
42c5b2943d Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!114
2025-06-20 15:58:53 +00:00
ac5f5d1b88 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!112
2025-05-27 07:59:40 +00:00
cd1cc00f78 Merge branch 'release/1.2' into 'main-1.2'
Release/1.2 -> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!108
2025-05-13 12:53:12 +00:00
703ad28c19 Merge branch 'release/1.2' into 'main-1.2'
MR-> Main-1.2

See merge request r-d-technique/tiers/reflex-wms-connector!105
2025-04-24 15:03:22 +00:00
117 changed files with 3486 additions and 455 deletions

View File

@@ -1,8 +1,8 @@
# Reflex Platform Core FTLs
# HARDIS SC NETWORK Core FTLs
## Overview
The **Reflex WMS Connector** is a set of **FreeMarker templates (FTL)** designed to transform **outgoing JSON flows from Reflex WMS** into **flows compatible with Reflex Platform**.
The **HARDIS WMS Connector** is a set of **FreeMarker templates (FTL)** designed to transform **outgoing JSON flows from HARDIS WMS** into **flows compatible with HARDIS SC NETWORK**.
This connector does not contain any standalone executable code: it is intended to be used by **Reflex integration engines** or **data exchange pipelines**, where it applies the mapping rules defined in the `.ftl` files.
@@ -12,9 +12,9 @@ This connector does not contain any standalone executable code: it is intended t
- These templates use the **FreeMarker** syntax to:
- Extract the required fields from the WMS source flow.
- Apply transformation rules (mapping, conversions, enrichments).
- Generate a **final structured JSON** for Reflex Platform.
- Generate a **final structured JSON** for HARDIS SC NETWORK.
## Useful Resources
- [FreeMarker Documentation](https://freemarker.apache.org/docs/index.html)
- [Reflex Platform](https://auth.reflex-platform.com/)
- [HARDIS SC NETWORK](https://auth.reflex-platform.com/)

View File

@@ -1 +1,2 @@
<#-- To configure the tracking setting carrier -->
<#assign trackingNumberSource = 3>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#-- sum_elt : nb element in snapshot (optional parameter) -->
<#include "HfRpConfig.ftl">

View File

@@ -1,6 +1,12 @@
<#-- use protobuf of class HfDtlStockLs to find Reflex WMS fields names -->
<#-- use protobuf of class HfDtlStockLs to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{

View File

@@ -1,5 +1,5 @@
<#-- ****
Reflex WMS provides some of their environment parameters through the class HfRpConfig
HARDIS WMS provides some of their environment parameters through the class HfRpConfig
those parameters are stored in FTL file HfRpConfig.ftl for later use in some of the data ftl files
*** -->

View File

@@ -1,8 +1,9 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#include "ReflexUtils.ftl">
<#include "HfRpConfig.ftl">
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
@@ -15,15 +16,83 @@
<#--<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign preparationOrderLines = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for preparationOrderLines">
<#assign preparationOrder = JsonUtil.jsonToMap(dataRfx)>
<#if preparationOrder.total_lv_validated !=0>
<#if preparationOrder.preparation_line_lst??>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitGoodsPrepared>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_HandlingunitGoodsPrepared.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitDispatched>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_HandlingUnitDispatched.ftl">
}
<#assign refIDHmap ={}>
<#assign hd_numberHmap ={}>
<#assign hd_numberHmapHUadded ={}>
<#list preparationOrder.preparation_line_lst?filter(l ->l.despatched_ipg_list?? && l.preparation_order_originator_reference!="") as preparation_line>
<#list preparation_line.despatched_ipg_list as despatched_ipg>
<#assign HUadded_packing_datetime = RfxDateTimetoUTCWithTimezone(preparation_line.confirmation_datetime,time_zone_rfx) />
<#if (!hd_numberHmap[despatched_ipg.hd_number]?? || !hd_numberHmap[despatched_ipg.carton_number]??) && (trackingNumberSource==2 || trackingNumberSource==3 || (despatched_ipg.consignment_unit_id!="" && trackingNumberSource==1))>
,
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.TrackingHULabeled>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_TrackingHuLabelled.ftl">
}
</#if>
<#if despatched_ipg.carton_number != "000000000000000000" && despatched_ipg.carton_number!=despatched_ipg.hd_number >
,
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitHUsAdded>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_HandlingunitHUsAdded.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitDispatched>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_HUsAdded_HandlingUnitDispatched.ftl">
}
<#if !hd_numberHmapHUadded[despatched_ipg.hd_number]?? && (trackingNumberSource==2 || trackingNumberSource==3 )>
<#assign hd_numberHmapHUadded += {despatched_ipg.hd_number,despatched_ipg.hd_number}>
,
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.TrackingHULabeled>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_HUsAdded_TrackingHuLabelled.ftl">
}
</#if>
</#if>
</#list>
</#list>
<#assign refIDHmap ={}>
]
<#else>
<#-- No line-->
<#stop >
</#if>
<#else>
<#-- no confirmed quantity for the preparation - preparation closed-->
<#stop >
</#if>
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign preparationOrderLines = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for preparationOrderLines">
<#break>
<#stop>
<#break>
<#default>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -11,23 +11,114 @@
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
<#-- *********************************************** Action = CREATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receiptLines = JsonUtil.jsonToMap(dataRfx)>
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
<#if receipt.receipt_type == "030">
<#stop "ignored message because receipt type = transfert">
<#else>
<#if receipt.line_list ??>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowLinesAdded>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HliReceiptLr_ExecutionflowLinesAdded.ftl">
<#stop "no generic FTL file available yet for receiptLines">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowReceiptExpected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ReceiptExpected.ftl">
}
]
<#else>
<#-- No line-->
<#stop>
</#if>
</#if>
<#break>
<#case "U">
<#-- *********************************************** Action = UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
[
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
<#if receipt.receipt_confirmed == "true" && receipt.confirmation_total_level_1==0 && receipt.confirmation_total_level_2==0 && receipt.confirmation_total_level_3==0>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCancelled>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowCancelled.ftl">
}
<#else>
<#if receipt.receipt_confirmed == "true" >
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowReceiptCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowReceiptCompleted.ftl">
}
<#else>
<#if receipt.receipt_type == "030">
<#stop "ignored message because receipt type = transfert">
<#else>
<#if receipt.line_list ??>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowLinesAdded>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HliReceiptLr_ExecutionflowLinesAdded.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowReceiptExpected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ReceiptExpected.ftl">
}
<#else>
<#-- No line-->
<#stop>
</#if>
</#if>
</#if>
</#if>
<#else>
<#-- Receipt reference is empty-->
<#stop >
</#if>
]
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receiptLines = JsonUtil.jsonToMap(dataRfx)>
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
[
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
<#if receipt.line_list ??>
{
<#stop "no generic FTL file available yet for receiptLines">
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCancelled>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowCancelled.ftl">
}
<#else>
<#-- No line-->
<#stop>
</#if>
<#else>
<#-- Receipt reference is empty-->
<#stop >
</#if>
]
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -0,0 +1,64 @@
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
[
{
<#assign receipt_datetime = RfxDateTimetoUTCWithTimezone(receipt.receipt_datetime,time_zone_rfx) />
<#assign receipt_creation_datetime = RfxDateTimetoUTCWithTimezone(receipt.creation_datetime,time_zone_rfx) />
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
"RefDate": {
"DateTime": "${receipt_creation_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload": {
<#if receipt.line_list??>
"Lines" : [
<#list receipt.line_list as line>
{
"LineID": "${line.receipt_line_number}",
<#-- Line Metadata inclusion -->
<#include "RFXtoRP_HsrReceiptList_ExecutionflowDetected_LineMetadata.ftl">,
"RequestedContent":
{
"Goods":
{
"ItemID": "${line.item_code?trim?json_string!"0"}",
"LVBranchID": "${line.item_lv_code?json_string!"0"}",
<#if (line.line_without_detail?? && line.line_without_detail.priority_date?length != 0) && (line.line_without_detail.priority_date?starts_with("00") == false)>
<#assign line_without_detail_priority_date = line.line_without_detail.priority_date?datetime(rfx_date_format_default)?iso_utc />
"PriorityDate": "${line_without_detail_priority_date}",
<#else>
<#if (line.line_detail?? && line.line_detail?size == 1 && line.line_detail[0].priority_date?length != 0) && (line.line_detail[0].priority_date?starts_with("00") == false)>
<#assign line_detail_priority_date = line.line_detail[0].priority_date?datetime(rfx_date_format_default)?iso_utc />
"PriorityDate": "${line_detail_priority_date}",
<#else>
"PriorityDate": "1970-01-01T00:00:00Z",
</#if>
</#if>
<#-- Segmentation Keys inclusion -->
<#include "RFXtoRP_HsrReceiptList_ExecutionflowDetected_SegmentationKeys.ftl">
},
"Quantity" :
{
"LVID": "${quantity_in_base_lv_RP_Cst}",
"Value": "${line.order_quantity_in_lv!0}"
}
}
}
<#sep>,</#sep>
</#list>
]
</#if>
}
}
]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -14,18 +14,58 @@
<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign preparationOrderLines = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for preparationOrderLines">
<#assign preparation_order = JsonUtil.jsonToMap(dataRfx)>
[
<#if preparation_order.originator_reference?? && preparation_order.originator_reference!="">
<#-- check preparation type code (internal order and reservation are ignored) -->
<#if preparation_order.preparation_type_code?? && (preparation_order.preparation_type_code == "010" || preparation_order.preparation_type_code == "030")>
<#if preparation_order.line_list??>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowLinesAdded>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HlrProL_ExecutionflowLinesAdded.ftl">
}
<#else>
<#-- No line -->
<#stop>
</#if>
<#else>
<#-- preparation order type not supported -->
<#stop>
</#if>
<#else>
<#-- PRO reference is empty -->
<#stop>
</#if>
]
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign preparationOrderLines = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for preparationOrderLines">
<#assign preparation_order = JsonUtil.jsonToMap(dataRfx)>
[
<#if preparation_order.originator_reference?? && preparation_order.originator_reference!="">
<#if preparation_order.line_list??>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCancelled>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPro_ExecutionflowCancelled.ftl">
}
<#else>
<#-- No line -->
<#stop>
</#if>
<#else>
<#-- PRO reference is empty -->
<#stop>
</#if>
]
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -0,0 +1,55 @@
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
[
{
<#assign planned_final_delivery_start_datetime = RfxDateTimetoUTCWithTimezone(preparation_order.planned_final_delivery_start_datetime,time_zone_rfx) />
<#assign pro_creation_datetime = RfxDateTimetoUTCWithTimezone(preparation_order.creation_datetime,time_zone_rfx) />
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
"RefID": "${preparation_order.originator_reference?trim?json_string}",
"RefDate": {
"DateTime": "${pro_creation_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload": {
<#if preparation_order.line_list??>
"Lines" : [
<#list preparation_order.line_list as preparation_order_line >
{
<#if (preparation_order_line.originator_reference_line_number!0) != 0>
"LineID": "${preparation_order_line.originator_reference_line_number}",
<#else>
"LineID": "${preparation_order_line.preparation_order_line_number!0}",
</#if>
<#-- Line Metadata inclusion -->
<#include "RFXtoRP_HsrPro_ExecutionflowDetected_LineMetadata.ftl">,
"RequestedContent":
{
"Goods":
{
"ItemID": "${preparation_order_line.item_code?trim?json_string!"0"}",
"LVBranchID": "${preparation_order_line.item_lv_code?json_string!"0"}",
<#if (preparation_order_line.optional_attributes.forced_priority_date?length != 0) && (preparation_order_line.optional_attributes.forced_priority_date?starts_with("00") == false)>
<#assign forced_priority_date = preparation_order_line.optional_attributes.forced_priority_date?datetime(rfx_date_format_default)?iso_utc />
"PriorityDate": "${forced_priority_date}",
</#if>
<#-- Segmentation Keys inclusion -->
<#include "RFXtoRP_HsrPro_ExecutionflowDetected_SegmentationKeys.ftl">
},
"Quantity" :
{
"LVID": "${quantity_in_base_lv_RP_Cst}",
"Value": "${preparation_order_line.base_lv_quantity_to_prepare!0}"
}
}
}<#sep>,</#sep>
</#list>
]
</#if>
}
}
]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -21,7 +21,7 @@
"Address":
{
<#-- if Reflex WMS address is structured -->
<#-- if HARDIS WMS address is structured -->
<#if carrier.carrier_structured_address?? >
"Name": "${carrier.carrier_structured_address.name_or_company?json_string}",
@@ -38,7 +38,7 @@
"ProvinceCode": "${carrier.carrier_structured_address.territorial_div_code?json_string}",
"State": "${carrier.carrier_structured_address.country_designation?json_string}"
<#-- if Reflex WMS address is not structured -->
<#-- if HARDIS WMS address is not structured -->
<#else>
<#if carrier.address??>
"Name": "${carrier.address.company_name?json_string}",

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaCarrier to find Reflex WMS fields names -->
<#-- use protobuf of class HsaCarrier to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS- WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -23,7 +23,7 @@
"Address":
{
<#-- if Reflex WMS is structured -->
<#-- if HARDIS WMS is structured -->
<#if actor.consignee_structured_address??>
"Name": "${actor.consignee_structured_address.name_or_company?json_string}",
@@ -40,7 +40,7 @@
"ProvinceCode": "${actor.consignee_structured_address.territorial_div_code?json_string}",
"State": "${actor.consignee_structured_address.country_designation?json_string}"
<#-- if Reflex WMS is not structured -->
<#-- if HARDIS WMS is not structured -->
<#else>
<#if actor.address?? >

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaCons to find Reflex WMS fields names -->
<#-- use protobuf of class HsaCons to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

32
RFXtoRP_HsaDesPatch.ftl Normal file
View File

@@ -0,0 +1,32 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#assign aDateTime = .now>
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign desPatch = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for desPatch">
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign desPatch = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for desPatch">
<#break>
<#default>
<#stop >
</#switch>

32
RFXtoRP_HsaDespNt.ftl Normal file
View File

@@ -0,0 +1,32 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#assign aDateTime = .now>
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign despNt = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for despNt">
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign despNt = JsonUtil.jsonToMap(dataRfx)>
<#stop "no generic FTL file available yet for despNt">
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -1,14 +1,12 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#-- For dispute creation WMS to Platform -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#assign aDateTime = .now>
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
@@ -17,6 +15,7 @@
<#assign dispute = JsonUtil.jsonToMap(dataRfx)>
[
<#if dispute.dispute_closed == true >
<#-- Only for preparation and receipt disputes -->
<#if ((dispute.dispute_type_code=="030" || dispute.dispute_type_code=="070") && dispute.dispute_reception?? && dispute.dispute_reception.reception_reference!="") || (dispute.dispute_type_code=="050" && dispute.dispute_preparation.preparation_order_list?? && dispute.dispute_preparation.preparation_order_list[0].preparation_order_contractor_reference?trim?json_string!="")>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ClaimCreated>
@@ -24,9 +23,11 @@
"datas" :
<#include "RFXtoRP_HsaDispute_Created.ftl">
}
<#-- Create the table for reason code in RFXtoRP_HsaDispute_TableReasonCodeToClaimTypeID.ftl -->
<#if TableReasonCode[dispute.dispute_reason_code]??>
,
{
<#-- Add message in dispute tchat room -->
<#assign apiReflexPlatformID = ApiReflexPlatformID.ClaimMessageSent>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaDispute to find Reflex Wms fields names -->
<#-- use protobuf of class HsaDispute to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -2,6 +2,7 @@
<#include "ReflexUtils.ftl">
[
{
<#-- Add refer -->
"Header": {
"ProjectID": "${projectRP}"
},

View File

@@ -47,7 +47,6 @@
<#if (reflexMvtStockInterface.ipg_move_type == "100" ||
reflexMvtStockInterface.ipg_move_type == "110" ||
reflexMvtStockInterface.ipg_move_type == "120") >
<#if reflexMvtStockInterface.receipt_reference?? && reflexMvtStockInterface.receipt_reference!="">
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitGoodsReceived>
@@ -56,10 +55,6 @@
<#include "RFXtoRP_HsaIpgMove_GoodsReceived.ftl">
}
]
<#else>
<#-- Case of IPG move type volontarilly ignored, Reference receipt is empty-->
<#stop >
</#if>
<#else>
<#stop>
</#if>

View File

@@ -37,6 +37,9 @@
<#if reflexMvtStockInterface.receipt_reference?? && reflexMvtStockInterface.receipt_reference!="">
"ExecutionflowID": "${reflexMvtStockInterface.receipt_reference?trim?json_string}",
"OrderID": "${reflexMvtStockInterface.receipt_reference?trim?json_string}",
<#else>
"ExecutionflowID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.originator_code}${reflexMvtStockInterface.receipt_year_number}${reflexMvtStockInterface.receipt_number}",
"OrderID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.originator_code}${reflexMvtStockInterface.receipt_year_number}${reflexMvtStockInterface.receipt_number}",
</#if>
</#if>
<#else>
@@ -44,8 +47,8 @@
"ExecutionflowID": "${reflexMvtStockInterface.receipt_reference?trim?json_string}",
"OrderID": "${reflexMvtStockInterface.receipt_reference?trim?json_string}",
<#else>
"ExecutionflowID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.ipg_move_year_number}${reflexMvtStockInterface.extended_ipg_move_number}",
"OrderID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.ipg_move_year_number}${reflexMvtStockInterface.extended_ipg_move_number}",
"ExecutionflowID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.originator_code}${reflexMvtStockInterface.receipt_year_number}${reflexMvtStockInterface.receipt_number}",
"OrderID": "${reflexMvtStockInterface.physical_depot_code}${reflexMvtStockInterface.activity_code}${reflexMvtStockInterface.originator_code}${reflexMvtStockInterface.receipt_year_number}${reflexMvtStockInterface.receipt_number}",
</#if>
</#if>
<#if reflexMvtStockInterface.origin_order_line_number_reference?? && reflexMvtStockInterface.origin_order_line_number_reference!=0>

View File

@@ -1,7 +1,12 @@
<#-- use protobuf of class HsaIpgMove to find Reflex WMS fields names -->
<#-- use protobuf of class HsaIpgMove to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{

View File

@@ -1,5 +1,12 @@
<#-- use protobuf of class HsaIpgMove to find Reflex WMS fields names -->
<#-- use protobuf of class HsaIpgMove to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{
"Key": "Grade",

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -18,14 +18,10 @@
<#assign item = JsonUtil.jsonToMap(dataRfx)>
[
{
<#if item.logistical_variant_list?? && (item.logistical_variant_list?size == item.logistical_variant_list?filter(l ->l??)?size)>
<#assign apiReflexPlatformID = ApiReflexPlatformID.ItemCreated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaItm_ItemCreated.ftl">
<#else>
<#stop "no LV for the item">
</#if>
}
]
<#break>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaItmLv to find Reflex Wms fields names -->
<#-- use protobuf of class HsaItmLv to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -21,15 +21,22 @@
},
<#-- Item metadata inclusion -->
<#include "RFXtoRP_HsaItm_ItemCreated_ItemMetadata.ftl">,
<#include "RFXtoRP_HsaItm_ItemCreated_ItemMetadata.ftl">
<#-- Item Photo URI could be added here -->
<#if item.url?? && item.url!="">
"PhotoURI": "${item.url?json_string}",
<#if item.saved_picture_path?? && item.saved_picture_path!="" && item.saved_picture_path?starts_with("http") == true>
,
"PhotoURI": "${item.saved_picture_path?json_string}"
<#else>
<#if item.url?? && item.url!="" && item.url?starts_with("http") == true>
,
"PhotoURI": "${item.url?json_string}"
</#if>
</#if>
<#-- Loop for the Logistical Variants - LV -->
<#if item.logistical_variant_list??>
<#if item.logistical_variant_list?? && (item.logistical_variant_list?size == item.logistical_variant_list?filter(l ->l??)?size)>
,
"LogisticVariants": [
<#list item.logistical_variant_list as logistical_variant>

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaItm to find Reflex Wms fields names -->
<#-- use protobuf of class HsaItm to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaItm to find Reflex Wms fields names -->
<#-- use protobuf of class HsaItm to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,40 +1,89 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#include "ActorPrefix.ftl">
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#assign aDateTime = .now>
<#stop>
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#-- *********************************************** Action = Update ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign depot = JsonUtil.jsonToMap(dataRfx)>
<#assign carrier_apt_status = JsonUtil.jsonToMap(dataRfx)>
<#if !carrier_apt_status.status??>
<#stop 'the updated appointment Status not initialized'>
</#if>
[
{
<#switch carrier_apt_status.status.carrier_status_code>
<#case "010"> <#--Carrier Expected -->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierExpected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_CarrierExpected.ftl">
<#break>
<#case "020"> <#--Carrier Arrived-->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierArrived>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_CarrierArrived.ftl">
<#break>
<#case "040"> <#--Unloading Started -->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentUnloadingStarted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_UnloadingStarted.ftl">
<#break>
<#case "050"> <#--Unloading Completed-->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentUnloadingCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_UnloadingCompleted.ftl">
<#break>
<#case "060"> <#--Loading Started-->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentLoadingStarted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_LoadingStarted.ftl">
<#break>
<#case "070"> <#--Loading Completed-->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentLoadingCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_LoadingCompleted.ftl">
<#break>
<#case "090"> <#--Carrier Departed-->
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierDeparted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsaLstCarSta_CarrierDeparted.ftl">
<#break>
<#default>
<#stop 'this updated appointment Status not implemented'>
</#switch>
}
]
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE *************************** -->
<#-- *********************************************** Action = Delete ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign depot = JsonUtil.jsonToMap(dataRfx)>
[
{
}
]
<#assign carrier_apt_status = JsonUtil.jsonToMap(dataRfx)>
<#stop 'Delete Appointment Status not implemented' >
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt_status.status.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt_status.constant_appointment?? && carrier_apt_status.constant_appointment== "true">
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference!="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}-${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
<#else>
<#if carrier_apt_status.appointment_reference?? && carrier_apt_status.appointment_reference !="">
"RefID": "${carrier_apt_status.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt_status.appointment_year_number?json_string}-${carrier_apt_status.appointment_number?json_string}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt_status.physical_depot?json_string)}"
}
}
]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -16,6 +16,7 @@
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign preparationStatusInterface = JsonUtil.jsonToMap(dataRfx) />
[
<#if preparationStatusInterface.preparation_type_code=="010" || preparationStatusInterface.preparation_type_code=="030">
<#--**Pick batch runned (200) **-->
<#if preparationStatusInterface.preparation_order_originator_reference?? && preparationStatusInterface.preparation_order_originator_reference!="">
<#if preparationStatusInterface.preparation_status_type == "100" && preparationStatusInterface.preparation_status_code == "200" >
@@ -68,6 +69,9 @@
<#--PRO reference is empty-->
<#stop >
</#if>
<#else>
<#stop >
</#if>
]
<#break>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -20,7 +20,7 @@
"Address":
{
<#-- if Reflex WMS address is structured -->
<#-- if HARDIS WMS address is structured -->
<#if actor.supplier_structured_address?? >
"Name": "${actor.supplier_structured_address.name_or_company?json_string}",
@@ -37,7 +37,7 @@
"ProvinceCode": "${actor.supplier_structured_address.territorial_div_code?json_string}",
"State": "${actor.supplier_structured_address.country_designation?json_string}"
<#-- if Reflex WMS address is not structured -->
<#-- if HARDIS WMS address is not structured -->
<#else>
<#if actor.optional_attributes?? >
"Name": "${actor.optional_attributes.company_name?json_string}",

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsaSup to find Reflex WMS fields names -->
<#-- use protobuf of class HsaSup to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,40 +1,150 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- input : message HARDIS-WMS -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#include "ActorPrefix.ftl">
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#assign partnerApplicationRP = partnerApplication>
<#assign aDateTime = .now>
<#stop>
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign carrier_apt = JsonUtil.jsonToMap(dataRfx)>
<#switch cloudEventMsg.action>
<#case "C">
<#case "U">
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign depot = JsonUtil.jsonToMap(dataRfx)>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.BookingForceBookAppointment>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_BookingForceBookAppointment.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierExpected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_CarrierExpected.ftl">
}
]
<#break>
<#case "U">
<#-- *********************************************** Action = Update ********************-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCustomFieldsUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_AppointmentCustomFieldsUpdated.ftl">
},
<#include "RFXtoRP_HsrCarrierApt_AppointmentMetadataUpdated.ftl">
<#include "RFXtoRP_HsrCarrierApt_AppointmentCarrierInformationUpdated.ftl">
<#if carrier_apt.status?? && (carrier_apt.status.status_code=="999" || carrier_apt.status.status_code=="040" || carrier_apt.status.status_code=="030")>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.BookingForceCancelAppointment>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_BookingForceCancelAppointment.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="100"> <#--Carrier Arrived-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierArrived>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_CarrierArrived.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="210"> <#--Unloading Started -->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentUnloadingStarted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_UnloadingStarted.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="290"><#--Unloading Completed-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentUnloadingCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_UnloadingCompleted.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="310"><#--Loading Started-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentLoadingStarted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_LoadingStarted.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="390"><#--Loading Completed-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentLoadingCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_LoadingCompleted.ftl">
}
]
<#else>
<#if carrier_apt.status?? && carrier_apt.status.status_code=="500"><#--Carrier Departed-->
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierDeparted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_CarrierDeparted.ftl">
}
]
<#else>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.BookingWMSUpdateAppointment>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_BookingWMSUpdateAppointment.ftl">
}
]
</#if>
</#if>
</#if>
</#if>
</#if>
</#if>
</#if>
]
<#break>
<#case "D">
<#-- *********************************************** Action = DELETE *************************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign depot = JsonUtil.jsonToMap(dataRfx)>
<#-- *********************************************** Action = Delete ******************** -->
[
<#-- Ajout des lignes-->
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.BookingForceCancelAppointment>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_BookingForceCancelAppointment.ftl">
}
]
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -0,0 +1,9 @@
<#-- A décommenter si besoin de les utiliser-->
<#-- Uncomment if you need to use them-->
<#--{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentCarrierInformationUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_AppointmentCarrierInformationUpdatedToConfigure.ftl">
},
-->

View File

@@ -0,0 +1,42 @@
<#--
[
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}"
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}"
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}"
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}"
</#if>
</#if>
},
"Payload": {
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
<#--To configure-->
<#-- "CarrierInformation": [
{
"Key": "string",
"Value": {
"Bool": "true / false",
"Float": 3.1415,
"Int": 42,
"String": "Hello World !",
"Timestamp": {
"AuthorTimeZone": "Europe/Paris",
"DateTime": "2023-01-01T00:00:00Z"
}
}
]
}
}
]
-->

View File

@@ -0,0 +1,60 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.creation_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
},
"CustomFields": [
{
"Key": "depot",
"Value": "${carrier_apt.physical_depot?json_string}"
},
{
"Key": "year",
"Value": "${carrier_apt.year_number?json_string}"
},
{
"Key": "number",
"Value": "${carrier_apt.appointment_number?json_string}"
},
{
"Key": "reference",
"Value": "${carrier_apt.appointment_reference?json_string}"
},
{
"Key": "carrier",
"Value": "${carrier_apt.planned_carrier?json_string}"
},
{
"Key": "loading",
"Value": "${carrier_apt.load_appointment?json_string}"
},
{
"Key": "unloading",
"Value": "${carrier_apt.unloading_appointment?json_string}"
}
]
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,9 @@
<#-- A décommenter si besoin de les utiliser-->
<#-- Uncomment if you need to use them-->
<#--{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentMetaDataUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrCarrierApt_AppointmentMetadataUpdatedToConfigure.ftl">
},
-->

View File

@@ -0,0 +1,42 @@
<#--
[
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}"
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}"
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}"
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}"
</#if>
</#if>
},
"Payload": {
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
<#--To configure-->
<#-- "MetaData": [
{
"Key": "string",
"Value": {
"Bool": "true / false",
"Float": 3.1415,
"Int": 42,
"String": "Hello World !",
"Timestamp": {
"AuthorTimeZone": "Europe/Paris",
"DateTime": "2023-01-01T00:00:00Z"
}
}
]
}
}
]
-->

View File

@@ -0,0 +1,194 @@
[
<#assign creation_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.creation_datetime,time_zone_rfx) />
{
"Header":{
"ProjectID": "${projectRP}:${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
},
"ID":{
"RefDate": {
"DateTime": "${creation_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
},
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"CustomFields": [
{
"Key": "depot",
"Value": "${carrier_apt.physical_depot?json_string}"
},
{
"Key": "year",
"Value": "${carrier_apt.year_number?json_string}"
},
{
"Key": "number",
"Value": "${carrier_apt.appointment_number?json_string}"
},
{
"Key": "reference",
"Value": "${carrier_apt.appointment_reference?json_string}"
},
{
"Key": "carrier",
"Value": "${carrier_apt.planned_carrier?json_string}"
},
{
"Key": "loading",
"Value": "${carrier_apt.load_appointment?json_string}"
},
{
"Key": "unloading",
"Value": "${carrier_apt.unloading_appointment?json_string}"
}
]
},
"Payload": {
"TimeZone":"${time_zone_rfx}",
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") || carrier_apt.planned_unloading_end_datetime?starts_with("00") || carrier_apt.planned_unloading_end_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_unloading_end_datetime?datetime.iso) />
<#if (duration < 0)>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend are not valid" >
<#else>
<#if (duration == 0)>
<#assign duration = 1 />
</#if>
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true" >
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-") || carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-")>
<#stop "planned_load_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_LOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_load_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration < 0)>
<#stop "planned_load_start_datetime or planned_load_end_datetime field of appointmend are not valid" >
<#else>
<#if (duration == 0)>
<#assign duration = 1 />
</#if>
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-") || carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") >
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration < 0)>
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend are not valid" >
<#else>
<#if (duration == 0)>
<#assign duration = 1 />
</#if>
</#if>
<#else>
<#stop "Appointment type not supported" >
</#if>
</#if>
</#if>
"AppointmentType": "${appointmentType}",
"Emails": ["${carrier_apt.creation_user_email?json_string}"],
<#include "RFXtoRP_HsrCarrierApt_SegmentationSelections.ftl">,
<#include "RFXtoRP_HsrCarrierApt_CarrierInformation.ftl">,
<#include "RFXtoRP_HsrCarrierApt_MetadataAppointment.ftl">,
<#if carrier_apt.physical_receipt_list?? && (carrier_apt.physical_receipt_list?filter(l ->l??)?size != 0)>
"Unloading" :
{
"Projects" : [{
"Commissions": [
<#list carrier_apt.physical_receipt_list?filter(l ->l??) as physical_receipt>
{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
<#if physical_receipt.physical_receipt_reference?? && physical_receipt.physical_receipt_reference!="">
"OrderID": "${physical_receipt.physical_receipt_reference?json_string}",
"ExecutionflowID":"${physical_receipt.physical_receipt_reference?json_string}",
<#else>
"OrderID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year}${physical_receipt.receipt_number}",
"ExecutionflowID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year?json_string}${physical_receipt.receipt_number?json_string}",
</#if>
"ExecutionflowID": "R${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year?json_string}${physical_receipt.receipt_number?json_string}",
"ProjectID": "${projectRP}",
"PartnerAppID": "${partnerApplicationRP}",
"OrganisationID": "${organisationRP}"
}<#sep>,</#sep>
</#list>
],
"ProjectID" : "${projectRP}"
}]
},
<#else>
<#if appointmentType == AppointmentType.APPOINTMENT_TYPE_UNLOADING>
"Unloading" :
<#else>
"Loading" :
</#if>
{
"Projects" : [{
"Commissions": [{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
"ProjectID": "${projectRP}",
"PartnerAppID": "${partnerApplicationRP}",
"OrganisationID": "${organisationRP}"
}],
"ProjectID" : "${projectRP}"
}]
},
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
"Reason": "UNLOADING AND LOADING / ${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_designation?? && carrier_apt.appointment_designation!="">
"Reason": "${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"Reason": "${carrier_apt.appointment_reference?json_string}",
<#else>
"Reason": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
</#if>
</#if>
"Slot": {
<#-- calcul de de la durée en fonction des start et end time-->
"DurationInSeconds": "${duration}",
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false" >
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-")>
<#stop "planned_load_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_load_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#stop "Appointment type not supported" >
</#if>
</#if>
</#if>
}
}
}
]

View File

@@ -0,0 +1,58 @@
<#assign update_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
[
{
"ID":{
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${update_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
},
"CustomFields": [
{
"Key": "depot",
"Value": "${carrier_apt.physical_depot?json_string}"
},
{
"Key": "year",
"Value": "${carrier_apt.year_number?json_string}"
},
{
"Key": "number",
"Value": "${carrier_apt.appointment_number?json_string}"
},
{
"Key": "reference",
"Value": "${carrier_apt.appointment_reference?json_string}"
},
{
"Key": "carrier",
"Value": "${carrier_apt.planned_carrier?json_string}"
},
{
"Key": "loading",
"Value": "${carrier_apt.load_appointment?json_string}"
},
{
"Key": "unloading",
"Value": "${carrier_apt.unloading_appointment?json_string}"
}
]
},
"Header": {
"ProjectID": "${projectRP}:${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,197 @@
[
{
<#assign update_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
"Header":{
"ProjectID": "${projectRP}:${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
},
"ID":{
"RefDate": {
"DateTime": "${update_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
},
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"CustomFields": [
{
"Key": "depot",
"Value": "${carrier_apt.physical_depot?json_string}"
},
{
"Key": "year",
"Value": "${carrier_apt.year_number?json_string}"
},
{
"Key": "number",
"Value": "${carrier_apt.appointment_number?json_string}"
},
{
"Key": "reference",
"Value": "${carrier_apt.appointment_reference?json_string}"
},
{
"Key": "carrier",
"Value": "${carrier_apt.planned_carrier?json_string}"
},
{
"Key": "loading",
"Value": "${carrier_apt.load_appointment?json_string}"
},
{
"Key": "unloading",
"Value": "${carrier_apt.unloading_appointment?json_string}"
}
]
},
"Payload": {
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") || carrier_apt.planned_unloading_end_datetime?starts_with("00") || carrier_apt.planned_unloading_end_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_unloading_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true" >
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-") || carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-")>
<#stop "planned_load_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_LOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_load_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-") || carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") >
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#stop "Appointment type not supported" >
</#if>
</#if>
</#if>
"TimeZone":"${time_zone_rfx}",
<#if carrier_apt.physical_receipt_list?? && (carrier_apt.physical_receipt_list?filter(l ->l??)?size != 0) && ((carrier_apt.unloading_appointment =="true" && carrier_apt.load_appointment =="false") || (carrier_apt.unloading_appointment =="false" && carrier_apt.load_appointment =="true"))>
"Unloading" :
{
"Projects" : [
{
"Commissions": [
<#list carrier_apt.physical_receipt_list?filter(l ->l??) as physical_receipt>
{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
<#if physical_receipt.physical_receipt_reference?? && physical_receipt.physical_receipt_reference!="">
"OrderID": "${physical_receipt.physical_receipt_reference?json_string}",
"ExecutionflowID":"${physical_receipt.physical_receipt_reference?json_string}",
<#else>
"OrderID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year}${physical_receipt.receipt_number}",
"ExecutionflowID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year?json_string}${physical_receipt.receipt_number?json_string}",
</#if>
"ProjectID": "${projectRP}",
"PartnerAppID": "${partnerApplicationRP}",
"OrganisationID": "${organisationRP}"
}<#sep>,</#sep>
</#list>
],
"ProjectID" : "${projectRP}"
}]
},
"Reason": "",
<#else>
<#if appointmentType == AppointmentType.APPOINTMENT_TYPE_LOADING>
"Loading" :
{
"Projects" : [
{
"Commissions": [
{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
"ProjectID": "${projectRP}",
"PartnerAppID": "${partnerApplicationRP}",
"OrganisationID": "${organisationRP}"
}
],
"ProjectID" : "${projectRP}"
}]
},
<#else>
<#if appointmentType == AppointmentType.APPOINTMENT_TYPE_UNLOADING>
"Unloading" :
{
"Projects" : [
{
"Commissions": [
{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
"ProjectID": "${projectRP}",
"PartnerAppID": "${partnerApplicationRP}",
"OrganisationID": "${organisationRP}"
}
],
"ProjectID" : "${projectRP}"
}]
},
</#if>
</#if>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
"Reason": "UNLOADING AND LOADING / ${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_designation?? && carrier_apt.appointment_designation!="">
"Reason": "${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"Reason": "${carrier_apt.appointment_reference?json_string}",
<#else>
"Reason": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
</#if>
</#if>
"Slot": {
<#-- calcul de de la durée en fonction des start et end time-->
"DurationInSeconds": "${duration}",
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false" >
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-")>
<#stop "planned_load_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_load_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#stop "Appointment type not supported" >
</#if>
</#if>
</#if>
}
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,31 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
<#assign ref_datetime2 = AddSecondsToDatetime(ref_datetime?datetime.iso, 60)?iso_utc />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime2}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,3 @@
"CarrierInformation": [
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,5 @@
"MetaData": [
]

View File

@@ -0,0 +1,6 @@
"SegmentationSelections": [
]

View File

@@ -0,0 +1,22 @@
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
[
{
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"AppointmentID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"AppointmentID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"AppointmentID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"AppointmentID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"Header": {
"ProjectID": "${projectRP}"
},
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,30 @@
[
<#assign ref_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.last_update_datetime,time_zone_rfx) />
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"RefID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"RefID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
"RefDate": {
"DateTime": "${ref_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload":{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}"
}
}
]

View File

@@ -0,0 +1,150 @@
[
{
<#assign creation_datetime = RfxDateTimetoUTCWithTimezone(carrier_apt.metadata.creation_datetime,time_zone_rfx) />
"Header":{
"ProjectID": "${projectRP}"
},
<#if carrier_apt.constant_appointment?? && carrier_apt.constant_appointment== "true">
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"AppointmentID": "${carrier_apt.appointment_reference?json_string}-${carrier_apt.year_number}-${carrier_apt.appointment_number}",
<#else>
"AppointmentID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"AppointmentID": "${carrier_apt.appointment_reference?json_string}",
<#else>
"AppointmentID": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") || carrier_apt.planned_unloading_end_datetime?starts_with("00") || carrier_apt.planned_unloading_end_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_unloading_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true" >
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-") || carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-")>
<#stop "planned_load_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_LOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_load_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_unloading_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_end_datetime?starts_with("00") || carrier_apt.planned_load_end_datetime?contains("-00-") || carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-") >
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend is not initialized" >
</#if>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNLOADING>
<#assign duration = DurationBetweenTwoDatetimeInSeconds(carrier_apt.planned_unloading_start_datetime?datetime.iso,carrier_apt.planned_load_end_datetime?datetime.iso) />
<#if (duration <= 0)>
<#stop "planned_unloading_start_datetime or planned_load_end_datetime field of appointmend are not valid" >
</#if>
<#else>
<#assign appointmentType = AppointmentType.APPOINTMENT_TYPE_UNKNOWN>
<#assign duration = 0 /> <#-- à confirmer -->
</#if>
</#if>
</#if>
</#if>
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
"TimeZone":"${time_zone_rfx}",
"CustomFields": [
{
"Key": "depot",
"Value": "${carrier_apt.physical_depot?json_string}"
},
{
"Key": "year",
"Value": "${carrier_apt.year_number?json_string}"
},
{
"Key": "number",
"Value": "${carrier_apt.appointment_number?json_string}"
},
{
"Key": "reference",
"Value": "${carrier_apt.appointment_reference?json_string}"
},
{
"Key": "carrier",
"Value": "${carrier_apt.planned_carrier?json_string}"
},
{
"Key": "loading",
"Value": "${carrier_apt.load_appointment?json_string}"
},
{
"Key": "unloading",
"Value": "${carrier_apt.unloading_appointment?json_string}"
}
],
<#if carrier_apt.physical_receipt_list?? && (carrier_apt.physical_receipt_list?filter(l ->l??)?size != 0) && ((carrier_apt.unloading_appointment =="true" && carrier_apt.load_appointment =="false") || (carrier_apt.unloading_appointment =="false" && carrier_apt.load_appointment =="true"))>
"Commissions": [
<#list carrier_apt.physical_receipt_list?filter(l ->l??) as physical_receipt>
{
"ActorID": "${RFXtoRPprefixDepot(carrier_apt.physical_depot?json_string)}",
<#if physical_receipt.physical_receipt_reference?? && physical_receipt.physical_receipt_reference!="">
"OrderID": "${physical_receipt.physical_receipt_reference?json_string}",
"ExecutionflowID":"${physical_receipt.physical_receipt_reference?json_string}",
<#else>
"OrderID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year}${physical_receipt.receipt_number}",
"ExecutionflowID": "${carrier_apt.physical_depot?json_string}${physical_receipt.receipt_activity?json_string}${physical_receipt.originator_code?json_string}${physical_receipt.receipt_year?json_string}${physical_receipt.receipt_number?json_string}",
</#if>
"ProjectID": "${projectRP}"
}<#sep>,</#sep>
</#list>
],
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
"Reason": "UNLOADING AND LOADING / ${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_designation?? && carrier_apt.appointment_designation!="">
"Reason": "${carrier_apt.appointment_designation?json_string}",
<#else>
<#if carrier_apt.appointment_reference?? && carrier_apt.appointment_reference!="">
"Reason": "${carrier_apt.appointment_reference?json_string}",
<#else>
"Reason": "${carrier_apt.year_number}-${carrier_apt.appointment_number}",
</#if>
</#if>
</#if>
</#if>
"Slots": [{
<#-- calcul de de la durée en fonction des start et end time-->
"DurationInSeconds": "${duration}",
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "false" >
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "false" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_load_start_datetime?starts_with("00") || carrier_apt.planned_load_start_datetime?contains("-00-")>
<#stop "planned_load_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_load_start_datetime}"
<#else>
<#if carrier_apt.unloading_appointment == "true" && carrier_apt.load_appointment == "true">
<#if carrier_apt.planned_unloading_start_datetime?starts_with("00") || carrier_apt.planned_unloading_start_datetime?contains("-00-")>
<#stop "planned_unloading_start_datetime field of appointmend is not initialized" >
</#if>
"StartDateTime": "${carrier_apt.planned_unloading_start_datetime}"
<#else>
<#stop "Appointment type not supported" >
</#if>
</#if>
</#if>
}]
}
]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -22,7 +22,7 @@
"Address":
{
<#-- if Reflex WMS address is structured -->
<#-- if HARDIS WMS address is structured -->
<#if depot.physical_depot_structured_address?? >
"Name": "${depot.physical_depot_structured_address.name_or_company?json_string}",
@@ -39,7 +39,7 @@
"ProvinceCode": "${depot.physical_depot_structured_address.territorial_div_code?json_string}",
"State": "${depot.physical_depot_structured_address.country_designation?json_string}"
<#-- if Reflex WMS address is not structured -->
<#-- if HARDIS WMS address is not structured -->
<#else>
<#if depot.physical_depot_address??>
"Name": "${depot.physical_depot_address.company_name?json_string}",

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsrDepot to find Reflex WMS fields names -->
<#-- use protobuf of class HsrDepot to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#include "ReflexUtils.ftl">
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -26,6 +26,7 @@
"datas" :
<#include "RFXtoRP_HsrPrepa_HandlingunitGoodsPrepared.ftl">
},
<#include "RFXtoRP_HsrPrepa_ExecutionflowMetadataUpdated.ftl">
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.HandlingunitDispatched>
@@ -56,8 +57,7 @@
<#list preparationOrder.preparation_line_lst?filter(l ->l.despatched_ipg_list?? && l.preparation_order_originator_reference!="") as preparation_line>
<#list preparation_line.despatched_ipg_list as despatched_ipg>
<#assign HUadded_packing_datetime = RfxDateTimetoUTCWithTimezone(preparation_line.confirmation_datetime,time_zone_rfx) />
<#if !hd_numberHmap[despatched_ipg.hd_number]?? && (trackingNumberSource==2 || trackingNumberSource==3 || (despatched_ipg.consignment_unit_id!="" && trackingNumberSource==1))>
<#assign hd_numberHmap += {despatched_ipg.hd_number,despatched_ipg.hd_number}>
<#if (!hd_numberHmap[despatched_ipg.hd_number]?? || !hd_numberHmap[despatched_ipg.carton_number]??) && (trackingNumberSource==2 || trackingNumberSource==3 || (despatched_ipg.consignment_unit_id!="" && trackingNumberSource==1))>
,
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.TrackingHULabeled>

View File

@@ -0,0 +1,27 @@
<#--
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID":{
"RefID": "${Your_Object_ID}"
},
"Payload":{
"MetaData": [
{
"Key": "string",
"Value": {
"Bool": "true / false",
"Float": 3.1415,
"Int": 42,
"String": "Hello World !",
"Timestamp": {
"AuthorTimeZone": "Europe/Paris",
"DateTime": "2023-01-01T00:00:00Z"
}
}
}
]
}
}
-->

View File

@@ -0,0 +1,10 @@
<#-- A décommenter si besoin de les utiliser-->
<#-- Uncomment if you need to use them-->
<#--
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowMetaDataUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPrepa_ExecutionflowMetaDataUpdatedToConfigure.ftl">
},
-->

View File

@@ -1,7 +1,10 @@
<#-- use protobuf of class HsrPrepa to find Reflex WMS fields names -->
<#-- use protobuf of class HsrPrepa to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
<#--
"MetaData" :[
]
-->
"MetaData": [ ]

View File

@@ -1,5 +1,11 @@
<#-- use protobuf of class Hsrprepa to find Reflex WMS fields names -->
<#-- use protobuf of class Hsrprepa to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{
"Key": "Grade",

View File

@@ -1,9 +1,10 @@
<#-- use protobuf of class HsrPrepa to find Reflex WMS fields names -->
<#-- use protobuf of class HsrPrepa to find HARDIS WMS fields names -->
<#--
"MetaData" :[
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
]
-->
"MetaData": [ ]

View File

@@ -53,8 +53,10 @@
"Payload": {
<#if despatched_ipg.carton_number != "000000000000000000">
"HandlingunitID": "${despatched_ipg.carton_number}"
<#assign hd_numberHmap += {despatched_ipg.carton_number,despatched_ipg.carton_number}>
<#else>
"HandlingunitID": "${despatched_ipg.hd_number}"
<#assign hd_numberHmap += {despatched_ipg.hd_number,despatched_ipg.hd_number}>
</#if>
<#if preparationOrder.load_data?? && preparationOrder.load_data.carrier_code?? && preparationOrder.load_data.carrier_code!="" >
,

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -25,6 +25,12 @@
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPro_ExecutionflowDetected.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCustomFieldsUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrPro_ExecutionflowCustomFieldsUpdated.ftl">
}
<#else>
<#-- No line -->

View File

@@ -0,0 +1,40 @@
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
[
{
"Header": {
"ProjectID": "${projectRP}"
},
"Payload" :{},
"ID":{
"CustomFields": [
{
"Key": "depot_code",
"Value": "${preparation_order.physical_depot_code?trim?json_string}"
},
{
"Key": "activity_code",
"Value": "${preparation_order.activity_code?trim?json_string}"
},
{
"Key": "originator_code",
"Value": "${preparation_order.originator_code?trim?json_string}"
},
{
"Key": "reference",
"Value": "${preparation_order.originator_reference?trim?json_string}"
},
{
"Key": "order_year",
"Value": "${preparation_order.preparation_order_year}"
},
{
"Key": "order_number",
"Value": "${preparation_order.preparation_order_number}"
}
],
"RefID": "${preparation_order.originator_reference?trim?json_string}"
}
}
]

View File

@@ -9,6 +9,32 @@
"ProjectID": "${projectRP}"
},
"ID": {
"CustomFields": [
{
"Key": "depot_code",
"Value": "${preparation_order.physical_depot_code?trim?json_string}"
},
{
"Key": "activity_code",
"Value": "${preparation_order.activity_code?trim?json_string}"
},
{
"Key": "originator_code",
"Value": "${preparation_order.originator_code?trim?json_string}"
},
{
"Key": "reference",
"Value": "${preparation_order.originator_reference?trim?json_string}"
},
{
"Key": "order_year",
"Value": "${preparation_order.preparation_order_year}"
},
{
"Key": "order_number",
"Value": "${preparation_order.preparation_order_number}"
}
],
"RefID": "${preparation_order.originator_reference?trim?json_string}",
"RefDate": {
"DateTime": "${pro_creation_datetime}",
@@ -53,6 +79,7 @@
<#else>
"Actor":
{
<#include "RFXtoRP_HsrPro_ExecutionflowDetected_ShipToMetadata.ftl">,
"Name" : "${(preparation_order.address.name_or_company_name!"")?json_string}",
"Address" :
{

View File

@@ -1,6 +1,12 @@
<#-- use protobuf of class HsrPro to find Reflex Wms fields names -->
<#-- use protobuf of class HsrPro to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"MetaData": [
{

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsrPro to find Reflex Wms fields names -->
<#-- use protobuf of class HsrPro to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,5 +1,11 @@
<#-- use protobuf of class HsrPro to find Reflex WMS fields names -->
<#-- use protobuf of class HsrPro to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{

View File

@@ -0,0 +1,10 @@
<#-- use protobuf of class HsrPro to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : message RFX -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign cloudEventMsg = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
@@ -15,11 +15,10 @@
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
<#if receipt.receipt_reference ?? && receipt.receipt_reference!="">
<#if receipt.receipt_type == "030">
<#stop "ignored message because receipt type = transfert">
<#else>
<#if receipt.line_list ??>
<#if receipt.line_list ?? && receipt.line_list[0]??>
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowDetected>
@@ -33,7 +32,12 @@
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ReceiptExpected.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCustomFieldsUpdated>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_CustomFieldsUpdated.ftl">
}
]
<#else>
@@ -41,17 +45,12 @@
<#stop>
</#if>
</#if>
<#else>
<#-- "Receipt reference is empty"-->
<#stop>
</#if>
<#break>
<#case "U">
<#-- *********************************************** Action = UPDATE ******************** -->
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
[
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
<#if receipt.receipt_confirmed == "true" && receipt.confirmation_total_level_1==0 && receipt.confirmation_total_level_2==0 && receipt.confirmation_total_level_3==0>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowCancelled>
@@ -61,17 +60,41 @@
}
<#else>
<#if receipt.receipt_confirmed == "true" >
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
<#assign ID = "${receipt.receipt_reference?trim?json_string}"/>
<#else>
<#assign ID = "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}"/>
</#if>
<#assign payload = '{"Header": {"ProjectID": "${projectRP!""}"},"IDs": [{"RefID": "${ID}"}]}'/>
<#assign queryApiReflexPlatformID = QueryApiReflexPlatformID.OrderGetByIds>
<#assign response = QueryApiReflexPlatformCall.call(queryApiReflexPlatformID,payload) />
<#assign orderRP = JsonUtil.jsonToMap(response)>
<#if orderRP?? && orderRP.Objects?? && orderRP.Objects[0]?? && orderRP.Objects[0].ID.RefID?? >
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowReceiptCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowReceiptCompleted.ftl">
}
<#else>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowDetected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowDetected.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowReceiptCompleted>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_HsrReceiptList_ExecutionflowReceiptCompleted.ftl">
}
</#if>
<#else>
<#if receipt.receipt_type == "030">
<#stop "ignored message because receipt type = transfert">
<#else>
<#if receipt.line_list ??>
<#if receipt.line_list ?? && receipt.line_list[0]??>
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowDetected>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
@@ -91,10 +114,6 @@
</#if>
</#if>
</#if>
<#else>
<#-- Receipt reference is empty-->
<#stop >
</#if>
]
<#break>
@@ -103,7 +122,6 @@
<#assign dataRfx = JsonUtil.decodeBase64(cloudEventMsg.data) />
<#assign receipt = JsonUtil.jsonToMap(dataRfx)>
[
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
<#if receipt.line_list ??>
{
@@ -116,10 +134,6 @@
<#-- No line-->
<#stop>
</#if>
<#else>
<#-- Receipt reference is empty-->
<#stop >
</#if>
]
<#break>

View File

@@ -0,0 +1,44 @@
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
[
{
"Header": {
"ProjectID": "${projectRP}"
},
"Payload" :{},
"ID":{
"CustomFields": [
{
"Key": "depot_code",
"Value": "${receipt.physical_depot_code?trim?json_string}"
},
{
"Key": "activity_code",
"Value": "${receipt.activity_code?trim?json_string}"
},
{
"Key": "originator_code",
"Value": "${receipt.originator_code?trim?json_string}"
},
{
"Key": "reference",
"Value": "${receipt.receipt_reference?trim?json_string}"
},
{
"Key": "order_year",
"Value": "${receipt.receipt_year}"
},
{
"Key": "order_number",
"Value": "${receipt.receipt_number}"
}
],
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}"
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}"
</#if>
}
}
]

View File

@@ -14,7 +14,7 @@
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
"RefID": "${receipt_line.receipt_reference?trim?json_string}",
"RefID": "${receipt_line.origin_order_line_reference?trim?json_string}",
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -25,11 +25,14 @@
}
</#if>
<#else>
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -40,7 +43,6 @@
}
<#break>
</#if>
</#if>
</#list>
</#if>
]

View File

@@ -9,7 +9,37 @@
"ProjectID": "${projectRP}"
},
"ID": {
"CustomFields": [
{
"Key": "depot_code",
"Value": "${receipt.physical_depot_code?trim?json_string}"
},
{
"Key": "activity_code",
"Value": "${receipt.activity_code?trim?json_string}"
},
{
"Key": "originator_code",
"Value": "${receipt.originator_code?trim?json_string}"
},
{
"Key": "reference",
"Value": "${receipt.receipt_reference?trim?json_string}"
},
{
"Key": "order_year",
"Value": "${receipt.receipt_year}"
},
{
"Key": "order_number",
"Value": "${receipt.receipt_number}"
}
],
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
"RefDate": {
"DateTime": "${receipt_creation_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -44,7 +74,11 @@
"ActorID":"${RFXtoRPprefixCarrier(receipt.carrier_informations.carrier_code?trim?json_string)}"
},
</#if>
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"OrderID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"OrderID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
<#if receipt.line_list??>
"Lines" : [
<#list receipt.line_list as line>

View File

@@ -1,6 +1,12 @@
<#-- use protobuf of class HsrReceiptList to find Reflex Wms fields names -->
<#-- use protobuf of class HsrReceiptList to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"MetaData": [
{

View File

@@ -1,4 +1,10 @@
<#-- use protobuf of class HsrReceiptList to find Reflex Wms fields names -->
<#-- use protobuf of class HsrReceiptList to find HARDIS WMS fields names -->
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)-->
"MetaData": [ ]

View File

@@ -1,6 +1,13 @@
<#-- use protobuf of class HsrReceiptList to find Reflex WMS fields names -->
<#-- use protobuf of class HsrReceiptList to find HARDIS WMS fields names -->
<#--
<#-- Best practices:
If the SK is of type:
- string: add ?json_string (e.g. "${stock.batch_1?json_string}")
- boolean: possible values: true and false
- datetime: expected format: 2025-10-30T10:12:10.000Z
- decimal number: the separator is a point (e.g. 10.5)
"SegmentationKeys": [
{
"Key": "Grade",

View File

@@ -14,7 +14,7 @@
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
"RefID": "${receipt_line.receipt_reference?trim?json_string}",
"RefID": "${receipt_line.origin_order_line_reference?trim?json_string}",
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -25,11 +25,14 @@
}
</#if>
<#else>
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -40,7 +43,6 @@
}
<#break>
</#if>
</#if>
</#list>
</#if>
]

View File

@@ -14,7 +14,7 @@
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
"RefID": "${receipt_line.receipt_reference?trim?json_string}",
"RefID": "${receipt_line.origin_order_line_reference?trim?json_string}",
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -25,11 +25,14 @@
}
</#if>
<#else>
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
{
"Header": {"ProjectID": "${projectRP}"},
"ID": {
<#if receipt.receipt_reference?? && receipt.receipt_reference!="">
"RefID": "${receipt.receipt_reference?trim?json_string}",
<#else>
"RefID": "${receipt.physical_depot_code?trim?json_string}${receipt.activity_code?trim?json_string}${receipt.originator_code?trim?json_string}${receipt.receipt_year}${receipt.receipt_number}",
</#if>
"RefDate": {
"DateTime": "${receipt_status_datetime}",
"AuthorTimeZone": "${time_zone_rfx}"
@@ -40,7 +43,6 @@
}
<#break>
</#if>
</#if>
</#list>
</#if>
]

View File

@@ -33,7 +33,7 @@
"DetailElements": [],
"CorrelationID": "${id.correlationid!"no Correlationid"}",
"ContextPayload": ${strJsonBody},
"Type": "RP_EXECUTIONFLOW_EVENT",
"Type": "${event}",
"Task": "${id.apiRestReflexID!"no Task"}",
"OriginalID": "${id.refid!"no OriginalID"?trim?json_string}",
"StackTrace": ""

View File

@@ -1,7 +1,7 @@
<#-- **** input parameters ***** -->
<#-- input : Response message from Reflex -->
<#-- project : projectId in ReflexPlatform -->
<#-- organisation : organisationtId in ReflexPlatform -->
<#-- input : Response message from HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#assign restResponsetMsg = JsonUtil.jsonToMap(input)>
<#assign id = JsonUtil.jsonToMap(restResponsetMsg.id!"{}")>
@@ -12,7 +12,7 @@
<#assign aDateTime = .now>
<#assign no_apiRestReflexID = "no apiRestReflexID">
<#assign no_status = -99999>
<#assign event = "UNKNOW_EVENT" >
<#switch id.apiRestReflexID!no_apiRestReflexID>
<#case no_apiRestReflexID>
@@ -30,7 +30,7 @@
}
]
<#break>
<#-- *********************************************** ApiRestID = preparation_orders_post ******************** -->
<#case "preparation_orders_post">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
@@ -44,6 +44,7 @@
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -54,10 +55,8 @@
}
]
<#break>
<#case 200>
<#case 201>
<#-- *********************************************** ApiRestID = preparation_orders_post ******************** -->
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && preparationOrderPostResponse.status == "SUCCESS" >
@@ -86,6 +85,7 @@
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT">
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -104,11 +104,12 @@
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}}" />
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -120,7 +121,7 @@
]
</#switch>
<#break>
<#-- *********************************************** ApiRestID = receipts_post ******************** -->
<#case "receipts_post">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
@@ -134,6 +135,7 @@
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -144,13 +146,11 @@
}
]
<#break>
<#case 200>
<#case 201>
<#-- *********************************************** ApiRestID = receipts_post ******************** -->
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && preparationOrderPostResponse.status == "SUCCESS" >
<#if preparationOrderPostResponse.status?? && (preparationOrderPostResponse.status == "SUCCESS" || preparationOrderPostResponse.status == "WARN") >
[
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.ExecutionflowShipToAcked>
@@ -166,6 +166,7 @@
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -175,7 +176,6 @@
<#include "RFXtoRP_RestResponseAllocationError.ftl">
}
]
</#if>
<#break>
<#default>
@@ -189,6 +189,7 @@
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_EXECUTIONFLOW_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
@@ -200,6 +201,320 @@
]
</#switch>
<#break>
<#-- *********************************************** Appointment_post_create ******************** -->
<#case "appointment_post_create">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
<#break>
<#case 200>
<#case 201>
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && (preparationOrderPostResponse.status == "SUCCESS" || preparationOrderPostResponse.status == "WARN") >
[
{
<#stop >
}
]
<#else>
[
{
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#if>
<#break>
<#default>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#switch>
<#break>
<#-- *********************************************** ApiRestID = appointment_put_update_ref ******************** -->
<#case "appointment_put_update_by_ref">
<#case "appointment_put_update_by_number">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
<#break>
<#case 200>
<#case 201>
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && (preparationOrderPostResponse.status == "SUCCESS" || preparationOrderPostResponse.status == "WARN") >
[
{
<#stop >
}
]
<#else>
[
{
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#if>
<#break>
<#default>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#switch>
<#break>
<#-- *********************************************** ApiRestID = canceled ******************** -->
<#case "status_appointment_put_update_by_ref">
<#case "status_appointment_put_update_by_number">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
<#break>
<#case 200>
<#case 201>
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && (preparationOrderPostResponse.status == "SUCCESS" || preparationOrderPostResponse.status == "WARN") >
[
{
<#stop >
}
]
<#else>
[
{
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#if>
<#break>
<#default>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#switch>
<#break>
<#-- *********************************************** ApiRestID = appointment_post_physical_receipt_associations/dissociations ******************** -->
<#case "appointment_post_physical_receipt_associations_by_ref">
<#case "appointment_post_physical_receipt_associations_by_number">
<#case "appointment_post_physical_receipt_dissociations_by_ref">
<#case "appointment_post_physical_receipt_dissociations_by_number">
<#switch restResponsetMsg.status!no_status>
<#case no_status>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
<#break>
<#case 200>
<#case 201>
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign preparationOrderPostResponse = JsonUtil.jsonToMap(restResponseBody)>
<#if preparationOrderPostResponse.status?? && (preparationOrderPostResponse.status == "SUCCESS" || preparationOrderPostResponse.status == "WARN") >
[
{
<#stop >
}
]
<#else>
[
{
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#if>
<#break>
<#default>
[
{
<#if restResponsetMsg.body?? >
<#assign restResponseBody = JsonUtil.decodeBase64(restResponsetMsg.body) />
<#else>
<#assign restResponseBody = "${restResponsetMsg?trim?json_string}" />
</#if>
<#assign apiReflexPlatformID = ApiReflexPlatformID.PlatformLogCreate>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#assign event = "RP_APPOINTMENT_EVENT" />
<#include "RFXtoRP_PlatformLogCreate.ftl">
},
{
<#assign apiReflexPlatformID = ApiReflexPlatformID.AppointmentAllocationError>
"apiReflexPlatformID" : "${apiReflexPlatformID}",
"datas" :
<#include "RFXtoRP_RestResponseAppointmentAllocationError.ftl">
}
]
</#switch>
<#break>
<#-- *********************************************** default ******************** -->
<#default>
<#stop>
</#switch>

View File

@@ -0,0 +1,22 @@
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
[
{
"Header": {
"ProjectID": "${projectRP}"
},
"ID": {
"RefID": "${id.refid!"no RefID"?trim?json_string}",
"RefDate": {
"DateTime": "${aDateTime?iso_utc}",
"AuthorTimeZone": "${time_zone_rfx}"
}
},
"Payload": {
"ActorID":"${RFXtoRPprefixDepot(id.actorID)?trim?json_string}"
}
}
]

View File

@@ -14,7 +14,7 @@ those parameters are stored in FTL file Conf-connector.ftl for later use in some
<#noparse><#-- Possible values for SupplyOfTheTrackingNumber parameter : --></#noparse>
<#noparse><#-- 0 : Always empty --></#noparse>
<#noparse><#-- 1 : Always use Reflex WMS tracking --></#noparse>
<#noparse><#-- 1 : Always use HARDIS WMS tracking --></#noparse>
<#noparse><#-- 2 : Always use the HU number --></#noparse>
<#noparse><#-- 3 : Use Reflex tracking if it exists, the HU number otherwise --></#noparse>

View File

@@ -0,0 +1,131 @@
<#-- **** input parameters ***** -->
<#-- input : message HARDIS WMS -->
<#-- project : projectId in HARDIS SC NETWORK -->
<#-- organisation : organisationtId in HARDIS SC NETWORK -->
<#include "HfRpConfig.ftl">
<#include "ReflexUtils.ftl">
<#include "ActorPrefix.ftl">
<#assign eventRP = JsonUtil.jsonToMap(input)>
<#assign projectRP = project>
<#assign organisationRP = organisation>
<#switch eventRP.event>
<#-- *********************************************** Action = CREATE or UPDATE ******************** -->
<#case "Created">
<#assign appointment = eventRP.data />
[
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_create>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentCreated.ftl">
}
]
<#break>
<#-- *********************************************** Action = CommissionsUpdated ******************** -->
<#case "Updated">
<#assign AddComma = false />
<#assign appointment = eventRP.data />
[
<#if appointment?? && (!(appointment.WMSCreated??) || !appointment.WMSCreated) && appointment.Status?? && appointment.Status.Current?? && appointment.Status.Current.StatusCode?? && appointment.Status.Current.StatusCode == AppointmentStatusCode.APPOINTMENT_0150_ALLOCATION_ERROR>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_create>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentCreated.ftl">
}
<#else>
<#if eventRP.commissionsUpdated>
<#if appointment.AppointmentType == AppointmentType.APPOINTMENT_TYPE_UNLOADING && eventRP.addedUnloadCommissions?? && eventRP.addedUnloadCommissions != "">
<#if eventRP.appointmentCustomFields?has_content>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_physical_receipt_associations_by_number>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentPhysicalReceiptAssociationByNumber.ftl">
}
<#else>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_physical_receipt_associations_by_ref>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentPhysicalReceiptAssociationByRef.ftl">
}
</#if>
<#assign AddComma = true />
</#if>
<#if appointment.AppointmentType == AppointmentType.APPOINTMENT_TYPE_UNLOADING && eventRP.removedUnloadCommissions?? && eventRP.removedUnloadCommissions!="">
<#if AddComma == true>
,
</#if>
<#if eventRP.appointmentCustomFields?has_content>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_physical_receipt_dissociations_by_number>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentPhysicalReceiptDissociationByNumber.ftl">
}
<#else>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_post_physical_receipt_dissociations_by_ref>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentPhysicalReceiptDissociationByRef.ftl">
}
</#if>
<#assign AddComma = true />
</#if>
</#if>
<#-- *********************************************** Action = reasonUpdated or slotUpdated ******************** -->
<#if eventRP.reasonUpdated || eventRP.slotUpdated || eventRP.carrierInformationUpdated>
<#if AddComma == true>
,
</#if>
<#if eventRP.appointmentCustomFields?has_content>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_put_update_by_number>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByNumber.ftl">
}
<#else>
{
<#assign apiRestReflexID = ApiRestReflexID.appointment_put_update_by_ref>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentSlotOrCarrierInformationUpdatedByRef.ftl">
}
</#if>
<#assign AddComma = true />
</#if>
</#if>
]
<#break>
<#-- *********************************************** Action = SlotUpdated ******************** -->
<#case "Canceled">
<#assign appointment = eventRP.data />
[
<#if eventRP.appointmentCustomFields?has_content>
{
<#assign apiRestReflexID = ApiRestReflexID.status_appointment_put_update_by_number>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentCanceledByNumber.ftl">
}
<#else>
{
<#assign apiRestReflexID = ApiRestReflexID.status_appointment_put_update_by_ref>
"apiRestReflexID" : "${apiRestReflexID}",
"datas" :
<#include "RPtoRFX_CarrierAppointmentCanceledByRef.ftl">
}
</#if>
]
<#break>
<#default>
<#stop >
</#switch>

View File

@@ -0,0 +1,15 @@
{
"id" : {"refid" : "${eventRP.refid?json_string}","actorID":"${RPtoRFXprefixDepot(eventRP.actor)}"},
"route" : "rest/public/v1/physical_depots/{physical_depot_code}/appointment_years/{appointment_year}/appointment_numbers/{appointment_number}/status",
"method" : "PUT",
"uri_substitutions": {
"physical_depot_code": "${RPtoRFXprefixDepot(eventRP.actor)}",
"appointment_year":"${eventRP.appointmentCustomFields.year?json_string}",
"appointment_number":"${eventRP.appointmentCustomFields.number?json_string}"
},
"payload" :
{
"status_code": "999",
<#include "RPtoRFX_CarrierAppointmentCancellationCode.ftl">
}
}

View File

@@ -0,0 +1,14 @@
{
"id" : {"refid" : "${eventRP.refid?json_string}","actorID":"${RPtoRFXprefixDepot(eventRP.actor)}"},
"route" : "rest/public/v1/physical_depots/{physical_depot_code}/carrier_appointments/{appointment_reference}/status",
"method" : "PUT",
"uri_substitutions": {
"physical_depot_code": "${RPtoRFXprefixDepot(eventRP.actor)}",
"appointment_reference":"${eventRP.refid?json_string}"
},
"payload" :
{
"status_code": "999",
<#include "RPtoRFX_CarrierAppointmentCancellationCode.ftl">
}
}

Some files were not shown because too many files have changed in this diff Show More