@accounter/shaam-uniform-format-generator 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/README.md +366 -13
  2. package/dist/README.md +476 -0
  3. package/dist/cjs/api/generate-report-legacy.js +6 -0
  4. package/dist/cjs/api/generate-report.js +328 -0
  5. package/dist/cjs/constants.js +11 -0
  6. package/dist/cjs/generator/format/encoder.js +86 -0
  7. package/dist/cjs/generator/records/a000-sum.js +66 -0
  8. package/dist/cjs/generator/records/a000.js +349 -0
  9. package/dist/cjs/generator/records/a100.js +107 -0
  10. package/dist/cjs/generator/records/b100.js +305 -0
  11. package/dist/cjs/generator/records/b110.js +255 -0
  12. package/dist/cjs/generator/records/c100.js +338 -0
  13. package/dist/cjs/generator/records/d110.js +272 -0
  14. package/dist/cjs/generator/records/d120.js +278 -0
  15. package/{cjs → dist/cjs}/generator/records/index.js +1 -0
  16. package/dist/cjs/generator/records/m100.js +177 -0
  17. package/dist/cjs/generator/records/z900.js +93 -0
  18. package/{cjs → dist/cjs}/index.js +3 -0
  19. package/dist/cjs/records/a100.js +78 -0
  20. package/dist/cjs/records/index.js +20 -0
  21. package/dist/cjs/records/z900.js +82 -0
  22. package/dist/cjs/types/enums.js +457 -0
  23. package/{cjs → dist/cjs}/types/index.js +6 -1
  24. package/dist/cjs/utils/file-helpers.js +198 -0
  25. package/dist/cjs/utils/index.js +8 -0
  26. package/dist/cjs/utils/key-generator.js +71 -0
  27. package/dist/esm/api/generate-report-legacy.js +2 -0
  28. package/dist/esm/api/generate-report.js +325 -0
  29. package/dist/esm/constants.js +8 -0
  30. package/dist/esm/generator/format/encoder.js +77 -0
  31. package/dist/esm/generator/records/a000-sum.js +61 -0
  32. package/dist/esm/generator/records/a000.js +344 -0
  33. package/dist/esm/generator/records/a100.js +102 -0
  34. package/dist/esm/generator/records/b100.js +300 -0
  35. package/dist/esm/generator/records/b110.js +250 -0
  36. package/dist/esm/generator/records/c100.js +333 -0
  37. package/dist/esm/generator/records/d110.js +267 -0
  38. package/dist/esm/generator/records/d120.js +273 -0
  39. package/{esm → dist/esm}/generator/records/index.js +1 -0
  40. package/dist/esm/generator/records/m100.js +172 -0
  41. package/dist/esm/generator/records/z900.js +88 -0
  42. package/{esm → dist/esm}/index.js +3 -0
  43. package/dist/esm/records/a100.js +73 -0
  44. package/dist/esm/records/index.js +11 -0
  45. package/dist/esm/records/z900.js +77 -0
  46. package/dist/esm/types/enums.js +454 -0
  47. package/{esm → dist/esm}/types/index.js +5 -1
  48. package/dist/esm/utils/file-helpers.js +188 -0
  49. package/dist/esm/utils/index.js +5 -0
  50. package/dist/esm/utils/key-generator.js +65 -0
  51. package/dist/package.json +54 -0
  52. package/dist/typings/api/generate-report-legacy.d.cts +1 -0
  53. package/dist/typings/api/generate-report-legacy.d.ts +1 -0
  54. package/dist/typings/constants.d.cts +8 -0
  55. package/dist/typings/constants.d.ts +8 -0
  56. package/dist/typings/generator/format/encoder.d.cts +57 -0
  57. package/dist/typings/generator/format/encoder.d.ts +57 -0
  58. package/dist/typings/generator/records/a000-sum.d.cts +40 -0
  59. package/dist/typings/generator/records/a000-sum.d.ts +40 -0
  60. package/dist/typings/generator/records/a000.d.cts +238 -0
  61. package/dist/typings/generator/records/a000.d.ts +238 -0
  62. package/dist/typings/generator/records/a100.d.cts +59 -0
  63. package/dist/typings/generator/records/a100.d.ts +59 -0
  64. package/dist/typings/generator/records/b100.d.cts +101 -0
  65. package/dist/typings/generator/records/b100.d.ts +101 -0
  66. package/dist/typings/generator/records/b110.d.cts +89 -0
  67. package/dist/typings/generator/records/b110.d.ts +89 -0
  68. package/dist/typings/generator/records/c100.d.cts +133 -0
  69. package/dist/typings/generator/records/c100.d.ts +133 -0
  70. package/dist/typings/generator/records/d110.d.cts +98 -0
  71. package/dist/typings/generator/records/d110.d.ts +98 -0
  72. package/dist/typings/generator/records/d120.d.cts +95 -0
  73. package/dist/typings/generator/records/d120.d.ts +95 -0
  74. package/{typings → dist/typings}/generator/records/index.d.cts +1 -0
  75. package/{typings → dist/typings}/generator/records/index.d.ts +1 -0
  76. package/dist/typings/generator/records/m100.d.cts +69 -0
  77. package/dist/typings/generator/records/m100.d.ts +69 -0
  78. package/dist/typings/generator/records/z900.d.cts +61 -0
  79. package/dist/typings/generator/records/z900.d.ts +61 -0
  80. package/{typings → dist/typings}/index.d.cts +3 -0
  81. package/{typings → dist/typings}/index.d.ts +3 -0
  82. package/dist/typings/records/a100.d.cts +35 -0
  83. package/dist/typings/records/a100.d.ts +35 -0
  84. package/dist/typings/records/index.d.cts +2 -0
  85. package/dist/typings/records/index.d.ts +2 -0
  86. package/dist/typings/records/z900.d.cts +38 -0
  87. package/dist/typings/records/z900.d.ts +38 -0
  88. package/dist/typings/types/enums.d.cts +162 -0
  89. package/dist/typings/types/enums.d.ts +162 -0
  90. package/{typings → dist/typings}/types/index.d.cts +17 -14
  91. package/{typings → dist/typings}/types/index.d.ts +17 -14
  92. package/dist/typings/utils/file-helpers.d.cts +131 -0
  93. package/dist/typings/utils/file-helpers.d.ts +131 -0
  94. package/dist/typings/utils/index.d.cts +5 -0
  95. package/dist/typings/utils/index.d.ts +5 -0
  96. package/dist/typings/utils/key-generator.d.cts +41 -0
  97. package/dist/typings/utils/key-generator.d.ts +41 -0
  98. package/documentation/IncomeTax_IncomeTaxSoftwareHousesInfo_horaot1.31_2_05.pdf +0 -0
  99. package/documentation/_4D6963726F736F667420576F7264202D20F8E5E0E9ED20F8E7E5F720F8E5E0E9ED20F9F7E5F32E646F63_.pdf +0 -0
  100. package/documentation/a000-sum.csv +3 -0
  101. package/documentation/a000.csv +37 -0
  102. package/documentation/a100.csv +7 -0
  103. package/documentation/b100.csv +29 -0
  104. package/documentation/b110.csv +26 -0
  105. package/documentation/c100.csv +37 -0
  106. package/documentation/d110.csv +27 -0
  107. package/documentation/d120.csv +26 -0
  108. package/documentation/m100.csv +17 -0
  109. package/documentation/z900.csv +8 -0
  110. package/package.json +50 -29
  111. package/prompt_plan.md +259 -0
  112. package/spec.md +206 -0
  113. package/src/api/generate-report.ts +366 -0
  114. package/src/api/parse-files.ts +33 -0
  115. package/src/constants.ts +9 -0
  116. package/src/format/index.ts +6 -0
  117. package/src/format/newline.ts +8 -0
  118. package/src/format/padding.ts +39 -0
  119. package/src/generator/format/decoder.ts +15 -0
  120. package/src/generator/format/encoder.ts +95 -0
  121. package/src/generator/format/index.ts +6 -0
  122. package/src/generator/index.ts +6 -0
  123. package/src/generator/records/a000-sum.ts +78 -0
  124. package/src/generator/records/a000.ts +373 -0
  125. package/src/generator/records/a100.ts +118 -0
  126. package/src/generator/records/b100.ts +317 -0
  127. package/src/generator/records/b110.ts +267 -0
  128. package/src/generator/records/c100.ts +347 -0
  129. package/src/generator/records/d110.ts +286 -0
  130. package/src/generator/records/d120.ts +293 -0
  131. package/src/generator/records/index.ts +14 -0
  132. package/src/generator/records/m100.ts +185 -0
  133. package/src/generator/records/z900.ts +104 -0
  134. package/src/index.ts +18 -0
  135. package/src/parser/data-parser.ts +14 -0
  136. package/src/parser/index.ts +6 -0
  137. package/src/parser/ini-parser.ts +14 -0
  138. package/src/types/enums.ts +531 -0
  139. package/src/types/index.ts +110 -0
  140. package/src/utils/file-helpers.ts +221 -0
  141. package/src/utils/index.ts +6 -0
  142. package/src/utils/key-generator.ts +75 -0
  143. package/src/validation/errors.ts +35 -0
  144. package/src/validation/index.ts +6 -0
  145. package/src/validation/validate-input.ts +67 -0
  146. package/tests/debug-output.test.ts +81 -0
  147. package/tests/format/crlf-join.test.ts +124 -0
  148. package/tests/format/encoder.test.ts +80 -0
  149. package/tests/format/newline.test.ts +19 -0
  150. package/tests/format/padding.test.ts +74 -0
  151. package/tests/index.test.ts +29 -0
  152. package/tests/ini-text.test.ts +122 -0
  153. package/tests/integration/comprehensive.integration.test.ts +350 -0
  154. package/tests/integration/roundtrip.integration.test.ts +377 -0
  155. package/tests/records/a000-sum.test.ts +278 -0
  156. package/tests/records/a000.test.ts +318 -0
  157. package/tests/records/a100.test.ts +239 -0
  158. package/tests/records/b100.test.ts +419 -0
  159. package/tests/records/b110.test.ts +445 -0
  160. package/tests/records/c100.test.ts +333 -0
  161. package/tests/records/d110.test.ts +93 -0
  162. package/tests/records/d120.test.ts +275 -0
  163. package/tests/records/m100.test.ts +437 -0
  164. package/tests/records/z900.test.ts +254 -0
  165. package/tests/types/enums.test.ts +290 -0
  166. package/tests/utils/file-helpers.test.ts +276 -0
  167. package/tests/utils/key-generator.test.ts +121 -0
  168. package/tests/validation/document-type-validation.test.ts +521 -0
  169. package/tests/validation/validate-input.test.ts +219 -0
  170. package/todo.md +203 -0
  171. package/tsconfig.json +10 -0
  172. package/vitest.config.ts +11 -0
  173. package/cjs/api/generate-report.js +0 -53
  174. package/cjs/generator/format/encoder.js +0 -46
  175. package/cjs/generator/records/a000.js +0 -8
  176. package/cjs/generator/records/a100.js +0 -8
  177. package/cjs/generator/records/b100.js +0 -8
  178. package/cjs/generator/records/b110.js +0 -8
  179. package/cjs/generator/records/c100.js +0 -8
  180. package/cjs/generator/records/d110.js +0 -8
  181. package/cjs/generator/records/d120.js +0 -8
  182. package/cjs/generator/records/m100.js +0 -8
  183. package/cjs/generator/records/z900.js +0 -8
  184. package/esm/api/generate-report.js +0 -50
  185. package/esm/generator/format/encoder.js +0 -42
  186. package/esm/generator/records/a000.js +0 -5
  187. package/esm/generator/records/a100.js +0 -5
  188. package/esm/generator/records/b100.js +0 -5
  189. package/esm/generator/records/b110.js +0 -5
  190. package/esm/generator/records/c100.js +0 -5
  191. package/esm/generator/records/d110.js +0 -5
  192. package/esm/generator/records/d120.js +0 -5
  193. package/esm/generator/records/m100.js +0 -5
  194. package/esm/generator/records/z900.js +0 -5
  195. package/typings/generator/format/encoder.d.cts +0 -33
  196. package/typings/generator/format/encoder.d.ts +0 -33
  197. package/typings/generator/records/a000.d.cts +0 -4
  198. package/typings/generator/records/a000.d.ts +0 -4
  199. package/typings/generator/records/a100.d.cts +0 -4
  200. package/typings/generator/records/a100.d.ts +0 -4
  201. package/typings/generator/records/b100.d.cts +0 -4
  202. package/typings/generator/records/b100.d.ts +0 -4
  203. package/typings/generator/records/b110.d.cts +0 -4
  204. package/typings/generator/records/b110.d.ts +0 -4
  205. package/typings/generator/records/c100.d.cts +0 -4
  206. package/typings/generator/records/c100.d.ts +0 -4
  207. package/typings/generator/records/d110.d.cts +0 -4
  208. package/typings/generator/records/d110.d.ts +0 -4
  209. package/typings/generator/records/d120.d.cts +0 -4
  210. package/typings/generator/records/d120.d.ts +0 -4
  211. package/typings/generator/records/m100.d.cts +0 -4
  212. package/typings/generator/records/m100.d.ts +0 -4
  213. package/typings/generator/records/z900.d.cts +0 -4
  214. package/typings/generator/records/z900.d.ts +0 -4
  215. /package/{cjs → dist/cjs}/api/parse-files.js +0 -0
  216. /package/{cjs → dist/cjs}/format/index.js +0 -0
  217. /package/{cjs → dist/cjs}/format/newline.js +0 -0
  218. /package/{cjs → dist/cjs}/format/padding.js +0 -0
  219. /package/{cjs → dist/cjs}/generator/format/decoder.js +0 -0
  220. /package/{cjs → dist/cjs}/generator/format/index.js +0 -0
  221. /package/{cjs → dist/cjs}/generator/index.js +0 -0
  222. /package/{cjs → dist/cjs}/package.json +0 -0
  223. /package/{cjs → dist/cjs}/parser/data-parser.js +0 -0
  224. /package/{cjs → dist/cjs}/parser/index.js +0 -0
  225. /package/{cjs → dist/cjs}/parser/ini-parser.js +0 -0
  226. /package/{cjs → dist/cjs}/validation/errors.js +0 -0
  227. /package/{cjs → dist/cjs}/validation/index.js +0 -0
  228. /package/{cjs → dist/cjs}/validation/validate-input.js +0 -0
  229. /package/{esm → dist/esm}/api/parse-files.js +0 -0
  230. /package/{esm → dist/esm}/format/index.js +0 -0
  231. /package/{esm → dist/esm}/format/newline.js +0 -0
  232. /package/{esm → dist/esm}/format/padding.js +0 -0
  233. /package/{esm → dist/esm}/generator/format/decoder.js +0 -0
  234. /package/{esm → dist/esm}/generator/format/index.js +0 -0
  235. /package/{esm → dist/esm}/generator/index.js +0 -0
  236. /package/{esm → dist/esm}/parser/data-parser.js +0 -0
  237. /package/{esm → dist/esm}/parser/index.js +0 -0
  238. /package/{esm → dist/esm}/parser/ini-parser.js +0 -0
  239. /package/{esm → dist/esm}/validation/errors.js +0 -0
  240. /package/{esm → dist/esm}/validation/index.js +0 -0
  241. /package/{esm → dist/esm}/validation/validate-input.js +0 -0
  242. /package/{typings → dist/typings}/api/generate-report.d.cts +0 -0
  243. /package/{typings → dist/typings}/api/generate-report.d.ts +0 -0
  244. /package/{typings → dist/typings}/api/parse-files.d.cts +0 -0
  245. /package/{typings → dist/typings}/api/parse-files.d.ts +0 -0
  246. /package/{typings → dist/typings}/format/index.d.cts +0 -0
  247. /package/{typings → dist/typings}/format/index.d.ts +0 -0
  248. /package/{typings → dist/typings}/format/newline.d.cts +0 -0
  249. /package/{typings → dist/typings}/format/newline.d.ts +0 -0
  250. /package/{typings → dist/typings}/format/padding.d.cts +0 -0
  251. /package/{typings → dist/typings}/format/padding.d.ts +0 -0
  252. /package/{typings → dist/typings}/generator/format/decoder.d.cts +0 -0
  253. /package/{typings → dist/typings}/generator/format/decoder.d.ts +0 -0
  254. /package/{typings → dist/typings}/generator/format/index.d.cts +0 -0
  255. /package/{typings → dist/typings}/generator/format/index.d.ts +0 -0
  256. /package/{typings → dist/typings}/generator/index.d.cts +0 -0
  257. /package/{typings → dist/typings}/generator/index.d.ts +0 -0
  258. /package/{typings → dist/typings}/parser/data-parser.d.cts +0 -0
  259. /package/{typings → dist/typings}/parser/data-parser.d.ts +0 -0
  260. /package/{typings → dist/typings}/parser/index.d.cts +0 -0
  261. /package/{typings → dist/typings}/parser/index.d.ts +0 -0
  262. /package/{typings → dist/typings}/parser/ini-parser.d.cts +0 -0
  263. /package/{typings → dist/typings}/parser/ini-parser.d.ts +0 -0
  264. /package/{typings → dist/typings}/validation/errors.d.cts +0 -0
  265. /package/{typings → dist/typings}/validation/errors.d.ts +0 -0
  266. /package/{typings → dist/typings}/validation/index.d.cts +0 -0
  267. /package/{typings → dist/typings}/validation/index.d.ts +0 -0
  268. /package/{typings → dist/typings}/validation/validate-input.d.cts +0 -0
  269. /package/{typings → dist/typings}/validation/validate-input.d.ts +0 -0
