Uecko_ERP/modules/customer-invoices/src/web/pages/update/invoice-update-page.tsx

52 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-11-14 15:48:09 +00:00
import { SpainTaxCatalogProvider } from "@erp/core";
import { useUrlParamId } from "@erp/core/hooks";
2025-10-12 18:36:33 +00:00
import { ErrorAlert } from "@erp/customers/components";
import { AppContent, BackHistoryButton } from "@repo/rdx-ui/components";
2025-11-14 15:48:09 +00:00
import { useMemo } from "react";
import { InvoiceProvider } from "../../context";
2025-10-12 18:36:33 +00:00
import { useInvoiceQuery } from "../../hooks";
2025-09-24 17:30:35 +00:00
import { useTranslation } from "../../i18n";
2025-11-14 15:48:09 +00:00
import { CustomerInvoiceEditorSkeleton } from "../../shared/ui/components";
import { InvoiceUpdateComp } from "./invoice-update-comp";
2025-09-24 17:30:35 +00:00
2025-10-12 10:43:06 +00:00
export const InvoiceUpdatePage = () => {
2025-10-12 18:36:33 +00:00
const invoice_id = useUrlParamId();
const { t } = useTranslation();
const taxCatalog = useMemo(() => SpainTaxCatalogProvider(), []);
const invoiceQuery = useInvoiceQuery(invoice_id, { enabled: !!invoice_id });
2025-10-18 19:57:52 +00:00
const { data: invoiceData, isLoading, isError, error } = invoiceQuery;
2025-10-12 18:36:33 +00:00
if (isLoading) {
return <CustomerInvoiceEditorSkeleton />;
}
if (isError || !invoiceData) {
return (
<AppContent>
<ErrorAlert
message={(error as Error)?.message || "Error al cargar la factura"}
2025-11-14 15:48:09 +00:00
title={t("pages.update.loadErrorTitle")}
2025-10-12 18:36:33 +00:00
/>
<BackHistoryButton />
</AppContent>
);
}
// Monta el contexto aquí, así todo lo que esté dentro puede usar hooks
return (
<InvoiceProvider
company_id={invoiceData.company_id}
currency_code={invoiceData.currency_code}
2025-11-14 15:48:09 +00:00
invoice_id={invoice_id!}
language_code={invoiceData.language_code}
status={invoiceData.status}
taxCatalog={taxCatalog}
2025-10-12 18:36:33 +00:00
>
<InvoiceUpdateComp invoice={invoiceData} />
</InvoiceProvider>
);
};