@hszrdm/core 1.7.0 → 1.9.0

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 (233) hide show
  1. package/.medusa/server/src/admin/index.js +6832 -5418
  2. package/.medusa/server/src/admin/index.mjs +6834 -5420
  3. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.js +26 -0
  5. package/.medusa/server/src/api/admin/billingo/advance/route.d.ts +8 -0
  6. package/.medusa/server/src/api/admin/billingo/advance/route.js +55 -0
  7. package/.medusa/server/src/api/admin/billingo/partial-credit/route.d.ts +8 -0
  8. package/.medusa/server/src/api/admin/billingo/partial-credit/route.js +69 -0
  9. package/.medusa/server/src/api/admin/documents/[id]/route.d.ts +22 -0
  10. package/.medusa/server/src/api/admin/documents/[id]/route.js +107 -0
  11. package/.medusa/server/src/api/admin/documents/route.d.ts +21 -0
  12. package/.medusa/server/src/api/admin/documents/route.js +117 -0
  13. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.d.ts +2 -0
  14. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.js +26 -0
  15. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.js +27 -0
  17. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.d.ts +2 -0
  18. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.js +69 -0
  19. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.js +26 -0
  21. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.js +25 -0
  23. package/.medusa/server/src/api/admin/integrations/[key]/verify/route.d.ts +2 -0
  24. package/.medusa/server/src/api/admin/integrations/[key]/verify/route.js +79 -0
  25. package/.medusa/server/src/api/admin/orders/[id]/billingo/route.js +10 -1
  26. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.d.ts +3 -5
  27. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.js +7 -14
  28. package/.medusa/server/src/api/admin/orders/[id]/foxpost/label/route.js +12 -6
  29. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.d.ts +2 -1
  30. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.js +6 -14
  31. package/.medusa/server/src/api/admin/orders/[id]/gls/label/route.js +9 -4
  32. package/.medusa/server/src/api/admin/orders/[id]/shipping/label/route.js +4 -2
  33. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.d.ts +1 -2
  34. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +46 -8
  35. package/.medusa/server/src/api/admin/shipping/bulk/create/route.d.ts +3 -6
  36. package/.medusa/server/src/api/admin/shipping/bulk/create/route.js +6 -57
  37. package/.medusa/server/src/api/admin/shipping/bulk/labels/route.js +4 -2
  38. package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
  39. package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
  40. package/.medusa/server/src/api/admin/shipping/orders/route.js +19 -4
  41. package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
  42. package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
  43. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
  44. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
  45. package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
  46. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
  47. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
  48. package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
  49. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
  50. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
  51. package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
  52. package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
  53. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
  54. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
  55. package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
  56. package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
  57. package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +3 -2
  58. package/.medusa/server/src/api/store/cms/entries/route.js +3 -2
  59. package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
  60. package/.medusa/server/src/api/store/documents/route.js +84 -0
  61. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
  62. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
  63. package/.medusa/server/src/config.d.ts +3 -3
  64. package/.medusa/server/src/config.js +70 -87
  65. package/.medusa/server/src/core/documents.d.ts +31 -0
  66. package/.medusa/server/src/core/documents.js +47 -0
  67. package/.medusa/server/src/core/version.d.ts +2 -2
  68. package/.medusa/server/src/core/version.js +2 -2
  69. package/.medusa/server/src/jobs/mpl-status-sync.js +10 -6
  70. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.d.ts +5 -0
  71. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.js +26 -0
  72. package/.medusa/server/src/jobs/shipping-status-sync.d.ts +6 -0
  73. package/.medusa/server/src/jobs/shipping-status-sync.js +63 -28
  74. package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
  75. package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
  76. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
  77. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
  78. package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
  79. package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
  80. package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
  81. package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
  82. package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -2
  83. package/.medusa/server/src/lib/modules/billingo/client.js +17 -8
  84. package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
  85. package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
  86. package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +42 -2
  87. package/.medusa/server/src/lib/modules/billingo/mapper.js +77 -4
  88. package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
  89. package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
  90. package/.medusa/server/src/lib/modules/billingo/types.d.ts +21 -2
  91. package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
  92. package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
  93. package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
  94. package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
  95. package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
  96. package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
  97. package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
  98. package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
  99. package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
  100. package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
  101. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
  102. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
  103. package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
  104. package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
  105. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
  106. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
  107. package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
  108. package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
  109. package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
  110. package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
  111. package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
  112. package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
  113. package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
  114. package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
  115. package/.medusa/server/src/lib/modules/shipping/actions.d.ts +2 -2
  116. package/.medusa/server/src/lib/modules/shipping/actions.js +171 -352
  117. package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
  118. package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
  119. package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
  120. package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
  121. package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
  122. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.d.ts +73 -0
  123. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.js +191 -0
  124. package/.medusa/server/src/lib/modules/shipping/operations.d.ts +28 -0
  125. package/.medusa/server/src/lib/modules/shipping/operations.js +9 -1
  126. package/.medusa/server/src/lib/modules/shipping/print-eligibility.d.ts +12 -0
  127. package/.medusa/server/src/lib/modules/shipping/print-eligibility.js +34 -0
  128. package/.medusa/server/src/lib/modules/shipping/recipient-email.d.ts +18 -0
  129. package/.medusa/server/src/lib/modules/shipping/recipient-email.js +29 -0
  130. package/.medusa/server/src/lib/modules/shipping/resolve.d.ts +9 -0
  131. package/.medusa/server/src/lib/modules/shipping/resolve.js +65 -0
  132. package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
  133. package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
  134. package/.medusa/server/src/modules/core-documents/index.js +18 -0
  135. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
  136. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
  137. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
  138. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
  139. package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
  140. package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
  141. package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
  142. package/.medusa/server/src/modules/core-documents/service.js +13 -0
  143. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.d.ts +5 -0
  144. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.js +34 -0
  145. package/.medusa/server/src/modules/integration-operation/models/integration-operation.d.ts +1 -1
  146. package/.medusa/server/src/modules/integration-operation/models/integration-operation.js +2 -2
  147. package/.medusa/server/src/modules/integration-operation/service.d.ts +1 -1
  148. package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
  149. package/.medusa/server/src/modules/integration-operation/state.js +11 -50
  150. package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
  151. package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
  152. package/.medusa/server/src/modules/integration-settings/connection-test.js +20 -4
  153. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
  154. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
  155. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
  156. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
  157. package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
  158. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
  159. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
  160. package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
  161. package/.medusa/server/src/modules/integration-settings/index.js +5 -1
  162. package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
  163. package/.medusa/server/src/modules/integration-settings/registry.js +1 -14
  164. package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
  165. package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
  166. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
  167. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
  168. package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
  169. package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
  170. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
  171. package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
  172. package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
  173. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +50 -0
  174. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +248 -0
  175. package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
  176. package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
  177. package/.medusa/server/src/providers/csomagpiac/service.d.ts +60 -0
  178. package/.medusa/server/src/providers/csomagpiac/service.js +296 -0
  179. package/.medusa/server/src/providers/csomagpiac/types.d.ts +66 -0
  180. package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
  181. package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +5 -1
  182. package/.medusa/server/src/providers/dpd/fulfillment-provider.js +94 -27
  183. package/.medusa/server/src/providers/dpd/service.d.ts +2 -0
  184. package/.medusa/server/src/providers/dpd/service.js +32 -4
  185. package/.medusa/server/src/providers/dpd/types.d.ts +1 -0
  186. package/.medusa/server/src/providers/dpd/types.js +1 -1
  187. package/.medusa/server/src/providers/email/service.d.ts +7 -6
  188. package/.medusa/server/src/providers/email/service.js +51 -25
  189. package/.medusa/server/src/providers/foxpost/foxpost-service.d.ts +3 -1
  190. package/.medusa/server/src/providers/foxpost/foxpost-service.js +19 -17
  191. package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +10 -3
  192. package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +99 -69
  193. package/.medusa/server/src/providers/foxpost/types.d.ts +1 -0
  194. package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +4 -0
  195. package/.medusa/server/src/providers/gls/fulfillment-provider.js +87 -17
  196. package/.medusa/server/src/providers/gls/gls-service.d.ts +19 -1
  197. package/.medusa/server/src/providers/gls/gls-service.js +32 -64
  198. package/.medusa/server/src/providers/gls/types.d.ts +16 -0
  199. package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +4 -0
  200. package/.medusa/server/src/providers/mpl/fulfillment-provider.js +67 -176
  201. package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
  202. package/.medusa/server/src/providers/mpl/index.js +7 -2
  203. package/.medusa/server/src/providers/mpl/service.d.ts +37 -1
  204. package/.medusa/server/src/providers/mpl/service.js +113 -366
  205. package/.medusa/server/src/providers/mpl/types.d.ts +19 -0
  206. package/.medusa/server/src/providers/mpl/types.js +1 -1
  207. package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
  208. package/.medusa/server/src/providers/packeta/client.js +24 -2
  209. package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +4 -0
  210. package/.medusa/server/src/providers/packeta/fulfillment-provider.js +84 -9
  211. package/.medusa/server/src/providers/packeta/point-validation.d.ts +2 -0
  212. package/.medusa/server/src/providers/packeta/point-validation.js +99 -0
  213. package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
  214. package/.medusa/server/src/providers/packeta/service.js +91 -23
  215. package/.medusa/server/src/providers/packeta/types.d.ts +27 -0
  216. package/.medusa/server/src/providers/packeta/types.js +1 -1
  217. package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
  218. package/.medusa/server/src/providers/resilient-stripe/index.js +59 -12
  219. package/.medusa/server/src/providers/simplepay/config.js +11 -1
  220. package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
  221. package/.medusa/server/src/providers/simplepay/index.js +5 -3
  222. package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
  223. package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
  224. package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
  225. package/.medusa/server/src/providers/simplepay/service.js +40 -5
  226. package/.medusa/server/src/scripts/verify-runtime-modules.d.ts +7 -0
  227. package/.medusa/server/src/scripts/verify-runtime-modules.js +46 -0
  228. package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
  229. package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
  230. package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
  231. package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
  232. package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
  233. package/package.json +23 -18
