diff --git a/frontend/src/lib/api/dashboard/reference_data/code_pedimento_regimens.ts b/frontend/src/lib/api/dashboard/reference_data/code_pedimento_regimens.ts index 7bb4fa45..9260cabf 100644 --- a/frontend/src/lib/api/dashboard/reference_data/code_pedimento_regimens.ts +++ b/frontend/src/lib/api/dashboard/reference_data/code_pedimento_regimens.ts @@ -36,12 +36,13 @@ export interface UpdateCodePedimentoRegimenData { export const codePedimentoRegimensApi = { /** * Lista todos los code pedimento regimens con paginación y búsqueda + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param search - Término de búsqueda (opcional) */ - list: (page = 1, pageSize = 50, search?: string) => { - let url = `/v1/public/reference_data/code-pedimento-regimens/?page=${page}&page_size=${pageSize}`; + list: (companyId: number, page = 1, pageSize = 50, search?: string) => { + let url = `/v1/public/reference_data/code-pedimento-regimens/?company_id=${companyId}&page=${page}&page_size=${pageSize}`; if (search) { url += `&search=${encodeURIComponent(search)}`; } diff --git a/frontend/src/lib/api/dashboard/reference_data/containers.ts b/frontend/src/lib/api/dashboard/reference_data/containers.ts index 9e4d300b..1d1c9e6e 100644 --- a/frontend/src/lib/api/dashboard/reference_data/containers.ts +++ b/frontend/src/lib/api/dashboard/reference_data/containers.ts @@ -32,12 +32,13 @@ export interface UpdateContainerData { export const containersApi = { /** * Lista todos los containers con paginación y búsqueda + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param search - Término de búsqueda (opcional) */ - list: (page = 1, pageSize = 50, search?: string) => { - let url = `/v1/public/reference_data/containers/?page=${page}&page_size=${pageSize}`; + list: (companyId: number, page = 1, pageSize = 50, search?: string) => { + let url = `/v1/public/reference_data/containers/?company_id=${companyId}&page=${page}&page_size=${pageSize}`; if (search) { url += `&search=${encodeURIComponent(search)}`; } diff --git a/frontend/src/lib/api/dashboard/reference_data/currency_types.ts b/frontend/src/lib/api/dashboard/reference_data/currency_types.ts index 9199365f..2b114c5e 100644 --- a/frontend/src/lib/api/dashboard/reference_data/currency_types.ts +++ b/frontend/src/lib/api/dashboard/reference_data/currency_types.ts @@ -35,12 +35,13 @@ export interface UpdateCurrencyTypeData { export const currencyTypesApi = { /** * Lista todos los tipos de moneda con paginación y búsqueda + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param search - Término de búsqueda (opcional) */ - list: (page = 1, pageSize = 50, search?: string) => { - let url = `/v1/public/reference_data/currency-types/?page=${page}&page_size=${pageSize}`; + list: (companyId: number, page = 1, pageSize = 50, search?: string) => { + let url = `/v1/public/reference_data/currency-types/?company_id=${companyId}&page=${page}&page_size=${pageSize}`; if (search) { url += `&search=${encodeURIComponent(search)}`; } diff --git a/frontend/src/lib/api/dashboard/reference_data/customs_warehouses.ts b/frontend/src/lib/api/dashboard/reference_data/customs_warehouses.ts index 4e90751e..ab7def56 100644 --- a/frontend/src/lib/api/dashboard/reference_data/customs_warehouses.ts +++ b/frontend/src/lib/api/dashboard/reference_data/customs_warehouses.ts @@ -35,12 +35,13 @@ export interface UpdateCustomsWarehouseData { export const customsWarehousesApi = { /** * Lista todos los recintos fiscalizados con paginación y búsqueda + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param search - Término de búsqueda (opcional) */ - list: (page = 1, pageSize = 50, search?: string) => { - let url = `/v1/public/reference_data/customs-warehouses/?page=${page}&page_size=${pageSize}`; + list: (companyId: number, page = 1, pageSize = 50, search?: string) => { + let url = `/v1/public/reference_data/customs-warehouses/?company_id=${companyId}&page=${page}&page_size=${pageSize}`; if (search) { url += `&search=${encodeURIComponent(search)}`; } diff --git a/frontend/src/lib/api/dashboard/reference_data/incoterms.ts b/frontend/src/lib/api/dashboard/reference_data/incoterms.ts index 4e49deb1..200f2a97 100644 --- a/frontend/src/lib/api/dashboard/reference_data/incoterms.ts +++ b/frontend/src/lib/api/dashboard/reference_data/incoterms.ts @@ -35,13 +35,14 @@ export interface UpdateIncotermData { export const incotermsApi = { /** * Lista todos los incoterms con paginación y filtros + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param code - Filtrar por clave (opcional) * @param description - Filtrar por descripción (opcional) */ - list: (page = 1, pageSize = 50, code?: string, description?: string) => { - let url = `/v1/public/reference_data/incoterms/?page=${page}&page_size=${pageSize}`; + list: (companyId: number, page = 1, pageSize = 50, code?: string, description?: string) => { + let url = `/v1/public/reference_data/incoterms/?company_id=${companyId}&page=${page}&page_size=${pageSize}`; if (code) url += `&code=${encodeURIComponent(code)}`; if (description) url += `&description=${encodeURIComponent(description)}`; return api.get(url); diff --git a/frontend/src/lib/api/dashboard/reference_data/invoice_types.ts b/frontend/src/lib/api/dashboard/reference_data/invoice_types.ts index 91a90ba8..93f9b299 100644 --- a/frontend/src/lib/api/dashboard/reference_data/invoice_types.ts +++ b/frontend/src/lib/api/dashboard/reference_data/invoice_types.ts @@ -39,13 +39,15 @@ export interface UpdateInvoiceTypeData { export const invoiceTypesApi = { /** * Lista todos los tipos de factura con paginación y búsqueda + * @param companyId - ID de la empresa * @param page - Número de página (por defecto 1) * @param pageSize - Tamaño de página (por defecto 50) * @param operation - Filtrar por tipo de operación (imp, exp) * @param search - Término de búsqueda (opcional) */ - list: (page = 1, pageSize = 50, operation?: string, search?: string) => { + list: (companyId: number, page = 1, pageSize = 50, operation?: string, search?: string) => { const params = new URLSearchParams({ + company_id: companyId.toString(), page: page.toString(), page_size: pageSize.toString() }); diff --git a/frontend/src/lib/components/dashboard/goods/modales/currency-selector-dialog.svelte b/frontend/src/lib/components/dashboard/goods/modales/currency-selector-dialog.svelte index d7af571b..d8d27110 100644 --- a/frontend/src/lib/components/dashboard/goods/modales/currency-selector-dialog.svelte +++ b/frontend/src/lib/components/dashboard/goods/modales/currency-selector-dialog.svelte @@ -6,6 +6,7 @@ import { toast } from "svelte-sonner"; import { Search, Loader2, DollarSign } from "lucide-svelte"; import { currencyTypesApi, type CurrencyType } from "$lib/api/dashboard/reference_data/currency_types"; + import { companyStore } from "$lib/stores/company.svelte"; // --- PROPS --- let { @@ -41,11 +42,15 @@ }); async function loadCurrencies() { - loading = true; + if (!companyStore.activeCompany) { + toast.error("Selecciona una empresa antes de cargar monedas"); + return; + } + loading = true; try { - // FIX: Usar API pública, sin company_id - const response = await currencyTypesApi.list(1, 100); - + const response = await currencyTypesApi.list(companyStore.activeCompany.id, 1, 100); + + if (response.error) { console.error("CurrencySelectorDialog Error:", response.error); toast.error(`Error al cargar monedas: ${response.error}`); diff --git a/frontend/src/lib/components/dashboard/reports/downloaded-parts-form.svelte b/frontend/src/lib/components/dashboard/reports/downloaded-parts-form.svelte index 282ee2af..65f7ef97 100644 --- a/frontend/src/lib/components/dashboard/reports/downloaded-parts-form.svelte +++ b/frontend/src/lib/components/dashboard/reports/downloaded-parts-form.svelte @@ -197,10 +197,10 @@ classesResponse ] = await Promise.all([ clientsProvidersApi.list(companyId, 1, 1000), - invoiceTypesApi.list(1, 1000), - pedimentoCodesApi.list(1, 1000), - materialTypesApi.list(1, 1000), - customsSectionsApi.list(1, 1000), + invoiceTypesApi.list(companyId, 1, 1000), + pedimentoCodesApi.list(companyId, 1, 1000), + materialTypesApi.list(companyId, 1, 1000), + customsSectionsApi.list(companyId, 1, 1000), partsApi.list({ company_id: companyId, page: 1, page_size: 1000 }), classesApi.getWithFAData({ company_id: companyId, page: 1, page_size: 1000 }) ]); diff --git a/frontend/src/routes/dashboard/reference_data/code_pedimento_regimens/+page.svelte b/frontend/src/routes/dashboard/reference_data/code_pedimento_regimens/+page.svelte index bd062fb0..ebcb61e3 100644 --- a/frontend/src/routes/dashboard/reference_data/code_pedimento_regimens/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/code_pedimento_regimens/+page.svelte @@ -18,6 +18,7 @@ import { currentUser } from '$lib/auth'; import { userHasPedimentoRegimensRefAction } from '$lib/permissions/reference-data/pedimento-regimens-ref-permissions'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -55,10 +56,16 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await codePedimentoRegimensApi.list(1, pageSize, searchQuery); + const response = await codePedimentoRegimensApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + searchQuery + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -79,11 +86,16 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; try { - const response = await codePedimentoRegimensApi.list(currentPage + 1, pageSize, searchQuery); + const response = await codePedimentoRegimensApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + searchQuery + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...'; diff --git a/frontend/src/routes/dashboard/reference_data/containers/+page.svelte b/frontend/src/routes/dashboard/reference_data/containers/+page.svelte index 321441c7..f754671a 100644 --- a/frontend/src/routes/dashboard/reference_data/containers/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/containers/+page.svelte @@ -14,6 +14,7 @@ import { currentUser } from '$lib/auth'; import { userHasContainersRefAction } from '$lib/permissions/reference-data/containers-ref-permissions'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -44,10 +45,16 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await containersApi.list(1, pageSize, searchQuery); + const response = await containersApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + searchQuery + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -68,11 +75,16 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; - try { - const response = await containersApi.list(currentPage + 1, pageSize, searchQuery); + try { + const response = await containersApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + searchQuery + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...'; diff --git a/frontend/src/routes/dashboard/reference_data/currency_types/+page.svelte b/frontend/src/routes/dashboard/reference_data/currency_types/+page.svelte index a4d4e28a..8fc9292e 100644 --- a/frontend/src/routes/dashboard/reference_data/currency_types/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/currency_types/+page.svelte @@ -16,6 +16,7 @@ import { userHasCurrencyTypesRefAction } from '$lib/permissions/reference-data/currency-types-ref-permissions'; import { getAccessTokenFromDocument } from '$lib/access-token-cookie-browser'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -78,10 +79,16 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await currencyTypesApi.list(1, pageSize, searchQuery); + const response = await currencyTypesApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + searchQuery + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -102,11 +109,16 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; - try { - const response = await currencyTypesApi.list(currentPage + 1, pageSize, searchQuery); + try { + const response = await currencyTypesApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + searchQuery + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...'; diff --git a/frontend/src/routes/dashboard/reference_data/customs_warehouses/+page.svelte b/frontend/src/routes/dashboard/reference_data/customs_warehouses/+page.svelte index 56b1db29..fb4828c3 100644 --- a/frontend/src/routes/dashboard/reference_data/customs_warehouses/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/customs_warehouses/+page.svelte @@ -15,6 +15,7 @@ import { currentUser } from '$lib/auth'; import { userHasCustomsWarehousesRefAction } from '$lib/permissions/reference-data/customs-warehouses-ref-permissions'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -53,10 +54,16 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await customsWarehousesApi.list(1, pageSize, searchQuery); + const response = await customsWarehousesApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + searchQuery + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -77,11 +84,16 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; - try { - const response = await customsWarehousesApi.list(currentPage + 1, pageSize, searchQuery); + try { + const response = await customsWarehousesApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + searchQuery + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...'; diff --git a/frontend/src/routes/dashboard/reference_data/incoterms/+page.svelte b/frontend/src/routes/dashboard/reference_data/incoterms/+page.svelte index 39b28427..a1b20453 100644 --- a/frontend/src/routes/dashboard/reference_data/incoterms/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/incoterms/+page.svelte @@ -15,6 +15,7 @@ import { currentUser } from '$lib/auth'; import { userHasIncotermsRefAction } from '$lib/permissions/reference-data/incoterms-ref-permissions'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -54,10 +55,17 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await incotermsApi.list(1, pageSize, searchCode, searchDescription); + const response = await incotermsApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + searchCode, + searchDescription + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -81,11 +89,17 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; - try { - const response = await incotermsApi.list(currentPage + 1, pageSize, searchCode, searchDescription); + try { + const response = await incotermsApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + searchCode, + searchDescription + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...'; diff --git a/frontend/src/routes/dashboard/reference_data/invoice_types/+page.svelte b/frontend/src/routes/dashboard/reference_data/invoice_types/+page.svelte index 4e0e3e87..bfe4dd5a 100644 --- a/frontend/src/routes/dashboard/reference_data/invoice_types/+page.svelte +++ b/frontend/src/routes/dashboard/reference_data/invoice_types/+page.svelte @@ -15,6 +15,7 @@ import { currentUser } from '$lib/auth'; import { userHasInvoiceTypesRefAction } from '$lib/permissions/reference-data/invoice-types-ref-permissions'; import ErrorState from '$lib/components/dashboard/common/error-state.svelte'; + import { companyStore } from '$lib/stores/company.svelte'; // Los datos iniciales vienen del servidor let { data }: { data: PageData } = $props(); @@ -53,10 +54,17 @@ if (!browser) return; clearTimeout(timeout); timeout = setTimeout(async () => { + if (!companyStore.activeCompany) return; loading = true; error = null; try { - const response = await invoiceTypesApi.list(1, pageSize, undefined, searchQuery); + const response = await invoiceTypesApi.list( + companyStore.activeCompany.id, + 1, + pageSize, + undefined, + searchQuery + ); if (!response.error && response.data) { allItems = response.data.items; currentPage = 1; @@ -77,11 +85,17 @@ } async function loadMore() { - if (loading || !hasMore) return; + if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; error = null; - try { - const response = await invoiceTypesApi.list(currentPage + 1, pageSize, undefined, searchQuery); + try { + const response = await invoiceTypesApi.list( + companyStore.activeCompany.id, + currentPage + 1, + pageSize, + undefined, + searchQuery + ); if (response.error) { if (response.status === 401 || response.status === 403) { error = 'Sesión expirada. Recargando página...';