@shushed/helpers 0.0.203-bug-erp-770-20251208155429 → 0.0.203-validate-fix-20251208135314

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/dist/cjs/dist-dereferenced/asset.js +1 -0
  2. package/dist/cjs/dist-dereferenced/asset.js.map +1 -0
  3. package/dist/cjs/dist-dereferenced/category.js +1 -0
  4. package/dist/cjs/dist-dereferenced/category.js.map +1 -0
  5. package/dist/cjs/dist-dereferenced/country.js +1 -0
  6. package/dist/cjs/dist-dereferenced/country.js.map +1 -0
  7. package/dist/cjs/dist-dereferenced/currency.js +1 -0
  8. package/dist/cjs/dist-dereferenced/currency.js.map +1 -0
  9. package/dist/cjs/dist-dereferenced/customer-segment.js +1 -0
  10. package/dist/cjs/dist-dereferenced/customer-segment.js.map +1 -0
  11. package/dist/cjs/dist-dereferenced/development-colour.js +1 -0
  12. package/dist/cjs/dist-dereferenced/development-colour.js.map +1 -0
  13. package/dist/cjs/dist-dereferenced/index.js +1 -0
  14. package/dist/cjs/dist-dereferenced/index.js.map +1 -0
  15. package/dist/cjs/dist-dereferenced/marketing-preferences.js +1 -0
  16. package/dist/cjs/dist-dereferenced/marketing-preferences.js.map +1 -0
  17. package/dist/cjs/dist-dereferenced/messages/ean-change.js +1 -0
  18. package/dist/cjs/dist-dereferenced/messages/ean-change.js.map +1 -0
  19. package/dist/cjs/dist-dereferenced/messages/index.js +1 -0
  20. package/dist/cjs/dist-dereferenced/messages/index.js.map +1 -0
  21. package/dist/cjs/dist-dereferenced/messages/order/delivered.js +2 -1
  22. package/dist/cjs/dist-dereferenced/messages/order/delivered.js.map +1 -0
  23. package/dist/cjs/dist-dereferenced/messages/order/index.js +1 -0
  24. package/dist/cjs/dist-dereferenced/messages/order/index.js.map +1 -0
  25. package/dist/cjs/dist-dereferenced/messages/order/new.js +2 -1
  26. package/dist/cjs/dist-dereferenced/messages/order/new.js.map +1 -0
  27. package/dist/cjs/dist-dereferenced/messages/order/processed.js +2 -1
  28. package/dist/cjs/dist-dereferenced/messages/order/processed.js.map +1 -0
  29. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js +2 -1
  30. package/dist/cjs/dist-dereferenced/messages/order/return-initiated.js.map +1 -0
  31. package/dist/cjs/dist-dereferenced/messages/order/returned.js +2 -1
  32. package/dist/cjs/dist-dereferenced/messages/order/returned.js.map +1 -0
  33. package/dist/cjs/dist-dereferenced/messages/order/shipped.js +2 -1
  34. package/dist/cjs/dist-dereferenced/messages/order/shipped.js.map +1 -0
  35. package/dist/cjs/dist-dereferenced/messages/price-change.js +1 -0
  36. package/dist/cjs/dist-dereferenced/messages/price-change.js.map +1 -0
  37. package/dist/cjs/dist-dereferenced/messages/product-category.js +1 -0
  38. package/dist/cjs/dist-dereferenced/messages/product-category.js.map +1 -0
  39. package/dist/cjs/dist-dereferenced/messages/product-draft.js +1 -0
  40. package/dist/cjs/dist-dereferenced/messages/product-draft.js.map +1 -0
  41. package/dist/cjs/dist-dereferenced/messages/product.js +1 -0
  42. package/dist/cjs/dist-dereferenced/messages/product.js.map +1 -0
  43. package/dist/cjs/dist-dereferenced/money.js +1 -0
  44. package/dist/cjs/dist-dereferenced/money.js.map +1 -0
  45. package/dist/cjs/dist-dereferenced/order/address.js +1 -0
  46. package/dist/cjs/dist-dereferenced/order/address.js.map +1 -0
  47. package/dist/cjs/dist-dereferenced/order/customer.js +1 -0
  48. package/dist/cjs/dist-dereferenced/order/customer.js.map +1 -0
  49. package/dist/cjs/dist-dereferenced/order/index.js +1 -0
  50. package/dist/cjs/dist-dereferenced/order/index.js.map +1 -0
  51. package/dist/cjs/dist-dereferenced/order/item.js +1 -0
  52. package/dist/cjs/dist-dereferenced/order/item.js.map +1 -0
  53. package/dist/cjs/dist-dereferenced/order/orderMain.js +2 -1
  54. package/dist/cjs/dist-dereferenced/order/orderMain.js.map +1 -0
  55. package/dist/cjs/dist-dereferenced/order/payment.js +2 -1
  56. package/dist/cjs/dist-dereferenced/order/payment.js.map +1 -0
  57. package/dist/cjs/dist-dereferenced/order/shipment/index.js +1 -0
  58. package/dist/cjs/dist-dereferenced/order/shipment/index.js.map +1 -0
  59. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js +1 -0
  60. package/dist/cjs/dist-dereferenced/order/shipment/item/index.js.map +1 -0
  61. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js +1 -0
  62. package/dist/cjs/dist-dereferenced/order/shipment/item/itemMain.js.map +1 -0
  63. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js +1 -0
  64. package/dist/cjs/dist-dereferenced/order/shipment/item/returned.js.map +1 -0
  65. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js +1 -0
  66. package/dist/cjs/dist-dereferenced/order/shipment/pos/index.js.map +1 -0
  67. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js +1 -0
  68. package/dist/cjs/dist-dereferenced/order/shipment/pos/outbound.js.map +1 -0
  69. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js +1 -0
  70. package/dist/cjs/dist-dereferenced/order/shipment/pos/posMain.js.map +1 -0
  71. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js +1 -0
  72. package/dist/cjs/dist-dereferenced/order/shipment/pos/return.js.map +1 -0
  73. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js +1 -0
  74. package/dist/cjs/dist-dereferenced/order/shipment/shipmentMain.js.map +1 -0
  75. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js +1 -0
  76. package/dist/cjs/dist-dereferenced/order/shipment/shipped/index.js.map +1 -0
  77. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js +1 -0
  78. package/dist/cjs/dist-dereferenced/order/shipment/shipped/outbound.js.map +1 -0
  79. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js +1 -0
  80. package/dist/cjs/dist-dereferenced/order/shipment/shipped/return.js.map +1 -0
  81. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js +1 -0
  82. package/dist/cjs/dist-dereferenced/order/shipment/shipped/shippedMain.js.map +1 -0
  83. package/dist/cjs/dist-dereferenced/price.js +1 -0
  84. package/dist/cjs/dist-dereferenced/price.js.map +1 -0
  85. package/dist/cjs/dist-dereferenced/product-category.js +1 -0
  86. package/dist/cjs/dist-dereferenced/product-category.js.map +1 -0
  87. package/dist/cjs/dist-dereferenced/product-draft.js +1 -0
  88. package/dist/cjs/dist-dereferenced/product-draft.js.map +1 -0
  89. package/dist/cjs/dist-dereferenced/product.js +1 -0
  90. package/dist/cjs/dist-dereferenced/product.js.map +1 -0
  91. package/dist/cjs/dist-dereferenced/stock.js +1 -0
  92. package/dist/cjs/dist-dereferenced/stock.js.map +1 -0
  93. package/dist/cjs/dist-dereferenced/total.js +1 -0
  94. package/dist/cjs/dist-dereferenced/total.js.map +1 -0
  95. package/dist/cjs/dist-types/asset.js +1 -0
  96. package/dist/cjs/dist-types/asset.js.map +1 -0
  97. package/dist/cjs/dist-types/category.js +1 -0
  98. package/dist/cjs/dist-types/category.js.map +1 -0
  99. package/dist/cjs/dist-types/country.js +1 -0
  100. package/dist/cjs/dist-types/country.js.map +1 -0
  101. package/dist/cjs/dist-types/currency.js +1 -0
  102. package/dist/cjs/dist-types/currency.js.map +1 -0
  103. package/dist/cjs/dist-types/customer-segment.js +1 -0
  104. package/dist/cjs/dist-types/customer-segment.js.map +1 -0
  105. package/dist/cjs/dist-types/development-colour.js +1 -0
  106. package/dist/cjs/dist-types/development-colour.js.map +1 -0
  107. package/dist/cjs/dist-types/index.js +1 -0
  108. package/dist/cjs/dist-types/index.js.map +1 -0
  109. package/dist/cjs/dist-types/marketing-preferences.js +1 -0
  110. package/dist/cjs/dist-types/marketing-preferences.js.map +1 -0
  111. package/dist/cjs/dist-types/messages/ean-change.js +1 -0
  112. package/dist/cjs/dist-types/messages/ean-change.js.map +1 -0
  113. package/dist/cjs/dist-types/messages/index.js +1 -0
  114. package/dist/cjs/dist-types/messages/index.js.map +1 -0
  115. package/dist/cjs/dist-types/messages/order/delivered.js +1 -0
  116. package/dist/cjs/dist-types/messages/order/delivered.js.map +1 -0
  117. package/dist/cjs/dist-types/messages/order/index.js +1 -0
  118. package/dist/cjs/dist-types/messages/order/index.js.map +1 -0
  119. package/dist/cjs/dist-types/messages/order/new.js +1 -0
  120. package/dist/cjs/dist-types/messages/order/new.js.map +1 -0
  121. package/dist/cjs/dist-types/messages/order/processed.js +1 -0
  122. package/dist/cjs/dist-types/messages/order/processed.js.map +1 -0
  123. package/dist/cjs/dist-types/messages/order/return-initiated.js +1 -0
  124. package/dist/cjs/dist-types/messages/order/return-initiated.js.map +1 -0
  125. package/dist/cjs/dist-types/messages/order/returned.js +1 -0
  126. package/dist/cjs/dist-types/messages/order/returned.js.map +1 -0
  127. package/dist/cjs/dist-types/messages/order/shipped.js +1 -0
  128. package/dist/cjs/dist-types/messages/order/shipped.js.map +1 -0
  129. package/dist/cjs/dist-types/messages/price-change.js +1 -0
  130. package/dist/cjs/dist-types/messages/price-change.js.map +1 -0
  131. package/dist/cjs/dist-types/messages/product-category.js +1 -0
  132. package/dist/cjs/dist-types/messages/product-category.js.map +1 -0
  133. package/dist/cjs/dist-types/messages/product-draft.js +1 -0
  134. package/dist/cjs/dist-types/messages/product-draft.js.map +1 -0
  135. package/dist/cjs/dist-types/messages/product.js +1 -0
  136. package/dist/cjs/dist-types/messages/product.js.map +1 -0
  137. package/dist/cjs/dist-types/money.js +1 -0
  138. package/dist/cjs/dist-types/money.js.map +1 -0
  139. package/dist/cjs/dist-types/order/address.js +1 -0
  140. package/dist/cjs/dist-types/order/address.js.map +1 -0
  141. package/dist/cjs/dist-types/order/customer.js +1 -0
  142. package/dist/cjs/dist-types/order/customer.js.map +1 -0
  143. package/dist/cjs/dist-types/order/index.js +1 -0
  144. package/dist/cjs/dist-types/order/index.js.map +1 -0
  145. package/dist/cjs/dist-types/order/item.js +1 -0
  146. package/dist/cjs/dist-types/order/item.js.map +1 -0
  147. package/dist/cjs/dist-types/order/orderMain.js +1 -0
  148. package/dist/cjs/dist-types/order/orderMain.js.map +1 -0
  149. package/dist/cjs/dist-types/order/payment.js +1 -0
  150. package/dist/cjs/dist-types/order/payment.js.map +1 -0
  151. package/dist/cjs/dist-types/order/shipment/index.js +1 -0
  152. package/dist/cjs/dist-types/order/shipment/index.js.map +1 -0
  153. package/dist/cjs/dist-types/order/shipment/item/index.js +1 -0
  154. package/dist/cjs/dist-types/order/shipment/item/index.js.map +1 -0
  155. package/dist/cjs/dist-types/order/shipment/item/itemMain.js +1 -0
  156. package/dist/cjs/dist-types/order/shipment/item/itemMain.js.map +1 -0
  157. package/dist/cjs/dist-types/order/shipment/item/returned.js +1 -0
  158. package/dist/cjs/dist-types/order/shipment/item/returned.js.map +1 -0
  159. package/dist/cjs/dist-types/order/shipment/pos/index.js +1 -0
  160. package/dist/cjs/dist-types/order/shipment/pos/index.js.map +1 -0
  161. package/dist/cjs/dist-types/order/shipment/pos/outbound.js +1 -0
  162. package/dist/cjs/dist-types/order/shipment/pos/outbound.js.map +1 -0
  163. package/dist/cjs/dist-types/order/shipment/pos/posMain.js +1 -0
  164. package/dist/cjs/dist-types/order/shipment/pos/posMain.js.map +1 -0
  165. package/dist/cjs/dist-types/order/shipment/pos/return.js +1 -0
  166. package/dist/cjs/dist-types/order/shipment/pos/return.js.map +1 -0
  167. package/dist/cjs/dist-types/order/shipment/shipmentMain.js +1 -0
  168. package/dist/cjs/dist-types/order/shipment/shipmentMain.js.map +1 -0
  169. package/dist/cjs/dist-types/order/shipment/shipped/index.js +1 -0
  170. package/dist/cjs/dist-types/order/shipment/shipped/index.js.map +1 -0
  171. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js +1 -0
  172. package/dist/cjs/dist-types/order/shipment/shipped/outbound.js.map +1 -0
  173. package/dist/cjs/dist-types/order/shipment/shipped/return.js +1 -0
  174. package/dist/cjs/dist-types/order/shipment/shipped/return.js.map +1 -0
  175. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js +1 -0
  176. package/dist/cjs/dist-types/order/shipment/shipped/shippedMain.js.map +1 -0
  177. package/dist/cjs/dist-types/price.js +1 -0
  178. package/dist/cjs/dist-types/price.js.map +1 -0
  179. package/dist/cjs/dist-types/product-category.js +1 -0
  180. package/dist/cjs/dist-types/product-category.js.map +1 -0
  181. package/dist/cjs/dist-types/product-draft.js +1 -0
  182. package/dist/cjs/dist-types/product-draft.js.map +1 -0
  183. package/dist/cjs/dist-types/product.js +1 -0
  184. package/dist/cjs/dist-types/product.js.map +1 -0
  185. package/dist/cjs/dist-types/stock.js +1 -0
  186. package/dist/cjs/dist-types/stock.js.map +1 -0
  187. package/dist/cjs/dist-types/total.js +1 -0
  188. package/dist/cjs/dist-types/total.js.map +1 -0
  189. package/dist/cjs/index.js +1 -0
  190. package/dist/cjs/index.js.map +1 -0
  191. package/dist/cjs/src-public/airtable.js +1 -0
  192. package/dist/cjs/src-public/airtable.js.map +1 -0
  193. package/dist/cjs/src-public/bcOrder.js +72 -403
  194. package/dist/cjs/src-public/bcOrder.js.map +1 -0
  195. package/dist/cjs/src-public/bigquery.js +1 -0
  196. package/dist/cjs/src-public/bigquery.js.map +1 -0
  197. package/dist/cjs/src-public/centra.js +1 -0
  198. package/dist/cjs/src-public/centra.js.map +1 -0
  199. package/dist/cjs/src-public/cloudtasks.js +1 -0
  200. package/dist/cjs/src-public/cloudtasks.js.map +1 -0
  201. package/dist/cjs/src-public/dato.js +1 -0
  202. package/dist/cjs/src-public/dato.js.map +1 -0
  203. package/dist/cjs/src-public/env.js +1 -0
  204. package/dist/cjs/src-public/env.js.map +1 -0
  205. package/dist/cjs/src-public/getEventTime.js +1 -0
  206. package/dist/cjs/src-public/getEventTime.js.map +1 -0
  207. package/dist/cjs/src-public/index.js +1 -0
  208. package/dist/cjs/src-public/index.js.map +1 -0
  209. package/dist/cjs/src-public/ipValidation.js +1 -0
  210. package/dist/cjs/src-public/ipValidation.js.map +1 -0
  211. package/dist/cjs/src-public/jwks.js +1 -0
  212. package/dist/cjs/src-public/jwks.js.map +1 -0
  213. package/dist/cjs/src-public/pubsub.js +1 -0
  214. package/dist/cjs/src-public/pubsub.js.map +1 -0
  215. package/dist/cjs/src-public/rateLimit.js +1 -0
  216. package/dist/cjs/src-public/rateLimit.js.map +1 -0
  217. package/dist/cjs/src-public/redisClient.js +1 -0
  218. package/dist/cjs/src-public/redisClient.js.map +1 -0
  219. package/dist/cjs/src-public/runtime.js +1 -0
  220. package/dist/cjs/src-public/runtime.js.map +1 -0
  221. package/dist/cjs/src-public/sanitize.js +1 -0
  222. package/dist/cjs/src-public/sanitize.js.map +1 -0
  223. package/dist/cjs/src-public/scheduler.js +1 -0
  224. package/dist/cjs/src-public/scheduler.js.map +1 -0
  225. package/dist/cjs/src-public/secret.js +1 -0
  226. package/dist/cjs/src-public/secret.js.map +1 -0
  227. package/dist/cjs/src-public/setHeaders.js +1 -0
  228. package/dist/cjs/src-public/setHeaders.js.map +1 -0
  229. package/dist/cjs/src-public/types.js +1 -0
  230. package/dist/cjs/src-public/types.js.map +1 -0
  231. package/dist/cjs/src-public/utils.js +1 -0
  232. package/dist/cjs/src-public/utils.js.map +1 -0
  233. package/dist/cjs/src-public/validate.js +1 -28
  234. package/dist/cjs/src-public/validate.js.map +1 -0
  235. package/dist/types/dist-dereferenced/messages/order/delivered.d.ts +4 -4
  236. package/dist/types/dist-dereferenced/messages/order/new.d.ts +4 -4
  237. package/dist/types/dist-dereferenced/messages/order/processed.d.ts +4 -4
  238. package/dist/types/dist-dereferenced/messages/order/return-initiated.d.ts +4 -4
  239. package/dist/types/dist-dereferenced/messages/order/returned.d.ts +4 -4
  240. package/dist/types/dist-dereferenced/messages/order/shipped.d.ts +4 -4
  241. package/dist/types/dist-dereferenced/order/index.d.ts +4 -4
  242. package/dist/types/dist-dereferenced/order/orderMain.d.ts +4 -4
  243. package/dist/types/dist-dereferenced/order/payment.d.ts +4 -4
  244. package/dist/types/dist-types/messages/order/delivered.d.ts +2 -2
  245. package/dist/types/dist-types/messages/order/new.d.ts +2 -2
  246. package/dist/types/dist-types/messages/order/processed.d.ts +2 -2
  247. package/dist/types/dist-types/messages/order/return-initiated.d.ts +2 -2
  248. package/dist/types/dist-types/messages/order/returned.d.ts +2 -2
  249. package/dist/types/dist-types/messages/order/shipped.d.ts +2 -2
  250. package/dist/types/dist-types/order/orderMain.d.ts +2 -2
  251. package/dist/types/dist-types/order/payment.d.ts +2 -2
  252. package/package.json +1 -1
  253. package/dist/cjs/contracts/asset.schema.json +0 -78
  254. package/dist/cjs/contracts/category.schema.json +0 -86
  255. package/dist/cjs/contracts/country.schema.json +0 -258
  256. package/dist/cjs/contracts/currency.schema.json +0 -177
  257. package/dist/cjs/contracts/customer-segment.schema.json +0 -32
  258. package/dist/cjs/contracts/development-colour.schema.json +0 -97
  259. package/dist/cjs/contracts/index.js +0 -48
  260. package/dist/cjs/contracts/marketing-preferences.schema.json +0 -41
  261. package/dist/cjs/contracts/messages/ean-change.schema.json +0 -22
  262. package/dist/cjs/contracts/messages/index.js +0 -29
  263. package/dist/cjs/contracts/messages/order/delivered.schema.json +0 -26
  264. package/dist/cjs/contracts/messages/order/index.js +0 -18
  265. package/dist/cjs/contracts/messages/order/new.schema.json +0 -32
  266. package/dist/cjs/contracts/messages/order/processed.schema.json +0 -15
  267. package/dist/cjs/contracts/messages/order/return-initiated.schema.json +0 -26
  268. package/dist/cjs/contracts/messages/order/returned.schema.json +0 -25
  269. package/dist/cjs/contracts/messages/order/shipped.schema.json +0 -26
  270. package/dist/cjs/contracts/messages/product-category.schema.json +0 -21
  271. package/dist/cjs/contracts/messages/product-draft.schema.json +0 -66
  272. package/dist/cjs/contracts/messages/product.schema.json +0 -29
  273. package/dist/cjs/contracts/money.schema.json +0 -54
  274. package/dist/cjs/contracts/order/address.schema.json +0 -127
  275. package/dist/cjs/contracts/order/customer.schema.json +0 -149
  276. package/dist/cjs/contracts/order/index.js +0 -31
  277. package/dist/cjs/contracts/order/item.schema.json +0 -98
  278. package/dist/cjs/contracts/order/payment.schema.json +0 -115
  279. package/dist/cjs/contracts/order/shipment/index.js +0 -29
  280. package/dist/cjs/contracts/order/shipment/item/index.js +0 -8
  281. package/dist/cjs/contracts/order/shipment/item/returned.schema.json +0 -30
  282. package/dist/cjs/contracts/order/shipment/item.schema.json +0 -22
  283. package/dist/cjs/contracts/order/shipment/pos/index.js +0 -10
  284. package/dist/cjs/contracts/order/shipment/pos/outbound.schema.json +0 -37
  285. package/dist/cjs/contracts/order/shipment/pos/return.schema.json +0 -31
  286. package/dist/cjs/contracts/order/shipment/pos.schema.json +0 -48
  287. package/dist/cjs/contracts/order/shipment/shipped/index.js +0 -10
  288. package/dist/cjs/contracts/order/shipment/shipped/outbound.schema.json +0 -34
  289. package/dist/cjs/contracts/order/shipment/shipped/return.schema.json +0 -43
  290. package/dist/cjs/contracts/order/shipment/shipped.schema.json +0 -52
  291. package/dist/cjs/contracts/order/shipment.schema.json +0 -58
  292. package/dist/cjs/contracts/product-category.schema.json +0 -34
  293. package/dist/cjs/contracts/product-draft.schema.json +0 -782
  294. package/dist/cjs/contracts/product.schema.json +0 -816
  295. package/dist/cjs/contracts/total.schema.json +0 -41
  296. package/dist/types/contracts/index.d.ts +0 -15
  297. package/dist/types/contracts/messages/index.d.ts +0 -5
  298. package/dist/types/contracts/messages/order/index.d.ts +0 -6
  299. package/dist/types/contracts/order/index.d.ts +0 -6
  300. package/dist/types/contracts/order/shipment/index.d.ts +0 -6
  301. package/dist/types/contracts/order/shipment/item/index.d.ts +0 -1
  302. package/dist/types/contracts/order/shipment/pos/index.d.ts +0 -2
  303. package/dist/types/contracts/order/shipment/shipped/index.d.ts +0 -2
