Merge pull request 'feature/catalogo-pedimento' (#219) from feature/catalogo-pedimento into development

Reviewed-on: ADUANASOFT/anexo76#219
This commit is contained in:
2026-03-18 03:53:00 +00:00
16 changed files with 355 additions and 70 deletions

View File

@@ -41,6 +41,7 @@ export const load: PageServerLoad = async ({ params, cookies, fetch }) => {
codePedimentoRegimens: [],
transportTypes: [],
transportModes: [],
pedimentoTransportCatalog: [],
error: 'Error al cargar catálogos. Verifique la conexión con el backend.'
};
}
@@ -57,7 +58,8 @@ export const load: PageServerLoad = async ({ params, cookies, fetch }) => {
clients: data.clients || [],
codePedimentoRegimens: data.code_pedimento_regimens || [],
transportTypes: data.transport_types || [],
transportModes: data.transport_modes || []
transportModes: data.transport_modes || [],
pedimentoTransportCatalog: data.pedimento_transport_catalog || []
};
} catch (e) {
console.error('❌ Error loading new pedimento data:', e);
@@ -73,6 +75,7 @@ export const load: PageServerLoad = async ({ params, cookies, fetch }) => {
codePedimentoRegimens: [],
transportTypes: [],
transportModes: [],
pedimentoTransportCatalog: [],
error: 'Error al cargar catálogos. Verifique la conexión con el backend.'
};
}
@@ -114,7 +117,8 @@ export const load: PageServerLoad = async ({ params, cookies, fetch }) => {
clients: data.clients || [],
codePedimentoRegimens: data.code_pedimento_regimens || [],
transportTypes: data.transport_types || [],
transportModes: data.transport_modes || []
transportModes: data.transport_modes || [],
pedimentoTransportCatalog: data.pedimento_transport_catalog || []
};
} catch (e) {
console.error('Error loading pedimento:', e);

View File

@@ -56,6 +56,12 @@
import type { CodePedimentoRegimen } from '$lib/api/dashboard/reference_data/code_pedimento_regimens';
import type { TransportType } from '$lib/api/dashboard/reference_data/transport_types';
import type { TransportMode } from '$lib/api/dashboard/reference_data/transport_modes';
type PedimentoTransportCatalog = {
code: string;
transport_en: string;
transport_es: string;
payment_date_code: 'E' | 'P' | string;
};
// Get sidebar context
const sidebar = useSidebar();
@@ -71,6 +77,7 @@
codePedimentoRegimens?: CodePedimentoRegimen[];
transportTypes?: TransportType[];
transportModes?: TransportMode[];
pedimentoTransportCatalog?: PedimentoTransportCatalog[];
user?: any;
companies?: any[];
authenticated?: boolean;
@@ -153,6 +160,18 @@
}
}
function getExchangeDateForPedimento(formData: any): { date: string | null; label: string } {
const catalog = (data.pedimentoTransportCatalog || []) as PedimentoTransportCatalog[];
const entryMethod = catalog.find(
(item) => item.code === formData?.pedimento_transport_means?.entry_exit
);
const paymentDateCode = (entryMethod?.payment_date_code || 'E').toUpperCase();
if (paymentDateCode === 'P') {
return { date: formData?.payment_date || null, label: 'fecha de pago' };
}
return { date: formData?.entry_date || null, label: 'fecha de entrada' };
}
// ID del pedimento
let pedimentoId = $state<number | null>(data.pedimentoId ?? null);
@@ -395,11 +414,10 @@
saving = true;
try {
// Verificar tipo de cambio antes de guardar si hay instancia del tab general y hay fecha de pago
if (generalTabInstance && generalFormData?.payment_date) {
const rateExists = await generalTabInstance.checkPaymentDateRate(
generalFormData.payment_date
);
// Verificar tipo de cambio según catalogo de transporte (E/P)
if (generalTabInstance && generalFormData) {
const exchangeRef = getExchangeDateForPedimento(generalFormData);
const rateExists = await generalTabInstance.checkPaymentDateRate(exchangeRef.date || '');
if (!rateExists) {
saving = false;
// Asegurar que se muestre el tab general
@@ -432,8 +450,9 @@
}
}
// Validar tipo de cambio en create y update
// Validar tipo de cambio en create y update segun fecha efectiva del metodo de transporte
if (generalFormData) {
const exchangeRef = getExchangeDateForPedimento(generalFormData);
const rate = generalFormData.exchange_rate;
if (
rate === null ||
@@ -443,11 +462,11 @@
) {
saving = false;
activeTab = 'general';
const date = generalFormData.entry_date || '';
const date = exchangeRef.date || '';
toast.error(
Number(rate) <= 0 && rate !== null && rate !== undefined
? 'El tipo de cambio debe ser mayor a 0. Registra el tipo de cambio para la fecha de entrada.'
: 'No hay tipo de cambio registrado para la fecha de entrada. Por favor, regístralo antes de guardar.'
? `El tipo de cambio debe ser mayor a 0. Registra el tipo de cambio para la ${exchangeRef.label}.`
: `No hay tipo de cambio registrado para la ${exchangeRef.label}. Por favor, regístralo antes de guardar.`
);
if (date) {
missingExchangeRateDate = date;
@@ -1129,8 +1148,7 @@
customsBrokers={data.customsBrokers}
clients={data.clients}
codePedimentoRegimens={data.codePedimentoRegimens}
transportTypes={data.transportTypes}
transportModes={data.transportModes}
pedimentoTransportCatalog={data.pedimentoTransportCatalog}
isActive={activeTab === 'general'}
/>
</Tabs.Content>