@stamhoofd/models 2.1.1

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 (481) hide show
  1. package/dist/src/assets/Metropolis-Black.woff2 +0 -0
  2. package/dist/src/assets/Metropolis-BlackItalic.woff2 +0 -0
  3. package/dist/src/assets/Metropolis-Bold.woff2 +0 -0
  4. package/dist/src/assets/Metropolis-BoldItalic.woff2 +0 -0
  5. package/dist/src/assets/Metropolis-ExtraBold.woff2 +0 -0
  6. package/dist/src/assets/Metropolis-ExtraBoldItalic.woff2 +0 -0
  7. package/dist/src/assets/Metropolis-ExtraLight.woff2 +0 -0
  8. package/dist/src/assets/Metropolis-ExtraLightItalic.woff2 +0 -0
  9. package/dist/src/assets/Metropolis-Light.woff2 +0 -0
  10. package/dist/src/assets/Metropolis-LightItalic.woff2 +0 -0
  11. package/dist/src/assets/Metropolis-Medium.woff2 +0 -0
  12. package/dist/src/assets/Metropolis-MediumItalic.woff2 +0 -0
  13. package/dist/src/assets/Metropolis-Regular.woff2 +0 -0
  14. package/dist/src/assets/Metropolis-RegularItalic.woff2 +0 -0
  15. package/dist/src/assets/Metropolis-SemiBold.woff2 +0 -0
  16. package/dist/src/assets/Metropolis-SemiBoldItalic.woff2 +0 -0
  17. package/dist/src/assets/Metropolis-Thin.woff2 +0 -0
  18. package/dist/src/assets/Metropolis-ThinItalic.woff2 +0 -0
  19. package/dist/src/assets/assets/Metropolis-Black.woff2 +0 -0
  20. package/dist/src/assets/assets/Metropolis-BlackItalic.woff2 +0 -0
  21. package/dist/src/assets/assets/Metropolis-Bold.woff2 +0 -0
  22. package/dist/src/assets/assets/Metropolis-BoldItalic.woff2 +0 -0
  23. package/dist/src/assets/assets/Metropolis-ExtraBold.woff2 +0 -0
  24. package/dist/src/assets/assets/Metropolis-ExtraBoldItalic.woff2 +0 -0
  25. package/dist/src/assets/assets/Metropolis-ExtraLight.woff2 +0 -0
  26. package/dist/src/assets/assets/Metropolis-ExtraLightItalic.woff2 +0 -0
  27. package/dist/src/assets/assets/Metropolis-Light.woff2 +0 -0
  28. package/dist/src/assets/assets/Metropolis-LightItalic.woff2 +0 -0
  29. package/dist/src/assets/assets/Metropolis-Medium.woff2 +0 -0
  30. package/dist/src/assets/assets/Metropolis-MediumItalic.woff2 +0 -0
  31. package/dist/src/assets/assets/Metropolis-Regular.woff2 +0 -0
  32. package/dist/src/assets/assets/Metropolis-RegularItalic.woff2 +0 -0
  33. package/dist/src/assets/assets/Metropolis-SemiBold.woff2 +0 -0
  34. package/dist/src/assets/assets/Metropolis-SemiBoldItalic.woff2 +0 -0
  35. package/dist/src/assets/assets/Metropolis-Thin.woff2 +0 -0
  36. package/dist/src/assets/assets/Metropolis-ThinItalic.woff2 +0 -0
  37. package/dist/src/assets/assets/logo.png +0 -0
  38. package/dist/src/assets/logo.png +0 -0
  39. package/dist/src/factories/AddressFactory.d.ts +10 -0
  40. package/dist/src/factories/AddressFactory.d.ts.map +1 -0
  41. package/dist/src/factories/AddressFactory.js +42 -0
  42. package/dist/src/factories/AddressFactory.js.map +1 -0
  43. package/dist/src/factories/EmergencyContactFactory.d.ts +9 -0
  44. package/dist/src/factories/EmergencyContactFactory.d.ts.map +1 -0
  45. package/dist/src/factories/EmergencyContactFactory.js +42 -0
  46. package/dist/src/factories/EmergencyContactFactory.js.map +1 -0
  47. package/dist/src/factories/GroupFactory.d.ts +19 -0
  48. package/dist/src/factories/GroupFactory.d.ts.map +1 -0
  49. package/dist/src/factories/GroupFactory.js +52 -0
  50. package/dist/src/factories/GroupFactory.js.map +1 -0
  51. package/dist/src/factories/MemberFactory.d.ts +16 -0
  52. package/dist/src/factories/MemberFactory.d.ts.map +1 -0
  53. package/dist/src/factories/MemberFactory.js +98 -0
  54. package/dist/src/factories/MemberFactory.js.map +1 -0
  55. package/dist/src/factories/OrganizationFactory.d.ts +16 -0
  56. package/dist/src/factories/OrganizationFactory.d.ts.map +1 -0
  57. package/dist/src/factories/OrganizationFactory.js +40 -0
  58. package/dist/src/factories/OrganizationFactory.js.map +1 -0
  59. package/dist/src/factories/ParentFactory.d.ts +10 -0
  60. package/dist/src/factories/ParentFactory.d.ts.map +1 -0
  61. package/dist/src/factories/ParentFactory.js +44 -0
  62. package/dist/src/factories/ParentFactory.js.map +1 -0
  63. package/dist/src/factories/RecordFactory.d.ts +10 -0
  64. package/dist/src/factories/RecordFactory.d.ts.map +1 -0
  65. package/dist/src/factories/RecordFactory.js +14 -0
  66. package/dist/src/factories/RecordFactory.js.map +1 -0
  67. package/dist/src/factories/RegisterCodeFactory.d.ts +18 -0
  68. package/dist/src/factories/RegisterCodeFactory.d.ts.map +1 -0
  69. package/dist/src/factories/RegisterCodeFactory.js +19 -0
  70. package/dist/src/factories/RegisterCodeFactory.js.map +1 -0
  71. package/dist/src/factories/RegistrationFactory.d.ts +14 -0
  72. package/dist/src/factories/RegistrationFactory.d.ts.map +1 -0
  73. package/dist/src/factories/RegistrationFactory.js +26 -0
  74. package/dist/src/factories/RegistrationFactory.js.map +1 -0
  75. package/dist/src/factories/UserFactory.d.ts +21 -0
  76. package/dist/src/factories/UserFactory.d.ts.map +1 -0
  77. package/dist/src/factories/UserFactory.js +41 -0
  78. package/dist/src/factories/UserFactory.js.map +1 -0
  79. package/dist/src/factories/WebshopFactory.d.ts +16 -0
  80. package/dist/src/factories/WebshopFactory.d.ts.map +1 -0
  81. package/dist/src/factories/WebshopFactory.js +35 -0
  82. package/dist/src/factories/WebshopFactory.js.map +1 -0
  83. package/dist/src/helpers/DNSValidator.d.ts +6 -0
  84. package/dist/src/helpers/DNSValidator.d.ts.map +1 -0
  85. package/dist/src/helpers/DNSValidator.js +144 -0
  86. package/dist/src/helpers/DNSValidator.js.map +1 -0
  87. package/dist/src/helpers/EmailBuilder.d.ts +22 -0
  88. package/dist/src/helpers/EmailBuilder.d.ts.map +1 -0
  89. package/dist/src/helpers/EmailBuilder.js +100 -0
  90. package/dist/src/helpers/EmailBuilder.js.map +1 -0
  91. package/dist/src/helpers/GroupBuilder.d.ts +9 -0
  92. package/dist/src/helpers/GroupBuilder.d.ts.map +1 -0
  93. package/dist/src/helpers/GroupBuilder.js +382 -0
  94. package/dist/src/helpers/GroupBuilder.js.map +1 -0
  95. package/dist/src/helpers/Handlebars.d.ts +2 -0
  96. package/dist/src/helpers/Handlebars.d.ts.map +1 -0
  97. package/dist/src/helpers/Handlebars.js +192 -0
  98. package/dist/src/helpers/Handlebars.js.map +1 -0
  99. package/dist/src/helpers/InvoiceBuilder.d.ts +29 -0
  100. package/dist/src/helpers/InvoiceBuilder.d.ts.map +1 -0
  101. package/dist/src/helpers/InvoiceBuilder.js +406 -0
  102. package/dist/src/helpers/InvoiceBuilder.js.map +1 -0
  103. package/dist/src/helpers/InvoiceBuilder.test.d.ts +2 -0
  104. package/dist/src/helpers/InvoiceBuilder.test.d.ts.map +1 -0
  105. package/dist/src/helpers/InvoiceBuilder.test.js +52 -0
  106. package/dist/src/helpers/InvoiceBuilder.test.js.map +1 -0
  107. package/dist/src/helpers/RateLimiter.d.ts +27 -0
  108. package/dist/src/helpers/RateLimiter.d.ts.map +1 -0
  109. package/dist/src/helpers/RateLimiter.js +57 -0
  110. package/dist/src/helpers/RateLimiter.js.map +1 -0
  111. package/dist/src/helpers/WebshopCounter.d.ts +6 -0
  112. package/dist/src/helpers/WebshopCounter.d.ts.map +1 -0
  113. package/dist/src/helpers/WebshopCounter.js +36 -0
  114. package/dist/src/helpers/WebshopCounter.js.map +1 -0
  115. package/dist/src/helpers/WebshopCounter.test.d.ts +2 -0
  116. package/dist/src/helpers/WebshopCounter.test.d.ts.map +1 -0
  117. package/dist/src/helpers/WebshopCounter.test.js +17 -0
  118. package/dist/src/helpers/WebshopCounter.test.js.map +1 -0
  119. package/dist/src/index.d.ts +18 -0
  120. package/dist/src/index.d.ts.map +1 -0
  121. package/dist/src/index.js +23 -0
  122. package/dist/src/index.js.map +1 -0
  123. package/dist/src/migrations/1593773929-create-initial-tables.sql +634 -0
  124. package/dist/src/migrations/1605261999-gemeenten-tmp.sql +2820 -0
  125. package/dist/src/migrations/1605262045-import-postcodes.d.ts +16 -0
  126. package/dist/src/migrations/1605262045-import-postcodes.d.ts.map +1 -0
  127. package/dist/src/migrations/1605262045-import-postcodes.js +116 -0
  128. package/dist/src/migrations/1605262045-import-postcodes.js.map +1 -0
  129. package/dist/src/migrations/1605262046-import-postcodes-nl.d.ts +4 -0
  130. package/dist/src/migrations/1605262046-import-postcodes-nl.d.ts.map +1 -0
  131. package/dist/src/migrations/1605262046-import-postcodes-nl.js +83 -0
  132. package/dist/src/migrations/1605262046-import-postcodes-nl.js.map +1 -0
  133. package/dist/src/migrations/1605279038-drop-gemeenten-tmp.sql +1 -0
  134. package/dist/src/migrations/1648392491-default-templates.sql +9 -0
  135. package/dist/src/migrations/1651245707-default-templates-reminders.sql +6 -0
  136. package/dist/src/migrations/1708607340-tickets-deleted-at.sql +1 -0
  137. package/dist/src/migrations/1710459176-register-code-invoices.sql +3 -0
  138. package/dist/src/migrations/1712158247-discount-codes.sql +17 -0
  139. package/dist/src/migrations/1713178665-drop-invites.sql +1 -0
  140. package/dist/src/migrations/1713178666-drop-keychain.sql +1 -0
  141. package/dist/src/migrations/1713178667-drop-challenges.sql +1 -0
  142. package/dist/src/migrations/1713178668-drop-user-keys.sql +7 -0
  143. package/dist/src/migrations/1713178669-drop-organization-key.sql +2 -0
  144. package/dist/src/migrations/data/postcodes/nl/Drenthe +291 -0
  145. package/dist/src/migrations/data/postcodes/nl/Flevoland +107 -0
  146. package/dist/src/migrations/data/postcodes/nl/Friesland +518 -0
  147. package/dist/src/migrations/data/postcodes/nl/Gelderland +601 -0
  148. package/dist/src/migrations/data/postcodes/nl/Groningen +279 -0
  149. package/dist/src/migrations/data/postcodes/nl/Limburg +324 -0
  150. package/dist/src/migrations/data/postcodes/nl/Noord-Brabant +620 -0
  151. package/dist/src/migrations/data/postcodes/nl/Noord-Holland +566 -0
  152. package/dist/src/migrations/data/postcodes/nl/Overrijsel +344 -0
  153. package/dist/src/migrations/data/postcodes/nl/Utrecht +278 -0
  154. package/dist/src/migrations/data/postcodes/nl/Zeeland +179 -0
  155. package/dist/src/migrations/data/postcodes/nl/Zuid-Holland +662 -0
  156. package/dist/src/models/BalanceItem.d.ts +57 -0
  157. package/dist/src/models/BalanceItem.d.ts.map +1 -0
  158. package/dist/src/models/BalanceItem.js +346 -0
  159. package/dist/src/models/BalanceItem.js.map +1 -0
  160. package/dist/src/models/BalanceItemPayment.d.ts +31 -0
  161. package/dist/src/models/BalanceItemPayment.d.ts.map +1 -0
  162. package/dist/src/models/BalanceItemPayment.js +101 -0
  163. package/dist/src/models/BalanceItemPayment.js.map +1 -0
  164. package/dist/src/models/BuckarooPayment.d.ts +8 -0
  165. package/dist/src/models/BuckarooPayment.d.ts.map +1 -0
  166. package/dist/src/models/BuckarooPayment.js +24 -0
  167. package/dist/src/models/BuckarooPayment.js.map +1 -0
  168. package/dist/src/models/Document.d.ts +44 -0
  169. package/dist/src/models/Document.d.ts.map +1 -0
  170. package/dist/src/models/Document.js +194 -0
  171. package/dist/src/models/Document.js.map +1 -0
  172. package/dist/src/models/DocumentTemplate.d.ts +45 -0
  173. package/dist/src/models/DocumentTemplate.d.ts.map +1 -0
  174. package/dist/src/models/DocumentTemplate.js +533 -0
  175. package/dist/src/models/DocumentTemplate.js.map +1 -0
  176. package/dist/src/models/EmailTemplate.d.ts +22 -0
  177. package/dist/src/models/EmailTemplate.d.ts.map +1 -0
  178. package/dist/src/models/EmailTemplate.js +70 -0
  179. package/dist/src/models/EmailTemplate.js.map +1 -0
  180. package/dist/src/models/EmailVerificationCode.d.ts +60 -0
  181. package/dist/src/models/EmailVerificationCode.d.ts.map +1 -0
  182. package/dist/src/models/EmailVerificationCode.js +307 -0
  183. package/dist/src/models/EmailVerificationCode.js.map +1 -0
  184. package/dist/src/models/Group.d.ts +36 -0
  185. package/dist/src/models/Group.d.ts.map +1 -0
  186. package/dist/src/models/Group.js +231 -0
  187. package/dist/src/models/Group.js.map +1 -0
  188. package/dist/src/models/Image.d.ts +12 -0
  189. package/dist/src/models/Image.d.ts.map +1 -0
  190. package/dist/src/models/Image.js +137 -0
  191. package/dist/src/models/Image.js.map +1 -0
  192. package/dist/src/models/Member.d.ts +66 -0
  193. package/dist/src/models/Member.d.ts.map +1 -0
  194. package/dist/src/models/Member.js +309 -0
  195. package/dist/src/models/Member.js.map +1 -0
  196. package/dist/src/models/MemberResponsibilityRecord.d.ts +11 -0
  197. package/dist/src/models/MemberResponsibilityRecord.d.ts.map +1 -0
  198. package/dist/src/models/MemberResponsibilityRecord.js +47 -0
  199. package/dist/src/models/MemberResponsibilityRecord.js.map +1 -0
  200. package/dist/src/models/MolliePayment.d.ts +8 -0
  201. package/dist/src/models/MolliePayment.d.ts.map +1 -0
  202. package/dist/src/models/MolliePayment.js +24 -0
  203. package/dist/src/models/MolliePayment.js.map +1 -0
  204. package/dist/src/models/MollieToken.d.ts +45 -0
  205. package/dist/src/models/MollieToken.d.ts.map +1 -0
  206. package/dist/src/models/MollieToken.js +333 -0
  207. package/dist/src/models/MollieToken.js.map +1 -0
  208. package/dist/src/models/OneTimeToken.d.ts +38 -0
  209. package/dist/src/models/OneTimeToken.d.ts.map +1 -0
  210. package/dist/src/models/OneTimeToken.js +126 -0
  211. package/dist/src/models/OneTimeToken.js.map +1 -0
  212. package/dist/src/models/Order.d.ts +99 -0
  213. package/dist/src/models/Order.d.ts.map +1 -0
  214. package/dist/src/models/Order.js +912 -0
  215. package/dist/src/models/Order.js.map +1 -0
  216. package/dist/src/models/Organization.d.ts +119 -0
  217. package/dist/src/models/Organization.d.ts.map +1 -0
  218. package/dist/src/models/Organization.js +900 -0
  219. package/dist/src/models/Organization.js.map +1 -0
  220. package/dist/src/models/OrganizationRegistrationPeriod.d.ts +14 -0
  221. package/dist/src/models/OrganizationRegistrationPeriod.d.ts.map +1 -0
  222. package/dist/src/models/OrganizationRegistrationPeriod.js +62 -0
  223. package/dist/src/models/OrganizationRegistrationPeriod.js.map +1 -0
  224. package/dist/src/models/PasswordToken.d.ts +29 -0
  225. package/dist/src/models/PasswordToken.d.ts.map +1 -0
  226. package/dist/src/models/PasswordToken.js +118 -0
  227. package/dist/src/models/PasswordToken.js.map +1 -0
  228. package/dist/src/models/PayconiqPayment.d.ts +18 -0
  229. package/dist/src/models/PayconiqPayment.d.ts.map +1 -0
  230. package/dist/src/models/PayconiqPayment.js +216 -0
  231. package/dist/src/models/PayconiqPayment.js.map +1 -0
  232. package/dist/src/models/Payment.d.ts +62 -0
  233. package/dist/src/models/Payment.d.ts.map +1 -0
  234. package/dist/src/models/Payment.js +199 -0
  235. package/dist/src/models/Payment.js.map +1 -0
  236. package/dist/src/models/Platform.d.ts +15 -0
  237. package/dist/src/models/Platform.d.ts.map +1 -0
  238. package/dist/src/models/Platform.js +77 -0
  239. package/dist/src/models/Platform.js.map +1 -0
  240. package/dist/src/models/RegisterCode.d.ts +27 -0
  241. package/dist/src/models/RegisterCode.d.ts.map +1 -0
  242. package/dist/src/models/RegisterCode.js +162 -0
  243. package/dist/src/models/RegisterCode.js.map +1 -0
  244. package/dist/src/models/Registration.d.ts +47 -0
  245. package/dist/src/models/Registration.d.ts.map +1 -0
  246. package/dist/src/models/Registration.js +369 -0
  247. package/dist/src/models/Registration.js.map +1 -0
  248. package/dist/src/models/RegistrationPeriod.d.ts +15 -0
  249. package/dist/src/models/RegistrationPeriod.d.ts.map +1 -0
  250. package/dist/src/models/RegistrationPeriod.js +64 -0
  251. package/dist/src/models/RegistrationPeriod.js.map +1 -0
  252. package/dist/src/models/STCredit.d.ts +20 -0
  253. package/dist/src/models/STCredit.d.ts.map +1 -0
  254. package/dist/src/models/STCredit.js +129 -0
  255. package/dist/src/models/STCredit.js.map +1 -0
  256. package/dist/src/models/STInvoice.d.ts +51 -0
  257. package/dist/src/models/STInvoice.d.ts.map +1 -0
  258. package/dist/src/models/STInvoice.js +453 -0
  259. package/dist/src/models/STInvoice.js.map +1 -0
  260. package/dist/src/models/STPackage.d.ts +36 -0
  261. package/dist/src/models/STPackage.d.ts.map +1 -0
  262. package/dist/src/models/STPackage.js +300 -0
  263. package/dist/src/models/STPackage.js.map +1 -0
  264. package/dist/src/models/STPendingInvoice.d.ts +45 -0
  265. package/dist/src/models/STPendingInvoice.d.ts.map +1 -0
  266. package/dist/src/models/STPendingInvoice.js +284 -0
  267. package/dist/src/models/STPendingInvoice.js.map +1 -0
  268. package/dist/src/models/StripeAccount.d.ts +17 -0
  269. package/dist/src/models/StripeAccount.d.ts.map +1 -0
  270. package/dist/src/models/StripeAccount.js +81 -0
  271. package/dist/src/models/StripeAccount.js.map +1 -0
  272. package/dist/src/models/StripeCheckoutSession.d.ts +9 -0
  273. package/dist/src/models/StripeCheckoutSession.d.ts.map +1 -0
  274. package/dist/src/models/StripeCheckoutSession.js +31 -0
  275. package/dist/src/models/StripeCheckoutSession.js.map +1 -0
  276. package/dist/src/models/StripePaymentIntent.d.ts +9 -0
  277. package/dist/src/models/StripePaymentIntent.d.ts.map +1 -0
  278. package/dist/src/models/StripePaymentIntent.js +31 -0
  279. package/dist/src/models/StripePaymentIntent.js.map +1 -0
  280. package/dist/src/models/Ticket.d.ts +61 -0
  281. package/dist/src/models/Ticket.d.ts.map +1 -0
  282. package/dist/src/models/Ticket.js +143 -0
  283. package/dist/src/models/Ticket.js.map +1 -0
  284. package/dist/src/models/Token.d.ts +49 -0
  285. package/dist/src/models/Token.d.ts.map +1 -0
  286. package/dist/src/models/Token.js +218 -0
  287. package/dist/src/models/Token.js.map +1 -0
  288. package/dist/src/models/Token.test.d.ts +2 -0
  289. package/dist/src/models/Token.test.d.ts.map +1 -0
  290. package/dist/src/models/Token.test.js +60 -0
  291. package/dist/src/models/Token.test.js.map +1 -0
  292. package/dist/src/models/UsedRegisterCode.d.ts +22 -0
  293. package/dist/src/models/UsedRegisterCode.d.ts.map +1 -0
  294. package/dist/src/models/UsedRegisterCode.js +158 -0
  295. package/dist/src/models/UsedRegisterCode.js.map +1 -0
  296. package/dist/src/models/User.d.ts +55 -0
  297. package/dist/src/models/User.d.ts.map +1 -0
  298. package/dist/src/models/User.js +314 -0
  299. package/dist/src/models/User.js.map +1 -0
  300. package/dist/src/models/UserPermissions.d.ts +15 -0
  301. package/dist/src/models/UserPermissions.d.ts.map +1 -0
  302. package/dist/src/models/UserPermissions.js +57 -0
  303. package/dist/src/models/UserPermissions.js.map +1 -0
  304. package/dist/src/models/Webshop.d.ts +44 -0
  305. package/dist/src/models/Webshop.d.ts.map +1 -0
  306. package/dist/src/models/Webshop.js +184 -0
  307. package/dist/src/models/Webshop.js.map +1 -0
  308. package/dist/src/models/WebshopDiscountCode.d.ts +18 -0
  309. package/dist/src/models/WebshopDiscountCode.d.ts.map +1 -0
  310. package/dist/src/models/WebshopDiscountCode.js +88 -0
  311. package/dist/src/models/WebshopDiscountCode.js.map +1 -0
  312. package/dist/src/models/addresses/City.d.ts +14 -0
  313. package/dist/src/models/addresses/City.d.ts.map +1 -0
  314. package/dist/src/models/addresses/City.js +37 -0
  315. package/dist/src/models/addresses/City.js.map +1 -0
  316. package/dist/src/models/addresses/PostalCode.d.ts +20 -0
  317. package/dist/src/models/addresses/PostalCode.d.ts.map +1 -0
  318. package/dist/src/models/addresses/PostalCode.js +138 -0
  319. package/dist/src/models/addresses/PostalCode.js.map +1 -0
  320. package/dist/src/models/addresses/PostalCode.test.d.ts +2 -0
  321. package/dist/src/models/addresses/PostalCode.test.d.ts.map +1 -0
  322. package/dist/src/models/addresses/PostalCode.test.js +98 -0
  323. package/dist/src/models/addresses/PostalCode.test.js.map +1 -0
  324. package/dist/src/models/addresses/Province.d.ts +9 -0
  325. package/dist/src/models/addresses/Province.d.ts.map +1 -0
  326. package/dist/src/models/addresses/Province.js +24 -0
  327. package/dist/src/models/addresses/Province.js.map +1 -0
  328. package/dist/src/models/addresses/Street.d.ts +10 -0
  329. package/dist/src/models/addresses/Street.d.ts.map +1 -0
  330. package/dist/src/models/addresses/Street.js +26 -0
  331. package/dist/src/models/addresses/Street.js.map +1 -0
  332. package/dist/src/models/index.d.ts +37 -0
  333. package/dist/src/models/index.d.ts.map +1 -0
  334. package/dist/src/models/index.js +53 -0
  335. package/dist/src/models/index.js.map +1 -0
  336. package/dist/src/structures/OrganizationServerMetaData.d.ts +43 -0
  337. package/dist/src/structures/OrganizationServerMetaData.d.ts.map +1 -0
  338. package/dist/src/structures/OrganizationServerMetaData.js +128 -0
  339. package/dist/src/structures/OrganizationServerMetaData.js.map +1 -0
  340. package/dist/tests/jest.global.setup.d.ts +3 -0
  341. package/dist/tests/jest.global.setup.d.ts.map +1 -0
  342. package/dist/tests/jest.global.setup.js +20 -0
  343. package/dist/tests/jest.global.setup.js.map +1 -0
  344. package/dist/tests/jest.setup.d.ts +2 -0
  345. package/dist/tests/jest.setup.d.ts.map +1 -0
  346. package/dist/tests/jest.setup.js +15 -0
  347. package/dist/tests/jest.setup.js.map +1 -0
  348. package/package.json +30 -0
  349. package/src/assets/Metropolis-Black.woff2 +0 -0
  350. package/src/assets/Metropolis-BlackItalic.woff2 +0 -0
  351. package/src/assets/Metropolis-Bold.woff2 +0 -0
  352. package/src/assets/Metropolis-BoldItalic.woff2 +0 -0
  353. package/src/assets/Metropolis-ExtraBold.woff2 +0 -0
  354. package/src/assets/Metropolis-ExtraBoldItalic.woff2 +0 -0
  355. package/src/assets/Metropolis-ExtraLight.woff2 +0 -0
  356. package/src/assets/Metropolis-ExtraLightItalic.woff2 +0 -0
  357. package/src/assets/Metropolis-Light.woff2 +0 -0
  358. package/src/assets/Metropolis-LightItalic.woff2 +0 -0
  359. package/src/assets/Metropolis-Medium.woff2 +0 -0
  360. package/src/assets/Metropolis-MediumItalic.woff2 +0 -0
  361. package/src/assets/Metropolis-Regular.woff2 +0 -0
  362. package/src/assets/Metropolis-RegularItalic.woff2 +0 -0
  363. package/src/assets/Metropolis-SemiBold.woff2 +0 -0
  364. package/src/assets/Metropolis-SemiBoldItalic.woff2 +0 -0
  365. package/src/assets/Metropolis-Thin.woff2 +0 -0
  366. package/src/assets/Metropolis-ThinItalic.woff2 +0 -0
  367. package/src/assets/logo.png +0 -0
  368. package/src/factories/AddressFactory.ts +42 -0
  369. package/src/factories/EmergencyContactFactory.ts +43 -0
  370. package/src/factories/GroupFactory.ts +66 -0
  371. package/src/factories/MemberFactory.ts +122 -0
  372. package/src/factories/OrganizationFactory.ts +45 -0
  373. package/src/factories/ParentFactory.ts +49 -0
  374. package/src/factories/RecordFactory.ts +12 -0
  375. package/src/factories/RegisterCodeFactory.ts +25 -0
  376. package/src/factories/RegistrationFactory.ts +32 -0
  377. package/src/factories/UserFactory.ts +66 -0
  378. package/src/factories/WebshopFactory.ts +43 -0
  379. package/src/helpers/DNSValidator.ts +153 -0
  380. package/src/helpers/EmailBuilder.ts +127 -0
  381. package/src/helpers/GroupBuilder.ts +438 -0
  382. package/src/helpers/Handlebars.ts +203 -0
  383. package/src/helpers/InvoiceBuilder.test.ts +57 -0
  384. package/src/helpers/InvoiceBuilder.ts +501 -0
  385. package/src/helpers/RateLimiter.ts +75 -0
  386. package/src/helpers/WebshopCounter.test.ts +16 -0
  387. package/src/helpers/WebshopCounter.ts +36 -0
  388. package/src/index.ts +21 -0
  389. package/src/migrations/1593773929-create-initial-tables.sql +634 -0
  390. package/src/migrations/1605261999-gemeenten-tmp.sql +2820 -0
  391. package/src/migrations/1605262045-import-postcodes.ts +132 -0
  392. package/src/migrations/1605262046-import-postcodes-nl.ts +97 -0
  393. package/src/migrations/1605279038-drop-gemeenten-tmp.sql +1 -0
  394. package/src/migrations/1648392491-default-templates.sql +9 -0
  395. package/src/migrations/1651245707-default-templates-reminders.sql +6 -0
  396. package/src/migrations/1708607340-tickets-deleted-at.sql +1 -0
  397. package/src/migrations/1710459176-register-code-invoices.sql +3 -0
  398. package/src/migrations/1712158247-discount-codes.sql +17 -0
  399. package/src/migrations/1713178665-drop-invites.sql +1 -0
  400. package/src/migrations/1713178666-drop-keychain.sql +1 -0
  401. package/src/migrations/1713178667-drop-challenges.sql +1 -0
  402. package/src/migrations/1713178668-drop-user-keys.sql +7 -0
  403. package/src/migrations/1713178669-drop-organization-key.sql +2 -0
  404. package/src/migrations/1714985451-user-nullable-organization-id.sql +2 -0
  405. package/src/migrations/1714985452-email-verification-code-nullable-organization-id.sql +2 -0
  406. package/src/migrations/1714985453-user-organization-permissions.sql +2 -0
  407. package/src/migrations/1714985454-user-organization-permissions.sql +2 -0
  408. package/src/migrations/1715079362-platform.sql +6 -0
  409. package/src/migrations/1715181649-registrations-organization-id.sql +2 -0
  410. package/src/migrations/1715181650-registrations-organization-id-fill.sql +1 -0
  411. package/src/migrations/1715181651-registrations-organization-id-drop-null.sql +2 -0
  412. package/src/migrations/1716117067-members-nullable-organization-id.sql +2 -0
  413. package/src/migrations/1719567581-registration-periods.sql +13 -0
  414. package/src/migrations/1719567582-organization-registration-periods.sql +13 -0
  415. package/src/migrations/1719567881-organization-periodId.sql +2 -0
  416. package/src/migrations/1719567882-groups-periodId.sql +2 -0
  417. package/src/migrations/1719567883-platform-periodId.sql +2 -0
  418. package/src/migrations/1719568079-default-period.sql +2 -0
  419. package/src/migrations/1719568080-set-default-period-platform.sql +1 -0
  420. package/src/migrations/1719568081-set-default-period-organizations.sql +1 -0
  421. package/src/migrations/1719568082-set-default-period-groups.sql +1 -0
  422. package/src/migrations/1719580828-registrations-periodId.sql +2 -0
  423. package/src/migrations/1719580829-set-default-period-registrations.sql +1 -0
  424. package/src/migrations/data/postcodes/nl/Drenthe +291 -0
  425. package/src/migrations/data/postcodes/nl/Flevoland +107 -0
  426. package/src/migrations/data/postcodes/nl/Friesland +518 -0
  427. package/src/migrations/data/postcodes/nl/Gelderland +601 -0
  428. package/src/migrations/data/postcodes/nl/Groningen +279 -0
  429. package/src/migrations/data/postcodes/nl/Limburg +324 -0
  430. package/src/migrations/data/postcodes/nl/Noord-Brabant +620 -0
  431. package/src/migrations/data/postcodes/nl/Noord-Holland +566 -0
  432. package/src/migrations/data/postcodes/nl/Overrijsel +344 -0
  433. package/src/migrations/data/postcodes/nl/Utrecht +278 -0
  434. package/src/migrations/data/postcodes/nl/Zeeland +179 -0
  435. package/src/migrations/data/postcodes/nl/Zuid-Holland +662 -0
  436. package/src/models/BalanceItem.ts +392 -0
  437. package/src/models/BalanceItemPayment.ts +106 -0
  438. package/src/models/BuckarooPayment.ts +19 -0
  439. package/src/models/Document.ts +203 -0
  440. package/src/models/DocumentTemplate.ts +583 -0
  441. package/src/models/EmailTemplate.ts +64 -0
  442. package/src/models/EmailVerificationCode.ts +352 -0
  443. package/src/models/Group.ts +293 -0
  444. package/src/models/Image.ts +147 -0
  445. package/src/models/Member.ts +386 -0
  446. package/src/models/MemberResponsibilityRecord.ts +39 -0
  447. package/src/models/MolliePayment.ts +19 -0
  448. package/src/models/MollieToken.ts +369 -0
  449. package/src/models/OneTimeToken.ts +131 -0
  450. package/src/models/Order.ts +1030 -0
  451. package/src/models/Organization.ts +1085 -0
  452. package/src/models/OrganizationRegistrationPeriod.ts +54 -0
  453. package/src/models/PasswordToken.ts +139 -0
  454. package/src/models/PayconiqPayment.ts +241 -0
  455. package/src/models/Payment.ts +216 -0
  456. package/src/models/Platform.ts +76 -0
  457. package/src/models/RegisterCode.ts +164 -0
  458. package/src/models/Registration.ts +405 -0
  459. package/src/models/RegistrationPeriod.ts +55 -0
  460. package/src/models/STCredit.ts +134 -0
  461. package/src/models/STInvoice.ts +507 -0
  462. package/src/models/STPackage.ts +324 -0
  463. package/src/models/STPendingInvoice.ts +308 -0
  464. package/src/models/StripeAccount.ts +71 -0
  465. package/src/models/StripeCheckoutSession.ts +22 -0
  466. package/src/models/StripePaymentIntent.ts +22 -0
  467. package/src/models/Ticket.ts +145 -0
  468. package/src/models/Token.test.ts +69 -0
  469. package/src/models/Token.ts +269 -0
  470. package/src/models/UsedRegisterCode.ts +166 -0
  471. package/src/models/User.ts +445 -0
  472. package/src/models/UserPermissions.ts +54 -0
  473. package/src/models/Webshop.ts +206 -0
  474. package/src/models/WebshopDiscountCode.ts +81 -0
  475. package/src/models/addresses/City.ts +31 -0
  476. package/src/models/addresses/PostalCode.test.ts +117 -0
  477. package/src/models/addresses/PostalCode.ts +164 -0
  478. package/src/models/addresses/Province.ts +20 -0
  479. package/src/models/addresses/Street.ts +25 -0
  480. package/src/models/index.ts +49 -0
  481. package/src/structures/OrganizationServerMetaData.ts +117 -0
