@spaceinvoices/react-ui 0.3.0 → 0.4.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 (65) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/registry.json +0 -230
  4. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -2
  5. package/src/components/documents/documents.hooks.ts +5 -48
  6. package/src/components/documents/shared/document-preview-display.tsx +12 -1
  7. package/src/components/documents/view/document-actions-bar.tsx +20 -12
  8. package/src/components/documents/view/document-activities-list.tsx +166 -0
  9. package/src/components/documents/view/document-details-card.tsx +6 -6
  10. package/src/components/documents/view/index.ts +1 -0
  11. package/src/components/documents/view/locales/de.ts +32 -0
  12. package/src/components/documents/view/locales/es.ts +32 -0
  13. package/src/components/documents/view/locales/fr.ts +32 -0
  14. package/src/components/documents/view/locales/hr.ts +32 -0
  15. package/src/components/documents/view/locales/it.ts +32 -0
  16. package/src/components/documents/view/locales/nl.ts +32 -0
  17. package/src/components/documents/view/locales/pl.ts +32 -0
  18. package/src/components/documents/view/locales/pt.ts +32 -0
  19. package/src/components/documents/view/locales/sl.ts +32 -0
  20. package/src/components/entities/fina-settings-form/locales/de.ts +3 -0
  21. package/src/components/entities/fina-settings-form/locales/en.ts +3 -0
  22. package/src/components/entities/fina-settings-form/locales/es.ts +3 -0
  23. package/src/components/entities/fina-settings-form/locales/fr.ts +3 -0
  24. package/src/components/entities/fina-settings-form/locales/hr.ts +3 -0
  25. package/src/components/entities/fina-settings-form/locales/it.ts +3 -0
  26. package/src/components/entities/fina-settings-form/locales/nl.ts +3 -0
  27. package/src/components/entities/fina-settings-form/locales/pl.ts +3 -0
  28. package/src/components/entities/fina-settings-form/locales/pt.ts +3 -0
  29. package/src/components/entities/fina-settings-form/locales/sl.ts +3 -0
  30. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +15 -7
  31. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +1 -1
  32. package/src/components/entities/furs-settings-form/locales/de.ts +2 -0
  33. package/src/components/entities/furs-settings-form/locales/en.ts +12 -0
  34. package/src/components/entities/furs-settings-form/locales/es.ts +2 -0
  35. package/src/components/entities/furs-settings-form/locales/fr.ts +2 -0
  36. package/src/components/entities/furs-settings-form/locales/hr.ts +2 -0
  37. package/src/components/entities/furs-settings-form/locales/it.ts +2 -0
  38. package/src/components/entities/furs-settings-form/locales/nl.ts +2 -0
  39. package/src/components/entities/furs-settings-form/locales/pl.ts +2 -0
  40. package/src/components/entities/furs-settings-form/locales/pt.ts +2 -0
  41. package/src/components/entities/furs-settings-form/locales/sl.ts +14 -0
  42. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +121 -1
  43. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +1 -0
  44. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +44 -32
  45. package/src/components/invoices/index.ts +1 -1
  46. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +2 -2
  47. package/src/components/invoices/view/fiscalization-status-card.tsx +121 -0
  48. package/src/generate-schemas.ts +13 -1
  49. package/src/generated/schemas/advanceinvoice.ts +79 -187
  50. package/src/generated/schemas/creditnote.ts +63 -86
  51. package/src/generated/schemas/customadvanceinvoice.ts +70 -97
  52. package/src/generated/schemas/customcreditnote.ts +70 -97
  53. package/src/generated/schemas/customestimate.ts +68 -97
  54. package/src/generated/schemas/custominvoice.ts +70 -97
  55. package/src/generated/schemas/estimate.ts +67 -172
  56. package/src/generated/schemas/invoice.ts +79 -187
  57. package/src/generated/schemas/registerfursrealestatepremise_body.ts +11 -7
  58. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +61 -157
  59. package/src/generated/schemas/rendercreditnotepreview_body.ts +61 -157
  60. package/src/generated/schemas/renderestimatepreview_body.ts +61 -157
  61. package/src/generated/schemas/renderinvoicepreview_body.ts +61 -157
  62. package/src/hooks/use-duplicate-document.ts +19 -11
  63. package/src/providers/entities-provider.tsx +21 -0
  64. package/src/components/invoices/view/fina-info-display.tsx +0 -196
  65. package/src/components/invoices/view/furs-info-display.tsx +0 -213