@@ -0,0 +1,98 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * D110 Record Schema - Document Line record
4
+ * Fields 1250-1275 based on SHAAM 1.31 specification table
5
+ */
6
+ export declare const D110Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"D110">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ documentType: z.ZodEnum<["100", "200", "210", "300", "305", "320", "325", "330", "340", "400", "410", "420", "430", "500", "600", "700", "710"]>;
11
+ documentNumber: z.ZodString;
12
+ lineNumber: z.ZodString;
13
+ baseDocumentType: z.ZodEffects<z.ZodDefault<z.ZodString>, "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710" | "", string | undefined>;
14
+ baseDocumentNumber: z.ZodDefault<z.ZodString>;
15
+ transactionType: z.ZodDefault<z.ZodString>;
16
+ internalCatalogCode: z.ZodDefault<z.ZodString>;
17
+ goodsServiceDescription: z.ZodString;
18
+ manufacturerName: z.ZodDefault<z.ZodString>;
19
+ serialNumber: z.ZodDefault<z.ZodString>;
20
+ unitOfMeasureDescription: z.ZodDefault<z.ZodString>;
21
+ quantity: z.ZodString;
22
+ unitPriceExcludingVat: z.ZodDefault<z.ZodString>;
23
+ lineDiscount: z.ZodDefault<z.ZodString>;
24
+ lineTotal: z.ZodDefault<z.ZodString>;
25
+ vatRatePercent: z.ZodDefault<z.ZodString>;
26
+ reserved1: z.ZodDefault<z.ZodString>;
27
+ branchId: z.ZodString;
28
+ reserved2: z.ZodDefault<z.ZodString>;
29
+ documentDate: z.ZodString;
30
+ headerLinkField: z.ZodDefault<z.ZodString>;
31
+ baseDocumentBranchId: z.ZodDefault<z.ZodString>;
32
+ reserved3: z.ZodDefault<z.ZodString>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ code: "D110";
35
+ quantity: string;
36
+ vatId: string;
37
+ recordNumber: string;
38
+ transactionType: string;
39
+ branchId: string;
40
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
41
+ documentDate: string;
42
+ documentNumber: string;
43
+ lineNumber: string;
44
+ baseDocumentType: "" | "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
45
+ baseDocumentNumber: string;
46
+ internalCatalogCode: string;
47
+ goodsServiceDescription: string;
48
+ manufacturerName: string;
49
+ serialNumber: string;
50
+ unitOfMeasureDescription: string;
51
+ unitPriceExcludingVat: string;
52
+ lineDiscount: string;
53
+ lineTotal: string;
54
+ vatRatePercent: string;
55
+ reserved1: string;
56
+ reserved2: string;
57
+ headerLinkField: string;
58
+ baseDocumentBranchId: string;
59
+ reserved3: string;
60
+ }, {
61
+ code: "D110";
62
+ quantity: string;
63
+ vatId: string;
64
+ recordNumber: string;
65
+ branchId: string;
66
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
67
+ documentDate: string;
68
+ documentNumber: string;
69
+ lineNumber: string;
70
+ goodsServiceDescription: string;
71
+ transactionType?: string | undefined;
72
+ baseDocumentType?: string | undefined;
73
+ baseDocumentNumber?: string | undefined;
74
+ internalCatalogCode?: string | undefined;
75
+ manufacturerName?: string | undefined;
76
+ serialNumber?: string | undefined;
77
+ unitOfMeasureDescription?: string | undefined;
78
+ unitPriceExcludingVat?: string | undefined;
79
+ lineDiscount?: string | undefined;
80
+ lineTotal?: string | undefined;
81
+ vatRatePercent?: string | undefined;
82
+ reserved1?: string | undefined;
83
+ reserved2?: string | undefined;
84
+ headerLinkField?: string | undefined;
85
+ baseDocumentBranchId?: string | undefined;
86
+ reserved3?: string | undefined;
87
+ }>;
88
+ export type D110 = z.infer<typeof D110Schema>;
89
+ /**
90
+ * Encodes a D110 record to fixed-width string format
91
+ * Total line width: 339 characters + CRLF
92
+ */
93
+ export declare function encodeD110(input: D110): string;
94
+ /**
95
+ * Parses a fixed-width D110 record line back to object
96
+ * Expected line length: 339 characters (excluding CRLF)
97
+ */
98
+ export declare function parseD110(line: string): D110;
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * D120 - Payment/receipt record
4
+ * Fields 1300-1324 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const D120Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"D120">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ documentType: z.ZodEnum<["100", "200", "210", "300", "305", "320", "325", "330", "340", "400", "410", "420", "430", "500", "600", "700", "710"]>;
11
+ documentNumber: z.ZodString;
12
+ lineNumber: z.ZodString;
13
+ paymentMethod: z.ZodString;
14
+ bankNumber: z.ZodDefault<z.ZodString>;
15
+ branchNumber: z.ZodDefault<z.ZodString>;
16
+ accountNumber: z.ZodDefault<z.ZodString>;
17
+ checkNumber: z.ZodDefault<z.ZodString>;
18
+ paymentDueDate: z.ZodDefault<z.ZodString>;
19
+ lineAmount: z.ZodString;
20
+ acquirerCode: z.ZodDefault<z.ZodString>;
21
+ cardBrand: z.ZodDefault<z.ZodString>;
22
+ creditTransactionType: z.ZodDefault<z.ZodString>;
23
+ firstPaymentAmount: z.ZodDefault<z.ZodString>;
24
+ installmentsCount: z.ZodDefault<z.ZodString>;
25
+ additionalPaymentAmount: z.ZodDefault<z.ZodString>;
26
+ reserved1: z.ZodDefault<z.ZodString>;
27
+ branchId: z.ZodDefault<z.ZodString>;
28
+ reserved2: z.ZodDefault<z.ZodString>;
29
+ documentDate: z.ZodString;
30
+ headerLinkField: z.ZodDefault<z.ZodString>;
31
+ reserved: z.ZodDefault<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ code: "D120";
34
+ vatId: string;
35
+ recordNumber: string;
36
+ reserved: string;
37
+ branchId: string;
38
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
39
+ documentDate: string;
40
+ documentNumber: string;
41
+ lineNumber: string;
42
+ reserved1: string;
43
+ reserved2: string;
44
+ headerLinkField: string;
45
+ paymentMethod: string;
46
+ bankNumber: string;
47
+ branchNumber: string;
48
+ accountNumber: string;
49
+ checkNumber: string;
50
+ paymentDueDate: string;
51
+ lineAmount: string;
52
+ acquirerCode: string;
53
+ cardBrand: string;
54
+ creditTransactionType: string;
55
+ firstPaymentAmount: string;
56
+ installmentsCount: string;
57
+ additionalPaymentAmount: string;
58
+ }, {
59
+ code: "D120";
60
+ vatId: string;
61
+ recordNumber: string;
62
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
63
+ documentDate: string;
64
+ documentNumber: string;
65
+ lineNumber: string;
66
+ paymentMethod: string;
67
+ lineAmount: string;
68
+ reserved?: string | undefined;
69
+ branchId?: string | undefined;
70
+ reserved1?: string | undefined;
71
+ reserved2?: string | undefined;
72
+ headerLinkField?: string | undefined;
73
+ bankNumber?: string | undefined;
74
+ branchNumber?: string | undefined;
75
+ accountNumber?: string | undefined;
76
+ checkNumber?: string | undefined;
77
+ paymentDueDate?: string | undefined;
78
+ acquirerCode?: string | undefined;
79
+ cardBrand?: string | undefined;
80
+ creditTransactionType?: string | undefined;
81
+ firstPaymentAmount?: string | undefined;
82
+ installmentsCount?: string | undefined;
83
+ additionalPaymentAmount?: string | undefined;
84
+ }>;
85
+ export type D120 = z.infer<typeof D120Schema>;
86
+ /**
87
+ * Encodes a D120 record to fixed-width string format
88
+ * Total line width: 222 characters + CRLF (4+9+9+3+20+4+1+10+10+15+10+8+15+1+20+1+0+0+0+0+7+0+8+7+60)
89
+ */
90
+ export declare function encodeD120(input: D120): string;
91
+ /**
92
+ * Parses a fixed-width D120 record line back to object
93
+ * Expected line length: 222 characters (excluding CRLF)
94
+ */
95
+ export declare function parseD120(line: string): D120;
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * D120 - Payment/receipt record
4
+ * Fields 1300-1324 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const D120Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"D120">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ documentType: z.ZodEnum<["100", "200", "210", "300", "305", "320", "325", "330", "340", "400", "410", "420", "430", "500", "600", "700", "710"]>;
11
+ documentNumber: z.ZodString;
12
+ lineNumber: z.ZodString;
13
+ paymentMethod: z.ZodString;
14
+ bankNumber: z.ZodDefault<z.ZodString>;
15
+ branchNumber: z.ZodDefault<z.ZodString>;
16
+ accountNumber: z.ZodDefault<z.ZodString>;
17
+ checkNumber: z.ZodDefault<z.ZodString>;
18
+ paymentDueDate: z.ZodDefault<z.ZodString>;
19
+ lineAmount: z.ZodString;
20
+ acquirerCode: z.ZodDefault<z.ZodString>;
21
+ cardBrand: z.ZodDefault<z.ZodString>;
22
+ creditTransactionType: z.ZodDefault<z.ZodString>;
23
+ firstPaymentAmount: z.ZodDefault<z.ZodString>;
24
+ installmentsCount: z.ZodDefault<z.ZodString>;
25
+ additionalPaymentAmount: z.ZodDefault<z.ZodString>;
26
+ reserved1: z.ZodDefault<z.ZodString>;
27
+ branchId: z.ZodDefault<z.ZodString>;
28
+ reserved2: z.ZodDefault<z.ZodString>;
29
+ documentDate: z.ZodString;
30
+ headerLinkField: z.ZodDefault<z.ZodString>;
31
+ reserved: z.ZodDefault<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ code: "D120";
34
+ vatId: string;
35
+ recordNumber: string;
36
+ reserved: string;
37
+ branchId: string;
38
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
39
+ documentDate: string;
40
+ documentNumber: string;
41
+ lineNumber: string;
42
+ reserved1: string;
43
+ reserved2: string;
44
+ headerLinkField: string;
45
+ paymentMethod: string;
46
+ bankNumber: string;
47
+ branchNumber: string;
48
+ accountNumber: string;
49
+ checkNumber: string;
50
+ paymentDueDate: string;
51
+ lineAmount: string;
52
+ acquirerCode: string;
53
+ cardBrand: string;
54
+ creditTransactionType: string;
55
+ firstPaymentAmount: string;
56
+ installmentsCount: string;
57
+ additionalPaymentAmount: string;
58
+ }, {
59
+ code: "D120";
60
+ vatId: string;
61
+ recordNumber: string;
62
+ documentType: "100" | "200" | "210" | "300" | "305" | "320" | "325" | "330" | "340" | "400" | "410" | "420" | "430" | "500" | "600" | "700" | "710";
63
+ documentDate: string;
64
+ documentNumber: string;
65
+ lineNumber: string;
66
+ paymentMethod: string;
67
+ lineAmount: string;
68
+ reserved?: string | undefined;
69
+ branchId?: string | undefined;
70
+ reserved1?: string | undefined;
71
+ reserved2?: string | undefined;
72
+ headerLinkField?: string | undefined;
73
+ bankNumber?: string | undefined;
74
+ branchNumber?: string | undefined;
75
+ accountNumber?: string | undefined;
76
+ checkNumber?: string | undefined;
77
+ paymentDueDate?: string | undefined;
78
+ acquirerCode?: string | undefined;
79
+ cardBrand?: string | undefined;
80
+ creditTransactionType?: string | undefined;
81
+ firstPaymentAmount?: string | undefined;
82
+ installmentsCount?: string | undefined;
83
+ additionalPaymentAmount?: string | undefined;
84
+ }>;
85
+ export type D120 = z.infer<typeof D120Schema>;
86
+ /**
87
+ * Encodes a D120 record to fixed-width string format
88
+ * Total line width: 222 characters + CRLF (4+9+9+3+20+4+1+10+10+15+10+8+15+1+20+1+0+0+0+0+7+0+8+7+60)
89
+ */
90
+ export declare function encodeD120(input: D120): string;
91
+ /**
92
+ * Parses a fixed-width D120 record line back to object
93
+ * Expected line length: 222 characters (excluding CRLF)
94
+ */
95
+ export declare function parseD120(line: string): D120;
@@ -2,6 +2,7 @@
2
2
  * Record type definitions and generators
