@silexpert/core 1.2.26 → 1.2.28

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 (474) hide show
  1. package/dist/cjs/api/index.d.ts.map +1 -1
  2. package/dist/cjs/api/index.js +8 -3
  3. package/dist/cjs/api/index.js.map +1 -1
  4. package/dist/cjs/api/resources/Employee.d.ts.map +1 -1
  5. package/dist/cjs/api/resources/Employee.js +1 -0
  6. package/dist/cjs/api/resources/Employee.js.map +1 -1
  7. package/dist/cjs/api/resources/RegistrationForm.d.ts +3 -2
  8. package/dist/cjs/api/resources/RegistrationForm.d.ts.map +1 -1
  9. package/dist/cjs/api/resources/RegistrationForm.js +4 -1
  10. package/dist/cjs/api/resources/RegistrationForm.js.map +1 -1
  11. package/dist/cjs/api/resources/Task.d.ts.map +1 -1
  12. package/dist/cjs/api/resources/Task.js +1 -0
  13. package/dist/cjs/api/resources/Task.js.map +1 -1
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +0 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/types/Enum/Aspone.d.ts +57 -0
  18. package/dist/cjs/types/Enum/Aspone.d.ts.map +1 -1
  19. package/dist/cjs/types/Enum/Aspone.js +94 -1
  20. package/dist/cjs/types/Enum/Aspone.js.map +1 -1
  21. package/dist/cjs/types/Enum/BalanceSheet.js +1 -1
  22. package/dist/cjs/types/Enum/BalanceSheet.js.map +1 -1
  23. package/dist/cjs/types/Enum/BalanceSheetQuestion.d.ts.map +1 -1
  24. package/dist/cjs/types/Enum/BalanceSheetQuestion.js +2 -0
  25. package/dist/cjs/types/Enum/BalanceSheetQuestion.js.map +1 -1
  26. package/dist/cjs/types/Enum/BalanceSheetQuestionWording.d.ts.map +1 -1
  27. package/dist/cjs/types/Enum/BalanceSheetQuestionWording.js +1 -0
  28. package/dist/cjs/types/Enum/BalanceSheetQuestionWording.js.map +1 -1
  29. package/dist/cjs/types/Enum/CerfaType.d.ts +2 -1
  30. package/dist/cjs/types/Enum/CerfaType.d.ts.map +1 -1
  31. package/dist/cjs/types/Enum/CerfaType.js +1 -0
  32. package/dist/cjs/types/Enum/CerfaType.js.map +1 -1
  33. package/dist/cjs/types/Enum/CommercialManagement.d.ts +28 -0
  34. package/dist/cjs/types/Enum/CommercialManagement.d.ts.map +1 -1
  35. package/dist/cjs/types/Enum/CommercialManagement.js +137 -1
  36. package/dist/cjs/types/Enum/CommercialManagement.js.map +1 -1
  37. package/dist/cjs/types/Enum/RevisionGuide.d.ts.map +1 -1
  38. package/dist/cjs/types/Enum/RevisionGuide.js +5 -0
  39. package/dist/cjs/types/Enum/RevisionGuide.js.map +1 -1
  40. package/dist/cjs/types/Enum/Role.d.ts.map +1 -1
  41. package/dist/cjs/types/Enum/Role.js +1 -0
  42. package/dist/cjs/types/Enum/Role.js.map +1 -1
  43. package/dist/cjs/types/Enum/SalesContractBrandClementine.js +4 -4
  44. package/dist/cjs/types/Enum/SalesContractBrandClementine.js.map +1 -1
  45. package/dist/cjs/types/Enum/SalesContractBrandPourcentage.d.ts +1 -26
  46. package/dist/cjs/types/Enum/SalesContractBrandPourcentage.d.ts.map +1 -1
  47. package/dist/cjs/types/Enum/SalesContractBrandPourcentage.js +6 -6
  48. package/dist/cjs/types/Enum/SalesContractBrandPourcentage.js.map +1 -1
  49. package/dist/cjs/types/Enum/TransactionKind.d.ts.map +1 -1
  50. package/dist/cjs/types/Enum/TransactionKind.js.map +1 -1
  51. package/dist/cjs/types/Enum/TransactionStatus.d.ts.map +1 -1
  52. package/dist/cjs/types/Enum/TransactionStatus.js.map +1 -1
  53. package/dist/cjs/types/Enum/TypePayment.d.ts.map +1 -1
  54. package/dist/cjs/types/Enum/TypePayment.js +1 -0
  55. package/dist/cjs/types/Enum/TypePayment.js.map +1 -1
  56. package/dist/cjs/types/Interface/api/accountingFiles/Ocr.d.ts.map +1 -1
  57. package/dist/cjs/types/Interface/api/accountingFiles/Ocr.js.map +1 -1
  58. package/dist/cjs/types/Interface/api/cerfa/2573.d.ts +91 -0
  59. package/dist/cjs/types/Interface/api/cerfa/2573.d.ts.map +1 -0
  60. package/dist/cjs/types/Interface/api/cerfa/2573.js +3 -0
  61. package/dist/cjs/types/Interface/api/cerfa/2573.js.map +1 -0
  62. package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.d.ts +1 -0
  63. package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.d.ts.map +1 -1
  64. package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.js +1 -0
  65. package/dist/cjs/types/Interface/api/cerfa/CreateCerfa.js.map +1 -1
  66. package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.d.ts +2 -1
  67. package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.d.ts.map +1 -1
  68. package/dist/cjs/types/Interface/api/cerfa/ReadCerfa.js.map +1 -1
  69. package/dist/cjs/types/Interface/api/checklist/Read.d.ts +1 -0
  70. package/dist/cjs/types/Interface/api/checklist/Read.d.ts.map +1 -1
  71. package/dist/cjs/types/Interface/api/checklist/Read.js.map +1 -1
  72. package/dist/cjs/types/Interface/api/commercialManagement/Create.d.ts +15 -0
  73. package/dist/cjs/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
  74. package/dist/cjs/types/Interface/api/commercialManagement/Create.js +70 -1
  75. package/dist/cjs/types/Interface/api/commercialManagement/Create.js.map +1 -1
  76. package/dist/cjs/types/Interface/api/commercialManagement/Read.d.ts +4 -0
  77. package/dist/cjs/types/Interface/api/commercialManagement/Read.d.ts.map +1 -1
  78. package/dist/cjs/types/Interface/api/commercialManagement/Read.js.map +1 -1
  79. package/dist/cjs/types/Interface/api/config/ConfigType.d.ts +282 -0
  80. package/dist/cjs/types/Interface/api/config/ConfigType.d.ts.map +1 -0
  81. package/dist/cjs/types/Interface/api/config/ConfigType.js +3 -0
  82. package/dist/cjs/types/Interface/api/config/ConfigType.js.map +1 -0
  83. package/dist/cjs/types/Interface/api/crisp/GetCrisp.d.ts.map +1 -1
  84. package/dist/cjs/types/Interface/api/crisp/GetCrisp.js.map +1 -1
  85. package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.d.ts.map +1 -1
  86. package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js +3 -1
  87. package/dist/cjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js.map +1 -1
  88. package/dist/cjs/types/Interface/api/journal/Journals.d.ts.map +1 -1
  89. package/dist/cjs/types/Interface/api/journal/Journals.js.map +1 -1
  90. package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.d.ts.map +1 -1
  91. package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js +3 -1
  92. package/dist/cjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js.map +1 -1
  93. package/dist/cjs/types/Interface/api/notion/NotionResponse.d.ts +4 -4
  94. package/dist/cjs/types/Interface/api/notion/NotionResponse.d.ts.map +1 -1
  95. package/dist/cjs/types/Interface/api/notion/NotionResponse.js.map +1 -1
  96. package/dist/cjs/types/Interface/api/pappers/QueryPappers.d.ts.map +1 -1
  97. package/dist/cjs/types/Interface/api/pappers/QueryPappers.js.map +1 -1
  98. package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.d.ts.map +1 -1
  99. package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js +3 -1
  100. package/dist/cjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js.map +1 -1
  101. package/dist/cjs/types/Interface/api/promoCode/ReadDefaultPromotion.d.ts.map +1 -1
  102. package/dist/cjs/types/Interface/api/promoCode/ReadDefaultPromotion.js.map +1 -1
  103. package/dist/cjs/types/Interface/api/registration/CreateRegistration.d.ts +2 -0
  104. package/dist/cjs/types/Interface/api/registration/CreateRegistration.d.ts.map +1 -1
  105. package/dist/cjs/types/Interface/api/registration/CreateRegistration.js.map +1 -1
  106. package/dist/cjs/types/Interface/api/shopify/ShopifyFinancialStatus.d.ts.map +1 -1
  107. package/dist/cjs/types/Interface/api/shopify/ShopifyFinancialStatus.js.map +1 -1
  108. package/dist/cjs/types/Interface/api/shopify/ShopifyOrder.d.ts.map +1 -1
  109. package/dist/cjs/types/Interface/api/shopify/ShopifyOrder.js.map +1 -1
  110. package/dist/cjs/types/Interface/api/shopify/discount_code.d.ts.map +1 -1
  111. package/dist/cjs/types/Interface/api/shopify/discount_code.js.map +1 -1
  112. package/dist/cjs/types/Interface/api/shopify/shipping_line.d.ts.map +1 -1
  113. package/dist/cjs/types/Interface/api/shopify/shipping_line.js.map +1 -1
  114. package/dist/cjs/types/Interface/models/IBalanceSheetQuestion.d.ts.map +1 -1
  115. package/dist/cjs/types/Interface/models/IBalanceSheetQuestion.js.map +1 -1
  116. package/dist/cjs/types/Interface/models/IFecFile.d.ts.map +1 -1
  117. package/dist/cjs/types/Interface/models/IFecFile.js.map +1 -1
  118. package/dist/cjs/types/Interface/models/IRegistration.d.ts.map +1 -1
  119. package/dist/cjs/types/Interface/models/IRegistration.js.map +1 -1
  120. package/dist/cjs/types/Interface/models/ISaleEmail.d.ts +15 -0
  121. package/dist/cjs/types/Interface/models/ISaleEmail.d.ts.map +1 -0
  122. package/dist/cjs/types/Interface/models/ISaleEmail.js +3 -0
  123. package/dist/cjs/types/Interface/models/ISaleEmail.js.map +1 -0
  124. package/dist/cjs/types/Interface/models/IUser.d.ts.map +1 -1
  125. package/dist/cjs/types/Interface/models/IUser.js.map +1 -1
  126. package/dist/cjs/types/index.d.ts +2 -0
  127. package/dist/cjs/types/index.d.ts.map +1 -1
  128. package/dist/cjs/types/index.js +2 -0
  129. package/dist/cjs/types/index.js.map +1 -1
  130. package/dist/cjs/utils/brands.d.ts.map +1 -1
  131. package/dist/cjs/utils/brands.js +5 -0
  132. package/dist/cjs/utils/brands.js.map +1 -1
  133. package/dist/cjs/utils/checkup.d.ts.map +1 -1
  134. package/dist/cjs/utils/checkup.js +5 -0
  135. package/dist/cjs/utils/checkup.js.map +1 -1
  136. package/dist/cjs/utils/commercialManagement/document.d.ts.map +1 -1
  137. package/dist/cjs/utils/commercialManagement/document.js +6 -5
  138. package/dist/cjs/utils/commercialManagement/document.js.map +1 -1
  139. package/dist/cjs/utils/commercialManagement/recurrence.js +2 -2
  140. package/dist/cjs/utils/commercialManagement/recurrence.js.map +1 -1
  141. package/dist/cjs/utils/commercialManagement/saleEmail.d.ts +10 -0
  142. package/dist/cjs/utils/commercialManagement/saleEmail.d.ts.map +1 -0
  143. package/dist/cjs/utils/commercialManagement/saleEmail.js +34 -0
  144. package/dist/cjs/utils/commercialManagement/saleEmail.js.map +1 -0
  145. package/dist/cjs/utils/commercialManagement/vat.d.ts.map +1 -1
  146. package/dist/cjs/utils/commercialManagement/vat.js +1 -0
  147. package/dist/cjs/utils/commercialManagement/vat.js.map +1 -1
  148. package/dist/cjs/utils/date.d.ts.map +1 -1
  149. package/dist/cjs/utils/date.js +9 -0
  150. package/dist/cjs/utils/date.js.map +1 -1
  151. package/dist/cjs/utils/decorators.d.ts.map +1 -1
  152. package/dist/cjs/utils/decorators.js +3 -4
  153. package/dist/cjs/utils/decorators.js.map +1 -1
  154. package/dist/cjs/utils/email.d.ts.map +1 -1
  155. package/dist/cjs/utils/email.js +22 -0
  156. package/dist/cjs/utils/email.js.map +1 -1
  157. package/dist/cjs/utils/isUrl.d.ts.map +1 -1
  158. package/dist/cjs/utils/isUrl.js +1 -2
  159. package/dist/cjs/utils/isUrl.js.map +1 -1
  160. package/dist/cjs/utils/noLodash.d.ts.map +1 -1
  161. package/dist/cjs/utils/noLodash.js +10 -2
  162. package/dist/cjs/utils/noLodash.js.map +1 -1
  163. package/dist/cjs/utils/objectUtils/flattenObject.d.ts.map +1 -1
  164. package/dist/cjs/utils/objectUtils/flattenObject.js +1 -0
  165. package/dist/cjs/utils/objectUtils/flattenObject.js.map +1 -1
  166. package/dist/cjs/utils/objectUtils/fullFlattenObject.d.ts.map +1 -1
  167. package/dist/cjs/utils/objectUtils/fullFlattenObject.js +1 -0
  168. package/dist/cjs/utils/objectUtils/fullFlattenObject.js.map +1 -1
  169. package/dist/cjs/utils/objectUtils/unflattenObject.d.ts.map +1 -1
  170. package/dist/cjs/utils/objectUtils/unflattenObject.js +0 -1
  171. package/dist/cjs/utils/objectUtils/unflattenObject.js.map +1 -1
  172. package/dist/cjs/utils/payment.d.ts.map +1 -1
  173. package/dist/cjs/utils/payment.js +6 -1
  174. package/dist/cjs/utils/payment.js.map +1 -1
  175. package/dist/cjs/utils/phone.d.ts.map +1 -1
  176. package/dist/cjs/utils/phone.js +1 -0
  177. package/dist/cjs/utils/phone.js.map +1 -1
  178. package/dist/cjs/utils/quotation.js +2 -2
  179. package/dist/cjs/utils/quotation.js.map +1 -1
  180. package/dist/cjs/utils/social.js +0 -1
  181. package/dist/cjs/utils/social.js.map +1 -1
  182. package/dist/cjs/utils/statutsGeneration.js +2 -2
  183. package/dist/cjs/utils/statutsGeneration.js.map +1 -1
  184. package/dist/cjs/utils/tests/payment.spec.js +30 -39
  185. package/dist/cjs/utils/tests/payment.spec.js.map +1 -1
  186. package/dist/cjs/utils/transforms/boolean.transform.d.ts.map +1 -1
  187. package/dist/cjs/utils/transforms/boolean.transform.js +3 -1
  188. package/dist/cjs/utils/transforms/boolean.transform.js.map +1 -1
  189. package/dist/cjs/utils/vat/3310/century23.d.ts.map +1 -1
  190. package/dist/cjs/utils/vat/3310/century23.js +23 -0
  191. package/dist/cjs/utils/vat/3310/century23.js.map +1 -1
  192. package/dist/cjs/utils/vat/3310/century24.d.ts.map +1 -1
  193. package/dist/cjs/utils/vat/3310/century24.js +23 -0
  194. package/dist/cjs/utils/vat/3310/century24.js.map +1 -1
  195. package/dist/cjs/utils/vat/3517/century23.d.ts.map +1 -1
  196. package/dist/cjs/utils/vat/3517/century23.js +4 -0
  197. package/dist/cjs/utils/vat/3517/century23.js.map +1 -1
  198. package/dist/cjs/utils/vat/registration.d.ts.map +1 -1
  199. package/dist/cjs/utils/vat/registration.js +0 -1
  200. package/dist/cjs/utils/vat/registration.js.map +1 -1
  201. package/dist/mjs/api/index.d.ts.map +1 -1
  202. package/dist/mjs/api/index.js +7 -1
  203. package/dist/mjs/api/index.js.map +1 -1
  204. package/dist/mjs/api/resources/Employee.d.ts.map +1 -1
  205. package/dist/mjs/api/resources/Employee.js +1 -0
  206. package/dist/mjs/api/resources/Employee.js.map +1 -1
  207. package/dist/mjs/api/resources/RegistrationForm.d.ts +3 -2
  208. package/dist/mjs/api/resources/RegistrationForm.d.ts.map +1 -1
  209. package/dist/mjs/api/resources/RegistrationForm.js +4 -1
  210. package/dist/mjs/api/resources/RegistrationForm.js.map +1 -1
  211. package/dist/mjs/api/resources/Task.d.ts.map +1 -1
  212. package/dist/mjs/api/resources/Task.js +1 -0
  213. package/dist/mjs/api/resources/Task.js.map +1 -1
  214. package/dist/mjs/index.d.ts.map +1 -1
  215. package/dist/mjs/index.js +0 -1
  216. package/dist/mjs/index.js.map +1 -1
  217. package/dist/mjs/types/Enum/Aspone.d.ts +57 -0
  218. package/dist/mjs/types/Enum/Aspone.d.ts.map +1 -1
  219. package/dist/mjs/types/Enum/Aspone.js +93 -0
  220. package/dist/mjs/types/Enum/Aspone.js.map +1 -1
  221. package/dist/mjs/types/Enum/BalanceSheet.js +1 -1
  222. package/dist/mjs/types/Enum/BalanceSheet.js.map +1 -1
  223. package/dist/mjs/types/Enum/BalanceSheetQuestion.d.ts.map +1 -1
  224. package/dist/mjs/types/Enum/BalanceSheetQuestion.js +2 -0
  225. package/dist/mjs/types/Enum/BalanceSheetQuestion.js.map +1 -1
  226. package/dist/mjs/types/Enum/BalanceSheetQuestionWording.d.ts.map +1 -1
  227. package/dist/mjs/types/Enum/BalanceSheetQuestionWording.js +1 -0
  228. package/dist/mjs/types/Enum/BalanceSheetQuestionWording.js.map +1 -1
  229. package/dist/mjs/types/Enum/CerfaType.d.ts +2 -1
  230. package/dist/mjs/types/Enum/CerfaType.d.ts.map +1 -1
  231. package/dist/mjs/types/Enum/CerfaType.js +1 -0
  232. package/dist/mjs/types/Enum/CerfaType.js.map +1 -1
  233. package/dist/mjs/types/Enum/CommercialManagement.d.ts +28 -0
  234. package/dist/mjs/types/Enum/CommercialManagement.d.ts.map +1 -1
  235. package/dist/mjs/types/Enum/CommercialManagement.js +136 -0
  236. package/dist/mjs/types/Enum/CommercialManagement.js.map +1 -1
  237. package/dist/mjs/types/Enum/RevisionGuide.d.ts.map +1 -1
  238. package/dist/mjs/types/Enum/RevisionGuide.js +5 -0
  239. package/dist/mjs/types/Enum/RevisionGuide.js.map +1 -1
  240. package/dist/mjs/types/Enum/Role.d.ts.map +1 -1
  241. package/dist/mjs/types/Enum/Role.js +1 -0
  242. package/dist/mjs/types/Enum/Role.js.map +1 -1
  243. package/dist/mjs/types/Enum/SalesContractBrandClementine.js +4 -4
  244. package/dist/mjs/types/Enum/SalesContractBrandClementine.js.map +1 -1
  245. package/dist/mjs/types/Enum/SalesContractBrandPourcentage.d.ts +1 -26
  246. package/dist/mjs/types/Enum/SalesContractBrandPourcentage.d.ts.map +1 -1
  247. package/dist/mjs/types/Enum/SalesContractBrandPourcentage.js +6 -6
  248. package/dist/mjs/types/Enum/SalesContractBrandPourcentage.js.map +1 -1
  249. package/dist/mjs/types/Enum/TransactionKind.d.ts.map +1 -1
  250. package/dist/mjs/types/Enum/TransactionKind.js.map +1 -1
  251. package/dist/mjs/types/Enum/TransactionStatus.d.ts.map +1 -1
  252. package/dist/mjs/types/Enum/TransactionStatus.js.map +1 -1
  253. package/dist/mjs/types/Enum/TypePayment.d.ts.map +1 -1
  254. package/dist/mjs/types/Enum/TypePayment.js +1 -0
  255. package/dist/mjs/types/Enum/TypePayment.js.map +1 -1
  256. package/dist/mjs/types/Interface/api/accountingFiles/Ocr.d.ts.map +1 -1
  257. package/dist/mjs/types/Interface/api/accountingFiles/Ocr.js.map +1 -1
  258. package/dist/mjs/types/Interface/api/cerfa/2573.d.ts +91 -0
  259. package/dist/mjs/types/Interface/api/cerfa/2573.d.ts.map +1 -0
  260. package/dist/mjs/types/Interface/api/cerfa/2573.js +2 -0
  261. package/dist/mjs/types/Interface/api/cerfa/2573.js.map +1 -0
  262. package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.d.ts +1 -0
  263. package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.d.ts.map +1 -1
  264. package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.js +1 -0
  265. package/dist/mjs/types/Interface/api/cerfa/CreateCerfa.js.map +1 -1
  266. package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.d.ts +2 -1
  267. package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.d.ts.map +1 -1
  268. package/dist/mjs/types/Interface/api/cerfa/ReadCerfa.js.map +1 -1
  269. package/dist/mjs/types/Interface/api/checklist/Read.d.ts +1 -0
  270. package/dist/mjs/types/Interface/api/checklist/Read.d.ts.map +1 -1
  271. package/dist/mjs/types/Interface/api/checklist/Read.js.map +1 -1
  272. package/dist/mjs/types/Interface/api/commercialManagement/Create.d.ts +15 -0
  273. package/dist/mjs/types/Interface/api/commercialManagement/Create.d.ts.map +1 -1
  274. package/dist/mjs/types/Interface/api/commercialManagement/Create.js +79 -1
  275. package/dist/mjs/types/Interface/api/commercialManagement/Create.js.map +1 -1
  276. package/dist/mjs/types/Interface/api/commercialManagement/Read.d.ts +4 -0
  277. package/dist/mjs/types/Interface/api/commercialManagement/Read.d.ts.map +1 -1
  278. package/dist/mjs/types/Interface/api/commercialManagement/Read.js.map +1 -1
  279. package/dist/mjs/types/Interface/api/config/ConfigType.d.ts +282 -0
  280. package/dist/mjs/types/Interface/api/config/ConfigType.d.ts.map +1 -0
  281. package/dist/mjs/types/Interface/api/config/ConfigType.js +2 -0
  282. package/dist/mjs/types/Interface/api/config/ConfigType.js.map +1 -0
  283. package/dist/mjs/types/Interface/api/crisp/GetCrisp.d.ts.map +1 -1
  284. package/dist/mjs/types/Interface/api/crisp/GetCrisp.js.map +1 -1
  285. package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.d.ts.map +1 -1
  286. package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js +3 -1
  287. package/dist/mjs/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.js.map +1 -1
  288. package/dist/mjs/types/Interface/api/journal/Journals.d.ts.map +1 -1
  289. package/dist/mjs/types/Interface/api/journal/Journals.js.map +1 -1
  290. package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.d.ts.map +1 -1
  291. package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js +3 -1
  292. package/dist/mjs/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.js.map +1 -1
  293. package/dist/mjs/types/Interface/api/notion/NotionResponse.d.ts +4 -4
  294. package/dist/mjs/types/Interface/api/notion/NotionResponse.d.ts.map +1 -1
  295. package/dist/mjs/types/Interface/api/notion/NotionResponse.js.map +1 -1
  296. package/dist/mjs/types/Interface/api/pappers/QueryPappers.d.ts.map +1 -1
  297. package/dist/mjs/types/Interface/api/pappers/QueryPappers.js +3 -0
  298. package/dist/mjs/types/Interface/api/pappers/QueryPappers.js.map +1 -1
  299. package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.d.ts.map +1 -1
  300. package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js +4 -1
  301. package/dist/mjs/types/Interface/api/promoCode/CreateDefaultPromoCode.js.map +1 -1
  302. package/dist/mjs/types/Interface/api/promoCode/ReadDefaultPromotion.d.ts.map +1 -1
  303. package/dist/mjs/types/Interface/api/promoCode/ReadDefaultPromotion.js.map +1 -1
  304. package/dist/mjs/types/Interface/api/registration/CreateRegistration.d.ts +2 -0
  305. package/dist/mjs/types/Interface/api/registration/CreateRegistration.d.ts.map +1 -1
  306. package/dist/mjs/types/Interface/api/registration/CreateRegistration.js.map +1 -1
  307. package/dist/mjs/types/Interface/api/shopify/ShopifyFinancialStatus.d.ts.map +1 -1
  308. package/dist/mjs/types/Interface/api/shopify/ShopifyFinancialStatus.js.map +1 -1
  309. package/dist/mjs/types/Interface/api/shopify/ShopifyOrder.d.ts.map +1 -1
  310. package/dist/mjs/types/Interface/api/shopify/ShopifyOrder.js.map +1 -1
  311. package/dist/mjs/types/Interface/api/shopify/discount_code.d.ts.map +1 -1
  312. package/dist/mjs/types/Interface/api/shopify/discount_code.js.map +1 -1
  313. package/dist/mjs/types/Interface/api/shopify/shipping_line.d.ts.map +1 -1
  314. package/dist/mjs/types/Interface/api/shopify/shipping_line.js.map +1 -1
  315. package/dist/mjs/types/Interface/models/IBalanceSheetQuestion.d.ts.map +1 -1
  316. package/dist/mjs/types/Interface/models/IBalanceSheetQuestion.js.map +1 -1
  317. package/dist/mjs/types/Interface/models/IFecFile.d.ts.map +1 -1
  318. package/dist/mjs/types/Interface/models/IFecFile.js.map +1 -1
  319. package/dist/mjs/types/Interface/models/IRegistration.d.ts.map +1 -1
  320. package/dist/mjs/types/Interface/models/IRegistration.js.map +1 -1
  321. package/dist/mjs/types/Interface/models/ISaleEmail.d.ts +15 -0
  322. package/dist/mjs/types/Interface/models/ISaleEmail.d.ts.map +1 -0
  323. package/dist/mjs/types/Interface/models/ISaleEmail.js +2 -0
  324. package/dist/mjs/types/Interface/models/ISaleEmail.js.map +1 -0
  325. package/dist/mjs/types/Interface/models/IUser.d.ts.map +1 -1
  326. package/dist/mjs/types/Interface/models/IUser.js.map +1 -1
  327. package/dist/mjs/types/index.d.ts +2 -0
  328. package/dist/mjs/types/index.d.ts.map +1 -1
  329. package/dist/mjs/types/index.js +2 -0
  330. package/dist/mjs/types/index.js.map +1 -1
  331. package/dist/mjs/utils/brands.d.ts.map +1 -1
  332. package/dist/mjs/utils/brands.js +5 -0
  333. package/dist/mjs/utils/brands.js.map +1 -1
  334. package/dist/mjs/utils/checkup.d.ts.map +1 -1
  335. package/dist/mjs/utils/checkup.js +5 -0
  336. package/dist/mjs/utils/checkup.js.map +1 -1
  337. package/dist/mjs/utils/commercialManagement/document.d.ts.map +1 -1
  338. package/dist/mjs/utils/commercialManagement/document.js +2 -1
  339. package/dist/mjs/utils/commercialManagement/document.js.map +1 -1
  340. package/dist/mjs/utils/commercialManagement/recurrence.js +2 -2
  341. package/dist/mjs/utils/commercialManagement/recurrence.js.map +1 -1
  342. package/dist/mjs/utils/commercialManagement/saleEmail.d.ts +10 -0
  343. package/dist/mjs/utils/commercialManagement/saleEmail.d.ts.map +1 -0
  344. package/dist/mjs/utils/commercialManagement/saleEmail.js +30 -0
  345. package/dist/mjs/utils/commercialManagement/saleEmail.js.map +1 -0
  346. package/dist/mjs/utils/commercialManagement/vat.d.ts.map +1 -1
  347. package/dist/mjs/utils/commercialManagement/vat.js +1 -0
  348. package/dist/mjs/utils/commercialManagement/vat.js.map +1 -1
  349. package/dist/mjs/utils/date.d.ts.map +1 -1
  350. package/dist/mjs/utils/date.js +9 -0
  351. package/dist/mjs/utils/date.js.map +1 -1
  352. package/dist/mjs/utils/decorators.d.ts.map +1 -1
  353. package/dist/mjs/utils/decorators.js +3 -4
  354. package/dist/mjs/utils/decorators.js.map +1 -1
  355. package/dist/mjs/utils/email.d.ts.map +1 -1
  356. package/dist/mjs/utils/email.js +22 -0
  357. package/dist/mjs/utils/email.js.map +1 -1
  358. package/dist/mjs/utils/isUrl.d.ts.map +1 -1
  359. package/dist/mjs/utils/isUrl.js +1 -2
  360. package/dist/mjs/utils/isUrl.js.map +1 -1
  361. package/dist/mjs/utils/noLodash.d.ts.map +1 -1
  362. package/dist/mjs/utils/noLodash.js +8 -1
  363. package/dist/mjs/utils/noLodash.js.map +1 -1
  364. package/dist/mjs/utils/objectUtils/flattenObject.d.ts.map +1 -1
  365. package/dist/mjs/utils/objectUtils/flattenObject.js +1 -0
  366. package/dist/mjs/utils/objectUtils/flattenObject.js.map +1 -1
  367. package/dist/mjs/utils/objectUtils/fullFlattenObject.d.ts.map +1 -1
  368. package/dist/mjs/utils/objectUtils/fullFlattenObject.js +1 -0
  369. package/dist/mjs/utils/objectUtils/fullFlattenObject.js.map +1 -1
  370. package/dist/mjs/utils/objectUtils/unflattenObject.d.ts.map +1 -1
  371. package/dist/mjs/utils/objectUtils/unflattenObject.js +0 -1
  372. package/dist/mjs/utils/objectUtils/unflattenObject.js.map +1 -1
  373. package/dist/mjs/utils/payment.d.ts.map +1 -1
  374. package/dist/mjs/utils/payment.js +6 -1
  375. package/dist/mjs/utils/payment.js.map +1 -1
  376. package/dist/mjs/utils/phone.d.ts.map +1 -1
  377. package/dist/mjs/utils/phone.js +1 -0
  378. package/dist/mjs/utils/phone.js.map +1 -1
  379. package/dist/mjs/utils/quotation.js +1 -1
  380. package/dist/mjs/utils/quotation.js.map +1 -1
  381. package/dist/mjs/utils/social.js +0 -1
  382. package/dist/mjs/utils/social.js.map +1 -1
  383. package/dist/mjs/utils/statutsGeneration.js +2 -2
  384. package/dist/mjs/utils/statutsGeneration.js.map +1 -1
  385. package/dist/mjs/utils/tests/payment.spec.js +15 -15
  386. package/dist/mjs/utils/tests/payment.spec.js.map +1 -1
  387. package/dist/mjs/utils/transforms/boolean.transform.d.ts.map +1 -1
  388. package/dist/mjs/utils/transforms/boolean.transform.js +3 -1
  389. package/dist/mjs/utils/transforms/boolean.transform.js.map +1 -1
  390. package/dist/mjs/utils/vat/3310/century23.d.ts.map +1 -1
  391. package/dist/mjs/utils/vat/3310/century23.js +23 -0
  392. package/dist/mjs/utils/vat/3310/century23.js.map +1 -1
  393. package/dist/mjs/utils/vat/3310/century24.d.ts.map +1 -1
  394. package/dist/mjs/utils/vat/3310/century24.js +23 -0
  395. package/dist/mjs/utils/vat/3310/century24.js.map +1 -1
  396. package/dist/mjs/utils/vat/3517/century23.d.ts.map +1 -1
  397. package/dist/mjs/utils/vat/3517/century23.js +4 -0
  398. package/dist/mjs/utils/vat/3517/century23.js.map +1 -1
  399. package/dist/mjs/utils/vat/registration.d.ts.map +1 -1
  400. package/dist/mjs/utils/vat/registration.js +0 -1
  401. package/dist/mjs/utils/vat/registration.js.map +1 -1
  402. package/eslint.config.mjs +47 -0
  403. package/package.json +7 -10
  404. package/ts/api/index.ts +9 -2
  405. package/ts/api/resources/Employee.ts +1 -0
  406. package/ts/api/resources/RegistrationForm.ts +8 -2
  407. package/ts/api/resources/Task.ts +1 -0
  408. package/ts/index.ts +0 -1
  409. package/ts/types/Enum/Aspone.ts +98 -1
  410. package/ts/types/Enum/BalanceSheet.ts +1 -1
  411. package/ts/types/Enum/BalanceSheetQuestion.ts +2 -0
  412. package/ts/types/Enum/BalanceSheetQuestionWording.ts +1 -0
  413. package/ts/types/Enum/CerfaType.ts +1 -0
  414. package/ts/types/Enum/CommercialManagement.ts +143 -1
  415. package/ts/types/Enum/RevisionGuide.ts +5 -0
  416. package/ts/types/Enum/Role.ts +1 -0
  417. package/ts/types/Enum/SalesContractBrandClementine.ts +4 -4
  418. package/ts/types/Enum/SalesContractBrandPourcentage.ts +7 -7
  419. package/ts/types/Enum/TransactionKind.ts +1 -0
  420. package/ts/types/Enum/TransactionStatus.ts +1 -0
  421. package/ts/types/Enum/TypePayment.ts +1 -0
  422. package/ts/types/Interface/api/accountingFiles/Ocr.ts +1 -0
  423. package/ts/types/Interface/api/cerfa/2573.ts +88 -0
  424. package/ts/types/Interface/api/cerfa/CreateCerfa.ts +1 -0
  425. package/ts/types/Interface/api/cerfa/ReadCerfa.ts +2 -0
  426. package/ts/types/Interface/api/checklist/Read.ts +1 -0
  427. package/ts/types/Interface/api/commercialManagement/Create.ts +58 -2
  428. package/ts/types/Interface/api/commercialManagement/Read.ts +5 -0
  429. package/ts/types/Interface/api/config/ConfigType.ts +325 -0
  430. package/ts/types/Interface/api/crisp/GetCrisp.ts +2 -0
  431. package/ts/types/Interface/api/exerciceQuestion/CreateExerciceQuestion.ts +1 -0
  432. package/ts/types/Interface/api/journal/Journals.ts +0 -1
  433. package/ts/types/Interface/api/kilometricAllowance/CreateKilometricAllowanceValidation.ts +1 -0
  434. package/ts/types/Interface/api/notion/NotionResponse.ts +2 -4
  435. package/ts/types/Interface/api/pappers/QueryPappers.ts +9 -0
  436. package/ts/types/Interface/api/promoCode/CreateDefaultPromoCode.ts +1 -0
  437. package/ts/types/Interface/api/promoCode/ReadDefaultPromotion.ts +1 -0
  438. package/ts/types/Interface/api/registration/CreateRegistration.ts +2 -0
  439. package/ts/types/Interface/api/shopify/ShopifyFinancialStatus.ts +1 -0
  440. package/ts/types/Interface/api/shopify/ShopifyOrder.ts +2 -0
  441. package/ts/types/Interface/api/shopify/discount_code.ts +1 -0
  442. package/ts/types/Interface/api/shopify/shipping_line.ts +2 -0
  443. package/ts/types/Interface/models/IBalanceSheetQuestion.ts +1 -0
  444. package/ts/types/Interface/models/IFecFile.ts +1 -0
  445. package/ts/types/Interface/models/IRegistration.ts +1 -0
  446. package/ts/types/Interface/models/ISaleEmail.ts +18 -0
  447. package/ts/types/Interface/models/IUser.ts +1 -0
  448. package/ts/types/index.ts +2 -0
  449. package/ts/utils/brands.ts +5 -0
  450. package/ts/utils/checkup.ts +5 -0
  451. package/ts/utils/commercialManagement/document.ts +3 -2
  452. package/ts/utils/commercialManagement/recurrence.ts +2 -2
  453. package/ts/utils/commercialManagement/saleEmail.ts +43 -0
  454. package/ts/utils/commercialManagement/vat.ts +1 -0
  455. package/ts/utils/date.ts +9 -0
  456. package/ts/utils/decorators.ts +5 -4
  457. package/ts/utils/email.ts +22 -1
  458. package/ts/utils/isUrl.ts +1 -2
  459. package/ts/utils/noLodash.ts +7 -1
  460. package/ts/utils/objectUtils/flattenObject.ts +1 -0
  461. package/ts/utils/objectUtils/fullFlattenObject.ts +1 -0
  462. package/ts/utils/objectUtils/unflattenObject.ts +0 -1
  463. package/ts/utils/payment.ts +8 -3
  464. package/ts/utils/phone.ts +1 -0
  465. package/ts/utils/quotation.ts +1 -1
  466. package/ts/utils/social.ts +1 -1
  467. package/ts/utils/statutsGeneration.ts +4 -4
  468. package/ts/utils/tests/payment.spec.ts +15 -15
  469. package/ts/utils/transforms/boolean.transform.ts +1 -0
  470. package/ts/utils/vat/3310/century23.ts +24 -0
  471. package/ts/utils/vat/3310/century24.ts +23 -0
  472. package/ts/utils/vat/3517/century23.ts +4 -0
  473. package/ts/utils/vat/registration.ts +0 -1
  474. package/tsconfig-base.json +1 -2
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const dayjs = require("dayjs");
13
4
  const types_1 = require("../../types");
