@spaceinvoices/react-ui 0.4.3 → 0.4.5
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/cli/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/common/autocomplete.tsx +18 -2
- package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +61 -12
- package/src/components/advance-invoices/create/locales/de.ts +17 -0
- package/src/components/advance-invoices/create/locales/es.ts +17 -0
- package/src/components/advance-invoices/create/locales/fr.ts +17 -0
- package/src/components/advance-invoices/create/locales/hr.ts +16 -0
- package/src/components/advance-invoices/create/locales/it.ts +17 -0
- package/src/components/advance-invoices/create/locales/nl.ts +17 -0
- package/src/components/advance-invoices/create/locales/pl.ts +16 -0
- package/src/components/advance-invoices/create/locales/pt.ts +16 -0
- package/src/components/advance-invoices/create/locales/sl.ts +16 -0
- package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +0 -1
- package/src/components/advance-invoices/list/list-row-actions.tsx +48 -1
- package/src/components/advance-invoices/list/list-table.tsx +100 -50
- package/src/components/advance-invoices/list/locales/de.ts +9 -0
- package/src/components/advance-invoices/list/locales/en.ts +7 -0
- package/src/components/advance-invoices/list/locales/es.ts +9 -0
- package/src/components/advance-invoices/list/locales/fr.ts +9 -0
- package/src/components/advance-invoices/list/locales/hr.ts +8 -0
- package/src/components/advance-invoices/list/locales/it.ts +9 -0
- package/src/components/advance-invoices/list/locales/nl.ts +9 -0
- package/src/components/advance-invoices/list/locales/pl.ts +8 -0
- package/src/components/advance-invoices/list/locales/pt.ts +9 -0
- package/src/components/advance-invoices/list/locales/sl.ts +8 -0
- package/src/components/credit-notes/create/create-credit-note-form.tsx +185 -11
- package/src/components/credit-notes/create/locales/de.ts +18 -0
- package/src/components/credit-notes/create/locales/es.ts +18 -0
- package/src/components/credit-notes/create/locales/fr.ts +18 -0
- package/src/components/credit-notes/create/locales/hr.ts +17 -0
- package/src/components/credit-notes/create/locales/it.ts +18 -0
- package/src/components/credit-notes/create/locales/nl.ts +18 -0
- package/src/components/credit-notes/create/locales/pl.ts +17 -0
- package/src/components/credit-notes/create/locales/pt.ts +17 -0
- package/src/components/credit-notes/create/locales/sl.ts +18 -1
- package/src/components/credit-notes/credit-notes.hooks.ts +30 -0
- package/src/components/credit-notes/list/list-row-actions.tsx +44 -1
- package/src/components/credit-notes/list/list-table.tsx +93 -32
- package/src/components/credit-notes/list/locales/de.ts +7 -0
- package/src/components/credit-notes/list/locales/en.ts +6 -0
- package/src/components/credit-notes/list/locales/es.ts +7 -0
- package/src/components/credit-notes/list/locales/fr.ts +7 -0
- package/src/components/credit-notes/list/locales/hr.ts +7 -0
- package/src/components/credit-notes/list/locales/it.ts +7 -0
- package/src/components/credit-notes/list/locales/nl.ts +7 -0
- package/src/components/credit-notes/list/locales/pl.ts +7 -0
- package/src/components/credit-notes/list/locales/pt.ts +7 -0
- package/src/components/credit-notes/list/locales/sl.ts +7 -0
- package/src/components/customers/customer-list-table/customer-list-table.tsx +0 -3
- package/src/components/customers/customer-list-table/locales/de.ts +1 -0
- package/src/components/customers/customer-list-table/locales/es.ts +1 -0
- package/src/components/customers/customer-list-table/locales/fr.ts +1 -0
- package/src/components/customers/customer-list-table/locales/hr.ts +1 -0
- package/src/components/customers/customer-list-table/locales/it.ts +1 -0
- package/src/components/customers/customer-list-table/locales/nl.ts +1 -0
- package/src/components/customers/customer-list-table/locales/pl.ts +1 -0
- package/src/components/customers/customer-list-table/locales/pt.ts +1 -0
- package/src/components/customers/customer-list-table/locales/sl.ts +1 -0
- package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +48 -9
- package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +77 -48
- package/src/components/dashboard/shared/use-revenue-data.ts +77 -9
- package/src/components/delivery-notes/create/create-delivery-note-form.tsx +67 -7
- package/src/components/delivery-notes/create/locales/de.ts +16 -0
- package/src/components/delivery-notes/create/locales/es.ts +16 -0
- package/src/components/delivery-notes/create/locales/fr.ts +16 -0
- package/src/components/delivery-notes/create/locales/hr.ts +16 -0
- package/src/components/delivery-notes/create/locales/it.ts +16 -0
- package/src/components/delivery-notes/create/locales/nl.ts +16 -0
- package/src/components/delivery-notes/create/locales/pl.ts +16 -0
- package/src/components/delivery-notes/create/locales/pt.ts +16 -0
- package/src/components/delivery-notes/create/locales/sl.ts +17 -1
- package/src/components/delivery-notes/list/list-row-actions.tsx +20 -1
- package/src/components/delivery-notes/list/list-table.tsx +50 -8
- package/src/components/delivery-notes/list/locales/de.ts +35 -0
- package/src/components/delivery-notes/list/locales/en.ts +33 -0
- package/src/components/delivery-notes/list/locales/es.ts +35 -0
- package/src/components/delivery-notes/list/locales/fr.ts +35 -0
- package/src/components/delivery-notes/list/locales/hr.ts +35 -0
- package/src/components/delivery-notes/list/locales/it.ts +35 -0
- package/src/components/delivery-notes/list/locales/nl.ts +35 -0
- package/src/components/delivery-notes/list/locales/pl.ts +35 -0
- package/src/components/delivery-notes/list/locales/pt.ts +35 -0
- package/src/components/delivery-notes/list/locales/sl.ts +35 -0
- package/src/components/documents/create/document-add-item-form.tsx +70 -0
- package/src/components/documents/create/document-details-section.tsx +163 -29
- package/src/components/documents/create/document-items-section.tsx +21 -4
- package/src/components/documents/create/linked-documents-info.tsx +82 -0
- package/src/components/documents/create/live-preview.tsx +25 -5
- package/src/components/documents/create/mark-as-paid-section.tsx +29 -20
- package/src/components/documents/create/prepare-document-submission.ts +19 -7
- package/src/components/documents/shared/document-preview-display.tsx +3 -4
- package/src/components/documents/types.ts +2 -2
- package/src/components/documents/view/document-actions-bar.tsx +7 -27
- package/src/components/documents/view/document-activities-list.tsx +65 -47
- package/src/components/documents/view/document-details-card.tsx +118 -76
- package/src/components/documents/view/document-payments-list.tsx +99 -65
- package/src/components/documents/view/document-relations-list.tsx +43 -28
- package/src/components/documents/view/document-sidebar.tsx +151 -0
- package/src/components/documents/view/index.ts +2 -0
- package/src/components/documents/view/locales/de.ts +4 -0
- package/src/components/documents/view/locales/es.ts +4 -0
- package/src/components/documents/view/locales/fr.ts +4 -0
- package/src/components/documents/view/locales/hr.ts +4 -0
- package/src/components/documents/view/locales/it.ts +4 -0
- package/src/components/documents/view/locales/nl.ts +4 -0
- package/src/components/documents/view/locales/pl.ts +4 -0
- package/src/components/documents/view/locales/pt.ts +4 -0
- package/src/components/documents/view/locales/sl.ts +5 -1
- package/src/components/documents/view/use-document-download.ts +7 -3
- package/src/components/entities/create-entity-form.tsx +166 -13
- package/src/components/entities/entity-settings-form/entity-settings-form.tsx +101 -1
- package/src/components/entities/entity-settings-form/input-with-preview.tsx +30 -2
- package/src/components/entities/entity-settings-form/locales/de.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/es.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/fr.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/hr.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/it.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/nl.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/pl.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/pt.ts +10 -0
- package/src/components/entities/entity-settings-form/locales/sl.ts +10 -0
- package/src/components/entities/fina-settings-form/fina-settings-form.tsx +6 -6
- package/src/components/entities/fina-settings-form/locales/de.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/en.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/es.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/fr.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/hr.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/it.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/nl.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/pl.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/pt.ts +2 -2
- package/src/components/entities/fina-settings-form/locales/sl.ts +2 -2
- package/src/components/entities/furs-settings-form/locales/en.ts +0 -1
- package/src/components/entities/settings/company-settings-form.tsx +173 -20
- package/src/components/entities/settings/pdf-template-selector/locales/de.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/es.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/fr.ts +4 -1
- package/src/components/entities/settings/pdf-template-selector/locales/hr.ts +4 -1
- package/src/components/entities/settings/pdf-template-selector/locales/it.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/nl.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/pl.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/pt.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/locales/sl.ts +3 -1
- package/src/components/entities/settings/pdf-template-selector/pdf-template-cards.tsx +1 -0
- package/src/components/estimates/create/create-estimate-form.tsx +93 -8
- package/src/components/estimates/create/locales/de.ts +16 -0
- package/src/components/estimates/create/locales/es.ts +16 -0
- package/src/components/estimates/create/locales/fr.ts +16 -0
- package/src/components/estimates/create/locales/hr.ts +16 -0
- package/src/components/estimates/create/locales/it.ts +16 -0
- package/src/components/estimates/create/locales/nl.ts +16 -0
- package/src/components/estimates/create/locales/pl.ts +16 -0
- package/src/components/estimates/create/locales/pt.ts +16 -0
- package/src/components/estimates/create/locales/sl.ts +17 -1
- package/src/components/estimates/list/list-table.tsx +14 -8
- package/src/components/estimates/list/locales/de.ts +2 -0
- package/src/components/estimates/list/locales/en.ts +1 -0
- package/src/components/estimates/list/locales/es.ts +2 -0
- package/src/components/estimates/list/locales/fr.ts +2 -0
- package/src/components/estimates/list/locales/hr.ts +2 -0
- package/src/components/estimates/list/locales/it.ts +2 -0
- package/src/components/estimates/list/locales/nl.ts +2 -0
- package/src/components/estimates/list/locales/pl.ts +2 -0
- package/src/components/estimates/list/locales/pt.ts +2 -0
- package/src/components/estimates/list/locales/sl.ts +2 -0
- package/src/components/export/document-export-form.tsx +55 -14
- package/src/components/export/index.ts +2 -0
- package/src/components/export/sales-per-item-export-form.tsx +223 -0
- package/src/components/invoices/create/create-invoice-form.tsx +106 -11
- package/src/components/invoices/create/locales/de.ts +26 -0
- package/src/components/invoices/create/locales/es.ts +26 -0
- package/src/components/invoices/create/locales/fr.ts +26 -0
- package/src/components/invoices/create/locales/hr.ts +25 -0
- package/src/components/invoices/create/locales/it.ts +26 -0
- package/src/components/invoices/create/locales/nl.ts +26 -0
- package/src/components/invoices/create/locales/pl.ts +25 -0
- package/src/components/invoices/create/locales/pt.ts +25 -0
- package/src/components/invoices/create/locales/sl.ts +26 -1
- package/src/components/invoices/invoices-furs.hooks.ts +4 -1
- package/src/components/invoices/list/list-table.tsx +77 -31
- package/src/components/invoices/list/locales/de.ts +5 -0
- package/src/components/invoices/list/locales/en.ts +4 -0
- package/src/components/invoices/list/locales/es.ts +5 -0
- package/src/components/invoices/list/locales/fr.ts +5 -0
- package/src/components/invoices/list/locales/hr.ts +5 -0
- package/src/components/invoices/list/locales/it.ts +5 -0
- package/src/components/invoices/list/locales/nl.ts +5 -0
- package/src/components/invoices/list/locales/pl.ts +5 -0
- package/src/components/invoices/list/locales/pt.ts +5 -0
- package/src/components/invoices/list/locales/sl.ts +5 -0
- package/src/components/invoices/view/fiscalization-status-card.tsx +44 -24
- package/src/components/items/item-combobox.tsx +5 -3
- package/src/components/items/item-list-table/item-list-header.tsx +4 -17
- package/src/components/items/item-list-table/item-list-table.tsx +3 -3
- package/src/components/items/item-list-table/locales/de.ts +1 -0
- package/src/components/items/item-list-table/locales/es.ts +1 -0
- package/src/components/items/item-list-table/locales/fr.ts +1 -0
- package/src/components/items/item-list-table/locales/hr.ts +1 -0
- package/src/components/items/item-list-table/locales/it.ts +1 -0
- package/src/components/items/item-list-table/locales/nl.ts +1 -0
- package/src/components/items/item-list-table/locales/pl.ts +1 -0
- package/src/components/items/item-list-table/locales/pt.ts +1 -0
- package/src/components/items/item-list-table/locales/sl.ts +1 -0
- package/src/components/payments/list/list-table.tsx +0 -4
- package/src/components/payments/list/locales/de.ts +1 -0
- package/src/components/payments/list/locales/es.ts +1 -0
- package/src/components/payments/list/locales/fr.ts +1 -0
- package/src/components/payments/list/locales/hr.ts +1 -0
- package/src/components/payments/list/locales/it.ts +1 -0
- package/src/components/payments/list/locales/nl.ts +1 -0
- package/src/components/payments/list/locales/pl.ts +1 -0
- package/src/components/payments/list/locales/pt.ts +1 -0
- package/src/components/payments/list/locales/sl.ts +1 -0
- package/src/components/recurring-invoices/list/list-table.tsx +0 -7
- package/src/components/recurring-invoices/list/locales/de.ts +1 -0
- package/src/components/recurring-invoices/list/locales/es.ts +1 -0
- package/src/components/recurring-invoices/list/locales/fr.ts +1 -0
- package/src/components/recurring-invoices/list/locales/hr.ts +1 -0
- package/src/components/recurring-invoices/list/locales/it.ts +1 -0
- package/src/components/recurring-invoices/list/locales/nl.ts +1 -0
- package/src/components/recurring-invoices/list/locales/pl.ts +1 -0
- package/src/components/recurring-invoices/list/locales/pt.ts +1 -0
- package/src/components/recurring-invoices/list/locales/sl.ts +1 -0
- package/src/components/request-logs/request-log-list-table.tsx +0 -3
- package/src/components/table/README.md +14 -121
- package/src/components/table/data-table.tsx +22 -37
- package/src/components/table/hooks/use-table-state.ts +3 -27
- package/src/components/table/index.ts +0 -2
- package/src/components/table/search-input.tsx +17 -0
- package/src/components/table/selection-toolbar.tsx +35 -1
- package/src/components/table/table-empty-state.tsx +6 -3
- package/src/components/table/table-no-results.tsx +10 -5
- package/src/components/table/types.ts +0 -5
- package/src/components/taxes/tax-list-table/locales/de.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/es.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/fr.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/hr.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/it.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/nl.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/pl.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/pt.ts +1 -0
- package/src/components/taxes/tax-list-table/locales/sl.ts +1 -0
- package/src/components/taxes/tax-list-table/tax-list-header.tsx +3 -14
- package/src/components/taxes/tax-list-table/tax-list-table.tsx +3 -3
- package/src/components/ui/popover.tsx +3 -1
- package/src/components/ui/tooltip.tsx +3 -1
- package/src/generated/schemas/advanceinvoice.ts +4 -2
- package/src/generated/schemas/creditnote.ts +2 -1
- package/src/generated/schemas/deliverynote.ts +2 -1
- package/src/generated/schemas/estimate.ts +4 -2
- package/src/generated/schemas/index.ts +1 -1
- package/src/generated/schemas/invoice.ts +2 -1
- package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +17 -23
- package/src/generated/schemas/rendercreditnotepreview_body.ts +17 -23
- package/src/generated/schemas/renderdeliverynotepreview_body.ts +17 -23
- package/src/generated/schemas/renderestimatepreview_body.ts +17 -23
- package/src/generated/schemas/renderinvoicepreview_body.ts +19 -23
- package/src/hooks/use-duplicate-document.ts +56 -14
- package/src/hooks/use-vies-check.ts +3 -0
- package/src/lib/fiscalization.ts +12 -0
- package/src/lib/schemas/advance-invoice.ts +0 -1
- package/src/components/table/sortable-header.tsx +0 -56
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AdvanceInvoice } from "@spaceinvoices/js-sdk";
|
|
2
|
+
import { AlertTriangle } from "lucide-react";
|
|
2
3
|
import { useCallback, useMemo, useState } from "react";
|
|
3
4
|
import { DataTable } from "@/ui/components/table/data-table";
|
|
4
5
|
import { FormattedDate } from "@/ui/components/table/date-cell";
|
|
@@ -13,6 +14,8 @@ import type {
|
|
|
13
14
|
} from "@/ui/components/table/types";
|
|
14
15
|
import { Badge } from "@/ui/components/ui/badge";
|
|
15
16
|
import { Button } from "@/ui/components/ui/button";
|
|
17
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "@/ui/components/ui/tooltip";
|
|
18
|
+
import { getFiscalizationFailureType } from "@/ui/lib/fiscalization";
|
|
16
19
|
import { createTranslation } from "@/ui/lib/translation";
|
|
17
20
|
import { useSDK } from "@/ui/providers/sdk-provider";
|
|
18
21
|
|
|
@@ -53,6 +56,12 @@ type AdvanceInvoiceListTableProps = {
|
|
|
53
56
|
onDownloadSuccess?: (fileName: string) => void;
|
|
54
57
|
onDownloadError?: (error: string) => void;
|
|
55
58
|
onExportSelected?: (documentIds: string[]) => void;
|
|
59
|
+
onCopyToInvoice?: (documentIds: string[]) => void;
|
|
60
|
+
onRetryFiscalization?: (documentIds: string[]) => void;
|
|
61
|
+
fiscalizationFeatures?: ("furs" | "fina")[];
|
|
62
|
+
onCreateNew?: () => void;
|
|
63
|
+
onVoid?: (advanceInvoice: AdvanceInvoice) => void;
|
|
64
|
+
isVoiding?: boolean;
|
|
56
65
|
} & ListTableProps<AdvanceInvoice>;
|
|
57
66
|
|
|
58
67
|
export default function AdvanceInvoiceListTable({
|
|
@@ -67,6 +76,12 @@ export default function AdvanceInvoiceListTable({
|
|
|
67
76
|
onDownloadSuccess,
|
|
68
77
|
onDownloadError,
|
|
69
78
|
onExportSelected,
|
|
79
|
+
onCopyToInvoice,
|
|
80
|
+
onRetryFiscalization,
|
|
81
|
+
fiscalizationFeatures,
|
|
82
|
+
onCreateNew,
|
|
83
|
+
onVoid,
|
|
84
|
+
isVoiding,
|
|
70
85
|
...i18nProps
|
|
71
86
|
}: AdvanceInvoiceListTableProps) {
|
|
72
87
|
const t = createTranslation({
|
|
@@ -86,9 +101,9 @@ export default function AdvanceInvoiceListTable({
|
|
|
86
101
|
limit: params.limit,
|
|
87
102
|
next_cursor: params.next_cursor,
|
|
88
103
|
prev_cursor: params.prev_cursor,
|
|
89
|
-
order_by: params.order_by,
|
|
90
104
|
search: params.search,
|
|
91
105
|
query: params.query,
|
|
106
|
+
include: "document_relations",
|
|
92
107
|
});
|
|
93
108
|
return response as unknown as TableQueryResponse<AdvanceInvoice>;
|
|
94
109
|
}, entityId);
|
|
@@ -97,7 +112,6 @@ export default function AdvanceInvoiceListTable({
|
|
|
97
112
|
() => ({
|
|
98
113
|
dateFields: [
|
|
99
114
|
{ id: "date", label: t("Date") },
|
|
100
|
-
{ id: "date_due", label: t("Date Due") },
|
|
101
115
|
{ id: "created_at", label: t("Created At") },
|
|
102
116
|
],
|
|
103
117
|
statusFilter: true,
|
|
@@ -111,20 +125,56 @@ export default function AdvanceInvoiceListTable({
|
|
|
111
125
|
}
|
|
112
126
|
}, [selectedIds, onExportSelected]);
|
|
113
127
|
|
|
128
|
+
const handleCopyToInvoice = useCallback(() => {
|
|
129
|
+
if (selectedIds.size > 0 && onCopyToInvoice) {
|
|
130
|
+
onCopyToInvoice(Array.from(selectedIds));
|
|
131
|
+
}
|
|
132
|
+
}, [selectedIds, onCopyToInvoice]);
|
|
133
|
+
|
|
114
134
|
const handleDeselectAll = useCallback(() => {
|
|
115
135
|
setSelectedIds(new Set());
|
|
116
136
|
}, []);
|
|
117
137
|
|
|
118
138
|
const selectionToolbar = useCallback(
|
|
119
|
-
(count: number) =>
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
(count: number, data: AdvanceInvoice[]) => {
|
|
140
|
+
const selectedDocs = data.filter((d) => selectedIds.has(d.id));
|
|
141
|
+
const failedDocs = selectedDocs.filter((d) => {
|
|
142
|
+
const failureType = getFiscalizationFailureType(d as any);
|
|
143
|
+
return failureType && fiscalizationFeatures?.includes(failureType);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
const hasRetry = onRetryFiscalization && fiscalizationFeatures?.length;
|
|
147
|
+
const failedCount = failedDocs.length;
|
|
148
|
+
const allFailed = failedCount > 0 && failedCount === selectedDocs.length;
|
|
149
|
+
const someFailed = failedCount > 0 && failedCount < selectedDocs.length;
|
|
150
|
+
const showRetry = hasRetry && failedCount > 0;
|
|
151
|
+
|
|
152
|
+
return (
|
|
153
|
+
<SelectionToolbar
|
|
154
|
+
selectedCount={count}
|
|
155
|
+
onExportPdfs={onExportSelected ? handleExportPdfs : undefined}
|
|
156
|
+
onCopyToInvoice={onCopyToInvoice ? handleCopyToInvoice : undefined}
|
|
157
|
+
onRetryFiscalization={showRetry ? () => onRetryFiscalization(failedDocs.map((d) => d.id)) : undefined}
|
|
158
|
+
retryFiscalizationDisabled={someFailed && !allFailed}
|
|
159
|
+
retryFiscalizationTooltip={
|
|
160
|
+
someFailed ? t("Some selected documents don't have failed fiscalization") : undefined
|
|
161
|
+
}
|
|
162
|
+
onDeselectAll={handleDeselectAll}
|
|
163
|
+
t={t}
|
|
164
|
+
/>
|
|
165
|
+
);
|
|
166
|
+
},
|
|
167
|
+
[
|
|
168
|
+
handleExportPdfs,
|
|
169
|
+
handleCopyToInvoice,
|
|
170
|
+
handleDeselectAll,
|
|
171
|
+
onExportSelected,
|
|
172
|
+
onCopyToInvoice,
|
|
173
|
+
onRetryFiscalization,
|
|
174
|
+
fiscalizationFeatures,
|
|
175
|
+
selectedIds,
|
|
176
|
+
t,
|
|
177
|
+
],
|
|
128
178
|
);
|
|
129
179
|
|
|
130
180
|
const columns: Column<AdvanceInvoice>[] = useMemo(
|
|
@@ -132,26 +182,39 @@ export default function AdvanceInvoiceListTable({
|
|
|
132
182
|
{
|
|
133
183
|
id: "number",
|
|
134
184
|
header: t("Number"),
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
</Button>
|
|
145
|
-
{(advanceInvoice as any).is_draft && (
|
|
146
|
-
<Badge
|
|
147
|
-
variant="outline"
|
|
148
|
-
className="border-amber-500 bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-400"
|
|
185
|
+
cell: (advanceInvoice) => {
|
|
186
|
+
const failureType = getFiscalizationFailureType(advanceInvoice as any);
|
|
187
|
+
const showWarning = failureType && fiscalizationFeatures?.includes(failureType);
|
|
188
|
+
return (
|
|
189
|
+
<div className="flex items-center gap-2">
|
|
190
|
+
<Button
|
|
191
|
+
variant="link"
|
|
192
|
+
className="cursor-pointer py-0 underline"
|
|
193
|
+
onClick={() => onRowClick?.(advanceInvoice)}
|
|
149
194
|
>
|
|
150
|
-
{
|
|
151
|
-
</
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
195
|
+
{advanceInvoice.number}
|
|
196
|
+
</Button>
|
|
197
|
+
{(advanceInvoice as any).is_draft && (
|
|
198
|
+
<Badge
|
|
199
|
+
variant="outline"
|
|
200
|
+
className="border-amber-500 bg-amber-50 text-amber-700 dark:bg-amber-950 dark:text-amber-400"
|
|
201
|
+
>
|
|
202
|
+
{t("Draft")}
|
|
203
|
+
</Badge>
|
|
204
|
+
)}
|
|
205
|
+
{showWarning && (
|
|
206
|
+
<Tooltip>
|
|
207
|
+
<TooltipTrigger>
|
|
208
|
+
<AlertTriangle className="size-4 text-orange-500" />
|
|
209
|
+
</TooltipTrigger>
|
|
210
|
+
<TooltipContent>
|
|
211
|
+
{t(failureType === "furs" ? "FURS fiscalization failed" : "FINA fiscalization failed")}
|
|
212
|
+
</TooltipContent>
|
|
213
|
+
</Tooltip>
|
|
214
|
+
)}
|
|
215
|
+
</div>
|
|
216
|
+
);
|
|
217
|
+
},
|
|
155
218
|
},
|
|
156
219
|
{
|
|
157
220
|
id: "customer",
|
|
@@ -161,26 +224,17 @@ export default function AdvanceInvoiceListTable({
|
|
|
161
224
|
{
|
|
162
225
|
id: "date",
|
|
163
226
|
header: t("Date"),
|
|
164
|
-
sortable: true,
|
|
165
227
|
cell: (advanceInvoice) => <FormattedDate date={advanceInvoice.date} />,
|
|
166
228
|
},
|
|
167
|
-
{
|
|
168
|
-
id: "date_due",
|
|
169
|
-
header: t("Date Due"),
|
|
170
|
-
sortable: true,
|
|
171
|
-
cell: (advanceInvoice) => <FormattedDate date={advanceInvoice.date_due} />,
|
|
172
|
-
},
|
|
173
229
|
{
|
|
174
230
|
id: "total",
|
|
175
231
|
header: t("Total"),
|
|
176
|
-
sortable: true,
|
|
177
232
|
align: "right",
|
|
178
233
|
cell: (advanceInvoice) => advanceInvoice.total,
|
|
179
234
|
},
|
|
180
235
|
{
|
|
181
236
|
id: "total_with_tax",
|
|
182
237
|
header: t("Total with Tax"),
|
|
183
|
-
sortable: true,
|
|
184
238
|
align: "right",
|
|
185
239
|
cell: (advanceInvoice) => advanceInvoice.total_with_tax,
|
|
186
240
|
},
|
|
@@ -202,6 +256,8 @@ export default function AdvanceInvoiceListTable({
|
|
|
202
256
|
onDownloadStart={onDownloadStart}
|
|
203
257
|
onDownloadSuccess={onDownloadSuccess}
|
|
204
258
|
onDownloadError={onDownloadError}
|
|
259
|
+
onVoid={onVoid}
|
|
260
|
+
isVoiding={isVoiding}
|
|
205
261
|
t={t}
|
|
206
262
|
locale={i18nProps.locale}
|
|
207
263
|
/>
|
|
@@ -217,7 +273,10 @@ export default function AdvanceInvoiceListTable({
|
|
|
217
273
|
onDownloadStart,
|
|
218
274
|
onDownloadSuccess,
|
|
219
275
|
onDownloadError,
|
|
276
|
+
onVoid,
|
|
277
|
+
isVoiding,
|
|
220
278
|
i18nProps.locale,
|
|
279
|
+
fiscalizationFeatures,
|
|
221
280
|
],
|
|
222
281
|
);
|
|
223
282
|
|
|
@@ -228,13 +287,14 @@ export default function AdvanceInvoiceListTable({
|
|
|
228
287
|
resourceName="advance_invoice"
|
|
229
288
|
cacheKey="advance-invoices"
|
|
230
289
|
createNewLink={entityId ? `/app/${entityId}/documents/add/advance_invoice` : undefined}
|
|
290
|
+
onCreateNew={onCreateNew}
|
|
231
291
|
onFetch={handleFetch}
|
|
232
292
|
onChangeParams={onChangeParams}
|
|
233
293
|
entityId={entityId}
|
|
234
294
|
filterConfig={filterConfig}
|
|
235
295
|
t={t}
|
|
236
296
|
locale={i18nProps.locale}
|
|
237
|
-
selectable={!!onExportSelected}
|
|
297
|
+
selectable={!!(onExportSelected || onCopyToInvoice || onRetryFiscalization)}
|
|
238
298
|
selectedIds={selectedIds}
|
|
239
299
|
onSelectionChange={setSelectedIds}
|
|
240
300
|
selectionToolbar={selectionToolbar}
|
|
@@ -270,16 +330,6 @@ function AdvanceInvoiceStatusBadge({
|
|
|
270
330
|
</Badge>
|
|
271
331
|
);
|
|
272
332
|
}
|
|
273
|
-
if (advanceInvoice.date_due && new Date(advanceInvoice.date_due) < new Date()) {
|
|
274
|
-
return (
|
|
275
|
-
<Badge
|
|
276
|
-
variant="outline"
|
|
277
|
-
className="border-orange-500 bg-orange-50 text-orange-700 dark:bg-orange-950 dark:text-orange-400"
|
|
278
|
-
>
|
|
279
|
-
{t("Overdue")}
|
|
280
|
-
</Badge>
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
333
|
if (advanceInvoice.total_paid > 0) {
|
|
284
334
|
return (
|
|
285
335
|
<Badge
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "Keine Vorauszahlungsrechnungen gefunden",
|
|
39
39
|
"Try adjusting your search criteria": "Versuchen Sie, Ihre Suchkriterien anzupassen",
|
|
40
40
|
"Clear search": "Suche zurücksetzen",
|
|
41
|
+
"Clear all": "Alles zurücksetzen",
|
|
41
42
|
selected: "ausgewählt",
|
|
42
43
|
"Export PDFs": "PDFs exportieren",
|
|
43
44
|
"Deselect all": "Auswahl aufheben",
|
|
44
45
|
"Partially Paid": "Teilweise bezahlt",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "In Rechnung kopieren",
|
|
51
|
+
Void: "Stornieren",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"Stornierung einer mit einer Rechnung verknüpften Anzahlungsrechnung nicht möglich",
|
|
45
54
|
} as const;
|
|
@@ -9,4 +9,11 @@ export default {
|
|
|
9
9
|
"Export PDFs": "Export PDFs",
|
|
10
10
|
"Deselect all": "Deselect all",
|
|
11
11
|
"Partially Paid": "Partially Paid",
|
|
12
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
13
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
14
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
15
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
16
|
+
"Copy to Invoice": "Copy to Invoice",
|
|
17
|
+
Void: "Void",
|
|
18
|
+
"Cannot void an advance invoice linked to an invoice": "Cannot void an advance invoice linked to an invoice",
|
|
12
19
|
} as const;
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "No se encontraron facturas anticipadas",
|
|
39
39
|
"Try adjusting your search criteria": "Intente ajustar sus criterios de busqueda",
|
|
40
40
|
"Clear search": "Limpiar busqueda",
|
|
41
|
+
"Clear all": "Borrar todo",
|
|
41
42
|
selected: "seleccionados",
|
|
42
43
|
"Export PDFs": "Exportar PDFs",
|
|
43
44
|
"Deselect all": "Deseleccionar todo",
|
|
44
45
|
"Partially Paid": "Parcialmente pagado",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Copiar a factura",
|
|
51
|
+
Void: "Anular",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"No se puede anular una factura anticipada vinculada a una factura",
|
|
45
54
|
} as const;
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "Aucune facture d'acompte trouvee",
|
|
39
39
|
"Try adjusting your search criteria": "Essayez de modifier vos criteres de recherche",
|
|
40
40
|
"Clear search": "Effacer la recherche",
|
|
41
|
+
"Clear all": "Tout effacer",
|
|
41
42
|
selected: "sélectionnés",
|
|
42
43
|
"Export PDFs": "Exporter les PDF",
|
|
43
44
|
"Deselect all": "Tout désélectionner",
|
|
44
45
|
"Partially Paid": "Partiellement payé",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Copier vers facture",
|
|
51
|
+
Void: "Annuler",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"Impossible d'annuler une facture d'acompte liée à une facture",
|
|
45
54
|
} as const;
|
|
@@ -38,8 +38,16 @@ export default {
|
|
|
38
38
|
"No results found": "Nije pronadjen nijedan avansni racun",
|
|
39
39
|
"Try adjusting your search criteria": "Pokusajte prilagoditi kriterije pretrazivanja",
|
|
40
40
|
"Clear search": "Ocisti pretragu",
|
|
41
|
+
"Clear all": "Očisti sve",
|
|
41
42
|
selected: "odabranih",
|
|
42
43
|
"Export PDFs": "Izvezi PDF-ove",
|
|
43
44
|
"Deselect all": "Poništi odabir",
|
|
44
45
|
"Partially Paid": "Djelomično plaćeno",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiskalizacija nije uspjela",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiskalizacija nije uspjela",
|
|
48
|
+
"Retry Fiscalization": "Ponovi fiskalizaciju",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Neki odabrani dokumenti nemaju neuspjelu fiskalizaciju",
|
|
50
|
+
"Copy to Invoice": "Kopiraj u račun",
|
|
51
|
+
Void: "Storniraj",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice": "Nije moguće poništiti avansni račun povezan s računom",
|
|
45
53
|
} as const;
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "Nessuna fattura anticipata trovata",
|
|
39
39
|
"Try adjusting your search criteria": "Prova a modificare i criteri di ricerca",
|
|
40
40
|
"Clear search": "Cancella ricerca",
|
|
41
|
+
"Clear all": "Cancella tutto",
|
|
41
42
|
selected: "selezionati",
|
|
42
43
|
"Export PDFs": "Esporta PDF",
|
|
43
44
|
"Deselect all": "Deseleziona tutto",
|
|
44
45
|
"Partially Paid": "Parzialmente pagato",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Copia in fattura",
|
|
51
|
+
Void: "Annulla",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"Impossibile annullare una fattura anticipata collegata a una fattura",
|
|
45
54
|
} as const;
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "Geen voorschotfacturen gevonden",
|
|
39
39
|
"Try adjusting your search criteria": "Probeer uw zoekcriteria aan te passen",
|
|
40
40
|
"Clear search": "Zoekopdracht wissen",
|
|
41
|
+
"Clear all": "Alles wissen",
|
|
41
42
|
selected: "geselecteerd",
|
|
42
43
|
"Export PDFs": "PDFs exporteren",
|
|
43
44
|
"Deselect all": "Alles deselecteren",
|
|
44
45
|
"Partially Paid": "Gedeeltelijk betaald",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Kopieer naar factuur",
|
|
51
|
+
Void: "Nietig verklaren",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"Kan een voorschotfactuur gekoppeld aan een factuur niet ongeldig maken",
|
|
45
54
|
} as const;
|
|
@@ -38,8 +38,16 @@ export default {
|
|
|
38
38
|
"No results found": "Nie znaleziono faktur zaliczkowych",
|
|
39
39
|
"Try adjusting your search criteria": "Sprobuj dostosowac kryteria wyszukiwania",
|
|
40
40
|
"Clear search": "Wyczysc wyszukiwanie",
|
|
41
|
+
"Clear all": "Wyczyść wszystko",
|
|
41
42
|
selected: "wybranych",
|
|
42
43
|
"Export PDFs": "Eksportuj PDF-y",
|
|
43
44
|
"Deselect all": "Odznacz wszystko",
|
|
44
45
|
"Partially Paid": "Częściowo opłacona",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Kopiuj do faktury",
|
|
51
|
+
Void: "Anuluj",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice": "Nie można anulować faktury zaliczkowej powiązanej z fakturą",
|
|
45
53
|
} as const;
|
|
@@ -38,8 +38,17 @@ export default {
|
|
|
38
38
|
"No results found": "Nenhuma fatura antecipada encontrada",
|
|
39
39
|
"Try adjusting your search criteria": "Tente ajustar os seus criterios de pesquisa",
|
|
40
40
|
"Clear search": "Limpar pesquisa",
|
|
41
|
+
"Clear all": "Limpar tudo",
|
|
41
42
|
selected: "selecionados",
|
|
42
43
|
"Export PDFs": "Exportar PDFs",
|
|
43
44
|
"Deselect all": "Desselecionar tudo",
|
|
44
45
|
"Partially Paid": "Parcialmente pago",
|
|
46
|
+
"FURS fiscalization failed": "FURS fiscalization failed",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiscalization failed",
|
|
48
|
+
"Retry Fiscalization": "Retry Fiscalization",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Some selected documents don't have failed fiscalization",
|
|
50
|
+
"Copy to Invoice": "Copiar para fatura",
|
|
51
|
+
Void: "Anular",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice":
|
|
53
|
+
"Não é possível anular uma fatura antecipada vinculada a uma fatura",
|
|
45
54
|
} as const;
|
|
@@ -38,8 +38,16 @@ export default {
|
|
|
38
38
|
"No results found": "Ni najdenih avansnih računov",
|
|
39
39
|
"Try adjusting your search criteria": "Poskusite prilagoditi iskalne kriterije",
|
|
40
40
|
"Clear search": "Počisti iskanje",
|
|
41
|
+
"Clear all": "Počisti vse",
|
|
41
42
|
selected: "izbranih",
|
|
42
43
|
"Export PDFs": "Izvozi PDF-je",
|
|
43
44
|
"Deselect all": "Počisti izbiro",
|
|
44
45
|
"Partially Paid": "Delno plačano",
|
|
46
|
+
"FURS fiscalization failed": "FURS davčno potrjevanje ni uspelo",
|
|
47
|
+
"FINA fiscalization failed": "FINA fiskalizacija ni uspela",
|
|
48
|
+
"Retry Fiscalization": "Ponovi fiskalizacijo",
|
|
49
|
+
"Some selected documents don't have failed fiscalization": "Nekateri izbrani dokumenti nimajo neuspele fiskalizacije",
|
|
50
|
+
"Copy to Invoice": "Kopiraj v račun",
|
|
51
|
+
Void: "Storniraj",
|
|
52
|
+
"Cannot void an advance invoice linked to an invoice": "Ni mogoče razveljaviti predračuna, ki je povezan z računom",
|
|
45
53
|
} as const;
|