Merge pull request 'feature/catalogo-pedimento' (#219) from feature/catalogo-pedimento into development
Reviewed-on: ADUANASOFT/anexo76#219
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user