3
3
  */
4
4
  export * from './a000.cjs';
5
+ export * from './a000-sum.cjs';
5
6
  export * from './a100.cjs';
6
7
  export * from './b100.cjs';
7
8
  export * from './b110.cjs';
@@ -2,6 +2,7 @@
2
2
  * Record type definitions and generators
3
3
  */
4
4
  export * from './a000.js';
5
+ export * from './a000-sum.js';
5
6
  export * from './a100.js';
6
7
  export * from './b100.js';
7
8
  export * from './b110.js';
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * M100 Record Schema - Item/Product record
4
+ * Fields 1450-1465 based on SHAAM 1.31 specification
5
+ * Total record length: 294 characters
6
+ */
7
+ export declare const M100Schema: z.ZodObject<{
8
+ code: z.ZodLiteral<"M100">;
9
+ recordNumber: z.ZodString;
10
+ vatId: z.ZodString;
11
+ universalItemCode: z.ZodDefault<z.ZodString>;
12
+ supplierItemCode: z.ZodDefault<z.ZodString>;
13
+ internalItemCode: z.ZodString;
14
+ itemName: z.ZodString;
15
+ classificationCode: z.ZodDefault<z.ZodString>;
16
+ classificationDescription: z.ZodDefault<z.ZodString>;
17
+ unitOfMeasure: z.ZodDefault<z.ZodString>;
18
+ openingStock: z.ZodString;
19
+ totalStockIn: z.ZodString;
20
+ totalStockOut: z.ZodString;
21
+ endPeriodCostNonBonded: z.ZodDefault<z.ZodString>;
22
+ endPeriodCostBonded: z.ZodDefault<z.ZodString>;
23
+ reserved: z.ZodDefault<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ code: "M100";
26
+ vatId: string;
27
+ recordNumber: string;
28
+ reserved: string;
29
+ universalItemCode: string;
30
+ supplierItemCode: string;
31
+ internalItemCode: string;
32
+ itemName: string;
33
+ classificationCode: string;
34
+ classificationDescription: string;
35
+ unitOfMeasure: string;
36
+ openingStock: string;
37
+ totalStockIn: string;
38
+ totalStockOut: string;
39
+ endPeriodCostNonBonded: string;
40
+ endPeriodCostBonded: string;
41
+ }, {
42
+ code: "M100";
43
+ vatId: string;
44
+ recordNumber: string;
45
+ internalItemCode: string;
46
+ itemName: string;
47
+ openingStock: string;
48
+ totalStockIn: string;
49
+ totalStockOut: string;
50
+ reserved?: string | undefined;
51
+ universalItemCode?: string | undefined;
52
+ supplierItemCode?: string | undefined;
53
+ classificationCode?: string | undefined;
54
+ classificationDescription?: string | undefined;
55
+ unitOfMeasure?: string | undefined;
56
+ endPeriodCostNonBonded?: string | undefined;
57
+ endPeriodCostBonded?: string | undefined;
58
+ }>;
59
+ export type M100 = z.infer<typeof M100Schema>;
60
+ /**
61
+ * Encodes a M100 record to fixed-width string format
62
+ * Total line width: 294 characters + CRLF
63
+ */
64
+ export declare function encodeM100(input: M100): string;
65
+ /**
66
+ * Parses a fixed-width M100 record line back to object
67
+ * Expected line length: 294 characters (excluding CRLF)
68
+ */
69
+ export declare function parseM100(line: string): M100;
@@ -0,0 +1,69 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * M100 Record Schema - Item/Product record
4
+ * Fields 1450-1465 based on SHAAM 1.31 specification
5
+ * Total record length: 294 characters
6
+ */
7
+ export declare const M100Schema: z.ZodObject<{
8
+ code: z.ZodLiteral<"M100">;
9
+ recordNumber: z.ZodString;
10
+ vatId: z.ZodString;
11
+ universalItemCode: z.ZodDefault<z.ZodString>;
12
+ supplierItemCode: z.ZodDefault<z.ZodString>;
13
+ internalItemCode: z.ZodString;
14
+ itemName: z.ZodString;
15
+ classificationCode: z.ZodDefault<z.ZodString>;
16
+ classificationDescription: z.ZodDefault<z.ZodString>;
17
+ unitOfMeasure: z.ZodDefault<z.ZodString>;
18
+ openingStock: z.ZodString;
19
+ totalStockIn: z.ZodString;
20
+ totalStockOut: z.ZodString;
21
+ endPeriodCostNonBonded: z.ZodDefault<z.ZodString>;
22
+ endPeriodCostBonded: z.ZodDefault<z.ZodString>;
23
+ reserved: z.ZodDefault<z.ZodString>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ code: "M100";
26
+ vatId: string;
27
+ recordNumber: string;
28
+ reserved: string;
29
+ universalItemCode: string;
30
+ supplierItemCode: string;
31
+ internalItemCode: string;
32
+ itemName: string;
33
+ classificationCode: string;
34
+ classificationDescription: string;
35
+ unitOfMeasure: string;
36
+ openingStock: string;
37
+ totalStockIn: string;
38
+ totalStockOut: string;
39
+ endPeriodCostNonBonded: string;
40
+ endPeriodCostBonded: string;
41
+ }, {
42
+ code: "M100";
43
+ vatId: string;
44
+ recordNumber: string;
45
+ internalItemCode: string;
46
+ itemName: string;
47
+ openingStock: string;
48
+ totalStockIn: string;
49
+ totalStockOut: string;
50
+ reserved?: string | undefined;
51
+ universalItemCode?: string | undefined;
52
+ supplierItemCode?: string | undefined;
53
+ classificationCode?: string | undefined;
54
+ classificationDescription?: string | undefined;
55
+ unitOfMeasure?: string | undefined;
56
+ endPeriodCostNonBonded?: string | undefined;
57
+ endPeriodCostBonded?: string | undefined;
58
+ }>;
59
+ export type M100 = z.infer<typeof M100Schema>;
60
+ /**
61
+ * Encodes a M100 record to fixed-width string format
62
+ * Total line width: 294 characters + CRLF
63
+ */
64
+ export declare function encodeM100(input: M100): string;
65
+ /**
66
+ * Parses a fixed-width M100 record line back to object
67
+ * Expected line length: 294 characters (excluding CRLF)
68
+ */
69
+ export declare function parseM100(line: string): M100;
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Z900 Record Schema - Closing record
4
+ * Fields 1150-1156 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const Z900Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"Z900">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ uniqueId: z.ZodString;
11
+ totalRecords: z.ZodString;
12
+ reserved: z.ZodDefault<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ code: "Z900";
15
+ totalRecords: string;
16
+ vatId: string;
17
+ recordNumber: string;
18
+ reserved: string;
19
+ uniqueId: string;
20
+ }, {
21
+ code: "Z900";
22
+ totalRecords: string;
23
+ vatId: string;
24
+ recordNumber: string;
25
+ uniqueId: string;
26
+ reserved?: string | undefined;
27
+ }>;
28
+ /**
29
+ * Z900 Input Schema - for user input (excludes auto-generated fields)
30
+ * Field 1153 (uniqueId) is automatically generated to match field 1103
31
+ */
32
+ export declare const Z900InputSchema: z.ZodObject<Omit<{
33
+ code: z.ZodLiteral<"Z900">;
34
+ recordNumber: z.ZodString;
35
+ vatId: z.ZodString;
36
+ uniqueId: z.ZodString;
37
+ totalRecords: z.ZodString;
38
+ reserved: z.ZodDefault<z.ZodString>;
39
+ }, "code" | "uniqueId">, "strip", z.ZodTypeAny, {
40
+ totalRecords: string;
41
+ vatId: string;
42
+ recordNumber: string;
43
+ reserved: string;
44
+ }, {
45
+ totalRecords: string;
46
+ vatId: string;
47
+ recordNumber: string;
48
+ reserved?: string | undefined;
49
+ }>;
50
+ export type Z900 = z.infer<typeof Z900Schema>;
51
+ export type Z900Input = z.infer<typeof Z900InputSchema>;
52
+ /**
53
+ * Encodes a Z900 record to fixed-width string format
54
+ * Total line width: 110 characters + CRLF
55
+ */
56
+ export declare function encodeZ900(input: Z900Input): string;
57
+ /**
58
+ * Parses a fixed-width Z900 record line back to object
59
+ * Expected line length: 110 characters (excluding CRLF)
60
+ */
61
+ export declare function parseZ900(line: string): Z900;
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Z900 Record Schema - Closing record
4
+ * Fields 1150-1156 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const Z900Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"Z900">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ uniqueId: z.ZodString;
11
+ totalRecords: z.ZodString;
12
+ reserved: z.ZodDefault<z.ZodString>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ code: "Z900";
15
+ totalRecords: string;
16
+ vatId: string;
17
+ recordNumber: string;
18
+ reserved: string;
19
+ uniqueId: string;
20
+ }, {
21
+ code: "Z900";
22
+ totalRecords: string;
23
+ vatId: string;
24
+ recordNumber: string;
25
+ uniqueId: string;
26
+ reserved?: string | undefined;
27
+ }>;
28
+ /**
29
+ * Z900 Input Schema - for user input (excludes auto-generated fields)
30
+ * Field 1153 (uniqueId) is automatically generated to match field 1103
31
+ */
32
+ export declare const Z900InputSchema: z.ZodObject<Omit<{
33
+ code: z.ZodLiteral<"Z900">;
34
+ recordNumber: z.ZodString;
35
+ vatId: z.ZodString;
36
+ uniqueId: z.ZodString;
37
+ totalRecords: z.ZodString;
38
+ reserved: z.ZodDefault<z.ZodString>;
39
+ }, "code" | "uniqueId">, "strip", z.ZodTypeAny, {
40
+ totalRecords: string;
41
+ vatId: string;
42
+ recordNumber: string;
43
+ reserved: string;
44
+ }, {
45
+ totalRecords: string;
46
+ vatId: string;
47
+ recordNumber: string;
48
+ reserved?: string | undefined;
49
+ }>;
50
+ export type Z900 = z.infer<typeof Z900Schema>;
51
+ export type Z900Input = z.infer<typeof Z900InputSchema>;
52
+ /**
53
+ * Encodes a Z900 record to fixed-width string format
54
+ * Total line width: 110 characters + CRLF
55
+ */
56
+ export declare function encodeZ900(input: Z900Input): string;
57
+ /**
58
+ * Parses a fixed-width Z900 record line back to object
59
+ * Expected line length: 110 characters (excluding CRLF)
60
+ */
61
+ export declare function parseZ900(line: string): Z900;
@@ -8,5 +8,8 @@ export * from './types/index.cjs';
8
8
  export * from './generator/index.cjs';