@@ -15,6 +15,18 @@ const LineDiscount = z.object({
15
15
  });
16
16
 
17
17
 
18
+ // Dependency schema for customadvanceinvoice
19
+ const DocumentItemTax = z
20
+ .object({
21
+ rate: z.number(),
22
+ tax_id: z.string(),
23
+ classification: z.string(),
24
+ reverse_charge: z.boolean(),
25
+ amount: z.number(),
26
+ })
27
+ .partial();
28
+
29
+
18
30
  // Dependency schema for customadvanceinvoice
19
31
  const FinaFiscalizationResponse = z.union([
20
32
  z
@@ -35,6 +47,8 @@ const FinaFiscalizationResponse = z.union([
35
47
  numbering_sequence: z.string().optional(),
36
48
  payload: z.object({}).partial().passthrough(),
37
49
  subsequent_submit: z.boolean().optional(),
50
+ issuer_oib: z.string().optional(),
51
+ operator_label: z.string().optional(),
38
52
  })
39
53
  .passthrough()
40
54
  .optional(),
@@ -62,6 +76,55 @@ const EslogData = z.union([
62
76
  ]);
63
77
 
64
78
 
79
+ // Dependency schema for customadvanceinvoice
80
+ const DocumentSummaryTax = z
81
+ .object({
82
+ rate: z.number(),
83
+ base: z.number(),
84
+ amount: z.number(),
85
+ reverse_charge: z.boolean().optional(),
86
+ })
87
+ .passthrough();
88
+
89
+
90
+ // Dependency schema for customadvanceinvoice
91
+ const DocumentEntity = z
92
+ .object({
93
+ name: z.union([z.string(), z.null()]),
94
+ email: z.union([z.string(), z.null()]),
95
+ address: z.union([z.string(), z.null()]),
96
+ address_2: z.union([z.string(), z.null()]),
97
+ post_code: z.union([z.string(), z.null()]),
98
+ city: z.union([z.string(), z.null()]),
99
+ state: z.union([z.string(), z.null()]),
100
+ country: z.union([z.string(), z.null()]),
101
+ country_code: z.union([z.string(), z.null()]),
102
+ tax_number: z.union([z.string(), z.null()]),
103
+ tax_number_2: z.union([z.string(), z.null()]),
104
+ company_number: z.union([z.string(), z.null()]),
105
+ bank_account: z.union([
106
+ z
107
+ .object({
108
+ type: z
109
+ .enum(["iban", "us_domestic", "uk_domestic", "other"])
110
+ .default("iban"),
111
+ name: z.string(),
112
+ bank_name: z.string(),
113
+ iban: z.string(),
114
+ account_number: z.string(),
115
+ bic: z.string(),
116
+ routing_number: z.string(),
117
+ sort_code: z.string(),
118
+ })
119
+ .partial()
120
+ .passthrough(),
121
+ z.null(),
122
+ ]),
123
+ })
124
+ .partial()
125
+ .passthrough();
126
+
127
+
65
128
  // Schema for create customadvanceinvoice operation
66
129
  const createCustomAdvanceInvoiceSchemaDefinition = z.object({
67
130
  is_draft: z.boolean().optional(),
@@ -69,100 +132,22 @@ const createCustomAdvanceInvoiceSchemaDefinition = z.object({
69
132
  .string()
70
133
  .regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?)?$/)
71
134
  .optional(),
72
- issuer: z
73
- .object({
74
- name: z.union([z.string(), z.null()]),
75
- email: z.union([z.string(), z.null()]),
76
- address: z.union([z.string(), z.null()]),
77
- address_2: z.union([z.string(), z.null()]),
78
- post_code: z.union([z.string(), z.null()]),
79
- city: z.union([z.string(), z.null()]),
80
- state: z.union([z.string(), z.null()]),
81
- country: z.union([z.string(), z.null()]),
82
- country_code: z.union([z.string(), z.null()]),
83
- tax_number: z.union([z.string(), z.null()]),
84
- tax_number_2: z.union([z.string(), z.null()]),
85
- company_number: z.union([z.string(), z.null()]),
86
- bank_account: z.union([
87
- z
88
- .object({
89
- type: z
90
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
91
- .default("iban"),
92
- name: z.string(),
93
- bank_name: z.string(),
94
- iban: z.string(),
95
- account_number: z.string(),
96
- bic: z.string(),
97
- routing_number: z.string(),
98
- sort_code: z.string(),
99
- })
100
- .partial()
101
- .passthrough(),
102
- z.null(),
103
- ]),
104
- })
105
- .partial()
106
- .passthrough()
107
- .optional(),
135
+ issuer: DocumentEntity.optional(),
108
136
  customer_id: z.union([z.string(), z.null()]).optional(),
109
- customer: z
110
- .union([
137
+ customer: DocumentEntity.and(
138
+ z.union([
111
139
  z
112
- .object({
113
- name: z.union([z.string(), z.null()]),
114
- email: z.union([z.string(), z.null()]),
115
- address: z.union([z.string(), z.null()]),
116
- address_2: z.union([z.string(), z.null()]),
117
- post_code: z.union([z.string(), z.null()]),
118
- city: z.union([z.string(), z.null()]),
119
- state: z.union([z.string(), z.null()]),
120
- country: z.union([z.string(), z.null()]),
121
- country_code: z.union([z.string(), z.null()]),
122
- tax_number: z.union([z.string(), z.null()]),
123
- tax_number_2: z.union([z.string(), z.null()]),
124
- company_number: z.union([z.string(), z.null()]),
125
- bank_account: z.union([
126
- z
127
- .object({
128
- type: z
129
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
130
- .default("iban"),
131
- name: z.string(),
132
- bank_name: z.string(),
133
- iban: z.string(),
134
- account_number: z.string(),
135
- bic: z.string(),
136
- routing_number: z.string(),
137
- sort_code: z.string(),
138
- })
139
- .partial()
140
- .passthrough(),
141
- z.null(),
142
- ]),
143
- save_customer: z.boolean().default(true),
144
- })
140
+ .object({ save_customer: z.boolean().default(true) })
145
141
  .partial()
146
142
  .passthrough(),
147
143
  z.null(),
148
144
  ])
149
- .optional(),
145
+ ).optional(),
150
146
  note: z.union([z.string(), z.null()]).optional(),
151
147
  tax_clause: z.union([z.string(), z.null()]).optional(),
152
148
  total: z.number(),
153
149
  total_with_tax: z.number(),
154
- taxes: z
155
- .array(
156
- z
157
- .object({
158
- rate: z.number(),
159
- base: z.number(),
160
- amount: z.number(),
161
- reverse_charge: z.boolean().optional(),
162
- })
163
- .passthrough()
164
- )
165
- .optional(),
150
+ taxes: z.array(DocumentSummaryTax).optional(),
166
151
  currency_code: z.string().max(3).optional(),
167
152
  metadata: z.union([z.record(z.string(), z.any()), z.null()]).optional(),
168
153
  eslog: EslogData.optional(),
@@ -179,19 +164,7 @@ const createCustomAdvanceInvoiceSchemaDefinition = z.object({
179
164
  gross_price: z.number().optional(),
180
165
  quantity: z.number().gte(-140737488355328).lte(140737488355327),
181
166
  unit: z.union([z.string(), z.null()]).optional(),
182
- taxes: z
183
- .array(
184
- z
185
- .object({
186
- rate: z.number(),
187
- tax_id: z.string(),
188
- classification: z.string(),
189
- reverse_charge: z.boolean(),
190
- amount: z.number(),
191
- })
192
- .partial()
193
- )
194
- .optional(),
167
+ taxes: z.array(DocumentItemTax).optional(),
195
168
  discounts: z.array(LineDiscount).max(5).optional(),
196
169
  total: z.number(),
197
170
  total_with_tax: z.number(),
@@ -15,6 +15,18 @@ const LineDiscount = z.object({
15
15
  });
16
16
 
17
17
 
18
+ // Dependency schema for customcreditnote
19
+ const DocumentItemTax = z
20
+ .object({
21
+ rate: z.number(),
22
+ tax_id: z.string(),
23
+ classification: z.string(),
24
+ reverse_charge: z.boolean(),
25
+ amount: z.number(),
26
+ })
27
+ .partial();
28
+
29
+
18
30
  // Dependency schema for customcreditnote
19
31
  const FinaFiscalizationResponse = z.union([
20
32
  z
@@ -35,6 +47,8 @@ const FinaFiscalizationResponse = z.union([
35
47
  numbering_sequence: z.string().optional(),
36
48
  payload: z.object({}).partial().passthrough(),
37
49
  subsequent_submit: z.boolean().optional(),
50
+ issuer_oib: z.string().optional(),
51
+ operator_label: z.string().optional(),
38
52
  })
39
53
  .passthrough()
40
54
  .optional(),
@@ -44,6 +58,55 @@ const FinaFiscalizationResponse = z.union([
44
58
  ]);
45
59
 
46
60
 
61
+ // Dependency schema for customcreditnote
62
+ const DocumentSummaryTax = z
63
+ .object({
64
+ rate: z.number(),
65
+ base: z.number(),
66
+ amount: z.number(),
67
+ reverse_charge: z.boolean().optional(),
68
+ })
69
+ .passthrough();
70
+
71
+
72
+ // Dependency schema for customcreditnote
73
+ const DocumentEntity = z
74
+ .object({
75
+ name: z.union([z.string(), z.null()]),
76
+ email: z.union([z.string(), z.null()]),
77
+ address: z.union([z.string(), z.null()]),
78
+ address_2: z.union([z.string(), z.null()]),
79
+ post_code: z.union([z.string(), z.null()]),
80
+ city: z.union([z.string(), z.null()]),
81
+ state: z.union([z.string(), z.null()]),
82
+ country: z.union([z.string(), z.null()]),
83
+ country_code: z.union([z.string(), z.null()]),
84
+ tax_number: z.union([z.string(), z.null()]),
85
+ tax_number_2: z.union([z.string(), z.null()]),
86
+ company_number: z.union([z.string(), z.null()]),
87
+ bank_account: z.union([
88
+ z
89
+ .object({
90
+ type: z
91
+ .enum(["iban", "us_domestic", "uk_domestic", "other"])
92
+ .default("iban"),
93
+ name: z.string(),
94
+ bank_name: z.string(),
95
+ iban: z.string(),
96
+ account_number: z.string(),
97
+ bic: z.string(),
98
+ routing_number: z.string(),
99
+ sort_code: z.string(),
100
+ })
101
+ .partial()
102
+ .passthrough(),
103
+ z.null(),
104
+ ]),
105
+ })
106
+ .partial()
107
+ .passthrough();
108
+
109
+
47
110
  // Schema for create customcreditnote operation
48
111
  const createCustomCreditNoteSchemaDefinition = z.object({
49
112
  is_draft: z.boolean().optional(),
@@ -51,101 +114,23 @@ const createCustomCreditNoteSchemaDefinition = z.object({
51
114
  .string()
52
115
  .regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?)?$/)
53
116
  .optional(),
54
- issuer: z
55
- .object({
56
- name: z.union([z.string(), z.null()]),
57
- email: z.union([z.string(), z.null()]),
58
- address: z.union([z.string(), z.null()]),
59
- address_2: z.union([z.string(), z.null()]),
60
- post_code: z.union([z.string(), z.null()]),
61
- city: z.union([z.string(), z.null()]),
62
- state: z.union([z.string(), z.null()]),
63
- country: z.union([z.string(), z.null()]),
64
- country_code: z.union([z.string(), z.null()]),
65
- tax_number: z.union([z.string(), z.null()]),
66
- tax_number_2: z.union([z.string(), z.null()]),
67
- company_number: z.union([z.string(), z.null()]),
68
- bank_account: z.union([
69
- z
70
- .object({
71
- type: z
72
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
73
- .default("iban"),
74
- name: z.string(),
75
- bank_name: z.string(),
76
- iban: z.string(),
77
- account_number: z.string(),
78
- bic: z.string(),
79
- routing_number: z.string(),
80
- sort_code: z.string(),
81
- })
82
- .partial()
83
- .passthrough(),
84
- z.null(),
85
- ]),
86
- })
87
- .partial()
88
- .passthrough()
89
- .optional(),
117
+ issuer: DocumentEntity.optional(),
90
118
  customer_id: z.union([z.string(), z.null()]).optional(),
91
- customer: z
92
- .union([
119
+ customer: DocumentEntity.and(
120
+ z.union([
93
121
  z
94
- .object({
95
- name: z.union([z.string(), z.null()]),
96
- email: z.union([z.string(), z.null()]),
97
- address: z.union([z.string(), z.null()]),
98
- address_2: z.union([z.string(), z.null()]),
99
- post_code: z.union([z.string(), z.null()]),
100
- city: z.union([z.string(), z.null()]),
101
- state: z.union([z.string(), z.null()]),
102
- country: z.union([z.string(), z.null()]),
103
- country_code: z.union([z.string(), z.null()]),
104
- tax_number: z.union([z.string(), z.null()]),
105
- tax_number_2: z.union([z.string(), z.null()]),
106
- company_number: z.union([z.string(), z.null()]),
107
- bank_account: z.union([
108
- z
109
- .object({
110
- type: z
111
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
112
- .default("iban"),
113
- name: z.string(),
114
- bank_name: z.string(),
115
- iban: z.string(),
116
- account_number: z.string(),
117
- bic: z.string(),
118
- routing_number: z.string(),
119
- sort_code: z.string(),
120
- })
121
- .partial()
122
- .passthrough(),
123
- z.null(),
124
- ]),
125
- save_customer: z.boolean().default(true),
126
- })
122
+ .object({ save_customer: z.boolean().default(true) })
127
123
  .partial()
128
124
  .passthrough(),
129
125
  z.null(),
130
126
  ])
131
- .optional(),
127
+ ).optional(),
132
128
  note: z.union([z.string(), z.null()]).optional(),
133
129
  payment_terms: z.union([z.string(), z.null()]).optional(),
134
130
  tax_clause: z.union([z.string(), z.null()]).optional(),
135
131
  total: z.number(),
136
132
  total_with_tax: z.number(),
137
- taxes: z
138
- .array(
139
- z
140
- .object({
141
- rate: z.number(),
142
- base: z.number(),
143
- amount: z.number(),
144
- reverse_charge: z.boolean().optional(),
145
- })
146
- .passthrough()
147
- )
148
- .optional(),
133
+ taxes: z.array(DocumentSummaryTax).optional(),
149
134
  currency_code: z.string().max(3).optional(),
150
135
  metadata: z.union([z.record(z.string(), z.any()), z.null()]).optional(),
151
136
  fina: FinaFiscalizationResponse.optional(),
@@ -161,19 +146,7 @@ const createCustomCreditNoteSchemaDefinition = z.object({
161
146
  gross_price: z.number().optional(),
162
147
  quantity: z.number().gte(-140737488355328).lte(140737488355327),
163
148
  unit: z.union([z.string(), z.null()]).optional(),
164
- taxes: z
165
- .array(
166
- z
167
- .object({
168
- rate: z.number(),
169
- tax_id: z.string(),
170
- classification: z.string(),
171
- reverse_charge: z.boolean(),
172
- amount: z.number(),
173
- })
174
- .partial()
175
- )
176
- .optional(),
149
+ taxes: z.array(DocumentItemTax).optional(),
177
150
  discounts: z.array(LineDiscount).max(5).optional(),
178
151
  total: z.number(),
179
152
  total_with_tax: z.number(),
@@ -15,6 +15,67 @@ const LineDiscount = z.object({
15
15
  });
16
16
 
17
17
 
18
+ // Dependency schema for customestimate
19
+ const DocumentItemTax = z
20
+ .object({
21
+ rate: z.number(),
22
+ tax_id: z.string(),
23
+ classification: z.string(),
24
+ reverse_charge: z.boolean(),
25
+ amount: z.number(),
26
+ })
27
+ .partial();
28
+
29
+
30
+ // Dependency schema for customestimate
31
+ const DocumentSummaryTax = z
32
+ .object({
33
+ rate: z.number(),
34
+ base: z.number(),
35
+ amount: z.number(),
36
+ reverse_charge: z.boolean().optional(),
37
+ })
38
+ .passthrough();
39
+
40
+
41
+ // Dependency schema for customestimate
42
+ const DocumentEntity = z
43
+ .object({
44
+ name: z.union([z.string(), z.null()]),
45
+ email: z.union([z.string(), z.null()]),
46
+ address: z.union([z.string(), z.null()]),
47
+ address_2: z.union([z.string(), z.null()]),
48
+ post_code: z.union([z.string(), z.null()]),
49
+ city: z.union([z.string(), z.null()]),
50
+ state: z.union([z.string(), z.null()]),
51
+ country: z.union([z.string(), z.null()]),
52
+ country_code: z.union([z.string(), z.null()]),
53
+ tax_number: z.union([z.string(), z.null()]),
54
+ tax_number_2: z.union([z.string(), z.null()]),
55
+ company_number: z.union([z.string(), z.null()]),
56
+ bank_account: z.union([
57
+ z
58
+ .object({
59
+ type: z
60
+ .enum(["iban", "us_domestic", "uk_domestic", "other"])
61
+ .default("iban"),
62
+ name: z.string(),
63
+ bank_name: z.string(),
64
+ iban: z.string(),
65
+ account_number: z.string(),
66
+ bic: z.string(),
67
+ routing_number: z.string(),
68
+ sort_code: z.string(),
69
+ })
70
+ .partial()
71
+ .passthrough(),
72
+ z.null(),
73
+ ]),
74
+ })
75
+ .partial()
76
+ .passthrough();
77
+
78
+
18
79
  // Schema for create customestimate operation
19
80
  const createCustomEstimateSchemaDefinition = z.object({
20
81
  is_draft: z.boolean().optional(),
@@ -22,101 +83,23 @@ const createCustomEstimateSchemaDefinition = z.object({
22
83
  .string()
23
84
  .regex(/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?)?$/)
24
85
  .optional(),
25
- issuer: z
26
- .object({
27
- name: z.union([z.string(), z.null()]),
28
- email: z.union([z.string(), z.null()]),
29
- address: z.union([z.string(), z.null()]),
30
- address_2: z.union([z.string(), z.null()]),
31
- post_code: z.union([z.string(), z.null()]),
32
- city: z.union([z.string(), z.null()]),
33
- state: z.union([z.string(), z.null()]),
34
- country: z.union([z.string(), z.null()]),
35
- country_code: z.union([z.string(), z.null()]),
36
- tax_number: z.union([z.string(), z.null()]),
37
- tax_number_2: z.union([z.string(), z.null()]),
38
- company_number: z.union([z.string(), z.null()]),
39
- bank_account: z.union([
40
- z
41
- .object({
42
- type: z
43
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
44
- .default("iban"),
45
- name: z.string(),
46
- bank_name: z.string(),
47
- iban: z.string(),
48
- account_number: z.string(),
49
- bic: z.string(),
50
- routing_number: z.string(),
51
- sort_code: z.string(),
52
- })
53
- .partial()
54
- .passthrough(),
55
- z.null(),
56
- ]),
57
- })
58
- .partial()
59
- .passthrough()
60
- .optional(),
86
+ issuer: DocumentEntity.optional(),
61
87
  customer_id: z.union([z.string(), z.null()]).optional(),
62
- customer: z
63
- .union([
88
+ customer: DocumentEntity.and(
89
+ z.union([
64
90
  z
65
- .object({
66
- name: z.union([z.string(), z.null()]),
67
- email: z.union([z.string(), z.null()]),
68
- address: z.union([z.string(), z.null()]),
69
- address_2: z.union([z.string(), z.null()]),
70
- post_code: z.union([z.string(), z.null()]),
71
- city: z.union([z.string(), z.null()]),
72
- state: z.union([z.string(), z.null()]),
73
- country: z.union([z.string(), z.null()]),
74
- country_code: z.union([z.string(), z.null()]),
75
- tax_number: z.union([z.string(), z.null()]),
76
- tax_number_2: z.union([z.string(), z.null()]),
77
- company_number: z.union([z.string(), z.null()]),
78
- bank_account: z.union([
79
- z
80
- .object({
81
- type: z
82
- .enum(["iban", "us_domestic", "uk_domestic", "other"])
83
- .default("iban"),
84
- name: z.string(),
85
- bank_name: z.string(),
86
- iban: z.string(),
87
- account_number: z.string(),
88
- bic: z.string(),
89
- routing_number: z.string(),
90
- sort_code: z.string(),
91
- })
92
- .partial()
93
- .passthrough(),
94
- z.null(),
95
- ]),
96
- save_customer: z.boolean().default(true),
97
- })
91
+ .object({ save_customer: z.boolean().default(true) })
98
92
  .partial()
99
93
  .passthrough(),
100
94
  z.null(),
101
95
  ])
102
- .optional(),
96
+ ).optional(),
103
97
  note: z.union([z.string(), z.null()]).optional(),
104
98
  payment_terms: z.union([z.string(), z.null()]).optional(),
105
99
  tax_clause: z.union([z.string(), z.null()]).optional(),
106
100
  total: z.number(),
107
101
  total_with_tax: z.number(),
108
- taxes: z
109
- .array(
110
- z
111
- .object({
112
- rate: z.number(),
113
- base: z.number(),
114
- amount: z.number(),
115
- reverse_charge: z.boolean().optional(),
116
- })
117
- .passthrough()
118
- )
119
- .optional(),
102
+ taxes: z.array(DocumentSummaryTax).optional(),
120
103
  currency_code: z.string().max(3).optional(),
121
104
  metadata: z.union([z.record(z.string(), z.any()), z.null()]).optional(),
122
105
  date_valid_till: z.union([z.string(), z.null()]).optional(),
@@ -133,19 +116,7 @@ const createCustomEstimateSchemaDefinition = z.object({
133
116
  gross_price: z.number().optional(),
134
117
  quantity: z.number().gte(-140737488355328).lte(140737488355327),
135
118
  unit: z.union([z.string(), z.null()]).optional(),
136
- taxes: z
137
- .array(
138
- z
139
- .object({
140
- rate: z.number(),
141
- tax_id: z.string(),
142
- classification: z.string(),
143
- reverse_charge: z.boolean(),
144
- amount: z.number(),
145
- })
146
- .partial()
147
- )
148
- .optional(),
119
+ taxes: z.array(DocumentItemTax).optional(),
149
120
  discounts: z.array(LineDiscount).max(5).optional(),
150
121
  total: z.number(),
151
122
  total_with_tax: z.number(),