@nuxt-customer-portal/invoices 0.3.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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +4 -0
- package/app/assets/invoices.css +332 -0
- package/app/components/InvoicesAdminEmptyState.vue +28 -0
- package/app/components/InvoicesAdminInvoices.vue +950 -0
- package/app/components/InvoicesAdminListToolbar.vue +19 -0
- package/app/components/InvoicesAdminPaginatedList.vue +95 -0
- package/app/components/InvoicesClientAccessPanel.vue +63 -0
- package/app/components/InvoicesClientSettingsPanel.vue +150 -0
- package/app/components/InvoicesDashboardCard.vue +29 -0
- package/app/components/InvoicesDashboardReceivedInvoices.vue +1 -0
- package/app/components/InvoicesDashboardSalesInvoices.vue +1 -0
- package/app/components/InvoicesInvoiceDetail.vue +1109 -0
- package/app/components/InvoicesInvoiceEmailModal.vue +223 -0
- package/app/components/InvoicesPageShell.vue +7 -0
- package/app/components/InvoicesSenderDetailsForm.vue +229 -0
- package/app/composables/useInvoiceSources.ts +9 -0
- package/app/composables/useInvoices.ts +68 -0
- package/app/composables/useInvoicesAdminList.ts +113 -0
- package/app/pages/admin/invoices/[id].vue +36 -0
- package/app/pages/admin/invoices/index.vue +61 -0
- package/app/pages/admin/invoices/new.vue +18 -0
- package/app/pages/admin/invoices/settings.vue +86 -0
- package/app/pages/invoices/[id].vue +37 -0
- package/app/pages/invoices/index.vue +131 -0
- package/app/pages/invoices/viewers.vue +115 -0
- package/app/plugins/invoices-feature.ts +60 -0
- package/i18n/locales/en.json +306 -0
- package/i18n/locales/nl.json +306 -0
- package/migrations/0000_baseline.sql +235 -0
- package/migrations/meta/0000_snapshot.json +1318 -0
- package/migrations/meta/_journal.json +13 -0
- package/nuxt.config.ts +15 -0
- package/package.json +60 -0
- package/portal.manifest.mjs +9 -0
- package/server/api/invoices/admin/bootstrap.get.ts +17 -0
- package/server/api/invoices/admin/clients/[clientId]/access.get.ts +11 -0
- package/server/api/invoices/admin/clients/[clientId]/contacts/[id].delete.ts +8 -0
- package/server/api/invoices/admin/clients/[clientId]/contacts/[id].patch.ts +13 -0
- package/server/api/invoices/admin/clients/[clientId]/contacts/index.get.ts +8 -0
- package/server/api/invoices/admin/clients/[clientId]/contacts/index.post.ts +12 -0
- package/server/api/invoices/admin/email-domain.get.ts +17 -0
- package/server/api/invoices/admin/invoices/[id]/attachments/[attachmentId].delete.ts +23 -0
- package/server/api/invoices/admin/invoices/[id]/attachments/[attachmentId].get.ts +30 -0
- package/server/api/invoices/admin/invoices/[id]/attachments.post.ts +27 -0
- package/server/api/invoices/admin/invoices/[id]/email-preview.get.ts +22 -0
- package/server/api/invoices/admin/invoices/[id]/email-status.post.ts +18 -0
- package/server/api/invoices/admin/invoices/[id]/email.post.ts +24 -0
- package/server/api/invoices/admin/invoices/[id]/index.get.ts +17 -0
- package/server/api/invoices/admin/invoices/[id]/issue.post.ts +24 -0
- package/server/api/invoices/admin/invoices/[id]/payments.post.ts +24 -0
- package/server/api/invoices/admin/invoices/[id]/pdf.get.ts +29 -0
- package/server/api/invoices/admin/invoices/[id]/reminder-preview.get.ts +24 -0
- package/server/api/invoices/admin/invoices/[id]/reminder.post.ts +25 -0
- package/server/api/invoices/admin/invoices/[id].patch.ts +24 -0
- package/server/api/invoices/admin/invoices/index.get.ts +20 -0
- package/server/api/invoices/admin/invoices/index.post.ts +19 -0
- package/server/api/invoices/admin/invoices/next-number.get.ts +16 -0
- package/server/api/invoices/admin/settings.put.ts +9 -0
- package/server/api/invoices/capabilities.get.ts +25 -0
- package/server/api/invoices/client/[accessId]/viewers.get.ts +10 -0
- package/server/api/invoices/client/[accessId]/viewers.put.ts +17 -0
- package/server/api/invoices/client/invoices/[id]/attachments/[attachmentId].get.ts +20 -0
- package/server/api/invoices/client/invoices/[id]/index.get.ts +12 -0
- package/server/api/invoices/client/invoices/[id]/pdf.get.ts +23 -0
- package/server/api/invoices/client/invoices/index.get.ts +14 -0
- package/server/api/invoices/client/suppliers.get.ts +8 -0
- package/server/db/schema/invoices.ts +251 -0
- package/server/plugins/openapi-contracts.ts +55 -0
- package/server/utils/invoice-email-status.ts +64 -0
- package/server/utils/invoice-email.ts +240 -0
- package/server/utils/invoice-listing.ts +71 -0
- package/server/utils/invoice-pdf.ts +358 -0
- package/server/utils/invoice-repository.ts +821 -0
- package/server/utils/invoice-validation.ts +112 -0
- package/shared/email-delivery-status.ts +23 -0
- package/shared/feature.ts +148 -0
- package/shared/invoice-introduction.ts +21 -0
- package/shared/invoice-number.ts +24 -0
- package/shared/types/invoice.ts +251 -0
- package/tokens.css +25 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
{
|
|
2
|
+
"features": {
|
|
3
|
+
"invoices": {
|
|
4
|
+
"title": "Invoices",
|
|
5
|
+
"clientAccess": {
|
|
6
|
+
"title": "Invoice access",
|
|
7
|
+
"description": "Who can view this client's issued and paid invoices in the portal? Owners and administrators have automatic access; other members need access assigned by a client administrator.",
|
|
8
|
+
"error": "Invoice access could not be loaded.",
|
|
9
|
+
"moduleDisabled": "The invoice module is disabled for this client.",
|
|
10
|
+
"notConfigured": "Invoice access becomes available when the first invoice is created for this client.",
|
|
11
|
+
"disabled": "Invoice access for this client is disabled.",
|
|
12
|
+
"noMembers": "This client has no portal members yet.",
|
|
13
|
+
"automatic": "Automatic through role",
|
|
14
|
+
"assigned": "Access assigned",
|
|
15
|
+
"notAssigned": "No access assigned",
|
|
16
|
+
"granted": "Can view invoices",
|
|
17
|
+
"denied": "No invoice access",
|
|
18
|
+
"contactsExplanation": "The contacts below are for invoice communications. Adding a contact does not automatically create a portal account or grant invoice access."
|
|
19
|
+
},
|
|
20
|
+
"roles": {
|
|
21
|
+
"owner": "Owner",
|
|
22
|
+
"admin": "Admin",
|
|
23
|
+
"member": "Member"
|
|
24
|
+
},
|
|
25
|
+
"loading": "Loading invoice…",
|
|
26
|
+
"cancel": "Cancel",
|
|
27
|
+
"save": "Save",
|
|
28
|
+
"languages": {
|
|
29
|
+
"nl": "Dutch",
|
|
30
|
+
"en": "English"
|
|
31
|
+
},
|
|
32
|
+
"receivedInvoices": "Received invoices",
|
|
33
|
+
"salesInvoices": "Sales invoices",
|
|
34
|
+
"clientInvoices": {
|
|
35
|
+
"title": "Invoices",
|
|
36
|
+
"subtitle": "View invoices shared with your organization.",
|
|
37
|
+
"viewersTitle": "Invoice viewers",
|
|
38
|
+
"viewersSubtitle": "Choose which organization members may view received invoices.",
|
|
39
|
+
"download": "Download",
|
|
40
|
+
"statusFilter": "Status",
|
|
41
|
+
"supplierFilter": "Supplier",
|
|
42
|
+
"paymentFilter": "Payment",
|
|
43
|
+
"allStatuses": "All statuses",
|
|
44
|
+
"allSuppliers": "All suppliers",
|
|
45
|
+
"allPayments": "All invoices",
|
|
46
|
+
"overdueOnly": "Overdue",
|
|
47
|
+
"notOverdue": "Not overdue",
|
|
48
|
+
"empty": "No invoices available",
|
|
49
|
+
"emptyDescription": "No matching issued or paid invoices have been shared with you.",
|
|
50
|
+
"viewerCount": "{count} Viewer | {count} Viewers",
|
|
51
|
+
"viewerHelp": "Select the members who may view received invoices.",
|
|
52
|
+
"adminAccessHelp": "Organization owners and admins always have access; viewer access is updated immediately.",
|
|
53
|
+
"chooseViewers": "Who may view invoices?",
|
|
54
|
+
"accessUnavailable": "Invoice access is not enabled for your organization",
|
|
55
|
+
"noEligibleViewers": "Add members to your organization before assigning invoice access.",
|
|
56
|
+
"alwaysAccess": "Always has access",
|
|
57
|
+
"additionalAccess": "Additional access",
|
|
58
|
+
"hasAccess": "Has access"
|
|
59
|
+
},
|
|
60
|
+
"validation": {
|
|
61
|
+
"maxLength": "Use no more than {count} characters",
|
|
62
|
+
"invoiceNumberSequence": "The invoice number must end with digits",
|
|
63
|
+
"required": "This field is required",
|
|
64
|
+
"validEmail": "Enter a valid email address",
|
|
65
|
+
"validDate": "Enter a valid date",
|
|
66
|
+
"currencyLength": "Use a 3-letter currency code",
|
|
67
|
+
"positiveQuantity": "Enter a quantity greater than zero",
|
|
68
|
+
"invoiceLineRequired": "Add at least one invoice line",
|
|
69
|
+
"dueDateOrder": "The due date cannot precede the invoice date",
|
|
70
|
+
"positiveAmount": "Enter an amount greater than zero"
|
|
71
|
+
},
|
|
72
|
+
"dashboard": {
|
|
73
|
+
"open": "Open"
|
|
74
|
+
},
|
|
75
|
+
"admin": {
|
|
76
|
+
"refresh": "Refresh",
|
|
77
|
+
"invoices": "Invoices",
|
|
78
|
+
"sectionSubtitles": {
|
|
79
|
+
"invoices": "Create free-form invoices or bill approved time, then track issue and payment status."
|
|
80
|
+
},
|
|
81
|
+
"newInvoice": "New invoice",
|
|
82
|
+
"defaultVatRate": "Default VAT rate",
|
|
83
|
+
"invoicesEnabled": "Enable invoicing for this organization",
|
|
84
|
+
"invoiceConfiguration": "Invoice configuration",
|
|
85
|
+
"noInvoicesTitle": "No invoices yet",
|
|
86
|
+
"noInvoicesDescription": "Create a free-form invoice or turn approved timesheets into a clear, professional invoice.",
|
|
87
|
+
"createFirstInvoice": "Create your first invoice",
|
|
88
|
+
"senderDetailsRequiredTitle": "Complete your sender invoice details",
|
|
89
|
+
"senderDetailsRequiredDescription": "Add your full address, registration and VAT numbers, bank details, and invoice email before creating an invoice.",
|
|
90
|
+
"completeSenderDetails": "Complete sender details",
|
|
91
|
+
"newInvoiceFor": "New invoice for {name}",
|
|
92
|
+
"invoiceCreated": "Invoice created",
|
|
93
|
+
"freeForm": "Free-form invoice",
|
|
94
|
+
"approvedTime": "Approved timesheets",
|
|
95
|
+
"freeFormDescription": "Choose a client, then compose the invoice lines yourself.",
|
|
96
|
+
"approvedTimeDescription": "Turn approved, uninvoiced billable time into invoice lines.",
|
|
97
|
+
"wizardStep": "Step {step} of {total}",
|
|
98
|
+
"periodFrom": "Period from",
|
|
99
|
+
"periodTo": "Period through",
|
|
100
|
+
"selectClient": "Select a client",
|
|
101
|
+
"selectProjects": "Select one or more projects",
|
|
102
|
+
"noInvoiceableTimeInPeriod": "No approved, uninvoiced billable time is available in this period.",
|
|
103
|
+
"detailLevel": "Level of detail",
|
|
104
|
+
"groupBy": "Group summary by",
|
|
105
|
+
"next": "Next",
|
|
106
|
+
"previous": "Previous",
|
|
107
|
+
"createDraftInvoice": "Create draft invoice",
|
|
108
|
+
"invoiceNumber": "Invoice number",
|
|
109
|
+
"lastUsedInvoiceNumber": "Last used: {number}",
|
|
110
|
+
"invoiceDate": "Invoice date",
|
|
111
|
+
"dueDate": "Due date",
|
|
112
|
+
"subject": "Introduction (optional)",
|
|
113
|
+
"sender": "Sender details",
|
|
114
|
+
"recipient": "Invoice to:",
|
|
115
|
+
"from": "From",
|
|
116
|
+
"name": "Name",
|
|
117
|
+
"address": "Full address",
|
|
118
|
+
"registration": "Company registration",
|
|
119
|
+
"registrationShort": "Registration no.",
|
|
120
|
+
"vatNumberShort": "VAT no.",
|
|
121
|
+
"vatNumber": "VAT number",
|
|
122
|
+
"contact": "Contact person",
|
|
123
|
+
"email": "Email address",
|
|
124
|
+
"summary": "Summarise lines",
|
|
125
|
+
"perPersonActivity": "Per person and activity",
|
|
126
|
+
"perPerson": "Per person",
|
|
127
|
+
"perActivity": "Per activity",
|
|
128
|
+
"perProject": "Per project",
|
|
129
|
+
"detailed": "Each entry separately",
|
|
130
|
+
"noInvoiceableTime": "No approved, uninvoiced billable time is available for this client.",
|
|
131
|
+
"description": "Description",
|
|
132
|
+
"quantity": "Quantity",
|
|
133
|
+
"unitPrice": "Price / unit",
|
|
134
|
+
"vat": "VAT",
|
|
135
|
+
"subtotal": "Subtotal",
|
|
136
|
+
"totalPayable": "Total payable",
|
|
137
|
+
"removeInvoiceLine": "Remove invoice line {number}",
|
|
138
|
+
"addLine": "Add line",
|
|
139
|
+
"notes": "Notes (optional)",
|
|
140
|
+
"invoiceDetails": "Invoice lines",
|
|
141
|
+
"outstanding": "Outstanding",
|
|
142
|
+
"issue": "Issue invoice",
|
|
143
|
+
"void": "Write off",
|
|
144
|
+
"unvoid": "Undo write-off",
|
|
145
|
+
"voidInvoiceTitle": "Write off invoice",
|
|
146
|
+
"voidInvoiceDescription": "Write off invoice {number}? Its outstanding amount will no longer be treated as collectible, but the invoice will remain in your records.",
|
|
147
|
+
"unvoidInvoiceTitle": "Undo invoice write-off",
|
|
148
|
+
"unvoidInvoiceDescription": "Undo the write-off for invoice {number}? Its previous draft or issued status will be restored.",
|
|
149
|
+
"registerPayment": "Register payment",
|
|
150
|
+
"reference": "Payment reference",
|
|
151
|
+
"paidOn": "Payment date",
|
|
152
|
+
"paymentAmount": "Payment amount",
|
|
153
|
+
"paid": "Paid",
|
|
154
|
+
"backToInvoices": "Back to invoices",
|
|
155
|
+
"invoiceTitle": "Invoice {number}",
|
|
156
|
+
"invoiceDocumentTitle": "INVOICE",
|
|
157
|
+
"print": "Print",
|
|
158
|
+
"invoiceIssued": "Invoice issued",
|
|
159
|
+
"issueAndSend": "Issue and send",
|
|
160
|
+
"resendInvoice": "Resend invoice",
|
|
161
|
+
"invoiceIssuedAndSent": "Invoice issued and emailed",
|
|
162
|
+
"invoiceResent": "Invoice emailed again",
|
|
163
|
+
"sendReminder": "Send reminder",
|
|
164
|
+
"reminderSent": "Payment reminder sent",
|
|
165
|
+
"paymentReminder": "Payment reminder",
|
|
166
|
+
"overdueDays": "Overdue · {count} day | Overdue · {count} days",
|
|
167
|
+
"overdueAlertTitle": "Payment is {count} day overdue | Payment is {count} days overdue",
|
|
168
|
+
"overdueAlertDescription": "This invoice was due on {dueDate} and still has {amount} outstanding.",
|
|
169
|
+
"reminderSummary": "Reminder sent: {count}. Last reminder: {date}. | Reminders sent: {count}. Last reminder: {date}.",
|
|
170
|
+
"never": "never",
|
|
171
|
+
"openInvoice": "Open invoice {number}",
|
|
172
|
+
"recipientEmail": "Recipient email",
|
|
173
|
+
"emailLanguage": "Email language",
|
|
174
|
+
"emailSubject": "Subject",
|
|
175
|
+
"emailBody": "Message",
|
|
176
|
+
"sendEmail": "Send email",
|
|
177
|
+
"emailAttachments": "Email attachments",
|
|
178
|
+
"emailAttachmentsTooLarge": "The attachments exceed the 40 MB email limit. Remove one or more invoice files before sending.",
|
|
179
|
+
"ccPlaceholder": "Comma-separated email addresses",
|
|
180
|
+
"emailDeliveryHistory": "Email delivery history",
|
|
181
|
+
"emailDeliveryStatus": {
|
|
182
|
+
"pending": "Pending",
|
|
183
|
+
"sent": "Sent",
|
|
184
|
+
"failed": "Failed"
|
|
185
|
+
},
|
|
186
|
+
"emailProviderStatus": {
|
|
187
|
+
"sent": "Accepted by Resend",
|
|
188
|
+
"delivered": "Delivered",
|
|
189
|
+
"delivery_delayed": "Delivery delayed",
|
|
190
|
+
"bounced": "Bounced",
|
|
191
|
+
"failed": "Delivery failed",
|
|
192
|
+
"suppressed": "Suppressed",
|
|
193
|
+
"complained": "Marked as spam",
|
|
194
|
+
"opened": "Opened",
|
|
195
|
+
"clicked": "Link clicked"
|
|
196
|
+
},
|
|
197
|
+
"emailTrackingExplanation": "Delivered means the recipient's mail server accepted the message. Opened is an approximate tracking signal and does not prove that a person read the invoice.",
|
|
198
|
+
"refreshEmailStatus": "Refresh delivery status",
|
|
199
|
+
"emailSentAt": "Sent: {date}",
|
|
200
|
+
"emailStatusCheckedAt": "Checked with Resend: {date}",
|
|
201
|
+
"emailStatusRefreshed": "Email delivery status refreshed",
|
|
202
|
+
"emailStatusRefreshPartial": "Some email statuses could not be refreshed",
|
|
203
|
+
"emailStatusRefreshPartialDescription": "Previously known statuses were preserved. The message may belong to another Resend account, or Resend may be temporarily unavailable.",
|
|
204
|
+
"emailStatusRefreshFailed": "Email delivery status is unavailable",
|
|
205
|
+
"emailStatusRefreshFailedDescription": "The invoice remains available and previously known delivery statuses were preserved.",
|
|
206
|
+
"invoiceVoided": "Invoice written off",
|
|
207
|
+
"invoiceUnvoided": "Invoice write-off undone",
|
|
208
|
+
"invoiceUpdated": "Invoice updated",
|
|
209
|
+
"editInvoice": "Edit invoice",
|
|
210
|
+
"moreActions": "More invoice actions",
|
|
211
|
+
"paymentRegistered": "Payment registered",
|
|
212
|
+
"attachments": "Attachments",
|
|
213
|
+
"attachFile": "Attach file",
|
|
214
|
+
"attachmentAdded": "Attachment added",
|
|
215
|
+
"attachmentRemoved": "Attachment removed",
|
|
216
|
+
"removeAttachment": "Remove attachment",
|
|
217
|
+
"removeAttachmentDescription": "Remove {name} from this invoice? It will no longer be included in future emails.",
|
|
218
|
+
"noAttachments": "No files are attached to this invoice.",
|
|
219
|
+
"invoiceHistoryTitle": "Invoice history",
|
|
220
|
+
"invoiceNotFound": "This invoice could not be found",
|
|
221
|
+
"invoiceHistory": {
|
|
222
|
+
"created": "Invoice created",
|
|
223
|
+
"edited": "Invoice updated",
|
|
224
|
+
"issued": "Invoice issued",
|
|
225
|
+
"voided": "Invoice written off",
|
|
226
|
+
"unvoided": "Invoice write-off undone",
|
|
227
|
+
"payment": "Payment received: {amount}",
|
|
228
|
+
"attachment": "Attachment added: {name}",
|
|
229
|
+
"attachmentRemoved": "Attachment removed: {name}",
|
|
230
|
+
"emailed": "Invoice emailed to {email}",
|
|
231
|
+
"reminderSent": "Payment reminder emailed to {email}"
|
|
232
|
+
},
|
|
233
|
+
"invoiceStatus": {
|
|
234
|
+
"draft": "Draft",
|
|
235
|
+
"issued": "Issued",
|
|
236
|
+
"paid": "Paid",
|
|
237
|
+
"void": "Written off"
|
|
238
|
+
},
|
|
239
|
+
"approve": "Approve",
|
|
240
|
+
"client": "Client",
|
|
241
|
+
"clientDetailsRequiredTitle": "Complete this client's invoice details",
|
|
242
|
+
"clientDetailsRequiredDescription": "Before continuing, add: {fields}.",
|
|
243
|
+
"completeClientDetails": "Edit client details",
|
|
244
|
+
"senderInvoiceDetails": "Sender invoice details",
|
|
245
|
+
"invoiceEmail": "Invoice email address",
|
|
246
|
+
"emailMessages": { "invoice": "Invoice", "paymentReminder": "Payment reminder" },
|
|
247
|
+
"emailPlaceholders": {
|
|
248
|
+
"invoiceNumber": "Invoice number",
|
|
249
|
+
"senderName": "Sender name",
|
|
250
|
+
"recipientName": "Recipient name",
|
|
251
|
+
"dueDate": "Due date",
|
|
252
|
+
"outstandingAmount": "Outstanding amount"
|
|
253
|
+
},
|
|
254
|
+
"emailProviderNotConfigured": "Email provider is not configured",
|
|
255
|
+
"emailProviderConfigureDescription": "Configure the portal Resend account before sending invoices.",
|
|
256
|
+
"emailProviderContactOwner": "Ask a system administrator to configure the portal email provider.",
|
|
257
|
+
"emailProviderOpenSettings": "Open email settings",
|
|
258
|
+
"emailDomainVerified": "Sending domain verified",
|
|
259
|
+
"emailDomainUnverified": "Sending domain is not verified",
|
|
260
|
+
"emailDomainStatusDescription": "Domain: {domain}. Complete SPF and DKIM setup in Resend when verification is still pending.",
|
|
261
|
+
"emailDomainVerifiedDescription": "Domain: {domain}.",
|
|
262
|
+
"emailDomainMissing": "Enter the company invoice email to check its sending domain.",
|
|
263
|
+
"emailDomainVerificationHelp": "How to verify this domain in Resend",
|
|
264
|
+
"emailDomainCheckAgain": "Check again",
|
|
265
|
+
"emailDomainNowVerified": "The sending domain is now verified",
|
|
266
|
+
"emailDomainStillUnverified": "The sending domain is still not verified",
|
|
267
|
+
"emailDomainCheckFailed": "Could not check the sending domain",
|
|
268
|
+
"contactPersons": "Contact persons",
|
|
269
|
+
"noContactsTitle": "No contact persons yet",
|
|
270
|
+
"noContactsDescription": "Add a contact person to receive invoices and invoice-related messages.",
|
|
271
|
+
"phone": "Phone number",
|
|
272
|
+
"jobTitle": "Job title",
|
|
273
|
+
"addContact": "Add contact",
|
|
274
|
+
"workspaceSettings": "Workspace settings",
|
|
275
|
+
"workspaceSettingsDescription": "Configure invoicing and the sender details used for this workspace.",
|
|
276
|
+
"currency": "Currency",
|
|
277
|
+
"list": {
|
|
278
|
+
"search": "Search…",
|
|
279
|
+
"filters": "Filters",
|
|
280
|
+
"sort": "Sort",
|
|
281
|
+
"direction": "Change sort direction",
|
|
282
|
+
"totalRecords": "{count} Invoice | {count} Invoices",
|
|
283
|
+
"allClients": "All clients",
|
|
284
|
+
"clientFilter": "Filter by client",
|
|
285
|
+
"statusFilter": "Filter by status",
|
|
286
|
+
"allStatuses": "All statuses",
|
|
287
|
+
"overdueFilter": "Payment state",
|
|
288
|
+
"allPaymentStates": "All payment states",
|
|
289
|
+
"overdue": "Overdue",
|
|
290
|
+
"notOverdue": "Not overdue",
|
|
291
|
+
"sortIssueDate": "Invoice date",
|
|
292
|
+
"sortDueDate": "Due date",
|
|
293
|
+
"sortNumber": "Invoice number",
|
|
294
|
+
"sortTotal": "Total amount"
|
|
295
|
+
},
|
|
296
|
+
"to": "To",
|
|
297
|
+
"amount": "Amount"
|
|
298
|
+
},
|
|
299
|
+
"messages": {
|
|
300
|
+
"saved": "Time saved",
|
|
301
|
+
"saveError": "The change could not be saved",
|
|
302
|
+
"senderInvoiceDetailsSaved": "Sender invoice details saved"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
{
|
|
2
|
+
"features": {
|
|
3
|
+
"invoices": {
|
|
4
|
+
"title": "Facturen",
|
|
5
|
+
"clientAccess": {
|
|
6
|
+
"title": "Factuurtoegang",
|
|
7
|
+
"description": "Wie kan de verzonden en betaalde facturen van deze klant in het portaal bekijken? Eigenaren en beheerders hebben automatisch inzage; andere leden alleen na toewijzing door een klantbeheerder.",
|
|
8
|
+
"error": "Factuurtoegang kon niet worden geladen.",
|
|
9
|
+
"moduleDisabled": "De factuurmodule is uitgeschakeld voor deze klant.",
|
|
10
|
+
"notConfigured": "Factuurtoegang wordt beschikbaar zodra de eerste factuur voor deze klant is aangemaakt.",
|
|
11
|
+
"disabled": "Factuurtoegang voor deze klant is uitgeschakeld.",
|
|
12
|
+
"noMembers": "Deze klant heeft nog geen leden met portaaltoegang.",
|
|
13
|
+
"automatic": "Automatisch via rol",
|
|
14
|
+
"assigned": "Inzage toegewezen",
|
|
15
|
+
"notAssigned": "Geen inzage toegewezen",
|
|
16
|
+
"granted": "Kan facturen bekijken",
|
|
17
|
+
"denied": "Geen factuurtoegang",
|
|
18
|
+
"contactsExplanation": "Contactpersonen hieronder zijn bedoeld voor factuurcommunicatie. Een contactpersoon krijgt daarmee niet automatisch een account of factuurtoegang in het portaal."
|
|
19
|
+
},
|
|
20
|
+
"roles": {
|
|
21
|
+
"owner": "Eigenaar",
|
|
22
|
+
"admin": "Beheerder",
|
|
23
|
+
"member": "Lid"
|
|
24
|
+
},
|
|
25
|
+
"loading": "Factuur laden…",
|
|
26
|
+
"cancel": "Annuleren",
|
|
27
|
+
"save": "Opslaan",
|
|
28
|
+
"languages": {
|
|
29
|
+
"nl": "Nederlands",
|
|
30
|
+
"en": "Engels"
|
|
31
|
+
},
|
|
32
|
+
"receivedInvoices": "Ontvangen facturen",
|
|
33
|
+
"salesInvoices": "Verkoopfacturen",
|
|
34
|
+
"clientInvoices": {
|
|
35
|
+
"title": "Facturen",
|
|
36
|
+
"subtitle": "Bekijk facturen die met uw organisatie zijn gedeeld.",
|
|
37
|
+
"viewersTitle": "Factuurinzage",
|
|
38
|
+
"viewersSubtitle": "Kies welke organisatieleden ontvangen facturen mogen bekijken.",
|
|
39
|
+
"download": "Downloaden",
|
|
40
|
+
"statusFilter": "Status",
|
|
41
|
+
"supplierFilter": "Leverancier",
|
|
42
|
+
"paymentFilter": "Betaling",
|
|
43
|
+
"allStatuses": "Alle statussen",
|
|
44
|
+
"allSuppliers": "Alle leveranciers",
|
|
45
|
+
"allPayments": "Alle facturen",
|
|
46
|
+
"overdueOnly": "Achterstallig",
|
|
47
|
+
"notOverdue": "Niet achterstallig",
|
|
48
|
+
"empty": "Geen facturen beschikbaar",
|
|
49
|
+
"emptyDescription": "Er zijn geen overeenkomende verzonden of betaalde facturen met u gedeeld.",
|
|
50
|
+
"viewerCount": "{count} kijker | {count} kijkers",
|
|
51
|
+
"viewerHelp": "Selecteer de leden die ontvangen facturen mogen bekijken.",
|
|
52
|
+
"adminAccessHelp": "Organisatie-eigenaren en beheerders hebben altijd toegang; toegang wordt direct bijgewerkt.",
|
|
53
|
+
"chooseViewers": "Wie mag facturen bekijken?",
|
|
54
|
+
"accessUnavailable": "Factuurtoegang is niet ingeschakeld voor je organisatie",
|
|
55
|
+
"noEligibleViewers": "Voeg eerst leden toe aan je organisatie om factuurtoegang toe te wijzen.",
|
|
56
|
+
"alwaysAccess": "Altijd toegang",
|
|
57
|
+
"additionalAccess": "Extra toegang",
|
|
58
|
+
"hasAccess": "Heeft toegang"
|
|
59
|
+
},
|
|
60
|
+
"validation": {
|
|
61
|
+
"maxLength": "Gebruik maximaal {count} tekens",
|
|
62
|
+
"invoiceNumberSequence": "Het factuurnummer moet eindigen op cijfers",
|
|
63
|
+
"required": "Dit veld is verplicht",
|
|
64
|
+
"validEmail": "Vul een geldig e-mailadres in",
|
|
65
|
+
"validDate": "Vul een geldige datum in",
|
|
66
|
+
"currencyLength": "Gebruik een valutacode van 3 letters",
|
|
67
|
+
"positiveQuantity": "Vul een aantal groter dan nul in",
|
|
68
|
+
"invoiceLineRequired": "Voeg minimaal één factuurregel toe",
|
|
69
|
+
"dueDateOrder": "De vervaldatum mag niet vóór de factuurdatum liggen",
|
|
70
|
+
"positiveAmount": "Vul een bedrag groter dan nul in"
|
|
71
|
+
},
|
|
72
|
+
"dashboard": {
|
|
73
|
+
"open": "Openen"
|
|
74
|
+
},
|
|
75
|
+
"admin": {
|
|
76
|
+
"refresh": "Vernieuwen",
|
|
77
|
+
"invoices": "Facturen",
|
|
78
|
+
"sectionSubtitles": {
|
|
79
|
+
"invoices": "Maak vrije facturen of factureer goedgekeurde uren en volg verzending en betalingen."
|
|
80
|
+
},
|
|
81
|
+
"newInvoice": "Nieuwe factuur",
|
|
82
|
+
"defaultVatRate": "Standaard btw-percentage",
|
|
83
|
+
"invoicesEnabled": "Facturatie inschakelen voor deze organisatie",
|
|
84
|
+
"invoiceConfiguration": "Factuurconfiguratie",
|
|
85
|
+
"noInvoicesTitle": "Nog geen facturen",
|
|
86
|
+
"noInvoicesDescription": "Maak een vrije factuur of zet goedgekeurde urenstaten om in een duidelijke, professionele factuur.",
|
|
87
|
+
"createFirstInvoice": "Maak je eerste factuur",
|
|
88
|
+
"senderDetailsRequiredTitle": "Vul je factuurgegevens als afzender aan",
|
|
89
|
+
"senderDetailsRequiredDescription": "Vul je volledige adres, KvK- en btw-nummer, bankgegevens en e-mailadres voor facturen in voordat je een factuur maakt.",
|
|
90
|
+
"completeSenderDetails": "Factuurgegevens aanvullen",
|
|
91
|
+
"newInvoiceFor": "Nieuwe factuur voor {name}",
|
|
92
|
+
"invoiceCreated": "Factuur aangemaakt",
|
|
93
|
+
"freeForm": "Vrije factuur",
|
|
94
|
+
"approvedTime": "Goedgekeurde urenstaten",
|
|
95
|
+
"freeFormDescription": "Kies een klant en stel daarna zelf de factuurregels samen.",
|
|
96
|
+
"approvedTimeDescription": "Zet goedgekeurde, nog niet gefactureerde uren om in factuurregels.",
|
|
97
|
+
"wizardStep": "Stap {step} van {total}",
|
|
98
|
+
"periodFrom": "Periode vanaf",
|
|
99
|
+
"periodTo": "Periode tot en met",
|
|
100
|
+
"selectClient": "Kies een klant",
|
|
101
|
+
"selectProjects": "Kies een of meer projecten",
|
|
102
|
+
"noInvoiceableTimeInPeriod": "In deze periode zijn geen goedgekeurde, nog niet gefactureerde uren beschikbaar.",
|
|
103
|
+
"detailLevel": "Detailniveau",
|
|
104
|
+
"groupBy": "Groepeer samenvatting op",
|
|
105
|
+
"next": "Volgende",
|
|
106
|
+
"previous": "Vorige",
|
|
107
|
+
"createDraftInvoice": "Conceptfactuur maken",
|
|
108
|
+
"invoiceNumber": "Factuurnummer",
|
|
109
|
+
"lastUsedInvoiceNumber": "Laatst gebruikt: {number}",
|
|
110
|
+
"invoiceDate": "Factuurdatum",
|
|
111
|
+
"dueDate": "Vervaldatum",
|
|
112
|
+
"subject": "Introductiezin (optioneel)",
|
|
113
|
+
"sender": "Gegevens afzender",
|
|
114
|
+
"recipient": "Factuur aan:",
|
|
115
|
+
"from": "Van",
|
|
116
|
+
"name": "Naam",
|
|
117
|
+
"address": "Volledig adres",
|
|
118
|
+
"registration": "KvK-nummer",
|
|
119
|
+
"registrationShort": "KVK-nr",
|
|
120
|
+
"vatNumberShort": "BTW-nr",
|
|
121
|
+
"vatNumber": "Btw-nummer",
|
|
122
|
+
"contact": "Contactpersoon",
|
|
123
|
+
"email": "E-mailadres",
|
|
124
|
+
"summary": "Factuurregels groeperen",
|
|
125
|
+
"perPersonActivity": "Per persoon en activiteit",
|
|
126
|
+
"perPerson": "Per persoon",
|
|
127
|
+
"perActivity": "Per activiteit",
|
|
128
|
+
"perProject": "Per project",
|
|
129
|
+
"detailed": "Iedere registratie apart",
|
|
130
|
+
"noInvoiceableTime": "Er zijn voor deze klant geen goedgekeurde, nog niet gefactureerde uren.",
|
|
131
|
+
"description": "Omschrijving",
|
|
132
|
+
"quantity": "Aantal",
|
|
133
|
+
"unitPrice": "Prijs / eenheid",
|
|
134
|
+
"vat": "Btw",
|
|
135
|
+
"subtotal": "Subtotaal",
|
|
136
|
+
"totalPayable": "Totaal te betalen",
|
|
137
|
+
"removeInvoiceLine": "Factuurregel {number} verwijderen",
|
|
138
|
+
"addLine": "Regel toevoegen",
|
|
139
|
+
"notes": "Opmerkingen (optioneel)",
|
|
140
|
+
"invoiceDetails": "Factuurregels",
|
|
141
|
+
"outstanding": "Openstaand",
|
|
142
|
+
"issue": "Factuur uitgeven",
|
|
143
|
+
"void": "Afschrijven",
|
|
144
|
+
"unvoid": "Afschrijving terugdraaien",
|
|
145
|
+
"voidInvoiceTitle": "Factuur afschrijven",
|
|
146
|
+
"voidInvoiceDescription": "Factuur {number} afschrijven? Het openstaande bedrag wordt niet langer als invorderbaar beschouwd, maar de factuur blijft wel bewaard in de administratie.",
|
|
147
|
+
"unvoidInvoiceTitle": "Afschrijving terugdraaien",
|
|
148
|
+
"unvoidInvoiceDescription": "De afschrijving van factuur {number} terugdraaien? De eerdere concept- of uitgegeven status wordt hersteld.",
|
|
149
|
+
"registerPayment": "Betaling registreren",
|
|
150
|
+
"reference": "Betalingskenmerk",
|
|
151
|
+
"paidOn": "Betaaldatum",
|
|
152
|
+
"paymentAmount": "Betaald bedrag",
|
|
153
|
+
"paid": "Betaald",
|
|
154
|
+
"backToInvoices": "Terug naar facturen",
|
|
155
|
+
"invoiceTitle": "Factuur {number}",
|
|
156
|
+
"invoiceDocumentTitle": "FACTUUR",
|
|
157
|
+
"print": "Afdrukken",
|
|
158
|
+
"invoiceIssued": "Factuur uitgegeven",
|
|
159
|
+
"issueAndSend": "Uitgeven en verzenden",
|
|
160
|
+
"resendInvoice": "Factuur opnieuw verzenden",
|
|
161
|
+
"invoiceIssuedAndSent": "Factuur uitgegeven en gemaild",
|
|
162
|
+
"invoiceResent": "Factuur opnieuw gemaild",
|
|
163
|
+
"sendReminder": "Herinnering versturen",
|
|
164
|
+
"reminderSent": "Betalingsherinnering verstuurd",
|
|
165
|
+
"paymentReminder": "Betalingsherinnering",
|
|
166
|
+
"overdueDays": "Te laat · {count} dag | Te laat · {count} dagen",
|
|
167
|
+
"overdueAlertTitle": "Betaling is {count} dag te laat | Betaling is {count} dagen te laat",
|
|
168
|
+
"overdueAlertDescription": "Deze factuur verviel op {dueDate} en heeft nog {amount} openstaan.",
|
|
169
|
+
"reminderSummary": "Verstuurde herinnering: {count}. Laatste herinnering: {date}. | Verstuurde herinneringen: {count}. Laatste herinnering: {date}.",
|
|
170
|
+
"never": "nooit",
|
|
171
|
+
"openInvoice": "Factuur {number} openen",
|
|
172
|
+
"recipientEmail": "E-mailadres ontvanger",
|
|
173
|
+
"emailLanguage": "Taal van e-mail",
|
|
174
|
+
"emailSubject": "Onderwerp",
|
|
175
|
+
"emailBody": "Bericht",
|
|
176
|
+
"sendEmail": "E-mail verzenden",
|
|
177
|
+
"emailAttachments": "E-mailbijlagen",
|
|
178
|
+
"emailAttachmentsTooLarge": "De bijlagen zijn groter dan de e-maillimiet van 40 MB. Verwijder een of meer factuurbestanden voordat je verzendt.",
|
|
179
|
+
"ccPlaceholder": "E-mailadressen, gescheiden door komma's",
|
|
180
|
+
"emailDeliveryHistory": "Geschiedenis e-mailbezorging",
|
|
181
|
+
"emailDeliveryStatus": {
|
|
182
|
+
"pending": "In behandeling",
|
|
183
|
+
"sent": "Verzonden",
|
|
184
|
+
"failed": "Mislukt"
|
|
185
|
+
},
|
|
186
|
+
"emailProviderStatus": {
|
|
187
|
+
"sent": "Geaccepteerd door Resend",
|
|
188
|
+
"delivered": "Bezorgd",
|
|
189
|
+
"delivery_delayed": "Bezorging vertraagd",
|
|
190
|
+
"bounced": "Geweigerd",
|
|
191
|
+
"failed": "Bezorging mislukt",
|
|
192
|
+
"suppressed": "Onderdrukt",
|
|
193
|
+
"complained": "Gemarkeerd als spam",
|
|
194
|
+
"opened": "Geopend",
|
|
195
|
+
"clicked": "Link aangeklikt"
|
|
196
|
+
},
|
|
197
|
+
"emailTrackingExplanation": "Bezorgd betekent dat de mailserver van de ontvanger het bericht heeft geaccepteerd. Geopend is een indicatief trackingsignaal en bewijst niet dat iemand de factuur heeft gelezen.",
|
|
198
|
+
"refreshEmailStatus": "Bezorgstatus vernieuwen",
|
|
199
|
+
"emailSentAt": "Verzonden: {date}",
|
|
200
|
+
"emailStatusCheckedAt": "Gecontroleerd bij Resend: {date}",
|
|
201
|
+
"emailStatusRefreshed": "Bezorgstatus van e-mail vernieuwd",
|
|
202
|
+
"emailStatusRefreshPartial": "Sommige e-mailstatussen konden niet worden vernieuwd",
|
|
203
|
+
"emailStatusRefreshPartialDescription": "Eerder bekende statussen zijn behouden. Het bericht kan bij een ander Resend-account horen of Resend kan tijdelijk niet beschikbaar zijn.",
|
|
204
|
+
"emailStatusRefreshFailed": "Bezorgstatus van e-mail is niet beschikbaar",
|
|
205
|
+
"emailStatusRefreshFailedDescription": "De factuur blijft beschikbaar en eerder bekende bezorgstatussen zijn behouden.",
|
|
206
|
+
"invoiceVoided": "Factuur afgeschreven",
|
|
207
|
+
"invoiceUnvoided": "Afschrijving teruggedraaid",
|
|
208
|
+
"invoiceUpdated": "Factuur bijgewerkt",
|
|
209
|
+
"editInvoice": "Factuur bewerken",
|
|
210
|
+
"moreActions": "Meer factuuracties",
|
|
211
|
+
"paymentRegistered": "Betaling geregistreerd",
|
|
212
|
+
"attachments": "Bijlagen",
|
|
213
|
+
"attachFile": "Bestand toevoegen",
|
|
214
|
+
"attachmentAdded": "Bijlage toegevoegd",
|
|
215
|
+
"attachmentRemoved": "Bijlage verwijderd",
|
|
216
|
+
"removeAttachment": "Bijlage verwijderen",
|
|
217
|
+
"removeAttachmentDescription": "{name} van deze factuur verwijderen? Het bestand wordt niet meer bij toekomstige e-mails gevoegd.",
|
|
218
|
+
"noAttachments": "Er zijn nog geen bestanden aan deze factuur toegevoegd.",
|
|
219
|
+
"invoiceHistoryTitle": "Factuurgeschiedenis",
|
|
220
|
+
"invoiceNotFound": "Deze factuur kon niet worden gevonden",
|
|
221
|
+
"invoiceHistory": {
|
|
222
|
+
"created": "Factuur aangemaakt",
|
|
223
|
+
"edited": "Factuur bijgewerkt",
|
|
224
|
+
"issued": "Factuur uitgegeven",
|
|
225
|
+
"voided": "Factuur afgeschreven",
|
|
226
|
+
"unvoided": "Afschrijving teruggedraaid",
|
|
227
|
+
"payment": "Betaling ontvangen: {amount}",
|
|
228
|
+
"attachment": "Bijlage toegevoegd: {name}",
|
|
229
|
+
"attachmentRemoved": "Bijlage verwijderd: {name}",
|
|
230
|
+
"emailed": "Factuur gemaild naar {email}",
|
|
231
|
+
"reminderSent": "Betalingsherinnering gemaild naar {email}"
|
|
232
|
+
},
|
|
233
|
+
"invoiceStatus": {
|
|
234
|
+
"draft": "Concept",
|
|
235
|
+
"issued": "Uitgegeven",
|
|
236
|
+
"paid": "Betaald",
|
|
237
|
+
"void": "Afgeschreven"
|
|
238
|
+
},
|
|
239
|
+
"approve": "Goedkeuren",
|
|
240
|
+
"client": "Klant",
|
|
241
|
+
"clientDetailsRequiredTitle": "Vul de factuurgegevens van deze klant aan",
|
|
242
|
+
"clientDetailsRequiredDescription": "Voeg het volgende toe voordat je verdergaat: {fields}.",
|
|
243
|
+
"completeClientDetails": "Klantgegevens bewerken",
|
|
244
|
+
"senderInvoiceDetails": "Factuurgegevens afzender",
|
|
245
|
+
"invoiceEmail": "E-mailadres voor facturen",
|
|
246
|
+
"emailMessages": { "invoice": "Factuur", "paymentReminder": "Betalingsherinnering" },
|
|
247
|
+
"emailPlaceholders": {
|
|
248
|
+
"invoiceNumber": "Factuurnummer",
|
|
249
|
+
"senderName": "Naam afzender",
|
|
250
|
+
"recipientName": "Naam ontvanger",
|
|
251
|
+
"dueDate": "Vervaldatum",
|
|
252
|
+
"outstandingAmount": "Openstaand bedrag"
|
|
253
|
+
},
|
|
254
|
+
"emailProviderNotConfigured": "E-mailprovider is niet geconfigureerd",
|
|
255
|
+
"emailProviderConfigureDescription": "Configureer het Resend-account van het portaal voordat je facturen verzendt.",
|
|
256
|
+
"emailProviderContactOwner": "Vraag een systeembeheerder om de e-mailprovider van het portaal te configureren.",
|
|
257
|
+
"emailProviderOpenSettings": "E-mailinstellingen openen",
|
|
258
|
+
"emailDomainVerified": "Verzenddomein geverifieerd",
|
|
259
|
+
"emailDomainUnverified": "Verzenddomein is niet geverifieerd",
|
|
260
|
+
"emailDomainStatusDescription": "Domein: {domain}. Rond SPF- en DKIM-instellingen af in Resend als verificatie nog loopt.",
|
|
261
|
+
"emailDomainVerifiedDescription": "Domein: {domain}.",
|
|
262
|
+
"emailDomainMissing": "Vul het factuuradres van het bedrijf in om het verzenddomein te controleren.",
|
|
263
|
+
"emailDomainVerificationHelp": "Zo verifieer je dit domein in Resend",
|
|
264
|
+
"emailDomainCheckAgain": "Opnieuw controleren",
|
|
265
|
+
"emailDomainNowVerified": "Het verzenddomein is nu geverifieerd",
|
|
266
|
+
"emailDomainStillUnverified": "Het verzenddomein is nog niet geverifieerd",
|
|
267
|
+
"emailDomainCheckFailed": "Het verzenddomein kon niet worden gecontroleerd",
|
|
268
|
+
"contactPersons": "Contactpersonen",
|
|
269
|
+
"noContactsTitle": "Nog geen contactpersonen",
|
|
270
|
+
"noContactsDescription": "Voeg een contactpersoon toe voor facturen en berichten over facturen.",
|
|
271
|
+
"phone": "Telefoonnummer",
|
|
272
|
+
"jobTitle": "Functie",
|
|
273
|
+
"addContact": "Contactpersoon toevoegen",
|
|
274
|
+
"workspaceSettings": "Werkruimte-instellingen",
|
|
275
|
+
"workspaceSettingsDescription": "Configureer facturatie en de afzendergegevens voor deze werkruimte.",
|
|
276
|
+
"currency": "Valuta",
|
|
277
|
+
"list": {
|
|
278
|
+
"search": "Zoeken…",
|
|
279
|
+
"filters": "Filters",
|
|
280
|
+
"sort": "Sorteren",
|
|
281
|
+
"direction": "Sorteerrichting wijzigen",
|
|
282
|
+
"totalRecords": "{count} factuur | {count} facturen",
|
|
283
|
+
"allClients": "Alle klanten",
|
|
284
|
+
"clientFilter": "Filter op klant",
|
|
285
|
+
"statusFilter": "Filter op status",
|
|
286
|
+
"allStatuses": "Alle statussen",
|
|
287
|
+
"overdueFilter": "Betaalstatus",
|
|
288
|
+
"allPaymentStates": "Alle betaalstatussen",
|
|
289
|
+
"overdue": "Te laat",
|
|
290
|
+
"notOverdue": "Niet te laat",
|
|
291
|
+
"sortIssueDate": "Factuurdatum",
|
|
292
|
+
"sortDueDate": "Vervaldatum",
|
|
293
|
+
"sortNumber": "Factuurnummer",
|
|
294
|
+
"sortTotal": "Totaalbedrag"
|
|
295
|
+
},
|
|
296
|
+
"to": "Tot",
|
|
297
|
+
"amount": "Bedrag"
|
|
298
|
+
},
|
|
299
|
+
"messages": {
|
|
300
|
+
"saved": "Tijd opgeslagen",
|
|
301
|
+
"saveError": "De wijziging kon niet worden opgeslagen",
|
|
302
|
+
"senderInvoiceDetailsSaved": "Factuurgegevens afzender opgeslagen"
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|