@@ -14,9 +14,6 @@ const GBP = "GBP";
14
14
  function toMinorUnits(amount) {
15
15
  if (typeof amount !== "number" || !isFinite(amount))
16
16
  return 0;
17
- if (Math.abs(amount) > Number.MAX_SAFE_INTEGER / 100) {
18
- return Math.round(Number((amount * 100).toPrecision(15)));
19
- }
20
17
  return Math.round(amount * 100);
21
18
  }
22
19
  function money(value) {
@@ -102,45 +99,28 @@ function buildLineGrouping(payload) {
102
99
  }
103
100
  function transformMasterOrder(payload) {
104
101
  const erp_order_id = payload.no || payload.system_id || "";
105
- const sale0 = Array.isArray(payload.sales) && payload.sales.length > 0 ? payload.sales[0] : undefined;
106
- const invoice0 = Array.isArray(payload.invoices) && payload.invoices.length > 0 ? payload.invoices[0] : undefined;
107
- const normalizeDateForSort = (dateStr) => {
108
- if (!dateStr || typeof dateStr !== 'string')
109
- return '';
110
- if (dateStr.includes('T'))
111
- return dateStr;
112
- if (/^\d{4}-\d{2}-\d{2}$/.test(dateStr))
113
- return `${dateStr}T00:00:00Z`;
114
- try {
115
- const date = new Date(dateStr);
116
- if (!isNaN(date.getTime()))
117
- return date.toISOString();
118
- }
119
- catch {
120
- }
121
- return dateStr;
122
- };
102
+ const sale0 = (payload.sales || [])[0];
103
+ const invoice0 = (payload.invoices || [])[0];
123
104
  const ordered_at_candidates = [];
124
105
  if (sale0?.system_created_at)
125
- ordered_at_candidates.push(normalizeDateForSort(String(sale0.system_created_at)));
106
+ ordered_at_candidates.push(sale0.system_created_at);
126
107
  if (Array.isArray(payload.invoices) && payload.invoices.length > 0) {
127
- const invDates = payload.invoices
128
- .map((i) => i.system_created_at)
129
- .filter(Boolean)
130
- .map((d) => normalizeDateForSort(String(d)));
108
+ const invDates = payload.invoices.map((i) => i.system_created_at).filter(Boolean);
131
109
  ordered_at_candidates.push(...invDates);
132
110
  }
133
111
  if (payload.ordered_at)
134
- ordered_at_candidates.push(normalizeDateForSort(String(payload.ordered_at)));
112
+ ordered_at_candidates.push(String(payload.ordered_at));
135
113
  if (payload.created_at)
136
- ordered_at_candidates.push(normalizeDateForSort(String(payload.created_at)));
137
- const validDates = ordered_at_candidates.filter(d => d.length > 0);
138
- const orderedAtRaw = validDates.length > 0
139
- ? validDates.sort()[0]
114
+ ordered_at_candidates.push(String(payload.created_at));
115
+ const orderedAtRaw = ordered_at_candidates.length > 0
116
+ ? ordered_at_candidates.sort()[0]
140
117
  : new Date().toISOString();
141
118
  let ordered_at;
142
119
  try {
143
- const date = new Date(orderedAtRaw);
120
+ const dateStr = typeof orderedAtRaw === 'string' && orderedAtRaw.includes('T')
121
+ ? orderedAtRaw
122
+ : `${orderedAtRaw}T00:00:00Z`;
123
+ const date = new Date(dateStr);
144
124
  if (isNaN(date.getTime())) {
145
125
  ordered_at = new Date().toISOString();
146
126
  }
@@ -153,7 +133,7 @@ function transformMasterOrder(payload) {
153
133
  }
154
134
  const created_by_raw = sale0?.created_by ?? invoice0?.created_by ?? "";
155
135
  const system_created_by = created_by_raw === "SITOO" ? "POS" : created_by_raw === "STOREFRONT" ? "ECOMMERCE" : "SYSTEM";
156
- const is_gift = Boolean((sale0?.gift_message && String(sale0?.gift_message).trim().length > 0) ||
136
+ const is_gift = Boolean((sale0?.gift_message && String(sale0.gift_message).trim().length > 0) ||
157
137
  (payload.invoices?.some((i) => (i.gift_message || "").trim().length > 0)));
158
138
  const invoiceLinesForReturn = payload.invoices?.flatMap((i) => i.invoice_lines || []) || [];
159
139
  const salesLinesFallbackForReturn = (sale0?.sale_lines || []);
@@ -396,31 +376,16 @@ function transformMasterOrder(payload) {
396
376
  itemsMap[it.sku].push(it);
397
377
  });
398
378
  const invoicedLineNos = new Set((payload.invoices || []).flatMap((inv) => (inv?.invoice_lines || []).map((l) => Number(l?.order_line_no || -1))));
399
- const isDeliveryItem = (line) => {
400
- const desc = String(line?.description || '').trim().toLowerCase();
401
- return desc === 'delivery';
402
- };
403
- let invoicesNetMinor = 0;
404
- let invoicesGrossMinor = 0;
405
- (payload.invoices || []).forEach((inv) => {
406
- (inv.invoice_lines || []).forEach((line) => {
407
- if (!isDeliveryItem(line)) {
408
- invoicesNetMinor += toMinorUnits(Number(line?.amount || line?.amount_excl_vat || 0));
409
- invoicesGrossMinor += toMinorUnits(Number(line?.amount_including_vat || line?.amount_incl_vat || 0));
410
- }
411
- });
412
- });
413
- if (invoicesGrossMinor === 0 && (payload.invoices || []).length > 0) {
414
- invoicesNetMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_excl_vat || 0), 0));
415
- invoicesGrossMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_incl_vat || 0), 0));
416
- }
379
+ let invoicesNetMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_excl_vat || 0), 0));
380
+ let invoicesGrossMinor = toMinorUnits((payload.invoices || []).reduce((acc, inv) => acc + (inv.amount_incl_vat || 0), 0));
417
381
  if (invoicesGrossMinor === 0 && invoicedLineNos.size > 0 && sale0?.sale_lines) {
418
- const invoicedSaleLines = (sale0?.sale_lines || []).filter((l) => {
419
- if (isDeliveryItem(l))
382
+ const invoicedSaleLines = (sale0.sale_lines || []).filter((l) => {
383
+ const lineNo = Number(l?.line_no || -1);
384
+ const itemNo = String(l?.item_no || l?.no || '').toUpperCase();
385
+ if (itemNo === 'X DELCHR')
420
386
  return false;
421
387
  if (String(l?.type || '').toLowerCase() !== 'item')
422
388
  return false;
423
- const lineNo = Number(l?.line_no || -1);
424
389
  return invoicedLineNos.has(lineNo);
425
390
  });
426
391
  invoicesNetMinor = toMinorUnits(invoicedSaleLines.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
@@ -428,26 +393,7 @@ function transformMasterOrder(payload) {
428
393
  }
429
394
  let nonInvSalesNetMinor = 0;
430
395
  let nonInvSalesGrossMinor = 0;
431
- if (sale0?.sale_lines && sale0.sale_lines.length > 0) {
432
- const allSaleLines = (sale0.sale_lines || []).filter((l) => {
433
- if (isDeliveryItem(l))
434
- return false;
435
- if (String(l?.type || '').toLowerCase() !== 'item')
436
- return false;
437
- return true;
438
- });
439
- const totalSaleNetMinor = toMinorUnits(allSaleLines.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
440
- const totalSaleGrossMinor = toMinorUnits(allSaleLines.reduce((acc, l) => acc + (Number(l?.amount_including_vat || 0)), 0));
441
- if (invoicesGrossMinor > 0) {
442
- nonInvSalesNetMinor = Math.max(0, totalSaleNetMinor - invoicesNetMinor);
443
- nonInvSalesGrossMinor = Math.max(0, totalSaleGrossMinor - invoicesGrossMinor);
444
- }
445
- else {
446
- nonInvSalesNetMinor = totalSaleNetMinor;
447
- nonInvSalesGrossMinor = totalSaleGrossMinor;
448
- }
449
- }
450
- else if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
396
+ if (sale0 && (sale0.amount_excl_vat || sale0.amount_incl_vat)) {
451
397
  const saleNetMinor = toMinorUnits(sale0.amount_excl_vat || 0);
452
398
  const saleGrossMinor = toMinorUnits(sale0.amount_incl_vat || 0);
453
399
  if (invoicesGrossMinor > 0) {
@@ -461,11 +407,12 @@ function transformMasterOrder(payload) {
461
407
  }
462
408
  else {
463
409
  const nonInvoicedSales = (sale0?.sale_lines || []).filter((l) => {
464
- if (isDeliveryItem(l))
410
+ const lineNo = Number(l?.line_no || -1);
411
+ const itemNo = String(l?.item_no || l?.no || '').toUpperCase();
412
+ if (itemNo === 'X DELCHR')
465
413
  return false;
466
414
  if (String(l?.type || '').toLowerCase() !== 'item')
467
415
  return false;
468
- const lineNo = Number(l?.line_no || -1);
469
416
  return !invoicedLineNos.has(lineNo);
470
417
  });
471
418
  nonInvSalesNetMinor = toMinorUnits(nonInvoicedSales.reduce((acc, l) => acc + (Number(l?.amount || 0)), 0));
@@ -610,27 +557,21 @@ function transformMasterOrder(payload) {
610
557
  const typeStr = String(l?.type || "").toLowerCase();
611
558
  const isItemish = typeStr.includes('item') || looksProduct;
612
559
  const isRefund = itemNo.toUpperCase() === 'REFUND';
613
- if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
560
+ const isDelivery = itemNo.toUpperCase() === 'X DELCHR';
561
+ if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDelivery) {
614
562
  hasQualifying = true;
615
563
  return s + (l?.amount_including_vat || 0);
616
564
  }
617
565
  return s;
618
566
  }, 0);
619
- if (!hasQualifying)
620
- return acc;
621
- if (cm?.amount_incl_vat != null && cm.amount_incl_vat > 0) {
622
- return acc + cm.amount_incl_vat;
623
- }
624
- return acc + sum;
567
+ const add = sum > 0 ? sum : (hasQualifying ? (cm?.amount_incl_vat || 0) : 0);
568
+ return acc + add;
625
569
  }, 0);
626
570
  const merchReturnGrossFromReturnSales = (payload.sales || []).reduce((acc, sale) => {
627
571
  const docTypeRaw = String(sale?.document_type || sale?.documentType || "");
628
572
  const isReturnOrder = docTypeRaw.toLowerCase().includes('return');
629
573
  if (!isReturnOrder)
630
574
  return acc;
631
- if (sale?.amount_incl_vat != null && sale.amount_incl_vat > 0) {
632
- return acc + sale.amount_incl_vat;
633
- }
634
575
  const lines = sale?.sale_lines || [];
635
576
  let hasQualifying = false;
636
577
  const sum = lines.reduce((s, l) => {
@@ -640,13 +581,15 @@ function transformMasterOrder(payload) {
640
581
  const typeStr = String(l?.type || "").toLowerCase();
641
582
  const isItemish = typeStr.includes('item') || looksProduct;
642
583
  const isRefund = itemNo.toUpperCase() === 'REFUND';
643
- if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDeliveryItem(l)) {
584
+ const isDelivery = itemNo.toUpperCase() === 'X DELCHR';
585
+ if ((l?.quantity || 0) > 0 && isItemish && !isRefund && !isDelivery) {
644
586
  hasQualifying = true;
645
587
  return s + (l?.amount_including_vat || 0);
646
588
  }
647
589
  return s;
648
590
  }, 0);
649
- return acc + (sum > 0 ? sum : (hasQualifying ? (sale?.amount_incl_vat || sale?.amount_including_vat || 0) : 0));
591
+ const add = sum > 0 ? sum : (hasQualifying ? (sale?.amount_incl_vat || sale?.amount_including_vat || 0) : 0);
592
+ return acc + add;
650
593
  }, 0);
651
594
  const merchReturnGross = merchReturnGrossFromCreditMemos + merchReturnGrossFromReturnSales;
652
595
  const hasMerchReturn = merchReturnGross > 0;
@@ -704,12 +647,12 @@ function transformMasterOrder(payload) {
704
647
  return acc + (s.amount_incl_vat || 0);
705
648
  }
706
649
  const lineAmounts = (s.shipment_lines || []).reduce((lineAcc, l) => {
707
- if (isDeliveryItem(l))
650
+ const itemNo = String(l?.item_no || l?.no || "").toUpperCase();
651
+ if (itemNo === 'X DELCHR')
708
652
  return lineAcc;
709
653
  const orderLineNo = Number(l?.order_line_no || -1);
710
654
  let sourceLine = orderLineNo > 0 ? sourceLineMap.get(orderLineNo) : null;
711
655
  if (!sourceLine) {
712
- const itemNo = String(l?.item_no || l?.no || "").toUpperCase();
713
656
  const variant = String(l?.variant_code || "");
714
657
  const sku = variant ? `${itemNo}-${variant}` : itemNo;
715
658
  sourceLine = sourceLineBySku.get(sku);
@@ -743,358 +686,85 @@ function transformMasterOrder(payload) {
743
686
  const shipping_from = invoice0 || sale0 || null;
744
687
  const mapPaymentMethod = (code, card) => {
745
688
  const c = String(code || '').toUpperCase();
746
- const processorId = String(card?.processor_id || '').toUpperCase();
747
- const giftCertId = String(card?.gift_certificate_id || '').trim();
748
- const cardType = String(card?.type || '').trim().toLowerCase();
749
- if (giftCertId.length > 0)
750
- return 'GIFT-CARD';
751
- if (cardType === 'gift certificate')
752
- return 'GIFT-CARD';
753
- if (processorId.includes('GIFT_CERTIFICATE') || processorId.includes('GIFT-CERTIFICATE'))
689
+ if (/(GVOUCHER|VOUCHER|GIFT|EGIFT)/.test(c) || String(card?.service_type || '').toUpperCase().includes('VOUCHER'))
754
690
  return 'GIFT-CARD';
755
- if (/(GVOUCHER|VOUCHER|GIFT|EGIFT)/.test(c))
756
- return 'GIFT-CARD';
757
- if (c.includes('APPLE'))
691
+ if (c.includes('ADYEN') && !card?.card_number)
758
692
  return 'APPLE-PAY';
759
- if ((c.includes('PAYPAL') || processorId === 'PAYPAL') && giftCertId.length === 0) {
760
- return 'PAYPAL';
761
- }
762
- if (c.includes('MOTO'))
763
- return 'MOTO';
764
- if (c.includes('ADYEN') && cardType === 'credit card' && giftCertId.length === 0) {
765
- return 'CREDIT-CARD';
766
- }
767
- const serviceType = String(card?.service_type || '').toUpperCase();
768
- if (serviceType.includes('VOUCHER') && giftCertId.length === 0 && processorId !== 'PAYPAL') {
769
- return 'GIFT-CARD';
770
- }
771
- if (card?.card_number)
693
+ if (c.includes('APPLE') || String(card?.service_type || '').toUpperCase().includes('APPLE'))
694
+ return 'APPLE-PAY';
695
+ if (card?.transaction_id || card?.card_number)
772
696
  return 'CREDIT-CARD';
773
697
  return 'OTHER';
774
698
  };
699
+ const journeyFromCreatedBy = (createdBy) => {
700
+ const v = String(createdBy || '').toUpperCase();
701
+ if (v === 'SITOO')
702
+ return 'POS';
703
+ if (v === 'STOREFRONT')
704
+ return 'CHECKOUT';
705
+ if (v === 'CENTRA')
706
+ return 'CHECKOUT';
707
+ return 'SYSTEM';
708
+ };
775
709
  const cardPays = (payload.card_payments || []).map((c) => ({
776
710
  created_at: c.created_at,
777
- amount: c.mount || c.amount,
778
- type: c.type || 'Payment',
711
+ amount: c.amount,
712
+ type: 'Payment',
779
713
  payment_method_code: String(c.service_type || ''),
780
714
  transaction_id: c.transaction_id,
781
715
  card_number: c.card_number,
782
716
  psp_reference: c.psp_reference,
783
- gift_certificate_id: c.gift_certificate_id,
784
- service_type: c.service_type,
785
- processor_id: c.processor_id,
786
717
  created_by: invoice0?.created_by || sale0?.created_by,
787
- source: 'card_payment',
788
- order_no: c.order_no,
789
- captured: c.captured,
790
718
  }));
791
719
  const normalPays = (payload.payments || []).map((p) => ({
792
720
  created_at: p.created_at,
793
721
  amount: p.amount,
794
722
  type: p.type,
795
723
  payment_method_code: p.payment_method_code,
796
- transaction_id: p.transaction_id,
724
+ transaction_id: p.ledger_entry_no ? String(p.ledger_entry_no) : undefined,
797
725
  card_number: undefined,
798
726
  psp_reference: p.psp_reference,
799
- payment_gateway_token: p.payment_gateway_token,
800
- payment_number: p.payment_number,
801
- payment_refund_number: p.payment_refund_number,
802
- original_payment_refund_id: p.original_payment_refund_id,
803
727
  created_by: p.created_by || invoice0?.created_by || sale0?.created_by,
804
- source: 'payment',
805
- order_no: p.master_order_no,
806
- ledger_entry_no: p.ledger_entry_no,
807
728
  }));
808
729
  const flat = [...cardPays, ...normalPays];
809
730
  const groupsMap = new Map();
810
- flat.forEach((p) => {
811
- try {
812
- const isRefund = String(p.type || '').toLowerCase() === 'refund';
813
- const logicalType = isRefund ? 'REFUND' : 'CHARGE';
814
- let keyBase;
815
- const unifiedId = p.transaction_id || p.payment_gateway_token;
816
- if (unifiedId) {
817
- keyBase = unifiedId;
818
- }
819
- else if (p.payment_number) {
820
- keyBase = `PN:${p.payment_number}`;
821
- }
822
- else if (!isRefund) {
823
- const paymentType = String(p.type || '').toUpperCase();
824
- const amount = Number(p.amount || 0);
825
- const paymentMethod = String(p.payment_method_code || '').toUpperCase().trim();
826
- const orderNo = p.order_no || erp_order_id;
827
- if (paymentType === 'CAPTURE' || paymentType === 'AUTHORISATION') {
828
- keyBase = `CHARGE-${orderNo}-${amount}-${paymentMethod}`;
829
- }
830
- else if (p.gift_certificate_id) {
831
- keyBase = `GIFT:${p.gift_certificate_id}`;
832
- }
833
- else {
834
- const orderNo = p.order_no || erp_order_id;
835
- const paymentMethod = String(p.payment_method_code || '').toUpperCase().trim();
836
- keyBase = `${orderNo}-${amount}-${paymentMethod}`;
837
- }
838
- }
839
- else {
840
- if (p.payment_refund_number) {
841
- keyBase = `PRN:${p.payment_refund_number}`;
842
- }
843
- else {
844
- const orderNo = p.order_no || erp_order_id;
845
- const amount = Number(p.amount || 0);
846
- const paymentMethod = String(p.payment_method_code || '').toUpperCase().trim();
847
- keyBase = `${orderNo}-${amount}-${paymentMethod}`;
848
- }
849
- }
850
- const key = `${logicalType}:${keyBase}`;
851
- const g = groupsMap.get(key) || { entries: [], type: logicalType, key };
852
- g.entries.push(p);
853
- groupsMap.set(key, g);
854
- }
855
- catch (error) {
856
- console.error(`Error processing payment entry:`, {
857
- error: error instanceof Error ? error.message : String(error),
858
- payment_type: p?.type,
859
- amount: p?.amount,
860
- order_no: p?.order_no || erp_order_id,
861
- transaction_id: p?.transaction_id,
862
- payment_gateway_token: p?.payment_gateway_token,
863
- });
864
- }
865
- });
866
- const allPaymentEntriesByOrder = new Map();
867
- flat.forEach(p => {
868
- const orderNo = p.order_no || erp_order_id;
869
- const amount = Number(p.amount || 0);
870
- const key = `${orderNo}-${amount}`;
871
- if (!allPaymentEntriesByOrder.has(key)) {
872
- allPaymentEntriesByOrder.set(key, []);
873
- }
874
- allPaymentEntriesByOrder.get(key).push(p);
875
- });
876
- const cardPaymentsByToken = new Map();
877
- cardPays.forEach(cp => {
878
- if (cp.transaction_id) {
879
- cardPaymentsByToken.set(cp.transaction_id, cp);
880
- }
881
- });
882
- const paymentsByOriginalRefundId = new Map();
883
- const paymentsByPaymentNumber = new Map();
884
- const paymentsByPaymentRefundNumber = new Map();
885
- normalPays.forEach(p => {
731
+ flat.forEach((p, idx) => {
886
732
  const isRefund = String(p.type || '').toLowerCase() === 'refund';
887
- if (!isRefund) {
888
- if (p.original_payment_refund_id) {
889
- paymentsByOriginalRefundId.set(p.original_payment_refund_id, p);
890
- }
891
- if (p.payment_number) {
892
- paymentsByPaymentNumber.set(p.payment_number, p);
893
- }
894
- if (p.payment_refund_number) {
895
- paymentsByPaymentRefundNumber.set(p.payment_refund_number, p);
896
- }
897
- }
733
+ const logicalType = isRefund ? 'REFUND' : 'CHARGE';
734
+ const keyBase = p.transaction_id || `${erp_order_id}-${logicalType}-${idx + 1}`;
735
+ const key = `${logicalType}:${keyBase}`;
736
+ const g = groupsMap.get(key) || { entries: [], type: logicalType, key };
737
+ g.entries.push(p);
738
+ groupsMap.set(key, g);
898
739
  });
899
- const payments = Array.from(groupsMap.values()).map((g) => {
900
- const sortedEntries = [...g.entries].sort((a, b) => {
901
- if (a.source === 'card_payment' && b.source !== 'card_payment')
902
- return -1;
903
- if (b.source === 'card_payment' && a.source !== 'card_payment')
904
- return 1;
905
- if (a.source === 'payment' && b.source === 'payment') {
906
- const aType = String(a.type || '').toUpperCase();
907
- const bType = String(b.type || '').toUpperCase();
908
- if (aType === 'AUTHORISATION' && bType !== 'AUTHORISATION')
909
- return -1;
910
- if (bType === 'AUTHORISATION' && aType !== 'AUTHORISATION')
911
- return 1;
912
- if (aType === 'CAPTURE' && bType !== 'CAPTURE' && bType !== 'AUTHORISATION')
913
- return -1;
914
- if (bType === 'CAPTURE' && aType !== 'CAPTURE' && aType !== 'AUTHORISATION')
915
- return 1;
916
- }
917
- return 0;
918
- });
740
+ const payments = Array.from(groupsMap.values()).map((g, i) => {
919
741
  const created_at = g.entries
920
742
  .map(e => e.created_at)
921
743
  .filter(Boolean)
922
744
  .map(d => new Date(d).toISOString())
923
745
  .sort()[0] || ordered_at;
924
- const amountInclVat = Math.max(...g.entries.map(e => Number(e.amount || 0)), 0);
925
- const amount = money(amountInclVat);
926
- const primary = sortedEntries[0] || {};
927
- const paymentEntryForMethod = sortedEntries.find(e => e.source === 'payment' && e.payment_method_code);
928
- const paymentMethodCode = paymentEntryForMethod?.payment_method_code || primary.payment_method_code;
929
- let cardPaymentEntryForMethod = sortedEntries.find(e => e.source === 'card_payment');
930
- const groupCardData = {
931
- card_number: cardPaymentEntryForMethod?.card_number || sortedEntries.find(e => e.card_number)?.card_number,
932
- transaction_id: cardPaymentEntryForMethod?.transaction_id || sortedEntries.find(e => e.transaction_id)?.transaction_id,
933
- service_type: cardPaymentEntryForMethod?.service_type || sortedEntries.find(e => e.service_type)?.service_type,
934
- processor_id: cardPaymentEntryForMethod?.processor_id || sortedEntries.find(e => e.processor_id)?.processor_id,
935
- gift_certificate_id: cardPaymentEntryForMethod?.gift_certificate_id || sortedEntries.find(e => e.gift_certificate_id)?.gift_certificate_id,
936
- type: cardPaymentEntryForMethod?.type || sortedEntries.find(e => e.type && e.source === 'card_payment')?.type,
937
- };
938
- let pm;
939
- if (cardPaymentEntryForMethod?.type && String(cardPaymentEntryForMethod.type).trim().toLowerCase() === 'apple pay') {
940
- pm = 'APPLE-PAY';
941
- }
942
- else {
943
- pm = mapPaymentMethod(paymentMethodCode, groupCardData);
944
- }
945
- let cardPaymentEntryForTransaction = sortedEntries.find(e => e.source === 'card_payment' && e.transaction_id);
946
- if (!cardPaymentEntryForTransaction && primary.payment_gateway_token) {
947
- cardPaymentEntryForTransaction = cardPaymentsByToken.get(primary.payment_gateway_token);
948
- }
949
- if (!cardPaymentEntryForTransaction && g.type === 'REFUND') {
950
- let originalPayment;
951
- const refundEntryWithPaymentNumber = sortedEntries.find(e => e.payment_number && String(e.payment_number).trim().length > 0);
952
- if (refundEntryWithPaymentNumber?.payment_number) {
953
- originalPayment = paymentsByPaymentNumber.get(refundEntryWithPaymentNumber.payment_number);
954
- }
955
- if (!originalPayment) {
956
- const refundEntryWithOriginalId = sortedEntries.find(e => e.original_payment_refund_id);
957
- if (refundEntryWithOriginalId?.original_payment_refund_id) {
958
- originalPayment = Array.from(normalPays).find(p => p.ledger_entry_no === refundEntryWithOriginalId.original_payment_refund_id &&
959
- String(p.type || '').toLowerCase() !== 'refund');
960
- }
961
- }
962
- if (!originalPayment) {
963
- const refundEntryWithRefundNumber = sortedEntries.find(e => e.payment_refund_number && String(e.payment_refund_number).trim().length > 0);
964
- if (refundEntryWithRefundNumber?.payment_refund_number) {
965
- originalPayment = paymentsByPaymentRefundNumber.get(refundEntryWithRefundNumber.payment_refund_number);
966
- }
967
- }
968
- if (originalPayment?.payment_gateway_token) {
969
- cardPaymentEntryForTransaction = cardPaymentsByToken.get(originalPayment.payment_gateway_token);
970
- if (!cardPaymentEntryForMethod && cardPaymentEntryForTransaction) {
971
- cardPaymentEntryForMethod = cardPaymentEntryForTransaction;
972
- if (cardPaymentEntryForMethod?.type && String(cardPaymentEntryForMethod.type).trim().toLowerCase() === 'apple pay') {
973
- pm = 'APPLE-PAY';
974
- }
975
- else {
976
- const refundCardData = {
977
- card_number: cardPaymentEntryForMethod?.card_number,
978
- transaction_id: cardPaymentEntryForMethod?.transaction_id,
979
- service_type: cardPaymentEntryForMethod?.service_type,
980
- processor_id: cardPaymentEntryForMethod?.processor_id,
981
- gift_certificate_id: cardPaymentEntryForMethod?.gift_certificate_id,
982
- type: cardPaymentEntryForMethod?.type,
983
- };
984
- pm = mapPaymentMethod(paymentMethodCode, refundCardData);
985
- }
986
- }
987
- }
988
- }
989
- let transaction_id = null;
990
- if (g.type === 'REFUND' && !cardPaymentEntryForTransaction && !primary.transaction_id && !primary.payment_gateway_token) {
991
- let originalPaymentForTransaction;
992
- const refundEntryWithPaymentNumber = sortedEntries.find(e => e.payment_number && String(e.payment_number).trim().length > 0);
993
- if (refundEntryWithPaymentNumber?.payment_number) {
994
- originalPaymentForTransaction = paymentsByPaymentNumber.get(refundEntryWithPaymentNumber.payment_number);
995
- }
996
- if (!originalPaymentForTransaction && primary.original_payment_refund_id) {
997
- originalPaymentForTransaction = Array.from(normalPays).find(p => p.ledger_entry_no === primary.original_payment_refund_id &&
998
- String(p.type || '').toLowerCase() !== 'refund');
999
- }
1000
- if (!originalPaymentForTransaction && primary.payment_refund_number) {
1001
- const refundEntryWithRefundNumber = sortedEntries.find(e => e.payment_refund_number && String(e.payment_refund_number).trim().length > 0);
1002
- if (refundEntryWithRefundNumber?.payment_refund_number) {
1003
- originalPaymentForTransaction = paymentsByPaymentRefundNumber.get(refundEntryWithRefundNumber.payment_refund_number);
1004
- }
1005
- }
1006
- if (originalPaymentForTransaction?.payment_gateway_token) {
1007
- const originalCardPayment = cardPaymentsByToken.get(originalPaymentForTransaction.payment_gateway_token);
1008
- transaction_id = originalCardPayment?.transaction_id || null;
1009
- }
1010
- }
1011
- else {
1012
- transaction_id = cardPaymentEntryForTransaction?.transaction_id || primary.transaction_id || null;
1013
- }
1014
- const psp_reference = transaction_id;
1015
- const paymentCreatedByRaw = invoice0?.created_by || primary.created_by || sale0?.created_by || "";
1016
- const paymentCreatedByUpper = String(paymentCreatedByRaw).toUpperCase();
1017
- const isEmail = typeof paymentCreatedByRaw === 'string' && paymentCreatedByRaw.includes('@');
1018
- const validEnumValues = ['CUSTOMER', 'SYSTEM', 'CENTRA', 'SITOO', 'STOREFRONT', 'MOTO'];
1019
- const isValidEnum = validEnumValues.includes(paymentCreatedByUpper);
1020
- const created_by = isEmail
1021
- ? paymentCreatedByRaw
1022
- : isValidEnum
1023
- ? paymentCreatedByUpper
1024
- : 'MOTO';
1025
- const journey_label = null;
1026
- let card_number = sortedEntries.find(e => e.source === 'card_payment' && e.card_number)?.card_number
1027
- || primary.card_number
1028
- || null;
1029
- if (!card_number && g.type === 'REFUND' && cardPaymentEntryForTransaction) {
1030
- card_number = cardPaymentEntryForTransaction.card_number || null;
1031
- }
1032
- let cardPaymentForBrand = sortedEntries.find(e => e.source === 'card_payment' && e.service_type);
1033
- if (!cardPaymentForBrand && g.type === 'REFUND' && cardPaymentEntryForTransaction) {
1034
- cardPaymentForBrand = cardPaymentEntryForTransaction;
1035
- }
1036
- const card_brand = cardPaymentForBrand?.service_type
1037
- ? String(cardPaymentForBrand.service_type).trim() || null
1038
- : null;
1039
- let status = 'CAPTURED';
1040
- const isVoucher = pm === 'GIFT-CARD' ||
1041
- sortedEntries.some(e => e.gift_certificate_id) ||
1042
- sortedEntries.some(e => /(GVOUCHER|VOUCHER|GIFT|EGIFT)/.test(String(e.payment_method_code || '').toUpperCase())) ||
1043
- sortedEntries.some(e => String(e.service_type || '').toUpperCase().includes('VOUCHER'));
1044
- const cardPaymentEntry = sortedEntries.find(e => e.source === 'card_payment');
1045
- if (isVoucher) {
1046
- let paymentEntry = g.entries.find(e => e.source === 'payment' &&
1047
- (String(e.type || '').toUpperCase() === 'PAYMENT' || String(e.type || '').toUpperCase() === 'CAPTURE'));
1048
- let paymentType = paymentEntry ? String(paymentEntry.type || '').toUpperCase() : '';
1049
- if (!paymentEntry && g.entries.length > 0) {
1050
- const firstEntry = g.entries[0];
1051
- const orderNo = firstEntry.order_no || erp_order_id;
1052
- const amount = Number(firstEntry.amount || 0);
1053
- const lookupKey = `${orderNo}-${amount}`;
1054
- const relatedEntries = allPaymentEntriesByOrder.get(lookupKey) || [];
1055
- paymentEntry = relatedEntries.find(e => e.source === 'payment' &&
1056
- (String(e.type || '').toUpperCase() === 'PAYMENT' || String(e.type || '').toUpperCase() === 'CAPTURE'));
1057
- paymentType = paymentEntry ? String(paymentEntry.type || '').toUpperCase() : '';
1058
- }
1059
- if (paymentType === 'PAYMENT' || paymentType === 'CAPTURE') {
1060
- status = 'CAPTURED';
1061
- }
1062
- else {
1063
- status = 'FAILED';
1064
- }
1065
- }
1066
- else {
1067
- if (cardPaymentEntry?.captured === true) {
1068
- status = 'CAPTURED';
1069
- }
1070
- else if (cardPaymentEntry?.captured === false) {
1071
- status = 'FAILED';
1072
- }
1073
- else {
1074
- const paymentType = String(primary.type || '').toUpperCase();
1075
- if (paymentType === 'CAPTURE' || paymentType === 'PAYMENT') {
1076
- status = 'CAPTURED';
1077
- }
1078
- else {
1079
- status = 'CAPTURED';
1080
- }
1081
- }
1082
- }
746
+ const amount = Math.max(...g.entries.map(e => Number(e.amount || 0)), 0);
747
+ const any = g.entries[0] || {};
748
+ const pm = mapPaymentMethod(any.payment_method_code, any);
749
+ const transaction_id = (any.transaction_id) || `${erp_order_id}-PAY-${i + 1}`;
750
+ const psp_reference = any.psp_reference || transaction_id;
751
+ const created_by = 'CUSTOMER';
752
+ const journey_label = journeyFromCreatedBy(invoice0?.created_by || sale0?.created_by);
1083
753
  return {
1084
754
  type: g.type,
1085
755
  created_at,
1086
756
  payment_method: pm,
1087
757
  transaction_id,
1088
- card_number,
758
+ card_number: any.card_number || null,
1089
759
  card_holder: null,
1090
760
  card_token: null,
1091
761
  expiration_month: null,
1092
762
  expiration_year: null,
1093
763
  journey_label,
1094
764
  psp_reference,
1095
- card_brand,
1096
- status,
1097
- amount,
765
+ card_brand: null,
766
+ status: 'CAPTURED',
767
+ amount: money(amount),
1098
768
  created_by,
1099
769
  };
1100
770
  });
@@ -1247,10 +917,8 @@ function transformMasterOrder(payload) {
1247
917
  return_total,
1248
918
  net_total,
1249
919
  shipping_method,
920
+ payments,
1250
921
  };
1251
- if (payments.length > 0) {
1252
- result.payments = payments;
1253
- }
1254
922
  if (shipmentsWithItems.length > 0) {
1255
923
  result.shipments = shipmentsWithItems;
1256
924
  }
@@ -1273,3 +941,4 @@ class BCOrderHelper extends runtime_1.default {
1273
941
  }
1274
942
  exports.BCOrderHelper = BCOrderHelper;
1275
943
  exports.default = BCOrderHelper;
944
+ //# sourceMappingURL=bcOrder.js.map