9
9
  export * from './parser/index.cjs';
10
10
  export * from './validation/index.cjs';
11
+ export * from './generator/records/index.cjs';
12
+ export * from './utils/index.cjs';
13
+ export * from './constants.cjs';
11
14
  export { generateUniformFormatReport } from './api/generate-report.cjs';
12
15
  export { parseUniformFormatFiles } from './api/parse-files.cjs';
@@ -8,5 +8,8 @@ export * from './types/index.js';
8
8
  export * from './generator/index.js';
9
9
  export * from './parser/index.js';
10
10
  export * from './validation/index.js';
11
+ export * from './generator/records/index.js';
12
+ export * from './utils/index.js';
13
+ export * from './constants.js';
11
14
  export { generateUniformFormatReport } from './api/generate-report.js';
12
15
  export { parseUniformFormatFiles } from './api/parse-files.js';
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * A100 Record Schema - Business opening record
4
+ * Fields 1100-1105 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const A100Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"A100">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ uniqueId: z.ZodString;
11
+ reserved: z.ZodDefault<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ code: "A100";
14
+ recordNumber: string;
15
+ vatId: string;
16
+ uniqueId: string;
17
+ reserved: string;
18
+ }, {
19
+ code: "A100";
20
+ recordNumber: string;
21
+ vatId: string;
22
+ uniqueId: string;
23
+ reserved?: string | undefined;
24
+ }>;
25
+ export type A100 = z.infer<typeof A100Schema>;
26
+ /**
27
+ * Encodes an A100 record to fixed-width string format
28
+ * Total line width: 95 characters + CRLF
29
+ */
30
+ export declare function encodeA100(input: A100): string;
31
+ /**
32
+ * Parses a fixed-width A100 record line back to object
33
+ * Expected line length: 95 characters (excluding CRLF)
34
+ */
35
+ export declare function parseA100(line: string): A100;
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * A100 Record Schema - Business opening record
4
+ * Fields 1100-1105 based on SHAAM 1.31 specification
5
+ */
6
+ export declare const A100Schema: z.ZodObject<{
7
+ code: z.ZodLiteral<"A100">;
8
+ recordNumber: z.ZodString;
9
+ vatId: z.ZodString;
10
+ uniqueId: z.ZodString;
11
+ reserved: z.ZodDefault<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ code: "A100";
14
+ recordNumber: string;
15
+ vatId: string;
16
+ uniqueId: string;
17
+ reserved: string;
18
+ }, {
19
+ code: "A100";
20
+ recordNumber: string;
21
+ vatId: string;
22
+ uniqueId: string;
23
+ reserved?: string | undefined;
24
+ }>;
25
+ export type A100 = z.infer<typeof A100Schema>;
26
+ /**
27
+ * Encodes an A100 record to fixed-width string format
28
+ * Total line width: 95 characters + CRLF
29
+ */
30
+ export declare function encodeA100(input: A100): string;
31
+ /**
32
+ * Parses a fixed-width A100 record line back to object
33
+ * Expected line length: 95 characters (excluding CRLF)
34
+ */
35
+ export declare function parseA100(line: string): A100;
@@ -0,0 +1,2 @@
1
+ export { A100Schema, type A100, encodeA100, parseA100 } from './a100.cjs';
2
+ export { Z900Schema, type Z900, encodeZ900, parseZ900 } from './z900.cjs';
@@ -0,0 +1,2 @@
1
+ export { A100Schema, type A100, encodeA100, parseA100 } from './a100.js';
2
+ export { Z900Schema, type Z900, encodeZ900, parseZ900 } from './z900.js';