+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Firma electrónica del pedimento (máximo 999 caracteres).
-
- {/if}
+
diff --git a/frontend/src/routes/dashboard/pedimentos/edit/[id]/+page.svelte b/frontend/src/routes/dashboard/pedimentos/edit/[id]/+page.svelte
index 7d30ef2c..5bb8adf1 100644
--- a/frontend/src/routes/dashboard/pedimentos/edit/[id]/+page.svelte
+++ b/frontend/src/routes/dashboard/pedimentos/edit/[id]/+page.svelte
@@ -66,6 +66,7 @@
success = false;
try {
+
// Validar campos requeridos para creación
if (data.isCreate && generalFormData) {
const requiredFields = {
@@ -109,28 +110,98 @@
usd_value: generalFormData?.usd_value || undefined,
paid_price: generalFormData?.paid_price || undefined,
gross_weight: generalFormData?.gross_weight || undefined,
- exchange_rate: generalFormData?.exchange_rate || undefined,
- // Sub-recursos
- pedimento_dates: (datesFormData?.entry_date || datesFormData?.pedimento_date || datesFormData?.payment_date) ? {
- entry_date: datesFormData.entry_date || null,
- pedimento_date: datesFormData.pedimento_date || null,
- payment_date: datesFormData.payment_date || null
- } : undefined,
- pedimento_payments: (paymentsFormData?.payment_form || paymentsFormData?.bank_identifier) ? {
- payment_form: paymentsFormData.payment_form || null,
- bank_identifier: paymentsFormData.bank_identifier || null
- } : undefined,
- pedimento_transport_means: (transportFormData?.arrival_key || transportFormData?.arrival_data || transportFormData?.departure_key || transportFormData?.departure_data) ? {
- arrival_key: transportFormData.arrival_key || null,
- arrival_data: transportFormData.arrival_data || null,
- departure_key: transportFormData.departure_key || null,
- departure_data: transportFormData.departure_data || null
- } : undefined,
- pedimento_validation: validationFormData?.document ? {
- document: validationFormData.document || null
- } : undefined
+ exchange_rate: generalFormData?.exchange_rate || undefined
};
+ // Solo agregar sub-recursos en modo UPDATE (no en CREATE)
+ // Y solo si tienen valores reales (no enviar objetos vacíos/null)
+ if (!data.isCreate) {
+ // Dates - solo enviar si hay al menos un campo con valor
+ if (datesFormData) {
+ const hasDateValue = datesFormData.entry_date || datesFormData.pedimento_date ||
+ datesFormData.payment_date || datesFormData.rectification_payment_date ||
+ datesFormData.extraction_date || datesFormData.submission_date ||
+ datesFormData.eucan_date || datesFormData.original_date ||
+ datesFormData.start_date || datesFormData.end_date ||
+ datesFormData.capture_date || datesFormData.capture_time;
+
+ if (hasDateValue) {
+ payload.pedimento_dates = {
+ entry_date: datesFormData.entry_date || null,
+ pedimento_date: datesFormData.pedimento_date || null,
+ payment_date: datesFormData.payment_date || null,
+ rectification_payment_date: datesFormData.rectification_payment_date || null,
+ extraction_date: datesFormData.extraction_date || null,
+ submission_date: datesFormData.submission_date || null,
+ eucan_date: datesFormData.eucan_date || null,
+ original_date: datesFormData.original_date || null,
+ start_date: datesFormData.start_date || null,
+ end_date: datesFormData.end_date || null,
+ capture_date: datesFormData.capture_date || null,
+ capture_time: datesFormData.capture_time || null
+ };
+ }
+ }
+
+ // Payments - solo enviar si hay al menos un campo con valor
+ if (paymentsFormData) {
+ const hasPaymentValue = paymentsFormData.acknowledgment || paymentsFormData.operation_number ||
+ paymentsFormData.bank_code || paymentsFormData.cashier || paymentsFormData.date ||
+ paymentsFormData.time || paymentsFormData.shift || paymentsFormData.total_cash_paid ||
+ paymentsFormData.total_contributions || paymentsFormData.counter_payment ||
+ paymentsFormData.pece_code;
+ if (hasPaymentValue) {
+ payload.pedimento_payments = {
+ acknowledgment: paymentsFormData.acknowledgment || null,
+ operation_number: paymentsFormData.operation_number || null,
+ bank_code: paymentsFormData.bank_code || null,
+ cashier: paymentsFormData.cashier || null,
+ date: paymentsFormData.date || null,
+ time: paymentsFormData.time || null,
+ shift: paymentsFormData.shift || null,
+ total_cash_paid: paymentsFormData.total_cash_paid || null,
+ total_contributions: paymentsFormData.total_contributions || null,
+ counter_payment: paymentsFormData.counter_payment || null,
+ pece_code: paymentsFormData.pece_code || null,
+ };
+ }
+ }
+
+ // Transport - solo enviar si hay al menos un campo con valor
+ if (transportFormData) {
+ const hasTransportValue = transportFormData.destination || transportFormData.entry_exit ||
+ transportFormData.arrival || transportFormData.departure;
+ if (hasTransportValue) {
+ payload.pedimento_transport_means = {
+ destination: transportFormData.destination || null,
+ entry_exit: transportFormData.entry_exit || null,
+ arrival: transportFormData.arrival || null,
+ departure: transportFormData.departure || null
+ };
+ }
+ }
+
+ // Validation - solo enviar si hay al menos un campo con valor
+ if (validationFormData) {
+ const hasValidationValue = validationFormData.validator || validationFormData.validation_ack ||
+ validationFormData.pre_ack || validationFormData.line_signature ||
+ validationFormData.electronic_signature || validationFormData.certificate_number ||
+ validationFormData.validator_id || validationFormData.responsible_id;
+ if (hasValidationValue) {
+ payload.pedimento_validation = {
+ validator: validationFormData.validator || null,
+ validation_ack: validationFormData.validation_ack || null,
+ pre_ack: validationFormData.pre_ack || null,
+ line_signature: validationFormData.line_signature || null,
+ electronic_signature: validationFormData.electronic_signature || null,
+ certificate_number: validationFormData.certificate_number || null,
+ validator_id: validationFormData.validator_id || null,
+ responsible_id: validationFormData.responsible_id || null
+ };
+ }
+ }
+ }
+
// Eliminar campos undefined para no enviarlos
Object.keys(payload).forEach(key => {
if (payload[key as keyof typeof payload] === undefined) {
@@ -140,9 +211,9 @@
let newPedimentoId = pedimentoId;
- if (data.isCreate) {
+ if (data.isCreate) {
// Crear nuevo pedimento con todos sus sub-recursos
- const response = await pedimentosApi.create(payload as CreatePedimentoData);
+ const response = await pedimentosApi.create(payload as CreatePedimentoData);
if (response.error) {
const errorMsg = typeof response.error === 'string' ? response.error : 'Error al crear el pedimento';
throw new Error(errorMsg);
@@ -153,12 +224,12 @@
// Redirigir a la página de edición
await goto(`/dashboard/pedimentos/edit/${newPedimentoId}`);
return;
- } else {
+ } else {
// Actualizar pedimento existente con todos sus sub-recursos
- const response = await pedimentosApi.update(pedimentoId!, payload as UpdatePedimentoData);
+ const response = await pedimentosApi.update(pedimentoId!, payload as UpdatePedimentoData);
if (response.error) throw new Error(response.error);
}
-
+
success = true;
setTimeout(() => {
success = false;
@@ -380,7 +451,7 @@
@@ -388,7 +459,7 @@
@@ -396,7 +467,7 @@
@@ -404,7 +475,7 @@