@scell/sdk 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -2
- package/dist/index.d.mts +2318 -235
- package/dist/index.d.ts +2318 -235
- package/dist/index.js +1261 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1261 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/client.ts +3 -1
- package/src/index.ts +17 -1
- package/src/resources/billing.ts +49 -0
- package/src/resources/fiscal.ts +128 -0
- package/src/resources/stats.ts +29 -0
- package/src/resources/sub-tenants.ts +41 -0
- package/src/resources/tenant-credit-notes.ts +301 -0
- package/src/resources/tenant-direct-credit-notes.ts +360 -0
- package/src/resources/tenant-direct-invoices.ts +424 -0
- package/src/resources/tenant-incoming-invoices.ts +429 -0
- package/src/tenant-client.ts +105 -0
- package/src/types/billing.ts +73 -0
- package/src/types/fiscal.ts +251 -0
- package/src/types/index.ts +103 -0
- package/src/types/stats.ts +37 -0
- package/src/types/sub-tenants.ts +57 -0
- package/src/types/tenant-credit-notes.ts +128 -0
- package/src/types/tenant-invoices.ts +390 -0
- package/src/types/tenant-profile.ts +51 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fiscal Compliance Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the fiscal compliance API (LF 2026).
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// ── Compliance Dashboard ────────────────────────────────────
|
|
10
|
+
|
|
11
|
+
export interface FiscalComplianceData {
|
|
12
|
+
closing_coverage_percent: number;
|
|
13
|
+
chain_integrity_percent: number;
|
|
14
|
+
open_incidents: FiscalIncident[];
|
|
15
|
+
open_incidents_count: number;
|
|
16
|
+
overall_status: FiscalComplianceStatus;
|
|
17
|
+
last_integrity_check_at: string | null;
|
|
18
|
+
last_closing_at: string | null;
|
|
19
|
+
last_closing_date: string | null;
|
|
20
|
+
total_fiscal_entries: number;
|
|
21
|
+
days_with_activity: number;
|
|
22
|
+
days_closed: number;
|
|
23
|
+
attestation_status: FiscalAttestationStatus;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type FiscalComplianceStatus = 'CONFORME' | 'ALERTE' | 'NON_CONFORME';
|
|
27
|
+
|
|
28
|
+
export interface FiscalIncident {
|
|
29
|
+
type: string;
|
|
30
|
+
severity: 'critical' | 'warning' | 'info';
|
|
31
|
+
message: string;
|
|
32
|
+
since?: string;
|
|
33
|
+
count?: number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface FiscalAttestationStatus {
|
|
37
|
+
current: boolean;
|
|
38
|
+
software_version: string;
|
|
39
|
+
attestation_version: string | null;
|
|
40
|
+
needs_renewal: boolean;
|
|
41
|
+
reason: string | null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ── Integrity ───────────────────────────────────────────────
|
|
45
|
+
|
|
46
|
+
export interface FiscalIntegrityReport {
|
|
47
|
+
is_valid: boolean;
|
|
48
|
+
entries_checked: number;
|
|
49
|
+
broken_links: number;
|
|
50
|
+
details?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface FiscalIntegrityCheck {
|
|
54
|
+
id: string;
|
|
55
|
+
tenant_id: string;
|
|
56
|
+
result: 'passed' | 'failed';
|
|
57
|
+
entries_checked: number;
|
|
58
|
+
broken_links: number;
|
|
59
|
+
details?: Record<string, unknown>;
|
|
60
|
+
created_at: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface FiscalIntegrityOptions {
|
|
64
|
+
date_from?: string;
|
|
65
|
+
date_to?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface FiscalIntegrityHistoryOptions {
|
|
69
|
+
per_page?: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ── Closings ────────────────────────────────────────────────
|
|
73
|
+
|
|
74
|
+
export interface FiscalClosing {
|
|
75
|
+
id: string;
|
|
76
|
+
tenant_id: string;
|
|
77
|
+
closing_date: string;
|
|
78
|
+
closing_type: string;
|
|
79
|
+
status: string;
|
|
80
|
+
entries_count: number;
|
|
81
|
+
total_debit: number;
|
|
82
|
+
total_credit: number;
|
|
83
|
+
chain_hash?: string;
|
|
84
|
+
environment?: string;
|
|
85
|
+
created_at?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface FiscalClosingsOptions {
|
|
89
|
+
limit?: number;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface FiscalDailyClosingInput {
|
|
93
|
+
date?: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// ── FEC Export ───────────────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
export interface FiscalFecExportOptions {
|
|
99
|
+
start_date: string;
|
|
100
|
+
end_date: string;
|
|
101
|
+
format?: 'pipe' | 'tab';
|
|
102
|
+
download?: boolean;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export interface FiscalFecExportResult {
|
|
106
|
+
period: {
|
|
107
|
+
start_date: string;
|
|
108
|
+
end_date: string;
|
|
109
|
+
};
|
|
110
|
+
format: string;
|
|
111
|
+
file_path: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ── Attestation ─────────────────────────────────────────────
|
|
115
|
+
|
|
116
|
+
export interface FiscalAttestation {
|
|
117
|
+
year: number;
|
|
118
|
+
tenant_name: string;
|
|
119
|
+
software_version: string;
|
|
120
|
+
compliance: Record<string, unknown>;
|
|
121
|
+
generated_at?: string;
|
|
122
|
+
certificate_hash?: string;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ── Entries (Ledger) ────────────────────────────────────────
|
|
126
|
+
|
|
127
|
+
export interface FiscalEntry {
|
|
128
|
+
id: string;
|
|
129
|
+
tenant_id: string;
|
|
130
|
+
sequence_number: number;
|
|
131
|
+
entry_type: string;
|
|
132
|
+
fiscal_date: string;
|
|
133
|
+
entity_type?: string | null;
|
|
134
|
+
entity_id?: string | null;
|
|
135
|
+
data_snapshot?: Record<string, unknown> | null;
|
|
136
|
+
data_hash?: string;
|
|
137
|
+
previous_hash?: string;
|
|
138
|
+
chain_hash?: string;
|
|
139
|
+
environment?: string;
|
|
140
|
+
legal_status?: string;
|
|
141
|
+
created_at?: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface FiscalEntriesOptions {
|
|
145
|
+
date_from?: string;
|
|
146
|
+
date_to?: string;
|
|
147
|
+
entry_type?: string;
|
|
148
|
+
environment?: 'production' | 'sandbox';
|
|
149
|
+
per_page?: number;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// ── Kill Switch ─────────────────────────────────────────────
|
|
153
|
+
|
|
154
|
+
export interface FiscalKillSwitchStatus {
|
|
155
|
+
is_active: boolean;
|
|
156
|
+
kill_switch: FiscalKillSwitch | null;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface FiscalKillSwitch {
|
|
160
|
+
id: string;
|
|
161
|
+
tenant_id: string;
|
|
162
|
+
is_active: boolean;
|
|
163
|
+
activated_at: string;
|
|
164
|
+
reason: string;
|
|
165
|
+
activated_by: string;
|
|
166
|
+
deactivated_at?: string | null;
|
|
167
|
+
deactivated_by?: string | null;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export interface FiscalKillSwitchActivateInput {
|
|
171
|
+
reason: string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// ── Anchors ─────────────────────────────────────────────────
|
|
175
|
+
|
|
176
|
+
export interface FiscalAnchor {
|
|
177
|
+
id: string;
|
|
178
|
+
tenant_id: string;
|
|
179
|
+
anchor_type: string;
|
|
180
|
+
source_hash: string;
|
|
181
|
+
anchor_reference?: string | null;
|
|
182
|
+
anchor_provider?: string | null;
|
|
183
|
+
anchored_at?: string | null;
|
|
184
|
+
created_at?: string;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface FiscalAnchorsOptions {
|
|
188
|
+
limit?: number;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// ── Rules ───────────────────────────────────────────────────
|
|
192
|
+
|
|
193
|
+
export type FiscalRuleCategory = 'vat' | 'invoicing' | 'credit_note' | 'closing' | 'export';
|
|
194
|
+
|
|
195
|
+
export interface FiscalRule {
|
|
196
|
+
id: string;
|
|
197
|
+
rule_key: string;
|
|
198
|
+
name: string;
|
|
199
|
+
category: FiscalRuleCategory;
|
|
200
|
+
rule_definition: Record<string, unknown>;
|
|
201
|
+
version: number;
|
|
202
|
+
effective_from: string;
|
|
203
|
+
effective_until?: string | null;
|
|
204
|
+
legal_reference?: string | null;
|
|
205
|
+
tenant_id?: string | null;
|
|
206
|
+
description?: string | null;
|
|
207
|
+
is_active: boolean;
|
|
208
|
+
created_at?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface FiscalRulesOptions {
|
|
212
|
+
date?: string;
|
|
213
|
+
category?: FiscalRuleCategory;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface FiscalCreateRuleInput {
|
|
217
|
+
rule_key: string;
|
|
218
|
+
name: string;
|
|
219
|
+
category: FiscalRuleCategory;
|
|
220
|
+
rule_definition: Record<string, unknown>;
|
|
221
|
+
effective_from: string;
|
|
222
|
+
effective_until?: string;
|
|
223
|
+
legal_reference?: string;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export interface FiscalUpdateRuleInput {
|
|
227
|
+
rule_definition: Record<string, unknown>;
|
|
228
|
+
effective_from?: string;
|
|
229
|
+
effective_until?: string;
|
|
230
|
+
legal_reference?: string;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export interface FiscalExportRulesOptions {
|
|
234
|
+
start_date: string;
|
|
235
|
+
end_date: string;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export interface FiscalReplayRulesInput {
|
|
239
|
+
start_date: string;
|
|
240
|
+
end_date: string;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ── Forensic Export ─────────────────────────────────────────
|
|
244
|
+
|
|
245
|
+
export type FiscalForensicExportType = 'chronology' | 'graph' | 'report';
|
|
246
|
+
|
|
247
|
+
export interface FiscalForensicExportOptions {
|
|
248
|
+
start_date: string;
|
|
249
|
+
end_date: string;
|
|
250
|
+
type?: FiscalForensicExportType;
|
|
251
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -122,3 +122,106 @@ export type {
|
|
|
122
122
|
ResetPasswordInput,
|
|
123
123
|
User,
|
|
124
124
|
} from './auth.js';
|
|
125
|
+
|
|
126
|
+
// Tenant Credit Notes types
|
|
127
|
+
export type {
|
|
128
|
+
CreateTenantCreditNoteInput,
|
|
129
|
+
RemainingCreditable,
|
|
130
|
+
RemainingCreditableLine,
|
|
131
|
+
TenantCreditNote,
|
|
132
|
+
TenantCreditNoteItem,
|
|
133
|
+
TenantCreditNoteItemInput,
|
|
134
|
+
TenantCreditNoteListOptions,
|
|
135
|
+
TenantCreditNoteStatus,
|
|
136
|
+
TenantCreditNoteType,
|
|
137
|
+
UpdateTenantCreditNoteInput,
|
|
138
|
+
} from './tenant-credit-notes.js';
|
|
139
|
+
|
|
140
|
+
// Tenant Invoices types (multi-tenant)
|
|
141
|
+
export type {
|
|
142
|
+
CreateIncomingInvoiceParams,
|
|
143
|
+
CreateTenantDirectCreditNoteParams,
|
|
144
|
+
CreateTenantDirectInvoiceParams,
|
|
145
|
+
TenantCreditNoteFilters,
|
|
146
|
+
TenantInvoice,
|
|
147
|
+
TenantInvoiceBuyer,
|
|
148
|
+
TenantInvoiceDirection,
|
|
149
|
+
TenantInvoiceFilters,
|
|
150
|
+
TenantInvoiceSeller,
|
|
151
|
+
UpdateTenantCreditNoteParams,
|
|
152
|
+
UpdateTenantInvoiceParams,
|
|
153
|
+
} from './tenant-invoices.js';
|
|
154
|
+
|
|
155
|
+
// Fiscal types
|
|
156
|
+
export type {
|
|
157
|
+
FiscalAnchor,
|
|
158
|
+
FiscalAnchorsOptions,
|
|
159
|
+
FiscalAttestation,
|
|
160
|
+
FiscalAttestationStatus,
|
|
161
|
+
FiscalClosing,
|
|
162
|
+
FiscalClosingsOptions,
|
|
163
|
+
FiscalComplianceData,
|
|
164
|
+
FiscalComplianceStatus,
|
|
165
|
+
FiscalCreateRuleInput,
|
|
166
|
+
FiscalDailyClosingInput,
|
|
167
|
+
FiscalEntriesOptions,
|
|
168
|
+
FiscalEntry,
|
|
169
|
+
FiscalExportRulesOptions,
|
|
170
|
+
FiscalFecExportOptions,
|
|
171
|
+
FiscalFecExportResult,
|
|
172
|
+
FiscalForensicExportOptions,
|
|
173
|
+
FiscalForensicExportType,
|
|
174
|
+
FiscalIncident,
|
|
175
|
+
FiscalIntegrityCheck,
|
|
176
|
+
FiscalIntegrityHistoryOptions,
|
|
177
|
+
FiscalIntegrityOptions,
|
|
178
|
+
FiscalIntegrityReport,
|
|
179
|
+
FiscalKillSwitch,
|
|
180
|
+
FiscalKillSwitchActivateInput,
|
|
181
|
+
FiscalKillSwitchStatus,
|
|
182
|
+
FiscalReplayRulesInput,
|
|
183
|
+
FiscalRule,
|
|
184
|
+
FiscalRuleCategory,
|
|
185
|
+
FiscalRulesOptions,
|
|
186
|
+
FiscalUpdateRuleInput,
|
|
187
|
+
} from './fiscal.js';
|
|
188
|
+
|
|
189
|
+
// Billing types
|
|
190
|
+
export type {
|
|
191
|
+
BillingInvoice,
|
|
192
|
+
BillingInvoiceLine,
|
|
193
|
+
BillingInvoiceListOptions,
|
|
194
|
+
BillingTopUpConfirmInput,
|
|
195
|
+
BillingTopUpInput,
|
|
196
|
+
BillingTransaction,
|
|
197
|
+
BillingTransactionListOptions,
|
|
198
|
+
BillingUsage,
|
|
199
|
+
BillingUsageOptions,
|
|
200
|
+
} from './billing.js';
|
|
201
|
+
|
|
202
|
+
// Stats types
|
|
203
|
+
export type {
|
|
204
|
+
StatsMonthly,
|
|
205
|
+
StatsMonthlyOptions,
|
|
206
|
+
StatsOverview,
|
|
207
|
+
StatsOverviewOptions,
|
|
208
|
+
} from './stats.js';
|
|
209
|
+
|
|
210
|
+
// Sub-Tenant types
|
|
211
|
+
export type {
|
|
212
|
+
CreateSubTenantInput,
|
|
213
|
+
SubTenant,
|
|
214
|
+
SubTenantAddress,
|
|
215
|
+
SubTenantListOptions,
|
|
216
|
+
UpdateSubTenantInput,
|
|
217
|
+
} from './sub-tenants.js';
|
|
218
|
+
|
|
219
|
+
// Tenant Profile types
|
|
220
|
+
export type {
|
|
221
|
+
RegenerateKeyResult,
|
|
222
|
+
TenantBalance,
|
|
223
|
+
TenantProfile,
|
|
224
|
+
TenantAddress,
|
|
225
|
+
TenantQuickStats,
|
|
226
|
+
UpdateTenantProfileInput,
|
|
227
|
+
} from './tenant-profile.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stats Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the tenant statistics API.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export interface StatsOverview {
|
|
10
|
+
total_invoices: number;
|
|
11
|
+
total_credit_notes: number;
|
|
12
|
+
total_revenue: number;
|
|
13
|
+
total_expenses: number;
|
|
14
|
+
active_sub_tenants: number;
|
|
15
|
+
currency: string;
|
|
16
|
+
status_breakdown?: Record<string, number> | null;
|
|
17
|
+
period_comparison?: Record<string, unknown> | null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface StatsMonthly {
|
|
21
|
+
month: string;
|
|
22
|
+
invoices_count: number;
|
|
23
|
+
credit_notes_count: number;
|
|
24
|
+
revenue: number;
|
|
25
|
+
expenses: number;
|
|
26
|
+
daily_breakdown?: Record<string, unknown>[] | null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface StatsOverviewOptions {
|
|
30
|
+
period?: string;
|
|
31
|
+
currency?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface StatsMonthlyOptions {
|
|
35
|
+
year?: number;
|
|
36
|
+
month?: number;
|
|
37
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-Tenant Types
|
|
3
|
+
*
|
|
4
|
+
* Types for the sub-tenant management API.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export interface SubTenant {
|
|
10
|
+
id: string;
|
|
11
|
+
external_id?: string | null;
|
|
12
|
+
name: string;
|
|
13
|
+
siret?: string | null;
|
|
14
|
+
siren?: string | null;
|
|
15
|
+
email?: string | null;
|
|
16
|
+
phone?: string | null;
|
|
17
|
+
address?: SubTenantAddress | null;
|
|
18
|
+
metadata?: Record<string, unknown> | null;
|
|
19
|
+
created_at?: string;
|
|
20
|
+
updated_at?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface SubTenantAddress {
|
|
24
|
+
line1: string;
|
|
25
|
+
line2?: string;
|
|
26
|
+
postal_code: string;
|
|
27
|
+
city: string;
|
|
28
|
+
country?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface SubTenantListOptions {
|
|
32
|
+
per_page?: number;
|
|
33
|
+
page?: number;
|
|
34
|
+
search?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface CreateSubTenantInput {
|
|
38
|
+
external_id?: string;
|
|
39
|
+
name: string;
|
|
40
|
+
siret?: string;
|
|
41
|
+
siren?: string;
|
|
42
|
+
email?: string;
|
|
43
|
+
phone?: string;
|
|
44
|
+
address?: SubTenantAddress;
|
|
45
|
+
metadata?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export interface UpdateSubTenantInput {
|
|
49
|
+
external_id?: string;
|
|
50
|
+
name?: string;
|
|
51
|
+
siret?: string;
|
|
52
|
+
siren?: string;
|
|
53
|
+
email?: string;
|
|
54
|
+
phone?: string;
|
|
55
|
+
address?: SubTenantAddress;
|
|
56
|
+
metadata?: Record<string, unknown>;
|
|
57
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant Credit Notes types
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type {
|
|
8
|
+
CurrencyCode,
|
|
9
|
+
DateString,
|
|
10
|
+
DateTimeString,
|
|
11
|
+
PaginationOptions,
|
|
12
|
+
Siret,
|
|
13
|
+
UUID,
|
|
14
|
+
} from './common.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Credit note status
|
|
18
|
+
*/
|
|
19
|
+
export type TenantCreditNoteStatus = 'draft' | 'sent' | 'cancelled';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Credit note type
|
|
23
|
+
*/
|
|
24
|
+
export type TenantCreditNoteType = 'partial' | 'total';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Credit note item
|
|
28
|
+
*/
|
|
29
|
+
export interface TenantCreditNoteItem {
|
|
30
|
+
id: UUID;
|
|
31
|
+
invoice_line_id?: UUID | undefined;
|
|
32
|
+
description: string;
|
|
33
|
+
quantity: number;
|
|
34
|
+
unit_price: number;
|
|
35
|
+
tax_rate: number;
|
|
36
|
+
total: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Tenant Credit Note
|
|
41
|
+
*/
|
|
42
|
+
export interface TenantCreditNote {
|
|
43
|
+
id: UUID;
|
|
44
|
+
credit_note_number: string;
|
|
45
|
+
invoice_id: UUID;
|
|
46
|
+
tenant_id: UUID;
|
|
47
|
+
sub_tenant_id: UUID;
|
|
48
|
+
status: TenantCreditNoteStatus;
|
|
49
|
+
type: TenantCreditNoteType;
|
|
50
|
+
reason: string;
|
|
51
|
+
subtotal: number;
|
|
52
|
+
tax_amount: number;
|
|
53
|
+
total: number;
|
|
54
|
+
currency: CurrencyCode;
|
|
55
|
+
buyer_name?: string | undefined;
|
|
56
|
+
buyer_siret?: Siret | undefined;
|
|
57
|
+
seller_name?: string | undefined;
|
|
58
|
+
seller_siret?: Siret | undefined;
|
|
59
|
+
issue_date: DateString;
|
|
60
|
+
created_at: DateTimeString;
|
|
61
|
+
updated_at: DateTimeString;
|
|
62
|
+
items?: TenantCreditNoteItem[] | undefined;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Credit note item input for creation
|
|
67
|
+
*/
|
|
68
|
+
export interface TenantCreditNoteItemInput {
|
|
69
|
+
invoice_line_id: UUID;
|
|
70
|
+
quantity?: number | undefined;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Input for creating a tenant credit note
|
|
75
|
+
*/
|
|
76
|
+
export interface CreateTenantCreditNoteInput {
|
|
77
|
+
invoice_id: UUID;
|
|
78
|
+
reason: string;
|
|
79
|
+
type: TenantCreditNoteType;
|
|
80
|
+
items?: TenantCreditNoteItemInput[] | undefined;
|
|
81
|
+
metadata?: Record<string, unknown> | undefined;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Line item remaining creditable information
|
|
86
|
+
*/
|
|
87
|
+
export interface RemainingCreditableLine {
|
|
88
|
+
invoice_line_id: UUID;
|
|
89
|
+
description: string;
|
|
90
|
+
original_quantity: number;
|
|
91
|
+
credited_quantity: number;
|
|
92
|
+
remaining_quantity: number;
|
|
93
|
+
unit_price: number;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Remaining creditable information for an invoice
|
|
98
|
+
*/
|
|
99
|
+
export interface RemainingCreditable {
|
|
100
|
+
invoice_id: UUID;
|
|
101
|
+
invoice_total: number;
|
|
102
|
+
credited_total: number;
|
|
103
|
+
remaining_total: number;
|
|
104
|
+
lines: RemainingCreditableLine[];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* List options for tenant credit notes
|
|
109
|
+
*/
|
|
110
|
+
export interface TenantCreditNoteListOptions extends PaginationOptions {
|
|
111
|
+
status?: TenantCreditNoteStatus | undefined;
|
|
112
|
+
date_from?: DateString | undefined;
|
|
113
|
+
date_to?: DateString | undefined;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Input for updating a tenant credit note
|
|
118
|
+
*
|
|
119
|
+
* Only credit notes in 'draft' status can be updated.
|
|
120
|
+
*/
|
|
121
|
+
export interface UpdateTenantCreditNoteInput {
|
|
122
|
+
/** Updated reason for the credit note */
|
|
123
|
+
reason?: string | undefined;
|
|
124
|
+
/** Updated items (for partial credit notes) */
|
|
125
|
+
items?: TenantCreditNoteItemInput[] | undefined;
|
|
126
|
+
/** Updated metadata */
|
|
127
|
+
metadata?: Record<string, unknown> | undefined;
|
|
128
|
+
}
|