@@ -0,0 +1,309 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.billingoAdvance = billingoAdvance;
4
+ exports.createBillingoAdvanceInvoice = createBillingoAdvanceInvoice;
5
+ exports.createBillingoFinalInvoiceFromAdvance = createBillingoFinalInvoiceFromAdvance;
6
+ const node_crypto_1 = require("node:crypto");
7
+ const actions_1 = require("./actions");
8
+ const mapper_1 = require("./mapper");
9
+ const state_1 = require("../../../modules/integration-operation/state");
10
+ const BILLINGO_ORDER_RELATIONS = [
11
+ "billing_address",
12
+ "shipping_address",
13
+ "items",
14
+ "items.tax_lines",
15
+ "shipping_methods",
16
+ "shipping_methods.tax_lines",
17
+ ];
18
+ function billingoAdvance(metadata) {
19
+ const raw = metadata?.billingo_advance;
20
+ if (!raw || typeof raw !== "object")
21
+ return null;
22
+ const value = raw;
23
+ return Number.isInteger(Number(value.documentId)) && Number(value.documentId) > 0
24
+ ? value
25
+ : null;
26
+ }
27
+ async function createBillingoAdvanceInvoice(input) {
28
+ const startedAt = Date.now();
29
+ const actorId = input.actorId || "system";
30
+ const client = input.client || actions_1.billingoClient;
31
+ let order = await retrieveFullOrder(input.orderService, input.orderId);
32
+ const existing = billingoAdvance(order.metadata);
33
+ if (existing)
34
+ return { advance: existing, alreadyExisted: true };
35
+ if ((0, actions_1.billingoInvoice)(order.metadata)) {
36
+ throw new Error("Ehhez a rendeléshez már készült végleges Billingo számla.");
37
+ }
38
+ const ratio = input.ratio ?? 1;
39
+ if (!Number.isFinite(ratio) || ratio <= 0 || ratio > 1) {
40
+ throw new Error("Az előleg aránya 0-nál nagyobb és legfeljebb 1 lehet.");
41
+ }
42
+ let durable;
43
+ let remoteDocument;
44
+ try {
45
+ if (input.operationStore) {
46
+ const acquired = await (0, state_1.acquireOperation)(input.operationStore, {
47
+ provider: "billingo",
48
+ operation_type: "advance.create",
49
+ entity_type: "order",
50
+ entity_id: order.id,
51
+ idempotency_key: `billingo:advance:${order.id}`,
52
+ reference_data: { ratio },
53
+ });
54
+ durable = acquired.operation;
55
+ if (!acquired.acquired) {
56
+ if (durable.external_id &&
57
+ ["succeeded", "needs_reconciliation"].includes(durable.status)) {
58
+ const document = await client.getDocument(Number(durable.external_id));
59
+ const storedRatio = Number(durable.reference_data?.ratio ?? ratio);
60
+ const advance = advanceFromDocument(document, Number.isFinite(storedRatio) && storedRatio > 0 && storedRatio <= 1
61
+ ? storedRatio
62
+ : ratio);
63
+ await saveAdvance(input.orderService, order, advance, successOperation("create_advance", actorId, Date.now() - startedAt, `A(z) ${advance.invoiceNumber || advance.documentId} Billingo előlegszámla már létezik.`));
64
+ if (durable.status !== "succeeded") {
65
+ await (0, state_1.operationSucceeded)(input.operationStore, durable, String(document.id), {
66
+ ratio: advance.ratio,
67
+ invoiceNumber: document.invoice_number ?? null,
68
+ });
69
+ }
70
+ return {
71
+ advance,
72
+ alreadyExisted: true,
73
+ reconciled: durable.status === "needs_reconciliation",
74
+ };
75
+ }
76
+ return {
77
+ advance: existing,
78
+ alreadyExisted: true,
79
+ processing: durable.status === "processing",
80
+ reconciliationRequired: durable.status === "needs_reconciliation",
81
+ };
82
+ }
83
+ }
84
+ const partnerId = await ensurePartner(input.orderService, order, client);
85
+ order = await retrieveFullOrder(input.orderService, input.orderId);
86
+ remoteDocument = await client.createDocument((0, mapper_1.advanceFromOrder)(order, partnerId, ratio));
87
+ const advance = advanceFromDocument(remoteDocument, ratio);
88
+ await saveAdvance(input.orderService, order, advance, successOperation("create_advance", actorId, Date.now() - startedAt, `A(z) ${advance.invoiceNumber || advance.documentId} Billingo előlegszámla elkészült.`));
89
+ if (durable && input.operationStore) {
90
+ await (0, state_1.operationSucceeded)(input.operationStore, durable, String(remoteDocument.id), {
91
+ ratio,
92
+ invoiceNumber: remoteDocument.invoice_number ?? null,
93
+ });
94
+ }
95
+ return { advance, alreadyExisted: false };
96
+ }
97
+ catch (error) {
98
+ if (durable && input.operationStore) {
99
+ await (0, state_1.operationFailed)(input.operationStore, durable, error, Boolean(remoteDocument), remoteDocument ? String(remoteDocument.id) : undefined, remoteDocument
100
+ ? { ratio, invoiceNumber: remoteDocument.invoice_number ?? null }
101
+ : durable.reference_data ?? undefined);
102
+ }
103
+ order = await input.orderService.retrieveOrder(input.orderId);
104
+ await saveOperation(input.orderService, order, failedOperation("create_advance", actorId, Date.now() - startedAt, error instanceof Error ? error.message : "A Billingo előlegszámla létrehozása nem sikerült."));
105
+ throw error;
106
+ }
107
+ }
108
+ async function createBillingoFinalInvoiceFromAdvance(input) {
109
+ const startedAt = Date.now();
110
+ const actorId = input.actorId || "system";
111
+ const client = input.client || actions_1.billingoClient;
112
+ let order = await retrieveFullOrder(input.orderService, input.orderId);
113
+ const existingInvoice = (0, actions_1.billingoInvoice)(order.metadata);
114
+ if (existingInvoice)
115
+ return { invoice: existingInvoice, alreadyExisted: true };
116
+ let advance = billingoAdvance(order.metadata);
117
+ if (!advance)
118
+ throw new Error("Ehhez a rendeléshez nem tartozik Billingo előlegszámla.");
119
+ if (advance.finalDocumentId) {
120
+ const document = await client.getDocument(advance.finalDocumentId);
121
+ const invoice = invoiceFromFinalDocument(document, advance);
122
+ await saveFinal(input.orderService, order, advance, invoice, successOperation("create_final_from_advance", actorId, Date.now() - startedAt, `A(z) ${invoice.invoiceNumber || invoice.documentId} Billingo végszámla már létezik.`));
123
+ return { invoice, alreadyExisted: true };
124
+ }
125
+ let durable;
126
+ let remoteDocument;
127
+ try {
128
+ if (input.operationStore) {
129
+ const acquired = await (0, state_1.acquireOperation)(input.operationStore, {
130
+ provider: "billingo",
131
+ operation_type: "advance.finalize",
132
+ entity_type: "order",
133
+ entity_id: order.id,
134
+ idempotency_key: `billingo:advance-final:${order.id}:${advance.documentId}`,
135
+ reference_data: { advanceDocumentId: advance.documentId },
136
+ });
137
+ durable = acquired.operation;
138
+ if (!acquired.acquired) {
139
+ if (durable.external_id &&
140
+ ["succeeded", "needs_reconciliation"].includes(durable.status)) {
141
+ const document = await client.getDocument(Number(durable.external_id));
142
+ const invoice = invoiceFromFinalDocument(document, advance);
143
+ await saveFinal(input.orderService, order, advance, invoice, successOperation("create_final_from_advance", actorId, Date.now() - startedAt, `A(z) ${invoice.invoiceNumber || invoice.documentId} Billingo végszámla már létezik.`));
144
+ if (durable.status !== "succeeded") {
145
+ await (0, state_1.operationSucceeded)(input.operationStore, durable, String(document.id), {
146
+ advanceDocumentId: advance.documentId,
147
+ invoiceNumber: document.invoice_number ?? null,
148
+ });
149
+ }
150
+ return {
151
+ invoice,
152
+ alreadyExisted: true,
153
+ reconciled: durable.status === "needs_reconciliation",
154
+ };
155
+ }
156
+ return {
157
+ invoice: null,
158
+ alreadyExisted: true,
159
+ processing: durable.status === "processing",
160
+ reconciliationRequired: durable.status === "needs_reconciliation",
161
+ };
162
+ }
163
+ }
164
+ const partnerId = await ensurePartner(input.orderService, order, client);
165
+ order = await retrieveFullOrder(input.orderService, input.orderId);
166
+ remoteDocument = await client.createDocument((0, mapper_1.finalInvoiceFromAdvance)(order, partnerId, advance.documentId));
167
+ const invoice = invoiceFromFinalDocument(remoteDocument, advance);
168
+ advance = {
169
+ ...advance,
170
+ finalDocumentId: remoteDocument.id,
171
+ finalInvoiceNumber: remoteDocument.invoice_number ?? null,
172
+ finalizedAt: new Date().toISOString(),
173
+ updatedAt: new Date().toISOString(),
174
+ };
175
+ await saveFinal(input.orderService, order, advance, invoice, successOperation("create_final_from_advance", actorId, Date.now() - startedAt, `A(z) ${invoice.invoiceNumber || invoice.documentId} Billingo végszámla elkészült az előleg beszámításával.`));
176
+ if (durable && input.operationStore) {
177
+ await (0, state_1.operationSucceeded)(input.operationStore, durable, String(remoteDocument.id), {
178
+ advanceDocumentId: advance.documentId,
179
+ invoiceNumber: remoteDocument.invoice_number ?? null,
180
+ });
181
+ }
182
+ return { invoice, alreadyExisted: false };
183
+ }
184
+ catch (error) {
185
+ if (durable && input.operationStore) {
186
+ await (0, state_1.operationFailed)(input.operationStore, durable, error, Boolean(remoteDocument), remoteDocument ? String(remoteDocument.id) : undefined, remoteDocument
187
+ ? {
188
+ advanceDocumentId: advance.documentId,
189
+ invoiceNumber: remoteDocument.invoice_number ?? null,
190
+ }
191
+ : durable.reference_data ?? undefined);
192
+ }
193
+ order = await input.orderService.retrieveOrder(input.orderId);
194
+ await saveOperation(input.orderService, order, failedOperation("create_final_from_advance", actorId, Date.now() - startedAt, error instanceof Error ? error.message : "A Billingo végszámla létrehozása nem sikerült."));
195
+ throw error;
196
+ }
197
+ }
198
+ async function ensurePartner(orderService, order, client) {
199
+ const existing = Number(order.metadata?.billingo_partner_id);
200
+ if (Number.isInteger(existing) && existing > 0)
201
+ return existing;
202
+ const partner = await client.createPartner((0, mapper_1.partnerFromOrder)(order));
203
+ if (!Number.isInteger(partner.id) || partner.id <= 0) {
204
+ throw new Error("A Billingo nem adott vissza partnerazonosítót.");
205
+ }
206
+ await orderService.updateOrders([{
207
+ id: order.id,
208
+ metadata: { ...(order.metadata ?? {}), billingo_partner_id: partner.id },
209
+ }]);
210
+ return partner.id;
211
+ }
212
+ function advanceFromDocument(document, ratio) {
213
+ const now = new Date().toISOString();
214
+ return {
215
+ documentId: document.id,
216
+ invoiceNumber: document.invoice_number ?? null,
217
+ ratio,
218
+ paymentStatus: document.payment_status ?? null,
219
+ grossTotal: document.gross_total ?? null,
220
+ currency: document.currency ?? null,
221
+ createdAt: now,
222
+ updatedAt: now,
223
+ finalDocumentId: null,
224
+ finalInvoiceNumber: null,
225
+ finalizedAt: null,
226
+ };
227
+ }
228
+ function invoiceFromFinalDocument(document, advance) {
229
+ const now = new Date().toISOString();
230
+ return {
231
+ documentId: document.id,
232
+ invoiceNumber: document.invoice_number ?? null,
233
+ paymentStatus: document.payment_status ?? null,
234
+ notificationStatus: document.notification_status ?? null,
235
+ onlineSzamlaStatus: document.online_szamla_status ?? null,
236
+ cancelled: Boolean(document.cancelled),
237
+ grossTotal: document.gross_total ?? null,
238
+ currency: document.currency ?? null,
239
+ createdAt: now,
240
+ updatedAt: now,
241
+ sentAt: null,
242
+ advanceDocumentId: advance.documentId,
243
+ advanceInvoiceNumber: advance.invoiceNumber ?? null,
244
+ };
245
+ }
246
+ async function retrieveFullOrder(orderService, orderId) {
247
+ return orderService.retrieveOrder(orderId, { relations: BILLINGO_ORDER_RELATIONS });
248
+ }
249
+ async function saveAdvance(orderService, order, advance, operation) {
250
+ await orderService.updateOrders([{
251
+ id: order.id,
252
+ metadata: {
253
+ ...(order.metadata ?? {}),
254
+ billingo_advance: advance,
255
+ billingo_operations: [...(0, actions_1.billingoOperations)(order.metadata), operation].slice(-100),
256
+ },
257
+ }]);
258
+ }
259
+ async function saveFinal(orderService, order, advance, invoice, operation) {
260
+ const now = new Date().toISOString();
261
+ const finalizedAdvance = {
262
+ ...advance,
263
+ finalDocumentId: invoice.documentId,
264
+ finalInvoiceNumber: invoice.invoiceNumber ?? null,
265
+ finalizedAt: advance.finalizedAt || now,
266
+ updatedAt: now,
267
+ };
268
+ await orderService.updateOrders([{
269
+ id: order.id,
270
+ metadata: {
271
+ ...(order.metadata ?? {}),
272
+ billingo: invoice,
273
+ billingo_advance: finalizedAdvance,
274
+ billingo_operations: [...(0, actions_1.billingoOperations)(order.metadata), operation].slice(-100),
275
+ },
276
+ }]);
277
+ }
278
+ async function saveOperation(orderService, order, operation) {
279
+ await orderService.updateOrders([{
280
+ id: order.id,
281
+ metadata: {
282
+ ...(order.metadata ?? {}),
283
+ billingo_operations: [...(0, actions_1.billingoOperations)(order.metadata), operation].slice(-100),
284
+ },
285
+ }]);
286
+ }
287
+ function successOperation(action, actorId, durationMs, message) {
288
+ return {
289
+ id: (0, node_crypto_1.randomUUID)(),
290
+ action,
291
+ status: "success",
292
+ actorId,
293
+ createdAt: new Date().toISOString(),
294
+ durationMs,
295
+ message,
296
+ };
297
+ }
298
+ function failedOperation(action, actorId, durationMs, message) {
299
+ return {
300
+ id: (0, node_crypto_1.randomUUID)(),
301
+ action,
302
+ status: "failed",
303
+ actorId,
304
+ createdAt: new Date().toISOString(),
305
+ durationMs,
306
+ message,
307
+ };
308
+ }
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlcy9iaWxsaW5nby9hZHZhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0RBLDBDQU9DO0FBRUQsb0VBcUpDO0FBRUQsc0ZBZ0tDO0FBaFhELDZDQUF3QztBQUN4Qyx1Q0FBK0U7QUFFL0UscUNBSWlCO0FBUWpCLHdFQUlxRDtBQU1yRCxNQUFNLHdCQUF3QixHQUFHO0lBQy9CLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsT0FBTztJQUNQLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsNEJBQTRCO0NBQzdCLENBQUE7QUFnQkQsU0FBZ0IsZUFBZSxDQUFDLFFBQXlDO0lBQ3ZFLE1BQU0sR0FBRyxHQUFHLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQTtJQUN0QyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNoRCxNQUFNLEtBQUssR0FBRyxHQUErQixDQUFBO0lBQzdDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxLQUF3QjtRQUMxQixDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ1YsQ0FBQztBQUVNLEtBQUssVUFBVSw0QkFBNEIsQ0FBQyxLQU9sRDtJQUNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQTtJQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLHdCQUFjLENBQUE7SUFDN0MsSUFBSSxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxLQUFL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
@@ -5,6 +5,7 @@ const utils_1 = require("@medusajs/framework/utils");
5
5
  const actions_1 = require("./actions");
