feature/checkpoin-before-table
This commit is contained in:
@@ -72,6 +72,24 @@
|
||||
|
||||
return visibility.showCrTrackingHeader;
|
||||
});
|
||||
/** Show link-to-import block for import (CR tracking) or for export when showExportLinkToImportBlock. */
|
||||
const showLinkToImportBlock = $derived.by(() => {
|
||||
const normalizedOperationType = operationType ?? invoice?.operation_type;
|
||||
if (normalizedOperationType === 1 || normalizedOperationType === 'exp') {
|
||||
return visibility.showExportLinkToImportBlock;
|
||||
}
|
||||
return visibility.showCrTrackingHeader;
|
||||
});
|
||||
const isExport = $derived.by(() => {
|
||||
const op = operationType ?? invoice?.operation_type;
|
||||
return op === 1 || op === 'exp';
|
||||
});
|
||||
/** Show repair-import block (Factura de Expo / Línea de Expo) for REP/REPAR. */
|
||||
const showRepairBlock = $derived.by(() => {
|
||||
const op = operationType ?? invoice?.operation_type;
|
||||
if (op === 1 || op === 'exp') return false;
|
||||
return visibility.showRepairLinkToExportBlock;
|
||||
});
|
||||
const visibleTabs = $derived.by(() => [
|
||||
{ value: 'generales', label: 'General', visible: true },
|
||||
{ value: 'continuacion', label: 'Continuación', visible: true },
|
||||
@@ -117,52 +135,117 @@
|
||||
<div class="space-y-2">
|
||||
|
||||
{#if line}
|
||||
{#if showCrTrackingBlock}
|
||||
<div class="grid grid-cols-1 gap-2 lg:grid-cols-4">
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_invoice" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Factura Impo
|
||||
{#if showRepairBlock}
|
||||
<!-- Importación de Reparación: Genera Descarga? + Factura de Expo + Línea de Expo -->
|
||||
<div class="space-y-2 rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<div class="flex items-center gap-4">
|
||||
<span class="text-[10px] font-semibold uppercase tracking-wide text-zinc-500">Genera Descarga?</span>
|
||||
<label class="flex items-center gap-1.5">
|
||||
<input type="radio" name="fa_rep_download" value="si" checked={editingItem.fa_data?.download === true} onchange={() => (editingItem.fa_data = editingItem.fa_data || {}, editingItem.fa_data.download = true)} class="rounded border-input" />
|
||||
<span class="text-xs">Sí</span>
|
||||
</label>
|
||||
<label class="flex items-center gap-1.5">
|
||||
<input type="radio" name="fa_rep_download" value="no" checked={editingItem.fa_data?.download === false || editingItem.fa_data?.download === undefined} onchange={() => (editingItem.fa_data = editingItem.fa_data || {}, editingItem.fa_data.download = false)} class="rounded border-input" />
|
||||
<span class="text-xs">No</span>
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_invoice"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_invoice}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_line" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Línea
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_line"
|
||||
type="number"
|
||||
min="0"
|
||||
bind:value={editingItem.fa_data.search_line}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
<div class="grid grid-cols-1 gap-2 lg:grid-cols-4">
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_rep_search_invoice" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Factura de Expo
|
||||
</label>
|
||||
<input
|
||||
id="fa_rep_search_invoice"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_invoice}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_rep_search_line" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Línea de Expo
|
||||
</label>
|
||||
<input
|
||||
id="fa_rep_search_line"
|
||||
type="number"
|
||||
min="0"
|
||||
bind:value={editingItem.fa_data.search_line}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_rep_search_type" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Tipo Búsqueda
|
||||
</label>
|
||||
<input
|
||||
id="fa_rep_search_type"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_type}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_type" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Tipo Búsqueda
|
||||
</div>
|
||||
{:else if showLinkToImportBlock}
|
||||
<div class="space-y-2 rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<!-- Genera Descarga? visible when block is shown (expo or import CR per legacy). -->
|
||||
<div class="flex items-center gap-4">
|
||||
<span class="text-[10px] font-semibold uppercase tracking-wide text-zinc-500">Genera Descarga?</span>
|
||||
<label class="flex items-center gap-1.5">
|
||||
<input type="radio" name="fa_download" value="si" checked={editingItem.fa_data?.download === true} onchange={() => (editingItem.fa_data = editingItem.fa_data || {}, editingItem.fa_data.download = true)} class="rounded border-input" />
|
||||
<span class="text-xs">Sí</span>
|
||||
</label>
|
||||
<label class="flex items-center gap-1.5">
|
||||
<input type="radio" name="fa_download" value="no" checked={editingItem.fa_data?.download === false || editingItem.fa_data?.download === undefined} onchange={() => (editingItem.fa_data = editingItem.fa_data || {}, editingItem.fa_data.download = false)} class="rounded border-input" />
|
||||
<span class="text-xs">No</span>
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_type"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_type}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_movement_type_import" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Tipo Movimiento
|
||||
</label>
|
||||
<input
|
||||
id="fa_movement_type_import"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.movement_type_import}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
<div class="grid grid-cols-1 gap-2 lg:grid-cols-4">
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_invoice" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Factura Impo
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_invoice"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_invoice}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_line" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Línea
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_line"
|
||||
type="number"
|
||||
min="0"
|
||||
bind:value={editingItem.fa_data.search_line}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_search_type" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Tipo Búsqueda
|
||||
</label>
|
||||
<input
|
||||
id="fa_search_type"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.search_type}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded border border-zinc-200 bg-white p-2 dark:border-zinc-800 dark:bg-zinc-900">
|
||||
<label for="fa_movement_type_import" class="mb-1 block text-[10px] font-semibold uppercase tracking-wide text-zinc-500">
|
||||
Tipo Importación / Tipo Movimiento
|
||||
</label>
|
||||
<input
|
||||
id="fa_movement_type_import"
|
||||
type="text"
|
||||
bind:value={editingItem.fa_data.movement_type_import}
|
||||
class="flex h-8 w-full rounded-md border border-input bg-background px-3 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
<div class="grid grid-cols-1 items-start gap-2 lg:grid-cols-2">
|
||||
<!-- Left Column -->
|
||||
<div class="space-y-2">
|
||||
{#if visibility.showContinuationTaxPayment}
|
||||
<!-- TAX PAID -->
|
||||
<div class="grid grid-cols-4 gap-2">
|
||||
<fieldset class="border rounded p-1.5 space-y-1">
|
||||
@@ -131,7 +132,9 @@
|
||||
<Label for="credito_iva" class="text-xs">{payment_method_description || ''}</Label>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationIgi}
|
||||
<!-- IGI Amount -->
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<div class="space-y-0.5">
|
||||
@@ -143,6 +146,7 @@
|
||||
<Input id="igi_payment_method" bind:value={lineItem.igi_payment_method} class="h-6 text-xs" />
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showFdaFcc}
|
||||
<div class="space-y-2 rounded-md border p-2">
|
||||
@@ -185,12 +189,41 @@
|
||||
</fieldset>
|
||||
<div class="col-span-3 space-y-0.5">
|
||||
<Label for="num_cert_origen" class="text-xs">Certificate of Origin No.:</Label>
|
||||
<Input id="num_cert_origen" bind:value={lineItem.certificate_number} class="h-6 text-xs" />
|
||||
<Label for="num_cert_origen" class="text-xs">End Date:</Label>
|
||||
<Input id="num_cert_origen" bind:value={lineItem.certificate_number} class="h-6 text-xs" disabled={!lineItem.has_certificate} />
|
||||
<Label for="cert_end_date" class="text-xs">End Date:</Label>
|
||||
<Input id="cert_end_date" type="text" bind:value={lineItem.certificate_end_date} class="h-6 text-xs" placeholder="YYYY-MM-DD" disabled={!lineItem.has_certificate} />
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showExportValuationFields || visibility.showValuationFields}
|
||||
<!-- Valoración: Met Valor, Valor Det., Motivo De Uso (expo or import CR per legacy). -->
|
||||
<div class="space-y-2 rounded-md border p-2">
|
||||
<div class="text-xs font-semibold">Valoración</div>
|
||||
<div class="grid grid-cols-1 gap-2 lg:grid-cols-3">
|
||||
<div class="space-y-0.5">
|
||||
<Label for="met_valor" class="text-xs">Met Valor:</Label>
|
||||
<Input id="met_valor" bind:value={lineItem.valuation_method} class="h-6 text-xs" maxlength={2} placeholder="Método" />
|
||||
</div>
|
||||
<div class="space-y-0.5">
|
||||
<Label for="valor_det" class="text-xs">Valor Det.:</Label>
|
||||
<Input id="valor_det" type="number" step="0.00000001" bind:value={lineItem.valuation_determined_value} class="h-6 text-xs" />
|
||||
</div>
|
||||
<div class="space-y-0.5 lg:col-span-1">
|
||||
<Label for="motivo_uso" class="text-xs">Motivo De Uso:</Label>
|
||||
<textarea
|
||||
id="motivo_uso"
|
||||
bind:value={lineItem.valuation_reason}
|
||||
class="min-h-[60px] w-full rounded-md border border-input bg-background px-2 py-1 text-xs ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
placeholder="Razón valoración"
|
||||
maxlength={500}
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationLocation}
|
||||
<!-- Location -->
|
||||
<div class="space-y-1">
|
||||
<div class="space-y-0.5">
|
||||
@@ -201,13 +234,17 @@
|
||||
<Label for="localizacion_maquinaria" class="text-xs">Location variable</Label>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationMilitary}
|
||||
<!-- Military Equipment -->
|
||||
<div class="flex items-center space-x-1.5 ">
|
||||
<Checkbox id="equipo_militar" bind:checked={lineItem.is_military_mcia} />
|
||||
<Label for="equipo_militar" class="text-xs font-normal">Enable if Item Contains Military Equipment</Label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationOwnOmitAnnex}
|
||||
<div class="grid grid-cols-1 gap-2 lg:grid-cols-2">
|
||||
<div class="flex items-center space-x-1.5 ">
|
||||
<Checkbox id="fa_own_equipment" bind:checked={lineItem.fa_data.own_equipment} />
|
||||
@@ -218,7 +255,9 @@
|
||||
<Label for="fa_omit_annex31" class="text-xs font-normal">Omit Annex 31</Label>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationLotEntry}
|
||||
<!-- Lot and Entry Number -->
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<div class="space-y-0.5">
|
||||
@@ -229,7 +268,8 @@
|
||||
<Label for="num_entrada" class="text-xs">Entry No.:</Label>
|
||||
<Input id="num_entrada" bind:value={descriptions.entry_number} class="h-6 text-xs" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Right Column -->
|
||||
@@ -255,13 +295,16 @@
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
||||
{#if visibility.showContinuationConsiderA31}
|
||||
<!-- Consider in a31 -->
|
||||
<div class="flex items-center space-x-1.5 ">
|
||||
<Checkbox id="a31" bind:checked={descriptions.consider_a31} />
|
||||
<Label for="a31" class="text-xs font-normal">Consider in A31</Label>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if visibility.showContinuationExtraDescription}
|
||||
<!-- Extra Description -->
|
||||
<div class="flex-1 space-y-0.5">
|
||||
<Label for="desc_extra_espanol" class="text-xs">Extra Description in Spanish:</Label>
|
||||
@@ -270,7 +313,8 @@
|
||||
bind:value={descriptions.description_spanish}
|
||||
class="flex min-h-[60px] w-full flex-1 rounded-md border border-input bg-background px-2 py-1 text-xs ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<PaymentMethodDialog bind:open={paymentMethodDialogOpen} onSelect={handlePaymentMethodSelect} />
|
||||
Reference in New Issue
Block a user