@@ -0,0 +1,51 @@
1
+ import { ManyToOneRelation, Model } from "@simonbackx/simple-database";
2
+ import { STBillingStatus, STInvoice as STInvoiceStruct, STInvoiceMeta } from '@stamhoofd/structures';
3
+ import { Organization, Payment, STPackage } from './';
4
+ export declare class STInvoice extends Model {
5
+ static table: string;
6
+ private static numberCache;
7
+ id: string;
8
+ /**
9
+ * Is null for deleted organizations
10
+ */
11
+ organizationId: string | null;
12
+ /**
13
+ * An associated STCredit, that was used to remove credits from the user's credits.
14
+ * If the invoice is marked as failed, we need to delete this one
15
+ */
16
+ creditId: string | null;
17
+ /**
18
+ * Note: always create a new invoice for failed payments. We never create an actual invoice until we received the payment
19
+ */
20
+ paymentId: string | null;
21
+ meta: STInvoiceMeta;
22
+ /**
23
+ * If the number is null, no invoice is generated yet. Its still a WIP invoice (not an official one!)
24
+ */
25
+ number: number | null;
26
+ paidAt: Date | null;
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ reference: string | null;
30
+ static organization: ManyToOneRelation<"organization", Organization>;
31
+ static payment: ManyToOneRelation<"payment", Payment>;
32
+ static createFor(organization: Organization): STInvoice;
33
+ getStructure(): Promise<STInvoiceStruct>;
34
+ getPackages(): Promise<STPackage[]>;
35
+ getOrganizationActivePackages(): Promise<STPackage[]>;
36
+ activatePackages(paymentSucceeded?: boolean): Promise<void>;
37
+ /**
38
+ * WARNING: only call this in the correct queue!
39
+ */
40
+ markPaid({ sendEmail }?: {
41
+ sendEmail: boolean;
42
+ }): Promise<void>;
43
+ assignNextNumber(): Promise<void>;
44
+ generatePdf(): Promise<void>;
45
+ /**
46
+ * WARNGING: only call this method in the correct queue!
47
+ */
48
+ markFailed(payment: Payment, markFailed?: boolean): Promise<void>;
49
+ static getBillingStatus(organization: Organization, hideExpired?: boolean): Promise<STBillingStatus>;
50
+ }
51
+ //# sourceMappingURL=STInvoice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STInvoice.d.ts","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,iBAAiB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EAAmE,eAAe,EAA8B,SAAS,IAAI,eAAe,EAAiB,aAAa,EAA2F,MAAM,uBAAuB,CAAC;AAK1S,OAAO,EAAE,YAAY,EAAE,OAAO,EAAY,SAAS,EAAsC,MAAM,IAAI,CAAC;AAEpG,qBAAa,SAAU,SAAQ,KAAK;IAChC,MAAM,CAAC,KAAK,SAAwB;IAEpC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAsB;IAQhD,EAAE,EAAG,MAAM,CAAC;IAEZ;;OAEG;IAEH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IAEH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B;;OAEG;IAEH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAG/B,IAAI,EAAE,aAAa,CAAA;IAEnB;;OAEG;IAEH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAG5B,MAAM,EAAE,IAAI,GAAG,IAAI,CAAO;IAY1B,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAGf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAE/B,MAAM,CAAC,YAAY,kDAAuD;IAC1E,MAAM,CAAC,OAAO,wCAA6C;IAE3D,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS;IAkBjD,YAAY;IAUZ,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAqBnC,6BAA6B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAIrD,gBAAgB,CAAC,gBAAgB,UAAQ;IAgD/C;;OAEG;IACG,QAAQ,CAAC,EAAC,SAAS,EAAC;;KAAsB;IA2H1C,gBAAgB;IA6BhB,WAAW;IAMjB;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,UAAO;WAoGvC,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,eAAe,CAAC;CA2D1G"}
@@ -0,0 +1,453 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STInvoice = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const simple_database_1 = require("@simonbackx/simple-database");
6
+ const email_1 = require("@stamhoofd/email");
7
+ const queues_1 = require("@stamhoofd/queues");
8
+ const structures_1 = require("@stamhoofd/structures");
9
+ const utility_1 = require("@stamhoofd/utility");
10
+ const uuid_1 = require("uuid");
11
+ const InvoiceBuilder_1 = require("../helpers/InvoiceBuilder");
12
+ const _1 = require("./");
13
+ class STInvoice extends simple_database_1.Model {
14
+ constructor() {
15
+ super(...arguments);
16
+ /**
17
+ * An associated STCredit, that was used to remove credits from the user's credits.
18
+ * If the invoice is marked as failed, we need to delete this one
19
+ */
20
+ this.creditId = null;
21
+ /**
22
+ * Note: always create a new invoice for failed payments. We never create an actual invoice until we received the payment
23
+ */
24
+ this.paymentId = null;
25
+ /**
26
+ * If the number is null, no invoice is generated yet. Its still a WIP invoice (not an official one!)
27
+ */
28
+ this.number = null;
29
+ this.paidAt = null;
30
+ this.reference = null;
31
+ }
32
+ static createFor(organization) {
33
+ var _a, _b, _c, _d;
34
+ const invoice = new STInvoice();
35
+ invoice.organizationId = organization.id;
36
+ const date = new Date();
37
+ invoice.meta = structures_1.STInvoiceMeta.create({
38
+ date,
39
+ companyName: (_a = organization.meta.companyName) !== null && _a !== void 0 ? _a : organization.name,
40
+ companyContact: (_b = organization.privateMeta.billingContact) !== null && _b !== void 0 ? _b : "",
41
+ companyAddress: (_c = organization.meta.companyAddress) !== null && _c !== void 0 ? _c : organization.address,
42
+ companyVATNumber: organization.meta.VATNumber,
43
+ companyNumber: organization.meta.companyNumber,
44
+ VATPercentage: (0, structures_1.calculateVATPercentage)((_d = organization.meta.companyAddress) !== null && _d !== void 0 ? _d : organization.address, organization.meta.VATNumber)
45
+ });
46
+ return invoice;
47
+ }
48
+ async getStructure() {
49
+ let payment;
50
+ if (this.paymentId) {
51
+ payment = await _1.Payment.getByID(this.paymentId);
52
+ }
53
+ return structures_1.STInvoice.create(Object.assign({}, this, {
54
+ payment: payment ? structures_1.Payment.create(payment) : null
55
+ }));
56
+ }
57
+ async getPackages() {
58
+ const ids = new Set();
59
+ for (const item of this.meta.items) {
60
+ if (item.package) {
61
+ ids.add(item.package.id);
62
+ }
63
+ }
64
+ if (ids.size > 0) {
65
+ const packages = await _1.STPackage.getByIDs(...ids);
66
+ if (packages.length !== ids.size) {
67
+ console.warn("Invoice contains invalid package ids " + this.id);
68
+ }
69
+ return packages;
70
+ }
71
+ return [];
72
+ }
73
+ async getOrganizationActivePackages() {
74
+ return this.organizationId ? (await _1.STPackage.getForOrganization(this.organizationId)) : [];
75
+ }
76
+ async activatePackages(paymentSucceeded = false) {
77
+ var _a;
78
+ const packages = await this.getPackages();
79
+ // Search for all packages and activate them if needed (might be possible that they are already validated)
80
+ for (const p of packages) {
81
+ // It is possible that the meta of the package has changed in the previous loop call (in pack.activate), so we need to refetch it otherwise we get 'meta' conflicts
82
+ const pack = (_a = (await _1.STPackage.getByID(p.id))) !== null && _a !== void 0 ? _a : p;
83
+ console.log("Activating package " + pack.id);
84
+ // We'll never have multiple invoices for the same package that are awaiting payments
85
+ if (paymentSucceeded) {
86
+ pack.meta.firstFailedPayment = null;
87
+ pack.meta.paymentFailedCount = 0;
88
+ }
89
+ await pack.activate();
90
+ // Activate doesn't save always, so save if needed:
91
+ await pack.save();
92
+ // Deactivate demo packages
93
+ const remove = [];
94
+ if (pack.meta.type === structures_1.STPackageType.Members) {
95
+ // Remove demo
96
+ remove.push(structures_1.STPackageType.TrialMembers);
97
+ }
98
+ if (pack.meta.type === structures_1.STPackageType.SingleWebshop || pack.meta.type === structures_1.STPackageType.Webshops) {
99
+ // Remove demo
100
+ remove.push(structures_1.STPackageType.TrialWebshops);
101
+ }
102
+ if (remove.length > 0 && this.organizationId) {
103
+ // Get all packages
104
+ const all = await _1.STPackage.getForOrganization(this.organizationId);
105
+ for (const pack of all) {
106
+ if (remove.includes(pack.meta.type)) {
107
+ console.log("Disabling demo package " + pack.id + " because package is bought.");
108
+ // Stop
109
+ pack.removeAt = new Date();
110
+ pack.removeAt.setTime(pack.removeAt.getTime() - 1000);
111
+ await pack.save();
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * WARNING: only call this in the correct queue!
119
+ */
120
+ async markPaid({ sendEmail } = { sendEmail: true }) {
121
+ var _a;
122
+ // Schule on the queue because we are modifying pending invoices
123
+ if (this.paidAt !== null) {
124
+ return;
125
+ }
126
+ this.paidAt = new Date();
127
+ if (this.meta.priceWithoutVAT > 0) {
128
+ // Only assign a number if it was an non empty invoice
129
+ await this.assignNextNumber();
130
+ }
131
+ if (this.creditId !== null) {
132
+ const credit = await _1.STCredit.getByID(this.creditId);
133
+ if (credit) {
134
+ // This credit was used to pay this invoice (partially)
135
+ credit.description = this.number !== null ? "Factuur " + this.number : "Betaling " + this.id;
136
+ credit.expireAt = null;
137
+ await credit.save();
138
+ }
139
+ }
140
+ const packages = await this.getPackages();
141
+ // Increase paid amounts and paid prices
142
+ for (const item of this.meta.items) {
143
+ if (item.package) {
144
+ const pack = packages.find(p => { var _a; return p.id === ((_a = item.package) === null || _a === void 0 ? void 0 : _a.id); });
145
+ if (pack) {
146
+ // Increase paid amount
147
+ pack.meta.paidPrice += item.price;
148
+ pack.meta.paidAmount += item.amount;
149
+ await pack.save();
150
+ }
151
+ }
152
+ }
153
+ // Search for all packages and activate them if needed (might be possible that they are already validated)
154
+ await this.activatePackages(true);
155
+ if (packages.length === 0) {
156
+ // Mark payments succeeded
157
+ const orgPackages = await this.getOrganizationActivePackages();
158
+ for (const p of orgPackages) {
159
+ if (p.meta.firstFailedPayment) {
160
+ const pack = (_a = (await _1.STPackage.getByID(p.id))) !== null && _a !== void 0 ? _a : p;
161
+ pack.meta.firstFailedPayment = null;
162
+ pack.meta.paymentFailedCount = 0;
163
+ await pack.save();
164
+ }
165
+ }
166
+ }
167
+ // If needed: remove the invoice items from the pending invoice
168
+ if (this.organizationId) {
169
+ const pendingInvoice = await _1.STPendingInvoice.getForOrganization(this.organizationId);
170
+ if (pendingInvoice) {
171
+ // Remove all invoice items that were paid
172
+ const newItems = [];
173
+ for (const item of pendingInvoice.meta.items) {
174
+ const found = this.meta.items.find(i => i.id === item.id);
175
+ if (!found) {
176
+ newItems.push(item);
177
+ }
178
+ else {
179
+ console.log("Removed invoice item " + item.id + " from pending invoice " + pendingInvoice.id);
180
+ }
181
+ }
182
+ pendingInvoice.meta.items = newItems;
183
+ if (pendingInvoice.invoiceId === this.id) {
184
+ // Unlock the pending invoice: we allow new invoices to get created
185
+ pendingInvoice.invoiceId = null;
186
+ }
187
+ await pendingInvoice.save();
188
+ }
189
+ // Force regeneration of organization meta data
190
+ await _1.STPackage.updateOrganizationPackages(this.organizationId);
191
+ }
192
+ if (this.number !== null && !this.meta.pdf) {
193
+ await this.generatePdf();
194
+ }
195
+ if (this.organizationId && this.meta.pdf && this.number !== null && sendEmail) {
196
+ const organization = await _1.Organization.getByID(this.organizationId);
197
+ if (organization) {
198
+ const invoicingTo = await organization.getInvoicingToEmails();
199
+ if (invoicingTo) {
200
+ // Send the e-mail
201
+ email_1.Email.sendInternal({
202
+ to: invoicingTo,
203
+ bcc: "simon@stamhoofd.be",
204
+ subject: "Stamhoofd Factuur " + this.number + " voor " + organization.name,
205
+ text: "Dag " + organization.name + ", \n\nBedankt voor jullie vertrouwen in Stamhoofd. In bijlage vinden jullie factuur " + this.number + " voor jullie administratie. Deze werd al betaald, je hoeft dus geen actie meer te ondernemen. Neem gerust contact met ons op (via " + organization.i18n.$t("shared.emails.general") + ") als je denkt dat er iets fout is gegaan of als je nog bijkomende vragen zou hebben.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
206
+ attachments: [
207
+ {
208
+ filename: "factuur-" + this.number + ".pdf",
209
+ href: this.meta.pdf.getPublicPath(),
210
+ contentType: "application/pdf"
211
+ }
212
+ ]
213
+ }, organization.i18n);
214
+ }
215
+ }
216
+ }
217
+ // Reward if we have an open register code
218
+ if (this.meta.priceWithVAT >= 100 && this.organizationId) {
219
+ // We spend some money
220
+ const code = await _1.UsedRegisterCode.getFor(this.organizationId);
221
+ if (code && !code.creditId) {
222
+ console.log("Rewarding code " + code.id + " for payment");
223
+ // Deze code werd nog niet beloond
224
+ await code.reward();
225
+ }
226
+ }
227
+ }
228
+ async assignNextNumber() {
229
+ return await queues_1.QueueHandler.schedule("billing/invoice-numbers", async () => {
230
+ var _a, _b;
231
+ // Get clone
232
+ const refreshed = await STInvoice.getByID(this.id);
233
+ if (!refreshed || refreshed.number !== null) {
234
+ return;
235
+ }
236
+ // Removed the cache because not working across multiple instances
237
+ // if (STInvoice.numberCache) {
238
+ // this.number = STInvoice.numberCache + 1
239
+ // await this.save()
240
+ //
241
+ // // If save succeeded: increase it
242
+ // STInvoice.numberCache++;
243
+ // return
244
+ // }
245
+ const lastInvoice = await STInvoice.where({ number: { value: null, sign: "!=" } }, { sort: [{ column: "number", direction: "DESC" }], limit: 1 });
246
+ STInvoice.numberCache = (_b = (_a = lastInvoice[0]) === null || _a === void 0 ? void 0 : _a.number) !== null && _b !== void 0 ? _b : 0;
247
+ this.number = STInvoice.numberCache + 1;
248
+ this.meta.date = new Date();
249
+ await this.save();
250
+ // If save succeeded: increase it
251
+ STInvoice.numberCache++;
252
+ return;
253
+ });
254
+ }
255
+ async generatePdf() {
256
+ const builder = new InvoiceBuilder_1.InvoiceBuilder(this);
257
+ this.meta.pdf = await builder.build();
258
+ await this.save();
259
+ }
260
+ /**
261
+ * WARNGING: only call this method in the correct queue!
262
+ */
263
+ async markFailed(payment, markFailed = true) {
264
+ var _a, _b;
265
+ console.log("Mark invoice as failed", this.id);
266
+ const packages = await this.getPackages();
267
+ if (markFailed && (payment.method === structures_1.PaymentMethod.DirectDebit || payment.method === structures_1.PaymentMethod.Transfer)) {
268
+ // Only mark failed payments for background payments
269
+ for (const pack of packages) {
270
+ console.log("Marking package with failed payment " + pack.id);
271
+ pack.meta.firstFailedPayment = (_a = pack.meta.firstFailedPayment) !== null && _a !== void 0 ? _a : new Date();
272
+ pack.meta.paymentFailedCount++;
273
+ await pack.save();
274
+ }
275
+ if (packages.length == 0) {
276
+ // Mark all active packages as failed
277
+ const activePackages = await this.getOrganizationActivePackages();
278
+ for (const pack of activePackages) {
279
+ console.log("Marking package with failed payment " + pack.id);
280
+ pack.meta.firstFailedPayment = (_b = pack.meta.firstFailedPayment) !== null && _b !== void 0 ? _b : new Date();
281
+ pack.meta.paymentFailedCount++;
282
+ await pack.save();
283
+ }
284
+ }
285
+ }
286
+ if (this.organizationId) {
287
+ const pendingInvoice = await _1.STPendingInvoice.getForOrganization(this.organizationId);
288
+ if (pendingInvoice && pendingInvoice.invoiceId === this.id) {
289
+ pendingInvoice.invoiceId = null;
290
+ // Also update the packages in the pending invoice itself
291
+ for (const item of pendingInvoice.meta.items) {
292
+ const pack = item.package;
293
+ if (pack) {
294
+ const pp = packages.find(p => p.id === pack.id);
295
+ if (pp) {
296
+ console.log("Updated package " + pp.id + " in pending invoice");
297
+ // Update reference to include new failed counts
298
+ item.package = structures_1.STPackage.create(pp);
299
+ }
300
+ }
301
+ }
302
+ await pendingInvoice.save();
303
+ }
304
+ // Force regeneration of organization meta data
305
+ await _1.STPackage.updateOrganizationPackages(this.organizationId);
306
+ }
307
+ if (this.creditId !== null) {
308
+ const credit = await _1.STCredit.getByID(this.creditId);
309
+ if (credit && (credit.expireAt === null || credit.expireAt > new Date())) {
310
+ // Expire usage (do not delete to keep the relation for debugging and recovery)
311
+ credit.expireAt = new Date(new Date().getTime() - 1000);
312
+ await credit.save();
313
+ }
314
+ }
315
+ if (markFailed && this.organizationId && payment.method === structures_1.PaymentMethod.DirectDebit) {
316
+ const organization = await _1.Organization.getByID(this.organizationId);
317
+ if (organization) {
318
+ const invoicingTo = await organization.getInvoicingToEmails();
319
+ if (invoicingTo) {
320
+ // Send the e-mail
321
+ email_1.Email.sendInternal({
322
+ to: invoicingTo,
323
+ bcc: "simon@stamhoofd.be",
324
+ subject: "Betaling mislukt voor " + organization.name,
325
+ text: "Dag " + organization.name + ", \n\nDe automatische betaling via domiciliëring van jullie openstaande bedrag is mislukt (zie daarvoor onze vorige e-mail). Kijk even na wat er fout ging en betaal het openstaande bedrag manueel om te vermijden dat bepaalde diensten tijdelijk worden uitgeschakeld. Betalen kan via Stamhoofd > Instellingen > Facturen en betalingen > Openstaand bedrag > Afrekenen. Neem gerust contact met ons op als je bijkomende vragen hebt.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
326
+ }, organization.i18n);
327
+ }
328
+ }
329
+ }
330
+ if (markFailed && this.organizationId && payment.method === structures_1.PaymentMethod.Transfer) {
331
+ const organization = await _1.Organization.getByID(this.organizationId);
332
+ if (organization) {
333
+ const invoicingTo = await organization.getInvoicingToEmails();
334
+ if (invoicingTo) {
335
+ // Send the e-mail
336
+ email_1.Email.sendInternal({
337
+ to: invoicingTo,
338
+ bcc: "simon@stamhoofd.be",
339
+ subject: "Betaling mislukt voor " + organization.name,
340
+ text: "Dag " + organization.name + ", \n\nBij nazicht blijkt dat we geen overschrijving hebben ontvangen voor jullie aankoop. Kijk even na wat er fout ging en betaal het openstaande bedrag om te vermijden dat de diensten worden uitgeschakeld. Betalen kan via Stamhoofd > Instellingen > Facturen en betalingen > Openstaand bedrag > Afrekenen. Neem gerust contact met ons op als je bijkomende vragen hebt.\n\nMet vriendelijke groeten,\nStamhoofd\n\n",
341
+ }, organization.i18n);
342
+ }
343
+ }
344
+ }
345
+ }
346
+ static async getBillingStatus(organization, hideExpired = true) {
347
+ var _a, _b, _c, _d;
348
+ // Get all packages
349
+ const packages = hideExpired ? (await _1.STPackage.getForOrganization(organization.id)) : (await _1.STPackage.getForOrganizationIncludingExpired(organization.id));
350
+ // GEt all invoices
351
+ const invoices = await STInvoice.where({ organizationId: organization.id, number: { sign: "!=", value: null } });
352
+ // Get the pending invoice if it exists
353
+ const pendingInvoice = await _1.STPendingInvoice.getForOrganization(organization.id);
354
+ // Generate temporary pending invoice items for the current state without adding them IRL
355
+ let notYetCreatedItems = [];
356
+ try {
357
+ notYetCreatedItems = await _1.STPendingInvoice.createItems(organization.id, pendingInvoice);
358
+ }
359
+ catch (e) {
360
+ console.error(e);
361
+ }
362
+ const pendingInvoiceStruct = pendingInvoice ? structures_1.STPendingInvoice.create(pendingInvoice) : (notYetCreatedItems.length > 0 ? structures_1.STPendingInvoice.create({
363
+ meta: structures_1.STInvoiceMeta.create({
364
+ companyName: (_a = organization.meta.companyName) !== null && _a !== void 0 ? _a : organization.name,
365
+ companyContact: (_b = organization.privateMeta.billingContact) !== null && _b !== void 0 ? _b : "",
366
+ companyAddress: (_c = organization.meta.companyAddress) !== null && _c !== void 0 ? _c : organization.address,
367
+ companyVATNumber: organization.meta.VATNumber,
368
+ VATPercentage: (0, structures_1.calculateVATPercentage)((_d = organization.meta.companyAddress) !== null && _d !== void 0 ? _d : organization.address, organization.meta.VATNumber)
369
+ })
370
+ }) : null);
371
+ if (notYetCreatedItems.length > 0 && pendingInvoiceStruct) {
372
+ pendingInvoiceStruct.meta.items.push(...notYetCreatedItems);
373
+ }
374
+ if (pendingInvoiceStruct) {
375
+ // Compress
376
+ pendingInvoiceStruct.meta.items = structures_1.STInvoiceItem.compress(pendingInvoiceStruct.meta.items);
377
+ }
378
+ if ((pendingInvoice === null || pendingInvoice === void 0 ? void 0 : pendingInvoice.invoiceId) && pendingInvoiceStruct) {
379
+ const invoice = await STInvoice.getByID(pendingInvoice === null || pendingInvoice === void 0 ? void 0 : pendingInvoice.invoiceId);
380
+ if (invoice) {
381
+ pendingInvoiceStruct.invoice = await invoice.getStructure();
382
+ }
383
+ }
384
+ invoices.sort((a, b) => utility_1.Sorter.byDateValue(a.createdAt, b.createdAt));
385
+ const invoiceStructures = [];
386
+ for (const invoice of invoices) {
387
+ invoiceStructures.push(await invoice.getStructure());
388
+ }
389
+ const credits = await _1.STCredit.getForOrganization(organization.id);
390
+ return structures_1.STBillingStatus.create({
391
+ packages: packages.map(pack => structures_1.STPackage.create(pack)),
392
+ invoices: invoiceStructures,
393
+ pendingInvoice: pendingInvoiceStruct,
394
+ credits: credits.map(c => structures_1.STCredit.create(c))
395
+ });
396
+ }
397
+ }
398
+ exports.STInvoice = STInvoice;
399
+ STInvoice.table = "stamhoofd_invoices";
400
+ STInvoice.numberCache = null;
401
+ STInvoice.organization = new simple_database_1.ManyToOneRelation(_1.Organization, "organization");
402
+ STInvoice.payment = new simple_database_1.ManyToOneRelation(_1.Payment, "payment");
403
+ tslib_1.__decorate([
404
+ (0, simple_database_1.column)({
405
+ primary: true, type: "string", beforeSave(value) {
406
+ return value !== null && value !== void 0 ? value : (0, uuid_1.v4)();
407
+ }
408
+ })
409
+ ], STInvoice.prototype, "id", void 0);
410
+ tslib_1.__decorate([
411
+ (0, simple_database_1.column)({ foreignKey: STInvoice.organization, type: "string", nullable: true })
412
+ ], STInvoice.prototype, "organizationId", void 0);
413
+ tslib_1.__decorate([
414
+ (0, simple_database_1.column)({ type: "string", nullable: true })
415
+ ], STInvoice.prototype, "creditId", void 0);
416
+ tslib_1.__decorate([
417
+ (0, simple_database_1.column)({ type: "string", nullable: true, foreignKey: STInvoice.payment })
418
+ ], STInvoice.prototype, "paymentId", void 0);
419
+ tslib_1.__decorate([
420
+ (0, simple_database_1.column)({ type: "json", decoder: structures_1.STInvoiceMeta })
421
+ ], STInvoice.prototype, "meta", void 0);
422
+ tslib_1.__decorate([
423
+ (0, simple_database_1.column)({ type: "integer", nullable: true })
424
+ ], STInvoice.prototype, "number", void 0);
425
+ tslib_1.__decorate([
426
+ (0, simple_database_1.column)({ type: "datetime", nullable: true })
427
+ ], STInvoice.prototype, "paidAt", void 0);
428
+ tslib_1.__decorate([
429
+ (0, simple_database_1.column)({
430
+ type: "datetime", beforeSave(old) {
431
+ if (old !== undefined) {
432
+ return old;
433
+ }
434
+ const date = new Date();
435
+ date.setMilliseconds(0);
436
+ return date;
437
+ }
438
+ })
439
+ ], STInvoice.prototype, "createdAt", void 0);
440
+ tslib_1.__decorate([
441
+ (0, simple_database_1.column)({
442
+ type: "datetime", beforeSave() {
443
+ const date = new Date();
444
+ date.setMilliseconds(0);
445
+ return date;
446
+ },
447
+ skipUpdate: true
448
+ })
449
+ ], STInvoice.prototype, "updatedAt", void 0);
450
+ tslib_1.__decorate([
451
+ (0, simple_database_1.column)({ type: "string", nullable: true })
452
+ ], STInvoice.prototype, "reference", void 0);
453
+ //# sourceMappingURL=STInvoice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STInvoice.js","sourceRoot":"","sources":["../../../src/models/STInvoice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Model } from "@simonbackx/simple-database";
2
+ import { EmailTemplateType, STPackageMeta, STPackageStatus, STPackageType } from '@stamhoofd/structures';
3
+ export declare class STPackage extends Model {
4
+ static table: string;
5
+ id: string;
6
+ /**
7
+ * We keep packages of deleted organizations for statistics, so this doesn't have a foreign key
8
+ */
9
+ organizationId: string;
10
+ meta: STPackageMeta;
11
+ createdAt: Date;
12
+ updatedAt: Date;
13
+ validAt: Date | null;
14
+ validUntil: Date | null;
15
+ removeAt: Date | null;
16
+ emailCount: number;
17
+ lastEmailAt: Date | null;
18
+ static getForOrganization(organizationId: string): Promise<STPackage[]>;
19
+ static getForOrganizationIncludingExpired(organizationId: string): Promise<STPackage[]>;
20
+ static getOrganizationPackagesMap(organizationId: string): Promise<Map<STPackageType, STPackageStatus>>;
21
+ static updateOrganizationPackages(organizationId: string): Promise<void>;
22
+ activate(): Promise<void>;
23
+ didRenew(renewed: STPackage): Promise<void>;
24
+ deactivate(): Promise<void>;
25
+ /**
26
+ * Create a renewed package, but not yet saved!
27
+ */
28
+ createRenewed(): STPackage;
29
+ createStatus(): STPackageStatus;
30
+ sendExpiryEmail(): Promise<void>;
31
+ sendEmailTemplate(data: {
32
+ type: EmailTemplateType;
33
+ replyTo?: string;
34
+ }): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=STPackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STPackage.d.ts","sourceRoot":"","sources":["../../../src/models/STPackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAA0B,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AASjI,qBAAa,SAAU,SAAQ,KAAK;IAChC,MAAM,CAAC,KAAK,SAAwB;IAQpC,EAAE,EAAG,MAAM,CAAC;IAEZ;;OAEG;IAEH,cAAc,EAAE,MAAM,CAAA;IAGtB,IAAI,EAAE,aAAa,CAAA;IAYnB,SAAS,EAAE,IAAI,CAAA;IAUf,SAAS,EAAE,IAAI,CAAA;IAGf,OAAO,EAAE,IAAI,GAAG,IAAI,CAAO;IAG3B,UAAU,EAAE,IAAI,GAAG,IAAI,CAAO;IAG9B,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAO;IAG5B,UAAU,SAAI;IAGd,WAAW,EAAE,IAAI,GAAG,IAAI,CAAO;WAElB,kBAAkB,CAAC,cAAc,EAAE,MAAM;WAOzC,kCAAkC,CAAC,cAAc,EAAE,MAAM;WAIzD,0BAA0B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;WAgBhG,0BAA0B,CAAC,cAAc,EAAE,MAAM;IAoBxD,QAAQ;IAeR,QAAQ,CAAC,OAAO,EAAE,SAAS;IAM3B,UAAU;IAQhB;;OAEG;IACH,aAAa,IAAI,SAAS;IA0C1B,YAAY,IAAI,eAAe;IAWzB,eAAe;IAsDf,iBAAiB,CAAC,IAAI,EAAE;QAC1B,IAAI,EAAE,iBAAiB,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAA;KACnB;CAiEJ"}