6
6
  const policy_1 = require("./policy");
7
7
  const integration_operation_1 = require("../../../modules/integration-operation");
8
+ const state_1 = require("../../../modules/integration-operation/state");
8
9
  async function runBillingoAutomaticInvoice(input) {
9
10
  if (process.env.BILLINGO_ENABLED !== "true")
10
11
  return { skipped: true, reason: "disabled" };
@@ -15,11 +16,12 @@ async function runBillingoAutomaticInvoice(input) {
15
16
  const logger = input.container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
16
17
  const orderService = input.container.resolve(utils_1.Modules.ORDER);
17
18
  const before = await orderService.retrieveOrder(input.orderId);
18
- // Bank transfer keeps a thin Billingo proforma/instructions adapter. Payment
19
- // state itself remains owned by Medusa's system payment provider.
20
19
  if (String(before.metadata?.core_payment_method ?? "") === "bank_transfer") {
21
20
  return { skipped: true, reason: "bank-transfer-proforma-owned" };
22
21
  }
22
+ if (before.metadata?.billingo_advance && !(0, actions_1.billingoInvoice)(before.metadata)) {
23
+ return { skipped: true, reason: "advance-workflow-owned" };
24
+ }
23
25
  let operationStore;
24
26
  try {
25
27
  const resolved = input.container.resolve(integration_operation_1.INTEGRATION_OPERATION_MODULE);
@@ -41,14 +43,52 @@ async function runBillingoAutomaticInvoice(input) {
41
43
  const current = await orderService.retrieveOrder(input.orderId);
42
44
  const invoice = (0, actions_1.billingoInvoice)(current.metadata) || created.invoice;
43
45
  if (process.env.BILLINGO_AUTO_SEND !== "false" && !invoice.sentAt) {
44
- await (0, actions_1.executeBillingoAction)({
45
- orderService,
46
- orderId: input.orderId,
47
- action: "send",
48
- actorId: input.actorId,
49
- });
46
+ if (!operationStore) {
47
+ await (0, actions_1.executeBillingoAction)({
48
+ orderService,
49
+ orderId: input.orderId,
50
+ action: "send",
51
+ actorId: input.actorId,
52
+ });
53
+ }
54
+ else {
55
+ const acquired = await (0, state_1.acquireOperation)(operationStore, {
56
+ provider: "billingo",
57
+ operation_type: "invoice.send",
58
+ entity_type: "order",
59
+ entity_id: input.orderId,
60
+ idempotency_key: `billingo:invoice-send:${input.orderId}:${invoice.documentId}`,
61
+ external_id: String(invoice.documentId),
62
+ reference_data: {
63
+ documentId: invoice.documentId,
64
+ invoiceNumber: invoice.invoiceNumber ?? null,
65
+ email: current.email ?? null,
66
+ },
67
+ });
68
+ if (acquired.acquired) {
69
+ try {
70
+ await (0, actions_1.executeBillingoAction)({
71
+ orderService,
72
+ orderId: input.orderId,
73
+ action: "send",
74
+ actorId: input.actorId,
75
+ });
76
+ await (0, state_1.operationSucceeded)(operationStore, acquired.operation, String(invoice.documentId), acquired.operation.reference_data ?? undefined);
77
+ }
78
+ catch (error) {
79
+ await (0, state_1.operationFailed)(operationStore, acquired.operation, error, false, String(invoice.documentId), acquired.operation.reference_data ?? undefined);
80
+ throw error;
81
+ }
82
+ }
83
+ else if (acquired.operation.status === "needs_reconciliation") {
84
+ logger.warn(`Billingo automatic invoice email for order ${input.orderId} requires reconciliation; resend blocked.`);
85
+ }
86
+ else if (acquired.operation.status === "processing") {
87
+ logger.info(`Billingo automatic invoice email already processing for order ${input.orderId}.`);
88
+ }
89
+ }
50
90
  }
51
91
  logger.info(`Billingo automatic invoice completed for order ${input.orderId} (${input.trigger}).`);
52
92
  return { skipped: false, invoice };
53
93
  }
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b21hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlcy9iaWxsaW5nby9hdXRvbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBbUJBLGtFQW1EQztBQXRFRCxxREFBOEU7QUFDOUUsdUNBQWtFO0FBQ2xFLHFDQUFtRjtBQUVuRixrRkFHK0M7QUFZeEMsS0FBSyxVQUFVLDJCQUEyQixDQUFDLEtBS2pEO0lBQ0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixLQUFLLE1BQU07UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUE7SUFDekYsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixLQUFLLE9BQU87UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQTtJQUM1RyxJQUFJLENBQUMsSUFBQSxvQ0FBMkIsRUFBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLENBQUE7SUFFckcsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFXLENBQUE7SUFDbEYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBeUIsQ0FBQTtJQUNuRixNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRTlELDZFQUE2RTtJQUM3RSxrRUFBa0U7SUFDbEUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsSUFBSSxFQUFFLENBQUMsS0FBSyxlQUFlLEVBQUUsQ0FBQztRQUMzRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsOEJBQThCLEVBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsSUFBSSxjQUF1RCxDQUFBO0lBQzNELElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLG9EQUE0QixDQUFnQyxDQUFBO1FBQ3JHLElBQUksT0FBTyxRQUFRLEVBQUUsMkJBQTJCLEtBQUssVUFBVTtZQUFFLGNBQWMsR0FBRyxRQUFRLENBQUE7SUFDNUYsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLG9GQUFvRjtJQUN0RixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLCtCQUFxQixFQUFDO1FBQzFDLFlBQVk7UUFDWixjQUFjO1FBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1FBQ3RCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztLQUN2QixDQUFDLENBQUE7SUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87UUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQTtJQUU3RSxNQUFNLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUEseUJBQWUsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQTtJQUVwRSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xFLE1BQU0sSUFBQSwrQkFBcUIsRUFBQztZQUMxQixZQUFZO1lBQ1osT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLGtEQUFrRCxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFBO0lBQ2xHLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFBO0FBQ3BDLENBQUMifQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b21hdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlcy9iaWxsaW5nby9hdXRvbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLGtFQXdHQztBQWhJRCxxREFBOEU7QUFDOUUsdUNBQWtFO0FBQ2xFLHFDQUFtRjtBQUVuRixrRkFHK0M7QUFDL0Msd0VBSXFEO0FBWTlDLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxLQUtqRDtJQUNDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFBO0lBQ3pGLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsS0FBSyxPQUFPO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLHVCQUF1QixFQUFFLENBQUE7SUFDNUcsSUFBSSxDQUFDLElBQUEsb0NBQTJCLEVBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxDQUFBO0lBRXJHLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBVyxDQUFBO0lBQ2xGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQXlCLENBQUE7SUFDbkYsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUU5RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLG1CQUFtQixJQUFJLEVBQUUsQ0FBQyxLQUFLLGVBQWUsRUFBRSxDQUFDO1FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSw4QkFBOEIsRUFBRSxDQUFBO0lBQ2xFLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxJQUFBLHlCQUFlLEVBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLHdCQUF3QixFQUFFLENBQUE7SUFDNUQsQ0FBQztJQUVELElBQUksY0FBdUQsQ0FBQTtJQUMzRCxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxvREFBNEIsQ0FBZ0MsQ0FBQTtRQUNyRyxJQUFJLE9BQU8sUUFBUSxFQUFFLDJCQUEyQixLQUFLLFVBQVU7WUFBRSxjQUFjLEdBQUcsUUFBUSxDQUFBO0lBQzVGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxvRkFBb0Y7SUFDdEYsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwrQkFBcUIsRUFBQztRQUMxQyxZQUFZO1FBQ1osY0FBYztRQUNkLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixNQUFNLEVBQUUsUUFBUTtRQUNoQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1FBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLENBQUE7SUFFN0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFlLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFFcEUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFBLCtCQUFxQixFQUFDO2dCQUMxQixZQUFZO2dCQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUMsQ0FBQTtRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHdCQUFnQixFQUFDLGNBQWMsRUFBRTtnQkFDdEQsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLGNBQWMsRUFBRSxjQUFjO2dCQUM5QixXQUFXLEVBQUUsT0FBTztnQkFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN4QixlQUFlLEVBQUUseUJBQXlCLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDL0UsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2dCQUN2QyxjQUFjLEVBQUU7b0JBQ2QsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO29CQUM5QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJO29CQUM1QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJO2lCQUM3QjthQUNGLENBQUMsQ0FBQTtZQUVGLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFBLCtCQUFxQixFQUFDO3dCQUMxQixZQUFZO3dCQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsTUFBTSxFQUFFLE1BQU07d0JBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUE7b0JBQ0YsTUFBTSxJQUFBLDBCQUFrQixFQUN0QixjQUFjLEVBQ2QsUUFBUSxDQUFDLFNBQVMsRUFDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFDMUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksU0FBUyxDQUMvQyxDQUFBO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixNQUFNLElBQUEsdUJBQWUsRUFDbkIsY0FBYyxFQUNkLFFBQVEsQ0FBQyxTQUFTLEVBQ2xCLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFDMUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLElBQUksU0FBUyxDQUMvQyxDQUFBO29CQUNELE1BQU0sS0FBSyxDQUFBO2dCQUNiLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxDQUFDLElBQUksQ0FDVCw4Q0FBOEMsS0FBSyxDQUFDLE9BQU8sMkNBQTJDLENBQ3ZHLENBQUE7WUFDSCxDQUFDO2lCQUFNLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssWUFBWSxFQUFFLENBQUM7Z0JBQ3RELE1BQU0sQ0FBQyxJQUFJLENBQ1QsaUVBQWlFLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FDbEYsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsa0RBQWtELEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUE7SUFDbEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUE7QUFDcEMsQ0FBQyJ9
@@ -2,13 +2,16 @@ import type { BillingoDocument, BillingoDocumentInput, BillingoModificationDocum
2
2
  type BillingoClientOptions = {
3
3
  apiKey?: string;
4
4
  apiUrl?: string;
5
- timeoutMs?: number;
6
5
  };
7
6
  export declare class BillingoApiError extends Error {
8
7
  readonly status: number;
9
8
  readonly details?: unknown | undefined;
10
- constructor(message: string, status?: number, details?: unknown | undefined);
9
+ readonly remoteOutcomeUncertain: boolean;
10
+ constructor(message: string, status?: number, details?: unknown | undefined, options?: {
11
+ remoteOutcomeUncertain?: boolean;
12
+ });
11
13
  }
14
+ export declare function isBillingoRemoteOutcomeUncertain(error: unknown): boolean;
12
15
  export declare class BillingoClient {
13
16
  private readonly options;
14
17
  constructor(options?: BillingoClientOptions);
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BillingoClient = exports.BillingoApiError = void 0;
4
+ exports.isBillingoRemoteOutcomeUncertain = isBillingoRemoteOutcomeUncertain;
4
5
  exports.numberEnv = numberEnv;
5
6
  exports.positiveIntegerEnv = positiveIntegerEnv;
6
7
  class BillingoApiError extends Error {
7
- constructor(message, status = 500, details) {
8
+ constructor(message, status = 500, details, options = {}) {
8
9
  super(message);
9
10
  this.status = status;
10
11
  this.details = details;
11
12
  this.name = "BillingoApiError";
13
+ this.remoteOutcomeUncertain = options.remoteOutcomeUncertain === true;
12
14
  }
13
15
  }
14
16
  exports.BillingoApiError = BillingoApiError;
17
+ function isBillingoRemoteOutcomeUncertain(error) {
18
+ return error instanceof BillingoApiError && error.remoteOutcomeUncertain;
19
+ }
15
20
  class BillingoClient {
16
21
  constructor(options = {}) {
17
22
  this.options = options;
@@ -23,13 +28,16 @@ class BillingoClient {
23
28
  * remain stable, which is useful for tests and one-off connection checks.
24
29
  */
25
30
  get apiUrl() {
26
- return (this.options.apiUrl || process.env.BILLINGO_API_URL || "https://api.billingo.hu/v3").replace(/\/$/, "");
31
+ return (this.options.apiUrl || "https://api.billingo.hu/v3").replace(/\/$/, "");
27
32
  }
28
33
  get apiKey() {
29
34
  return this.options.apiKey ?? process.env.BILLINGO_API_KEY ?? "";
30
35
  }
31
36
  get timeoutMs() {
32
- return this.options.timeoutMs ?? numberEnv("BILLINGO_TIMEOUT_MS", 15_000);
37
+ const configured = Number(process.env.BILLINGO_TIMEOUT_MS ?? "30000");
38
+ return Number.isInteger(configured) && configured >= 1_000 && configured <= 120_000
39
+ ? configured
40
+ : 30_000;
33
41
  }
34
42
  isConfigured() {
35
43
  return Boolean(this.apiKey && positiveIntegerEnv("BILLINGO_DOCUMENT_BLOCK_ID"));
@@ -94,7 +102,7 @@ class BillingoClient {
94
102
  });
95
103
  if (!response.ok) {
96
104
  const details = await readError(response);
97
- throw new BillingoApiError(errorMessage(details, response.status), response.status, details);
105
+ throw new BillingoApiError(errorMessage(details, response.status), response.status, details, { remoteOutcomeUncertain: response.status >= 500 });
98
106
  }
99
107
  if (options.responseType === "arrayBuffer")
100
108
  return await response.arrayBuffer();
@@ -105,9 +113,10 @@ class BillingoClient {
105
113
  catch (error) {
106
114
  if (error instanceof BillingoApiError)
107
115
  throw error;
108
- if (error?.name === "AbortError")
109
- throw new BillingoApiError("A Billingo nem válaszolt időben.", 504);
110
- throw new BillingoApiError(`A Billingo API nem érhető el: ${error instanceof Error ? error.message : String(error)}`, 502);
116
+ if (error?.name === "AbortError") {
117
+ throw new BillingoApiError("A Billingo nem válaszolt időben.", 504, undefined, { remoteOutcomeUncertain: true });
118
+ }
119
+ throw new BillingoApiError(`A Billingo API nem érhető el: ${error instanceof Error ? error.message : String(error)}`, 502, undefined, { remoteOutcomeUncertain: true });
111
120
  }
112
121
  finally {
113
122
  clearTimeout(timeout);
@@ -145,4 +154,4 @@ function positiveIntegerEnv(name) {
145
154
  const value = Number(process.env[name]);
146
155
  return Number.isInteger(value) && value > 0 ? value : null;
147
156
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGVzL2JpbGxpbmdvL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvSkEsOEJBR0M7QUFFRCxnREFHQztBQWhKRCxNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFDekMsWUFBWSxPQUFlLEVBQVcsU0FBUyxHQUFHLEVBQVcsT0FBaUI7UUFDNUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRHNCLFdBQU0sR0FBTixNQUFNLENBQU07UUFBVyxZQUFPLEdBQVAsT0FBTyxDQUFVO1FBRTVFLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUE7SUFDaEMsQ0FBQztDQUNGO0FBTEQsNENBS0M7QUFFRCxNQUFhLGNBQWM7SUFHekIsWUFBWSxVQUFpQyxFQUFFO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQ3hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLDRCQUE0QixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNqSCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLGtCQUFr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
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGVzL2JpbGxpbmdvL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwQkEsNEVBRUM7QUF1SkQsOEJBR0M7QUFFRCxnREFHQztBQWhMRCxNQUFhLGdCQUFpQixTQUFRLEtBQUs7SUFHekMsWUFDRSxPQUFlLEVBQ04sU0FBUyxHQUFHLEVBQ1osT0FBaUIsRUFDMUIsVUFBZ0QsRUFBRTtRQUVsRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFKTCxXQUFNLEdBQU4sTUFBTSxDQUFNO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUkxQixJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFBO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUMsc0JBQXNCLEtBQUssSUFBSSxDQUFBO0lBQ3ZFLENBQUM7Q0FDRjtBQWJELDRDQWFDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQUMsS0FBYztJQUM3RCxPQUFPLEtBQUssWUFBWSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUE7QUFDMUUsQ0FBQztBQUVELE1BQWEsY0FBYztJQUd6QixZQUFZLFVBQWlDLEVBQUU7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDeEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxNQUFNO1FBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLDRCQUE0QixDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNqRixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsSUFB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
@@ -1,8 +1,10 @@
1
1
  export * from "./actions";
2
+ export * from "./advance";
2
3
  export * from "./automation";
3
4
  export * from "./client";
4
5
  export * from "./credit";
5
6
  export * from "./mapper";
7
+ export * from "./partial-credit";
6
8
  export * from "./policy";
7
9
  export * from "./proforma";
8
10
  export * from "./types";
@@ -15,11 +15,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./actions"), exports);
18
+ __exportStar(require("./advance"), exports);
18
19
  __exportStar(require("./automation"), exports);
19
20
  __exportStar(require("./client"), exports);
20
21
  __exportStar(require("./credit"), exports);
21
22
  __exportStar(require("./mapper"), exports);
23
+ __exportStar(require("./partial-credit"), exports);
22
24
  __exportStar(require("./policy"), exports);
23
25
  __exportStar(require("./proforma"), exports);
24
26
  __exportStar(require("./types"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvYmlsbGluZ28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUF5QjtBQUN6QiwrQ0FBNEI7QUFDNUIsMkNBQXdCO0FBQ3hCLDJDQUF3QjtBQUN4QiwyQ0FBd0I7QUFDeEIsMkNBQXdCO0FBQ3hCLDZDQUEwQjtBQUMxQiwwQ0FBdUIifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvYmlsbGluZ28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUF5QjtBQUN6Qiw0Q0FBeUI7QUFDekIsK0NBQTRCO0FBQzVCLDJDQUF3QjtBQUN4QiwyQ0FBd0I7QUFDeEIsMkNBQXdCO0FBQ3hCLG1EQUFnQztBQUNoQywyQ0FBd0I7QUFDeEIsNkNBQTBCO0FBQzFCLDBDQUF1QiJ9
@@ -1,4 +1,4 @@
1
- import type { BillingoDocumentInput, BillingoOrder, BillingoPaymentMethod, BillingoTaxLine } from "./types";
1
+ import type { BillingoDocumentInput, BillingoOrder, BillingoPaymentMethod, BillingoLineItem, BillingoTaxLine } from "./types";
2
2
  export declare function partnerFromOrder(order: BillingoOrder): {
3
3
  tax_type?: string | undefined;
4
4
  eu_tax_number?: string | undefined;
@@ -14,13 +14,53 @@ export declare function partnerFromOrder(order: BillingoOrder): {
14
14
  phone: string | undefined;
15
15
  };
16
16
  export declare function documentFromOrder(order: BillingoOrder, partnerId: number, now?: Date, options?: {
17
- type?: "invoice" | "proforma";
17
+ type?: "invoice" | "proforma" | "advance";
18
18
  paymentMethod?: BillingoPaymentMethod;
19
19
  paid?: boolean;
20
20
  dueDays?: number;
21
21
  vendorSuffix?: string;
22
+ advanceInvoice?: number;
22
23
  }): BillingoDocumentInput;
23
24
  export declare function proformaFromOrder(order: BillingoOrder, partnerId: number, now?: Date): BillingoDocumentInput;
25
+ export declare function advanceFromOrder(order: BillingoOrder, partnerId: number, ratio?: number, now?: Date): {
26
+ items: {
27
+ comment?: string;
28
+ unit_price: number;
29
+ name: string;
30
+ unit_price_type: "gross";
31
+ quantity: number;
32
+ unit: string;
33
+ vat: string;
34
+ sku?: string;
35
+ entitlement?: string;
36
+ }[];
37
+ vendor_id: string;
38
+ partner_id: number;
39
+ block_id: number;
40
+ bank_account_id?: number;
41
+ type: "invoice" | "proforma" | "advance";
42
+ fulfillment_date: string;
43
+ due_date: string;
44
+ payment_method: BillingoPaymentMethod;
45
+ language: "hu" | "en";
46
+ currency: string;
47
+ electronic: boolean;
48
+ paid: boolean;
49
+ comment?: string;
50
+ advance_invoice?: number;
51
+ settings?: {
52
+ order_number?: string;
53
+ mediated_service?: boolean;
54
+ without_financial_fulfillment?: boolean;
55
+ online_payment?: "" | "Barion" | "SimplePay" | "no";
56
+ round?: "five" | "none" | "one" | "ten";
57
+ place_id?: number;
58
+ };
59
+ };
60
+ export declare function finalInvoiceFromAdvance(order: BillingoOrder, partnerId: number, advanceDocumentId: number, now?: Date): BillingoDocumentInput;
24
61
  export declare function paymentMethod(value?: string): BillingoPaymentMethod;
62
+ /** Determine payment method from the selected checkout method, never a shop-wide default. */
25
63
  export declare function paymentMethodForOrder(order: BillingoOrder): BillingoPaymentMethod;
64
+ /** Explicit order-line snapshot takes precedence; fall back to product metadata, then db. */
65
+ export declare function billingoUnit(item: BillingoLineItem): string;
26
66
  export declare function vatFromMedusaTaxLines(taxLines: BillingoTaxLine[] | null | undefined, label?: string): string;