diff --git a/docker-compose.yml b/docker-compose.yml index 3e73fff6..655340d1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -99,6 +99,7 @@ services: JAVA_OPTS_APPEND: "-Xms256m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true" command: - start-dev + - --http-relative-path=/kcauth - --db=postgres - --db-url-host=postgres-keycloak - --db-url-port=5432 @@ -121,7 +122,7 @@ services: - backend-net restart: unless-stopped healthcheck: - test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000; echo -e 'GET /health/ready HTTP/1.1\r\nhost: 127.0.0.1\r\nConnection: close\r\n\r\n' >&3; grep -q 'HTTP/1.1 200' <&3 || exit 1"] + test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000; echo -e 'GET /kcauth/health/ready HTTP/1.1\r\nhost: 127.0.0.1\r\nConnection: close\r\n\r\n' >&3; grep -q 'HTTP/1.1 200' <&3 || exit 1"] interval: 10s timeout: 5s retries: 30 @@ -210,10 +211,10 @@ services: - NODE_ENV=${NODE_ENV:-development} - VITE_API_URL=${VITE_API_URL:-http://localhost:8000/api/} - INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/} - - VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-http://localhost:8080} + - VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-http://localhost:8080/kcauth} - VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master} - VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend} - - KEYCLOAK_URL=${KEYCLOAK_URL:-http://keycloak:8080} + - KEYCLOAK_URL=${KEYCLOAK_URL:-http://keycloak:8080/kcauth} - KEYCLOAK_REALM=${KEYCLOAK_REALM:-master} - KEYCLOAK_CLIENT_ID=${KEYCLOAK_CLIENT_ID:-anexo76-backend} - KEYCLOAK_CLIENT_SECRET=${KEYCLOAK_CLIENT_SECRET:-zRU5NuvUFtBSOuh7Kdc372AItoWGLgz9} diff --git a/frontend/src/lib/api/dashboard/a76/invoices.ts b/frontend/src/lib/api/dashboard/a76/invoices.ts index 78043d2e..e245f335 100644 --- a/frontend/src/lib/api/dashboard/a76/invoices.ts +++ b/frontend/src/lib/api/dashboard/a76/invoices.ts @@ -325,7 +325,7 @@ export const invoicesApi = { }); } - return api.get(`/v1/a76/invoices?${params.toString()}`); + return api.get(`/v1/a76/invoices/?${params.toString()}`); }, /** @@ -345,7 +345,7 @@ export const invoicesApi = { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.post(`/v1/a76/invoices?${params.toString()}`, data); + return api.post(`/v1/a76/invoices/?${params.toString()}`, data); }, /** @@ -378,21 +378,21 @@ export const invoicesApi = { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.get(`/v1/a76/invoices/${invoiceId}/logistics?${params.toString()}`); + return api.get(`/v1/a76/invoices/${invoiceId}/logistics/?${params.toString()}`); }, create: (invoiceId: number, companyId: number, data: Omit) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.post(`/v1/a76/invoices/${invoiceId}/logistics?${params.toString()}`, data); + return api.post(`/v1/a76/invoices/${invoiceId}/logistics/?${params.toString()}`, data); }, delete: (invoiceId: number, logisticsId: number, companyId: number) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.delete(`/v1/a76/invoices/${invoiceId}/logistics/${logisticsId}?${params.toString()}`); + return api.delete(`/v1/a76/invoices/${invoiceId}/logistics/${logisticsId}/?${params.toString()}`); } }, @@ -404,21 +404,21 @@ export const invoicesApi = { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.get(`/v1/a76/invoices/${invoiceId}/details?${params.toString()}`); + return api.get(`/v1/a76/invoices/${invoiceId}/details/?${params.toString()}`); }, create: (invoiceId: number, companyId: number, data: Omit) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.post(`/v1/a76/invoices/${invoiceId}/details?${params.toString()}`, data); + return api.post(`/v1/a76/invoices/${invoiceId}/details/?${params.toString()}`, data); }, delete: (invoiceId: number, detailId: number, companyId: number) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.delete(`/v1/a76/invoices/${invoiceId}/details/${detailId}?${params.toString()}`); + return api.delete(`/v1/a76/invoices/${invoiceId}/details/${detailId}/?${params.toString()}`); } }, @@ -430,21 +430,21 @@ export const invoicesApi = { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.get(`/v1/a76/invoices/${invoiceId}/collections?${params.toString()}`); + return api.get(`/v1/a76/invoices/${invoiceId}/collections/?${params.toString()}`); }, create: (invoiceId: number, companyId: number, data: Omit) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.post(`/v1/a76/invoices/${invoiceId}/collections?${params.toString()}`, data); + return api.post(`/v1/a76/invoices/${invoiceId}/collections/?${params.toString()}`, data); }, delete: (invoiceId: number, collectionId: number, companyId: number) => { const params = new URLSearchParams({ company_id: companyId.toString() }); - return api.delete(`/v1/a76/invoices/${invoiceId}/collections/${collectionId}?${params.toString()}`); + return api.delete(`/v1/a76/invoices/${invoiceId}/collections/${collectionId}/?${params.toString()}`); } } }; diff --git a/frontend/src/routes/dashboard/invoices/edit/[id]/+page.server.ts b/frontend/src/routes/dashboard/invoices/edit/[id]/+page.server.ts index 11d7de3a..eb48c4d6 100644 --- a/frontend/src/routes/dashboard/invoices/edit/[id]/+page.server.ts +++ b/frontend/src/routes/dashboard/invoices/edit/[id]/+page.server.ts @@ -31,14 +31,14 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { // Cargar datos de referencia necesarios const invoiceTypesPromise = authenticatedFetch( - 'v1/public/refrence_data/invoice-types?page=1&page_size=100', + 'v1/public/refrence_data/invoice-types/?page=1&page_size=100', {}, cookies, fetch ); const customsBrokersPromise = authenticatedFetch( - `v1/a76/customs-brokers?company_id=${companyId}&page=1&page_size=1000`, + `v1/a76/customs-brokers/?company_id=${companyId}&page=1&page_size=100`, {}, cookies, fetch @@ -46,14 +46,14 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { // Cargar clientes y proveedores const clientsPromise = authenticatedFetch( - `v1/a76/clients-providers?company_id=${companyId}&type=client&page=1&page_size=1000`, + `v1/a76/clients-providers/?company_id=${companyId}&type=client&page=1&page_size=1000`, {}, cookies, fetch ); const providersPromise = authenticatedFetch( - `v1/a76/clients-providers?company_id=${companyId}&type=provider&page=1&page_size=1000`, + `v1/a76/clients-providers/?company_id=${companyId}&type=provider&page=1&page_size=1000`, {}, cookies, fetch @@ -61,42 +61,35 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { // Cargar tipos de moneda, transporte, etc. const currencyTypesPromise = authenticatedFetch( - 'v1/public/refrence_data/currency-types?page=1&page_size=100', + 'v1/public/refrence_data/currency-types/?page=1&page_size=100', {}, cookies, fetch ); const transportTypesPromise = authenticatedFetch( - 'v1/public/refrence_data/transport-types?page=1&page_size=100', + 'v1/public/refrence_data/transport-types/?page=1&page_size=100', {}, cookies, fetch ); const sealsPromise = authenticatedFetch( - 'v1/public/refrence_data/seals?page=1&page_size=100', + `v1/a76/seals/?company_id=${companyId}&page=1&page_size=100`, {}, cookies, fetch ); const incotermsPromise = authenticatedFetch( - 'v1/public/refrence_data/incoterms?page=1&page_size=100', - {}, - cookies, - fetch - ); - - const enclosurePromise = authenticatedFetch( - 'v1/public/refrence_data/enclosure?page=1&page_size=100', + 'v1/public/refrence_data/incoterms/?page=1&page_size=100', {}, cookies, fetch ); const pedimentosPromise = authenticatedFetch( - `v1/a76/pedimentos?company_id=${companyId}&page=1&page_size=100`, + `v1/a76/pedimentos/?company_id=${companyId}&page=1&page_size=100`, {}, cookies, fetch @@ -113,7 +106,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypesResponse, sealsResponse, incotermsResponse, - enclosureResponse, pedimentosResponse ] = await Promise.all([ invoiceTypesPromise, @@ -124,7 +116,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypesPromise, sealsPromise, incotermsPromise, - enclosurePromise, pedimentosPromise ]); @@ -136,7 +127,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { const transportTypes = transportTypesResponse.ok ? await transportTypesResponse.json() : { items: [] }; const seals = sealsResponse.ok ? await sealsResponse.json() : { items: [] }; const incoterms = incotermsResponse.ok ? await incotermsResponse.json() : { items: [] }; - const enclosure = enclosureResponse.ok ? await enclosureResponse.json() : { items: [] }; const pedimentos = pedimentosResponse.ok ? await pedimentosResponse.json() : { items: [] }; return { @@ -151,7 +141,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypes: transportTypes.items || [], seals: seals.items || [], incoterms: incoterms.items || [], - enclosure: enclosure.items || [], pedimentos: pedimentos.items || [], // Filtros desde query parameters para preselección filters: { @@ -191,7 +180,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypesResponse, sealsResponse, incotermsResponse, - enclosureResponse, pedimentosResponse ] = await Promise.all([ invoiceTypesPromise, @@ -202,7 +190,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypesPromise, sealsPromise, incotermsPromise, - enclosurePromise, pedimentosPromise ]); @@ -214,7 +201,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { const transportTypes = transportTypesResponse.ok ? await transportTypesResponse.json() : { items: [] }; const seals = sealsResponse.ok ? await sealsResponse.json() : { items: [] }; const incoterms = incotermsResponse.ok ? await incotermsResponse.json() : { items: [] }; - const enclosure = enclosureResponse.ok ? await enclosureResponse.json() : { items: [] }; const pedimentos = pedimentosResponse.ok ? await pedimentosResponse.json() : { items: [] }; return { @@ -229,7 +215,6 @@ export const load: PageServerLoad = async ({ params, cookies, fetch, url }) => { transportTypes: transportTypes.items || [], seals: seals.items || [], incoterms: incoterms.items || [], - enclosure: enclosure.items || [], pedimentos: pedimentos.items || [], // Filtros desde query parameters para preselección filters: {