@@ -107,7 +98,7 @@ describe('Payment', () => {
107
98
  // logical
108
99
  // =====================
109
100
  // express
110
- test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => __awaiter(void 0, void 0, void 0, function* () {
101
+ test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => {
111
102
  const payments = (0, payment_1.calculatePaymentsAuto)({
112
103
  idTypeBrand: 1,
113
104
  firstExerciceNonExpresssEndDate,
@@ -124,8 +115,8 @@ describe('Payment', () => {
124
115
  const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;
125
116
  const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;
126
117
  expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);
127
- }));
128
- test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => __awaiter(void 0, void 0, void 0, function* () {
118
+ });
119
+ test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => {
129
120
  var _a, _b, _c, _d;
130
121
  const payments = (0, payment_1.calculatePaymentsAuto)({
131
122
  idTypeBrand: 1,
@@ -143,9 +134,9 @@ describe('Payment', () => {
143
134
  const lastExpressDatePayment = (_b = (_a = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.datePayment;
144
135
  const firstNonExpressDatePayment = (_d = (_c = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.datePayment;
145
136
  expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);
146
- }));
137
+ });
147
138
  // non express
148
- test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => __awaiter(void 0, void 0, void 0, function* () {
139
+ test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => {
149
140
  const mockedDate = dayjs('2024-05-15').toDate();
150
141
  mockdate_1.default.set(mockedDate);
151
142
  const nbMonthDelay = 6;
@@ -170,8 +161,8 @@ describe('Payment', () => {
170
161
  const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
171
162
  expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier
172
163
  mockdate_1.default.reset();
173
- }));
174
- test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => __awaiter(void 0, void 0, void 0, function* () {
164
+ });
165
+ test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => {
175
166
  const nbMonthDelay = 1;
176
167
  const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
177
168
  const payments = (0, payment_1.calculatePaymentsAuto)({
@@ -192,8 +183,8 @@ describe('Payment', () => {
192
183
  });
193
184
  const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);
194
185
  expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier
195
- }));
196
- test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => __awaiter(void 0, void 0, void 0, function* () {
186
+ });
187
+ test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => {
197
188
  const mockedDate = dayjs('2024-05-15').toDate();
198
189
  mockdate_1.default.set(mockedDate);
199
190
  const nbMonthDelay = 6;
@@ -219,8 +210,8 @@ describe('Payment', () => {
219
210
  const amount = Math.round(100 * diff / nbMonthDelay) / 100;
220
211
  expect(payments[1].amount).toStrictEqual(amount);
221
212
  mockdate_1.default.reset();
222
- }));
223
- test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => __awaiter(void 0, void 0, void 0, function* () {
213
+ });
214
+ test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => {
224
215
  const nbMonthDelay = 1;
225
216
  const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();
226
217
  const newListRegulations = [{
@@ -243,9 +234,9 @@ describe('Payment', () => {
243
234
  const diff = (0, types_1.getTaxesIncludedAmount)(yearlyAmountNonExpress, idVat) - newListRegulations.reduce((acc, r) => acc + r.amount - r.amountUsed, 0);
244
235
  const amount = Math.round(100 * diff / 3) / 100;
245
236
  expect(payments[1].amount).toStrictEqual(amount);
246
- }));
237
+ });
247
238
  // annual price increase
248
- test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => __awaiter(void 0, void 0, void 0, function* () {
239
+ test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => {
249
240
  const mockedDate = dayjs('2024-08-15').toDate();
250
241
  mockdate_1.default.set(mockedDate);
251
242
  const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
@@ -269,8 +260,8 @@ describe('Payment', () => {
269
260
  const firstPaymentWithTaxRateForced = listNonExpressPayments[1].amount * 1.0275;
270
261
  expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi
271
262
  mockdate_1.default.reset();
272
- }));
273
- test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => __awaiter(void 0, void 0, void 0, function* () {
263
+ });
264
+ test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => {
274
265
  const mockedDate = dayjs('2024-11-15').toDate();
275
266
  mockdate_1.default.set(mockedDate);
276
267
  const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();
@@ -293,8 +284,8 @@ describe('Payment', () => {
293
284
  const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);
294
285
  expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);
295
286
  mockdate_1.default.reset();
296
- }));
297
- test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => __awaiter(void 0, void 0, void 0, function* () {
287
+ });
288
+ test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => {
298
289
  var _a, _b;
299
290
  const mockedDate = dayjs('2024-06-15').toDate();
300
291
  mockdate_1.default.set(mockedDate);
@@ -319,9 +310,9 @@ describe('Payment', () => {
319
310
  const paymentsOfSecondExo = (_b = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount) !== null && _b !== void 0 ? _b : 0;
320
311
  expect(Math.round(100 * (paymentsOfFirstExo + (0, types_1.getTaxesIncludedAmount)(appCost, idVat) * 1.0275)) / 100).toStrictEqual(paymentsOfSecondExo);
321
312
  mockdate_1.default.reset();
322
- }));
313
+ });
323
314
  // misc
324
- test('should payments been generated sorted by exercices start date', () => __awaiter(void 0, void 0, void 0, function* () {
315
+ test('should payments been generated sorted by exercices start date', () => {
325
316
  var _a;
326
317
  const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];
327
318
  listPartialExercicePrestationExpressCloned[0] = Object.assign(Object.assign({}, listPartialExercicePrestationExpress[0]), { startDate: dayjs().add(1, 'year').startOf('month').toDate() });
@@ -341,8 +332,8 @@ describe('Payment', () => {
341
332
  });
342
333
  expect(payments.length).toBeGreaterThanOrEqual(4);
343
334
  expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs((_a = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _a === void 0 ? void 0 : _a.datePayment), 'month')).toBeGreaterThan(0);
344
- }));
345
- test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => __awaiter(void 0, void 0, void 0, function* () {
335
+ });
336
+ test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => {
346
337
  const mockedDate = dayjs('2024-03-15').toDate();
347
338
  mockdate_1.default.set(mockedDate);
348
339
  const payments = (0, payment_1.calculatePaymentsAuto)({
@@ -377,8 +368,8 @@ describe('Payment', () => {
377
368
  idPaymentMethod: types_1.PaymentMethod.BANK_CARD.id,
378
369
  });
379
370
  mockdate_1.default.reset();
380
- }));
381
- test('should not consider actual month if signed in last 3 days of month', () => __awaiter(void 0, void 0, void 0, function* () {
371
+ });
372
+ test('should not consider actual month if signed in last 3 days of month', () => {
382
373
  var _a;
383
374
  const mockedDate = dayjs('2024-03-29').toDate();
384
375
  mockdate_1.default.set(mockedDate);
@@ -398,8 +389,8 @@ describe('Payment', () => {
398
389
  expect(payments.length).toBeGreaterThanOrEqual(4);
399
390
  expect((_a = payments === null || payments === void 0 ? void 0 : payments[1]) === null || _a === void 0 ? void 0 : _a.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());
400
391
  mockdate_1.default.reset();
401
- }));
402
- test('last payment returned should be last of a year (12/XX)', () => __awaiter(void 0, void 0, void 0, function* () {
392
+ });
393
+ test('last payment returned should be last of a year (12/XX)', () => {
403
394
  const mockedDate = dayjs('2024-03-29').toDate();
404
395
  mockdate_1.default.set(mockedDate);
405
396
  const payments = (0, payment_1.calculatePaymentsAuto)({
@@ -417,8 +408,8 @@ describe('Payment', () => {
417
408
  });
418
409
  expect(payments.length).toBeGreaterThanOrEqual(4);
419
410
  expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);
420
- }));
421
- test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => __awaiter(void 0, void 0, void 0, function* () {
411
+ });
412
+ test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => {
422
413
  var _a, _b, _c;
423
414
  const payments = (0, payment_1.calculatePaymentsAuto)({
424
415
  idTypeBrand: 1,
@@ -434,8 +425,8 @@ describe('Payment', () => {
434
425
  nextYearlyAmountNonExpress
435
426
  });
436
427
  expect(dayjs((_b = (_a = payments.slice(-1)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.datePayment).diff(dayjs((_c = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _c === void 0 ? void 0 : _c.datePayment), 'year', true)).toBeGreaterThan(1);
437
- }));
438
- test('real case : idSociety 114440', () => __awaiter(void 0, void 0, void 0, function* () {
428
+ });
429
+ test('real case : idSociety 114440', () => {
439
430
  var _a, _b, _c;
440
431
  const payments = (0, payment_1.calculatePaymentsAuto)({
441
432
  idTypeBrand: 1,
@@ -457,7 +448,7 @@ describe('Payment', () => {
457
448
  yearlyAmountNonExpress: 1433, nextYearlyAmountNonExpress: 1433
458
449
  });
459
450
  expect(dayjs((_b = (_a = payments.slice(-1)) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.datePayment).diff(dayjs((_c = payments === null || payments === void 0 ? void 0 : payments[0]) === null || _c === void 0 ? void 0 : _c.datePayment), 'year', true)).toBeGreaterThan(1);
460
- }));
451
+ });
461
452
  });
462
453
  });
463
454
  //# sourceMappingURL=payment.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod, LegalFormTypeEnum, getTaxesIncludedAmount } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const nextYearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate(); \n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const listPartialExercicePrestationExpress:PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations:IRegulation[] = [{\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }];\n\n // =====================\n // errors handling\n // =====================\n test('should return error if prestationList doesn\\'t correspond (!hidden, isCatalog, isComptable)', () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const lastExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier\n \n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', async () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const diff = getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / nbMonthDelay) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n \n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', async () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const diff = getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / 3) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n const firstPaymentWithTaxRateForced = listNonExpressPayments[1].amount * 1.0275;\n expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', async () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n \n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', async () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 50,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const paymentsOfFirstExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0)[0].amount ?? 0;\n const paymentsOfSecondExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(Math.round(100 * (paymentsOfFirstExo + getTaxesIncludedAmount(appCost, idVat) * 1.0275)) / 100).toStrictEqual(paymentsOfSecondExo);\n \n MockDate.reset();\n });\n \n // misc\n test('should payments been generated sorted by exercices start date', async () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = { \n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(), \n };\n listPartialExercicePrestationExpressCloned[1] = { \n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(), \n };\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month')).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', async () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject(\n {\n amount: 1320, // 1200 * 1,1\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n expect(payments[1]).toMatchObject(\n {\n amount: 680, // 2000 - (1200 * 1,1)\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[1]?.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', async () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', async () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(), \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(), \n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress: 1433, nextYearlyAmountNonExpress: 1433 });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n });\n});"]}
1
+ {"version":3,"file":"payment.spec.js","sourceRoot":"","sources":["../../../../ts/utils/tests/payment.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dayjs from 'dayjs';\nimport { IRegulation, Vat, PaymentMethod, LegalFormTypeEnum, getTaxesIncludedAmount } from '../../types';\nimport MockDate from 'mockdate';\n\nimport { calculatePaymentsAuto } from '../payment';\nimport { PartialExercicePrestationExpress } from '../../types/Interface/api/payment/Util';\n\ndescribe('Payment', () => {\n describe('calculatePayments', () => {\n const idPrestation = 1;\n const idSociety = 1;\n const yearlyAmountNonExpress = 1800;\n const nextYearlyAmountNonExpress = 1800;\n const appCost = 14.9;\n\n const firstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate(); \n const prestationList = {\n id: 34,\n name: 'Compta Pro',\n isComptable: true,\n isJuridique: false,\n isSocial: false,\n isAttestation: false,\n inAverageCart: true,\n isBack: false,\n minimumPrice: null,\n price: null,\n isCatalog: false,\n isPlannable: false,\n hidden: false,\n isComplementary: false,\n signaturePosition: '400,54,569,90',\n signaturePage: 7,\n };\n const idVat = Vat.TX_10.id;\n const listPartialExercicePrestationExpress:PartialExercicePrestationExpress[] = [\n {\n startDate: dayjs().subtract(2, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(13, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1200,\n },\n {\n startDate: dayjs().subtract(1, 'year').startOf('month').toDate(), \n endDate: dayjs().subtract(1, 'month').endOf('month').toDate(), \n countExpressMonthlyPayment: 2,\n totalAmount: 1800,\n },\n ];\n const listRegulations:IRegulation[] = [{\n amount: 600,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }, {\n amount: 300,\n amountUsed: 300,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }];\n\n // =====================\n // errors handling\n // =====================\n test('should return error if prestationList doesn\\'t correspond (!hidden, isCatalog, isComptable)', () => {\n expect.assertions(2);\n try {\n prestationList.hidden = true;\n calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList: {\n ...prestationList,\n isCatalog: true,\n },\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n } catch (error) {\n expect(error).toBeInstanceOf(Error);\n // @ts-ignore\n expect(error.message).toStrictEqual('Ce type de prestation ne correspond pas aux conditions attendues.');\n }\n });\n\n // =====================\n // logical\n // =====================\n // express\n test('if only one express, monthly payments of actual exo should be in parallel of express monthly payments, smoothed in number of remaining months (mini 3 months) (if not in 3 last month)', () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [listPartialExercicePrestationExpress[0]],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const firstExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0)[0].datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)[0].datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(firstExpressDatePayment, 'month')).toStrictEqual(0);\n });\n test('if more than one express, monthly payments of actual exo should be in a row of express monthly payments and smoothed, smoothed in number of remaining months after express monthly payments (mini 3 months) (if in 3 last month of exercice)', () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const lastExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) < 0).splice(-1)?.[0]?.datePayment;\n const firstNonExpressDatePayment = payments.filter(p => dayjs(p.closingDate).diff(firstExerciceNonExpresssEndDate) === 0)?.[0]?.datePayment;\n expect(dayjs(firstNonExpressDatePayment).diff(lastExpressDatePayment, 'month')).toStrictEqual(1);\n });\n // non express\n test('should return a number of payments equal to nb of remaining months in exercice (if not in 3 last months)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n // const listNonExpressPayments = payments.filter(p => p.closingDate === newFirstExerciceNonExpresssEndDate);\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(1 + nbMonthDelay); //On ajoute 1 pour les frais de dossier\n \n MockDate.reset();\n });\n test('should return a number of payments equal to 3 (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n expect(listNonExpressPayments.length).toStrictEqual(1 + 3); //On ajoute 1 pour les frais de dossier\n });\n test('should (yearlyAmountNonExpress - sum of listRegulations) / count of monthly payments be equal to monthly payment amount (if not in 3 last month)', () => {\n const mockedDate = dayjs('2024-05-15').toDate();\n MockDate.set(mockedDate);\n \n const nbMonthDelay = 6;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const diff = getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / nbMonthDelay) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n \n MockDate.reset();\n });\n test('should (totalAmount - firstPaymentAmount) / 3 be equal to monthly payment amount (if in 3 last month of exercice)', () => {\n const nbMonthDelay = 1;\n const newFirstExerciceNonExpresssEndDate = dayjs().add(nbMonthDelay, 'month').endOf('month').toDate();\n const newListRegulations = [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation];\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: newListRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const diff = getTaxesIncludedAmount(yearlyAmountNonExpress, idVat) - newListRegulations.reduce((acc, r:IRegulation) => acc + r.amount - r.amountUsed, 0);\n const amount = Math.round(100 * diff / 3) / 100;\n\n expect(payments[1].amount).toStrictEqual(amount);\n });\n // annual price increase\n test('should apply annual price increase (2,75%) if signed before last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-08-15').toDate();\n MockDate.set(mockedDate);\n\n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const listNonExpressPayments = payments.filter(p => dayjs(p.closingDate).diff(newFirstExerciceNonExpresssEndDate) === 0);\n const firstPaymentWithTaxRateForced = listNonExpressPayments[1].amount * 1.0275;\n expect(firstPaymentWithTaxRateForced - listNonExpressPayments.splice(-2)[0].amount).toBeLessThanOrEqual(0.01); //Permet de gérer le pb d'arrondi\n\n MockDate.reset();\n });\n test('should not apply annual price increase (2,75%) if signed in last 3 months of civil year', () => {\n const mockedDate = dayjs('2024-11-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(11, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 0,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n \n const listNonExpressPayments = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0);\n expect(listNonExpressPayments[0].amount).toStrictEqual(listNonExpressPayments.splice(-2)[0].amount);\n \n MockDate.reset();\n });\n\n test('should apply 14,9€ HT increase for the second exercice created (only offered on first exo) (no rules for 3 last months)', () => {\n const mockedDate = dayjs('2024-06-15').toDate();\n MockDate.set(mockedDate);\n \n const newFirstExerciceNonExpresssEndDate = dayjs().add(12, 'month').endOf('month').toDate();\n \n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: newFirstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 50,\n amountUsed: 50,\n } as IRegulation],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n\n const paymentsOfFirstExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-06-01')) === 0)[0].amount ?? 0;\n const paymentsOfSecondExo = payments.filter(p => dayjs(p.datePayment).diff(dayjs('2025-07-01')) === 0).splice(-1)[0].amount ?? 0;\n expect(Math.round(100 * (paymentsOfFirstExo + getTaxesIncludedAmount(appCost, idVat) * 1.0275)) / 100).toStrictEqual(paymentsOfSecondExo);\n \n MockDate.reset();\n });\n \n // misc\n test('should payments been generated sorted by exercices start date', () => {\n const listPartialExercicePrestationExpressCloned = [...listPartialExercicePrestationExpress];\n listPartialExercicePrestationExpressCloned[0] = { \n ...listPartialExercicePrestationExpress[0],\n startDate: dayjs().add(1, 'year').startOf('month').toDate(), \n };\n listPartialExercicePrestationExpressCloned[1] = { \n ...listPartialExercicePrestationExpress[1],\n startDate: dayjs().startOf('month').toDate(), \n };\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: listPartialExercicePrestationExpressCloned,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).diff(dayjs(payments?.[0]?.datePayment), 'month')).toBeGreaterThan(0);\n });\n test('if regulations are bigger than sum exercice prestation amounts, should pass some exercice payments', () => {\n const mockedDate = dayjs('2024-03-15').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations: [{\n amount: 2000,\n amountUsed: 0,\n date: new Date(),\n processed: true,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(2);\n expect(payments[0]).toMatchObject(\n {\n amount: 1320, // 1200 * 1,1\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n expect(payments[1]).toMatchObject(\n {\n amount: 680, // 2000 - (1200 * 1,1)\n idPrestation: 1,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n });\n MockDate.reset();\n });\n test('should not consider actual month if signed in last 3 days of month', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: false,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(payments?.[1]?.datePayment).toStrictEqual(dayjs().add(2, 'month').startOf('month').toDate());\n MockDate.reset();\n });\n test('last payment returned should be last of a year (12/XX)', () => {\n const mockedDate = dayjs('2024-03-29').toDate();\n MockDate.set(mockedDate);\n\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress,\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(payments.length).toBeGreaterThanOrEqual(4);\n expect(dayjs(payments[payments.length - 1].datePayment).month()).toStrictEqual(11);\n });\n test('first payment and last payment should have at least one year difference (ex. : 23 - 24)', () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate, \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat,\n listPartialExercicePrestationExpress: [],\n listRegulations,\n yearlyAmountNonExpress,\n nextYearlyAmountNonExpress });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n test('real case : idSociety 114440', () => {\n const payments = calculatePaymentsAuto({ \n idTypeBrand: 1,\n firstExerciceNonExpresssEndDate: dayjs('2024-12-31').toDate(), \n idPrestation,\n isWithApplicationFees: true,\n idLegalForm: LegalFormTypeEnum.SARL,\n prestationList,\n idVat: Vat.TX_20.id,\n listPartialExercicePrestationExpress: [],\n listRegulations: [{\n amount: 1006.8,\n amountUsed: 0,\n date: dayjs('2024-06-06').toDate(), \n processed: false,\n idPaymentMethod: PaymentMethod.BANK_CARD.id,\n idSociety,\n }],\n yearlyAmountNonExpress: 1433, nextYearlyAmountNonExpress: 1433 });\n expect(dayjs(payments.slice(-1)?.[0]?.datePayment).diff(dayjs(payments?.[0]?.datePayment), 'year', true)).toBeGreaterThan(1);\n });\n });\n});"]}
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.transform.d.ts","sourceRoot":"","sources":["../../../../ts/utils/transforms/boolean.transform.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,SAAS,iBAaG,GAAG,OAAO,MAAM,SAIjC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"boolean.transform.d.ts","sourceRoot":"","sources":["../../../../ts/utils/transforms/boolean.transform.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,SAAS,iBAcG,GAAG,OAAO,MAAM,SAIjC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -18,7 +18,9 @@ const valueToBoolean = (value) => {
18
18
  return undefined;
19
19
  };
20
20
  const ToBoolean = () => {
21
- const toPlain = (0, class_transformer_1.Transform)(({ value }) => value, {
21
+ const toPlain = (0, class_transformer_1.Transform)(
22
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
23
+ ({ value }) => value, {
22
24
  toPlainOnly: true,
23
25
  });
24
26
  const toClass = (target, key) => (0, class_transformer_1.Transform)(({ obj }) => valueToBoolean(obj[key]), {
@@ -1 +1 @@
1
- {"version":3,"file":"boolean.transform.js","sourceRoot":"","sources":["../../../../ts/utils/transforms/boolean.transform.ts"],"names":[],"mappings":";;;AAAA,yDAA8C;AAE9C,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,EAAE;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,OAAO,GAAG,IAAA,6BAAS,EACvB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EACpB;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE,CAAC,IAAA,6BAAS,EACrD,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACrC;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE;QAClC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEO,8BAAS","sourcesContent":["import { Transform } from 'class-transformer';\n\nconst valueToBoolean = (value: any) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (['true', 'on', 'yes', '1'].includes(value.toLowerCase())) {\n return true;\n }\n if (['false', 'off', 'no', '0'].includes(value.toLowerCase())) {\n return false;\n }\n return undefined;\n};\n\nconst ToBoolean = () => {\n const toPlain = Transform(\n ({ value }) => value,\n {\n toPlainOnly: true,\n },\n );\n const toClass = (target: any, key: string) => Transform(\n ({ obj }) => valueToBoolean(obj[key]),\n {\n toClassOnly: true,\n },\n )(target, key);\n return (target: any, key: string) => {\n toPlain(target, key);\n toClass(target, key);\n };\n};\n\nexport { ToBoolean };"]}
1
+ {"version":3,"file":"boolean.transform.js","sourceRoot":"","sources":["../../../../ts/utils/transforms/boolean.transform.ts"],"names":[],"mappings":";;;AAAA,yDAA8C;AAE9C,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,EAAE;IACpC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,MAAM,OAAO,GAAG,IAAA,6BAAS;IACvB,+DAA+D;IAC/D,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EACpB;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE,CAAC,IAAA,6BAAS,EACrD,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EACrC;QACE,WAAW,EAAE,IAAI;KAClB,CACF,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE;QAClC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEO,8BAAS","sourcesContent":["import { Transform } from 'class-transformer';\n\nconst valueToBoolean = (value: any) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return value;\n }\n if (['true', 'on', 'yes', '1'].includes(value.toLowerCase())) {\n return true;\n }\n if (['false', 'off', 'no', '0'].includes(value.toLowerCase())) {\n return false;\n }\n return undefined;\n};\n\nconst ToBoolean = () => {\n const toPlain = Transform(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n ({ value }) => value,\n {\n toPlainOnly: true,\n },\n );\n const toClass = (target: any, key: string) => Transform(\n ({ obj }) => valueToBoolean(obj[key]),\n {\n toClassOnly: true,\n },\n )(target, key);\n return (target: any, key: string) => {\n toPlain(target, key);\n toClass(target, key);\n };\n};\n\nexport { ToBoolean };"]}
@@ -1 +1 @@
1
- {"version":3,"file":"century23.d.ts","sourceRoot":"","sources":["../../../../../ts/utils/vat/3310/century23.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAKhG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAG/F,wBAAgB,4BAA4B,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,cAAc,GAAE,iBAAsB,GAAG,cAAc,CAiX1K;AAED,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAi7B9F;AAED,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAyLrD,CAAC"}
1
+ {"version":3,"file":"century23.d.ts","sourceRoot":"","sources":["../../../../../ts/utils/vat/3310/century23.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAKhG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAG/F,wBAAgB,4BAA4B,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,cAAc,GAAE,iBAAsB,GAAG,cAAc,CAyY1K;AAED,wBAAgB,uCAAuC,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAi7B9F;AAED,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAyLrD,CAAC"}
@@ -16,10 +16,15 @@ function getCerfa3310Century23Payload(accountingEntries, payload, updatedEntries
16
16
  // On désactive les automatismes des déclarations précédentes dans le contrôle de TVA
17
17
  if (isVatControl)
18
18
  payload.previousVatDeclaration = null;
19
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
19
20
  const frenchVat = vats.filter((v) => !v.isVatImportation && !v.isVatIntracom).map((v) => v.id);
21
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
20
22
  const withTaxVat = vats.filter((v) => v.value > 0).map((v) => v.id);
23
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
21
24
  const intracomVat = vats.filter((v) => v.isVatIntracom && !v.isVatImportation).map((v) => v.id);
25
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
22
26
  const withoutTaxVat = vats.filter((v) => v.value === 0).map((v) => v.id);
27
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
23
28
  const importationVat = vats.filter((v) => v.isVatImportation && !v.isVatIntracom).map((v) => v.id);
24
29
  const vatEntries = (0, lodash_1.uniqBy)(accountingEntries.filter((ae) => typeof ae.idVat === 'number'), 'id');
25
30
  const oldEntries = (0, lodash_1.flatten)(updatedEntries === null || updatedEntries === void 0 ? void 0 : updatedEntries.map((u) => u.old));
@@ -65,37 +70,55 @@ function getCerfa3310Century23Payload(accountingEntries, payload, updatedEntries
65
70
  const untaxedIntracomunity = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(vatEntries.filter((ae) => intracomVat.includes(ae.idVat) && withoutTaxVat.includes(ae.idVat)), intracommunityAccounts2, 0, true)) + ((_31 = (_30 = (_29 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _29 === void 0 ? void 0 : _29.untaxed) === null || _30 === void 0 ? void 0 : _30.intracomunity) !== null && _31 !== void 0 ? _31 : 0);
66
71
  const untaxedIntracommunityDelivery = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(vatEntries.filter((ae) => withoutTaxVat.includes(ae.idVat) && intracomVat.includes(ae.idVat)), ['701', '707'], 0, true));
67
72
  // TVA brute
73
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
68
74
  const normalRate = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedServicesEntries.filter((e) => vats.filter((v) => v.value === 20).map((v) => v.id).includes(e.idVat)), servicesAccounts, 0, true)
75
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
69
76
  + (0, utils_1.getAmountByAccountNumber)(intracommunityServiceEntries.filter((e) => vats.filter((v) => v.value === 20).map((v) => v.id).includes(e.idVat)), ['6'], 0, true)) + ((_34 = (_33 = (_32 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _32 === void 0 ? void 0 : _32.france) === null || _33 === void 0 ? void 0 : _33.base20) !== null && _34 !== void 0 ? _34 : 0) + ((_37 = (_36 = (_35 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _35 === void 0 ? void 0 : _35.other) === null || _36 === void 0 ? void 0 : _36.base20) !== null && _37 !== void 0 ? _37 : 0);
70
77
  const normalRateTax = (0, lodash_1.round)(normalRate * 0.2);
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
71
79
  const reducedRate5Dot5 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedServicesEntries.filter((e) => vats.filter((v) => v.value === 5.5).map((v) => v.id).includes(e.idVat)), servicesAccounts, 0, true)
80
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
72
81
  + (0, utils_1.getAmountByAccountNumber)(intracommunityServiceEntries.filter((e) => vats.filter((v) => v.value === 5.5).map((v) => v.id).includes(e.idVat)), ['6'], 0, true)) + ((_40 = (_39 = (_38 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _38 === void 0 ? void 0 : _38.france) === null || _39 === void 0 ? void 0 : _39.base5Dot5) !== null && _40 !== void 0 ? _40 : 0) + ((_43 = (_42 = (_41 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _41 === void 0 ? void 0 : _41.other) === null || _42 === void 0 ? void 0 : _42.base5Dot5) !== null && _43 !== void 0 ? _43 : 0);
73
82
  const reducedRate5Dot5Tax = (0, lodash_1.round)(reducedRate5Dot5 * 0.055);
83
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
74
84
  const reducedRate10 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedServicesEntries.filter((e) => vats.filter((v) => v.value === 10).map((v) => v.id).includes(e.idVat)), servicesAccounts, 0, true)
85
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
75
86
  + (0, utils_1.getAmountByAccountNumber)(intracommunityServiceEntries.filter((e) => vats.filter((v) => v.value === 10).map((v) => v.id).includes(e.idVat)), ['6'], 0, true)) + ((_46 = (_45 = (_44 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _44 === void 0 ? void 0 : _44.france) === null || _45 === void 0 ? void 0 : _45.base10) !== null && _46 !== void 0 ? _46 : 0) + ((_49 = (_48 = (_47 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _47 === void 0 ? void 0 : _47.other) === null || _48 === void 0 ? void 0 : _48.base10) !== null && _49 !== void 0 ? _49 : 0);
76
87
  const reducedRate10Tax = (0, lodash_1.round)(reducedRate10 * 0.1);
88
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
77
89
  const reducedRate8Dot5 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedServicesEntries.filter((e) => vats.filter((v) => v.value === 8.5).map((v) => v.id).includes(e.idVat)), servicesAccounts, 0, true)
90
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
78
91
  + (0, utils_1.getAmountByAccountNumber)(intracommunityServiceEntries.filter((e) => vats.filter((v) => v.value === 8.5).map((v) => v.id).includes(e.idVat)), ['6'], 0, true)) + ((_52 = (_51 = (_50 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _50 === void 0 ? void 0 : _50.france) === null || _51 === void 0 ? void 0 : _51.base8Dot5) !== null && _52 !== void 0 ? _52 : 0) + ((_55 = (_54 = (_53 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _53 === void 0 ? void 0 : _53.other) === null || _54 === void 0 ? void 0 : _54.base5Dot5) !== null && _55 !== void 0 ? _55 : 0);
79
92
  const reducedRate8Dot5Tax = (0, lodash_1.round)(reducedRate8Dot5 * 0.085);
93
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
80
94
  const reducedRate2Dot1 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedServicesEntries.filter((e) => vats.filter((v) => v.value === 2.1).map((v) => v.id).includes(e.idVat)), servicesAccounts, 0, true)
95
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
81
96
  + (0, utils_1.getAmountByAccountNumber)(intracommunityServiceEntries.filter((e) => vats.filter((v) => v.value === 2.1).map((v) => v.id).includes(e.idVat)), ['6'], 0, true)) + ((_58 = (_57 = (_56 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _56 === void 0 ? void 0 : _56.france) === null || _57 === void 0 ? void 0 : _57.base2Dot1) !== null && _58 !== void 0 ? _58 : 0) + ((_61 = (_60 = (_59 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _59 === void 0 ? void 0 : _59.other) === null || _60 === void 0 ? void 0 : _60.base2Dot1) !== null && _61 !== void 0 ? _61 : 0);
82
97
  const reducedRate2Dot1Tax = (0, lodash_1.round)(reducedRate2Dot1 * 0.021);
98
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
83
99
  const importNormalRate = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 20).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true)) + ((_64 = (_63 = (_62 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _62 === void 0 ? void 0 : _62.importations) === null || _63 === void 0 ? void 0 : _63.base20) !== null && _64 !== void 0 ? _64 : 0);
84
100
  const importNormalRateTax = (0, lodash_1.round)(importNormalRate * 0.2);
101
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
85
102
  const importReducedRate10 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 10).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true)) + ((_67 = (_66 = (_65 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _65 === void 0 ? void 0 : _65.importations) === null || _66 === void 0 ? void 0 : _66.base10) !== null && _67 !== void 0 ? _67 : 0);
86
103
  const importReducedRate10Tax = (0, lodash_1.round)(importReducedRate10 * 0.1);
104
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
87
105
  const importReducedRate8Dot5 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 8.5).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true)) + ((_70 = (_69 = (_68 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _68 === void 0 ? void 0 : _68.importations) === null || _69 === void 0 ? void 0 : _69.base8Dot5) !== null && _70 !== void 0 ? _70 : 0);
88
106
  const importReducedRate8Dot5Tax = (0, lodash_1.round)(importReducedRate8Dot5 * 0.085);
107
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
89
108
  const importReducedRate5Dot5 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 5.5).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true)) + ((_73 = (_72 = (_71 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _71 === void 0 ? void 0 : _71.importations) === null || _72 === void 0 ? void 0 : _72.base5Dot5) !== null && _73 !== void 0 ? _73 : 0);
90
109
  const importReducedRate5Dot5Tax = (0, lodash_1.round)(importReducedRate8Dot5 * 0.055);
110
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
91
111
  const importReducedRate2Dot1 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 2.1).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true)) + ((_76 = (_75 = (_74 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _74 === void 0 ? void 0 : _74.importations) === null || _75 === void 0 ? void 0 : _75.base2Dot1) !== null && _76 !== void 0 ? _76 : 0);
92
112
  const importReducedRate2Dot1Tax = (0, lodash_1.round)(importReducedRate2Dot1 * 0.021);
113
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
93
114
  const importReducedRate1Dot05 = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getAmountByAccountNumber)(taxedImportEntries.filter((e) => vats.filter((v) => v.value === 1.05).map((v) => v.id).includes(e.idVat)), taxedImportAccounts, 0, true));
94
115
  const importReducedRate1Dot05Tax = (0, lodash_1.round)(importReducedRate1Dot05 * 0.0105);
95
116
  const intracommunityTax = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getTaxAmountByAccountNumber)(intracommunityServiceEntries, [...intracommunityServiceAccounts, ...intracommunityAccounts2], 0));
96
117
  // TVA Déductible
97
118
  const immobilizationTax = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getTaxAmountByAccountNumber)(vatEntries, ['2'])) + ((_79 = (_78 = (_77 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _77 === void 0 ? void 0 : _77.deducted) === null || _78 === void 0 ? void 0 : _78.immobilization) !== null && _79 !== void 0 ? _79 : 0);
119
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
98
120
  const otherGoodsAndServices = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getTaxAmountByAccountNumber)(vatEntries.filter((e) => vats.filter((v) => !v.isVatImportation).map((v) => v.id).includes(e.idVat)), ['6'])) + ((_82 = (_81 = (_80 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _80 === void 0 ? void 0 : _80.deducted) === null || _81 === void 0 ? void 0 : _81.abs) !== null && _82 !== void 0 ? _82 : 0);
121
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
99
122
  const otherDeductibles = (0, utils_1.setZeroIfIsNegative)((0, utils_1.getTaxAmountByAccountNumber)(vatEntries.filter((e) => vats.filter((v) => v.isVatImportation).map((v) => v.id).includes(e.idVat)), ['6'])) + ((_85 = (_84 = (_83 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _83 === void 0 ? void 0 : _83.deducted) === null || _84 === void 0 ? void 0 : _84.other) !== null && _85 !== void 0 ? _85 : 0);
100
123
  const report = (((_87 = (_86 = payload.vat) === null || _86 === void 0 ? void 0 : _86.deductible) === null || _87 === void 0 ? void 0 : _87.toReport) && ((_89 = (_88 = payload.vat) === null || _88 === void 0 ? void 0 : _88.deductible) === null || _89 === void 0 ? void 0 : _89.toReport) >= 0 ? (0, lodash_1.round)((_92 = (_91 = (_90 = payload.vat) === null || _90 === void 0 ? void 0 : _90.deductible) === null || _91 === void 0 ? void 0 : _91.toReport) !== null && _92 !== void 0 ? _92 : 0) : (_95 = (_94 = (_93 = payload.previousVatDeclaration) === null || _93 === void 0 ? void 0 : _93.credit) === null || _94 === void 0 ? void 0 : _94.toReport) !== null && _95 !== void 0 ? _95 : 0) + ((_98 = (_97 = (_96 = payload === null || payload === void 0 ? void 0 : payload.vatControl) === null || _96 === void 0 ? void 0 : _96.deducted) === null || _97 === void 0 ? void 0 : _97.reported) !== null && _98 !== void 0 ? _98 : 0);
101
124
  const coefficient = (0, lodash_1.round)((_101 = (_100 = (_99 = payload.vat) === null || _99 === void 0 ? void 0 : _99.deductible) === null || _100 === void 0 ? void 0 : _100.coefficient) !== null && _101 !== void 0 ? _101 : 100, 2);