ソースを参照

comment the filed we dont use

gdias 3 週間 前
コミット
bcaec488d7

+ 47 - 46
src/lib/components/commodities/cpr/ContractCpr.svelte

@@ -9,17 +9,17 @@
       columns: 2,
       fields: [
         { key: 'cpr_contract_code', label: 'Código do Contrato' },
-        { key: 'cpr_contract_number', label: 'Número do Contrato' },
-        { key: 'cpr_number', label: 'Número da CPR' },
-        { key: 'cpr_self_number', label: 'Número Próprio' },
-        { key: 'cpr_ipoc_code', label: 'Código IPOC' },
-        { key: 'cpr_calculation_type_code', label: 'Tipo de Cálculo' },
-        { key: 'cpr_initial_exchange_value', label: 'Valor Inicial de Câmbio' },
-        { key: 'cpr_fixing_type_code', label: 'Tipo de Fixing' },
-        { key: 'cpr_data_source_type_code', label: 'Fonte de Dados' },
-        { key: 'cpr_adjustment_frequency_type_code', label: 'Frequência de Ajuste' },
-        { key: 'cpr_adjustment_pro_rata_type_code', label: 'Ajuste Pro Rata' },
-        { key: 'cpr_adjustment_type_code', label: 'Tipo de Ajuste' }
+        // { key: 'cpr_contract_number', label: 'Número do Contrato' },
+        // { key: 'cpr_number', label: 'Número da CPR' },
+        // { key: 'cpr_self_number', label: 'Número Próprio' },
+        // { key: 'cpr_ipoc_code', label: 'Código IPOC' },
+        // { key: 'cpr_calculation_type_code', label: 'Tipo de Cálculo' },
+        // { key: 'cpr_initial_exchange_value', label: 'Valor Inicial de Câmbio' },
+        // { key: 'cpr_fixing_type_code', label: 'Tipo de Fixing' },
+        // { key: 'cpr_data_source_type_code', label: 'Fonte de Dados' },
+        // { key: 'cpr_adjustment_frequency_type_code', label: 'Frequência de Ajuste' },
+        // { key: 'cpr_adjustment_pro_rata_type_code', label: 'Ajuste Pro Rata' },
+        // { key: 'cpr_adjustment_type_code', label: 'Tipo de Ajuste' }
       ]
     },
     {
@@ -28,11 +28,11 @@
       fields: [
         { key: 'cpr_issue_date', label: 'Data de Emissão', type: 'date' },
         { key: 'cpr_maturity_date', label: 'Data de Vencimento', type: 'date' },
-        { key: 'cpr_reference_date', label: 'Data de Referência', type: 'date' },
+        // { key: 'cpr_reference_date', label: 'Data de Referência', type: 'date' },
         { key: 'cpr_profitability_start_date', label: 'Início da Rentabilidade', type: 'date' },
-        { key: 'cpr_payment_start_date', label: 'Início Pagamentos', type: 'date' },
-        { key: 'cpr_amortization_start_date', label: 'Início Amortização', type: 'date' },
-        { key: 'cpr_interest_payment_date', label: 'Pagamento de Juros', type: 'date' }
+        // { key: 'cpr_payment_start_date', label: 'Início Pagamentos', type: 'date' },
+        // { key: 'cpr_amortization_start_date', label: 'Início Amortização', type: 'date' },
+        // { key: 'cpr_interest_payment_date', label: 'Pagamento de Juros', type: 'date' }
       ]
     },
     {
@@ -42,12 +42,12 @@
         { key: 'cpr_issue_quantity', label: 'Quantidade emitida' },
         { key: 'cpr_issue_value', label: 'Valor da emissão' },
         { key: 'cpr_issue_financial_value', label: 'Valor financeiro' },
-        { key: 'cpr_unit_value', label: 'Valor unitário' },
-        { key: 'cpr_unit_price_value', label: 'Preço unitário' },
-        { key: 'cpr_interest_unit_price_value', label: 'Preço unitário juros' },
-        { key: 'cpr_residual_value', label: 'Valor residual' },
-        { key: 'cpr_amortization_percentage', label: '% de amortização' },
-        { key: 'cpr_event_quantity', label: 'Quantidade do evento' }
+        // { key: 'cpr_unit_value', label: 'Valor unitário' },
+        // { key: 'cpr_unit_price_value', label: 'Preço unitário' },
+        // { key: 'cpr_interest_unit_price_value', label: 'Preço unitário juros' },
+        // { key: 'cpr_residual_value', label: 'Valor residual' },
+        // { key: 'cpr_amortization_percentage', label: '% de amortização' },
+        // { key: 'cpr_event_quantity', label: 'Quantidade do evento' }
       ]
     },
     {
@@ -58,31 +58,32 @@
         { key: 'cpr_creditor_document_number', label: 'Documento do credor' }
       ]
     },
-    {
-      title: 'Pagamento e indexadores',
-      columns: 2,
-      fields: [
-        { key: 'cpr_payment_method_code', label: 'Método de pagamento' },
-        { key: 'cpr_index_code', label: 'Código do índice' },
-        { key: 'cpr_index_short_name', label: 'Nome curto do índice' },
-        { key: 'cpr_vcp_indicator_type_code', label: 'Indicador VCP' },
-        { key: 'cpr_indexador_percentage_value', label: '% do indexador' },
-        { key: 'cpr_interest_rate_spread_percentage', label: 'Spread (%)' },
-        { key: 'cpr_interest_rate_criteria_type_code', label: 'Critério de juros' },
-        { key: 'cpr_interest_payment_value', label: 'Valor de pagamento de juros' },
-        { key: 'cpr_interest_payment_frequency_code', label: 'Frequência de juros' },
-        { key: 'cpr_interest_months_quantity', label: 'Meses de juros' },
-        { key: 'cpr_interestPaymentFlow_time_unit_type_code', label: 'Unidade tempo fluxo juros' },
-        { key: 'cpr_interestPaymentFlow_deadline_type_code', label: 'Prazo fluxo juros' },
-        { key: 'cpr_amortization_type_code', label: 'Tipo de amortização' },
-        { key: 'cpr_amortization_months_quantity', label: 'Meses de amortização' },
-        { key: 'cpr_amortizationPaymentFlow_time_unit_type_code', label: 'Unidade tempo fluxo amort.' },
-        { key: 'cpr_amortizationPaymentFlow_deadline_type_code', label: 'Prazo fluxo amort.' }
-      ]
-    }
+    // {
+    //   title: 'Pagamento e indexadores',
+    //   columns: 3,
+    //   fields: [
+    //     // { key: 'cpr_payment_method_code', label: 'Método de pagamento' },
+    //     // { key: 'cpr_index_code', label: 'Código do índice' },
+    //     // { key: 'cpr_index_short_name', label: 'Nome curto do índice' },
+    //     // { key: 'cpr_vcp_indicator_type_code', label: 'Indicador VCP' },
+    //     // { key: 'cpr_indexador_percentage_value', label: '% do indexador' },
+    //     // { key: 'cpr_interest_rate_spread_percentage', label: 'Spread (%)' },
+    //     // { key: 'cpr_interest_rate_criteria_type_code', label: 'Critério de juros' },
+    //     // { key: 'cpr_interest_payment_value', label: 'Valor de pagamento de juros' },
+    //     // { key: 'cpr_interest_payment_frequency_code', label: 'Frequência de juros' },
+    //     // { key: 'cpr_interest_months_quantity', label: 'Meses de juros' },
+    //     // { key: 'cpr_interestPaymentFlow_time_unit_type_code', label: 'Unidade tempo fluxo juros' },
+    //     // { key: 'cpr_interestPaymentFlow_deadline_type_code', label: 'Prazo fluxo juros' },
+    //     // { key: 'cpr_amortization_type_code', label: 'Tipo de amortização' },
+    //     // { key: 'cpr_amortization_months_quantity', label: 'Meses de amortização' },
+    //     // { key: 'cpr_amortizationPaymentFlow_time_unit_type_code', label: 'Unidade tempo fluxo amort.' },
+    //     // { key: 'cpr_amortizationPaymentFlow_deadline_type_code', label: 'Prazo fluxo amort.' },
+    //     // { key: 'cpr_additional_text', label: 'Observações adicionais', type: 'textarea', rows: 3 }
+    //   ]
+    // }
   ];
 
-  const notesField = { key: 'cpr_additional_text', label: 'Observações adicionais', type: 'textarea' };
+  const notesField = { key: 'cpr_additional_text', label: '', type: 'textarea' };
 
   function getValue(key) {
     return formData?.[key] ?? '';
@@ -144,13 +145,13 @@
           <span class="text-red-500">*</span>
         {/if}
       </label>
-      <textarea
+      <!-- <textarea
         rows="3"
         class="w-full rounded border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-700/70 text-gray-900 dark:text-gray-100 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500"
         value={getValue(notesField.key)}
         on:input={handleInput(notesField.key)}
         required={requiredFields?.has(notesField.key)}
-      ></textarea>
+      ></textarea> -->
     </div>
   </form>
 </div>

+ 21 - 2
src/lib/components/commodities/cpr/CprDetailModal.svelte

@@ -19,6 +19,25 @@
   function handleRetry() {
     dispatch('retry');
   }
+
+  function shouldShowEntry(value) {
+    if (value === null || value === undefined) return false;
+    if (typeof value === 'string') {
+      const normalized = value.trim();
+      if (!normalized) return false;
+      const upper = normalized.toUpperCase();
+      if (upper === 'NA' || upper === 'N/A') return false;
+    }
+    return true;
+  }
+
+  function getVisibleEntries(detail) {
+    if (!detail || typeof detail !== 'object') return [];
+    return Object.entries(detail).filter(([, value]) => shouldShowEntry(value));
+  }
+
+  let visibleEntries = [];
+  $: visibleEntries = getVisibleEntries(detail);
 </script>
 
 {#if visible}
@@ -61,9 +80,9 @@
               Tentar novamente
             </button>
           </div>
-        {:else if detail && Object.keys(detail).length}
+        {:else if visibleEntries.length}
           <div class="grid gap-4 md:grid-cols-2">
-            {#each Object.entries(detail) as [key, value]}
+            {#each visibleEntries as [key, value]}
               <div class="rounded border border-gray-200 bg-white/60 p-3 dark:border-gray-700 dark:bg-gray-800/60">
                 <p class="text-xs font-semibold uppercase text-gray-500 dark:text-gray-400">{formatKey(key)}</p>
                 <p class="text-sm font-medium text-gray-900 dark:text-gray-100">{formatValue(value)}</p>

+ 12 - 24
src/lib/components/commodities/cpr/EmissionCpr.svelte

@@ -15,18 +15,6 @@
   ];
 
   const sections = [
-    {
-      title: 'Emissão e Entrega',
-      description: 'Local de entrega e prazos do documento.',
-      columns: 2,
-      fields: [
-        { key: 'cpr_place_name', label: 'Local de Entrega' },
-        { key: 'cpr_document_deadline_days_number', label: 'Prazo para documentos (dias)' },
-        { key: 'cpr_deliveryPlace_state_acronym', label: 'Estado da entrega' },
-        { key: 'cpr_deliveryPlace_city_name', label: 'Cidade da entrega' },
-        { key: 'cpr_deliveryPlace_ibge_code', label: 'IBGE da entrega' }
-      ]
-    },
     {
       title: 'Produto e lastro',
       description: 'Características do produto e da produção.',
@@ -43,18 +31,18 @@
       ],
       textarea: { key: 'cpr_product_description', label: 'Descrição do produto' }
     },
-    {
-      title: 'Green CPR',
-      description: 'Campos específicos para CPRs verdes.',
-      columns: 2,
-      fields: [
-        { key: 'cpr_green_cpr_indicator', label: 'Indicador Green CPR' },
-        { key: 'cpr_green_cpr_certificate_name', label: 'Certificadora' },
-        { key: 'cpr_green_cpr_certificate_cnpj_number', label: 'CNPJ da certificadora' },
-        { key: 'cpr_green_cpr_declaration_indicator', label: 'Declaração apresentada' }
-      ],
-      textarea: { key: 'cpr_green_cpr_georeferencing_description', label: 'Descrição do georreferenciamento' }
-    }
+    // {
+    //   title: 'Green CPR',
+    //   description: 'Campos específicos para CPRs verdes.',
+    //   columns: 2,
+    //   fields: [
+    //     // { key: 'cpr_green_cpr_indicator', label: 'Indicador Green CPR' },
+    //     // { key: 'cpr_green_cpr_certificate_name', label: 'Certificadora' },
+    //     // { key: 'cpr_green_cpr_certificate_cnpj_number', label: 'CNPJ da certificadora' },
+    //     // { key: 'cpr_green_cpr_declaration_indicator', label: 'Declaração apresentada' }
+    //   ],
+    //   textarea: { key: 'cpr_green_cpr_georeferencing_description', label: 'Descrição do georreferenciamento' }
+    // }
   ];
 
   function getValue(key) {

+ 36 - 36
src/lib/components/commodities/cpr/RegisterCpr.svelte

@@ -16,9 +16,9 @@
       columns: 2,
       fields: [
         { key: 'cpr_type_code', label: 'Tipo da CPR' },
-        { key: 'cpr_internal_control_number', label: 'Controle Interno' },
-        { key: 'cpr_isin_code', label: 'Código ISIN' },
-        { key: 'cpr_reference_date', label: 'Data de Referência', type: 'date' },
+        // { key: 'cpr_internal_control_number', label: 'Controle Interno' },
+        // { key: 'cpr_isin_code', label: 'Código ISIN' },
+        // { key: 'cpr_reference_date', label: 'Data de Referência', type: 'date' },
         { key: 'cpr_electronic_emission_indicator', label: 'Emissão Eletrônica', type: 'select', options: indicatorOptions },
         { key: 'cpr_automatic_expiration_indicator', label: 'Expiração Automática', type: 'select', options: indicatorOptions }
       ]
@@ -36,36 +36,36 @@
         { key: 'cpr_otc_settlement_bank_account_code', label: 'Conta Bancária de Liquidação' }
       ]
     },
-    {
-      title: 'Depósito e Garantias',
-      description: 'Detalhes complementares sobre garantias e depósitos.',
-      columns: 3,
-      fields: [
-        { key: 'cpr_ballast_type_code', label: 'Tipo de lastro' },
-        { key: 'cpr_lot_number', label: 'Número do lote' },
-        { key: 'cpr_ballast_quantity', label: 'Quantidade do lastro' },
-        { key: 'cpr_currency_code', label: 'Código da moeda' },
-        { key: 'cpr_transaction_identification', label: 'Identificação da operação' },
-        { key: 'cpr_guarantee_limit_type_code', label: 'Tipo limite garantia' },
-        { key: 'cpr_mother_code', label: 'Código mãe' },
-        { key: 'cpr_deposit_quantity', label: 'Quantidade depositada' },
-        { key: 'cpr_deposit_unit_price_value', label: 'Valor unitário depósito' },
-        { key: 'cpr_deposit_person_type_acronym', label: 'Tipo pessoa depósito' },
-        { key: 'cpr_deposit_document_number', label: 'Documento do depositante' }
-      ]
-    },
-    {
-      title: 'Eventos e operação',
-      description: 'Campos relacionados aos eventos e códigos regulatórios.',
-      columns: 2,
-      fields: [
-        { key: 'cpr_event_type_code', label: 'Tipo do evento' },
-        { key: 'cpr_event_original_date', label: 'Data original do evento', type: 'date' },
-        { key: 'cpr_operation_modality_type_code', label: 'Modalidade da operação' },
-        { key: 'cpr_bacen_reference_code', label: 'Código Bacen' },
-        { key: 'cpr_children_codes', label: 'Códigos filhos (separados por vírgula)', type: 'textarea' }
-      ]
-    },
+    // {
+    //   title: 'Depósito e Garantias',
+    //   description: 'Detalhes complementares sobre garantias e depósitos.',
+    //   columns: 3,
+    //   fields: [
+    //     // { key: 'cpr_ballast_type_code', label: 'Tipo de lastro' },
+    //     // { key: 'cpr_lot_number', label: 'Número do lote' },
+    //     // { key: 'cpr_ballast_quantity', label: 'Quantidade do lastro' },
+    //     // { key: 'cpr_currency_code', label: 'Código da moeda' },
+    //     // { key: 'cpr_transaction_identification', label: 'Identificação da operação' },
+    //     // { key: 'cpr_guarantee_limit_type_code', label: 'Tipo limite garantia' },
+    //     // { key: 'cpr_mother_code', label: 'Código mãe' },
+    //     // { key: 'cpr_deposit_quantity', label: 'Quantidade depositada' },
+    //     // { key: 'cpr_deposit_unit_price_value', label: 'Valor unitário depósito' },
+    //     // { key: 'cpr_deposit_person_type_acronym', label: 'Tipo pessoa depósito' },
+    //     // { key: 'cpr_deposit_document_number', label: 'Documento do depositante' }
+    //   ]
+    // },
+    // {
+    //   title: 'Eventos e operação',
+    //   description: 'Campos relacionados aos eventos e códigos regulatórios.',
+    //   columns: 2,
+    //   fields: [
+    //     // { key: 'cpr_event_type_code', label: 'Tipo do evento' },
+    //     // { key: 'cpr_event_original_date', label: 'Data original do evento', type: 'date' },
+    //     // { key: 'cpr_operation_modality_type_code', label: 'Modalidade da operação' },
+    //     // { key: 'cpr_bacen_reference_code', label: 'Código Bacen' },
+    //     // { key: 'cpr_children_codes', label: 'Códigos filhos (separados por vírgula)', type: 'textarea' }
+    //   ]
+    // },
     {
       title: 'SCR e finalidades',
       description: 'Dados necessários para reporte ao SCR.',
@@ -73,9 +73,9 @@
       fields: [
         { key: 'cpr_scr_type_code', label: 'Tipo SCR' },
         { key: 'cpr_finality_code', label: 'Finalidade' },
-        { key: 'cpr_scr_customer_detail', label: 'Detalhe do cliente' },
-        { key: 'cpr_scr_person_type_acronym', label: 'Tipo de pessoa SCR' },
-        { key: 'cpr_scr_document_number', label: 'Documento do SCR' },
+        // { key: 'cpr_scr_customer_detail', label: 'Detalhe do cliente' },
+        // { key: 'cpr_scr_person_type_acronym', label: 'Tipo de pessoa SCR' },
+        // { key: 'cpr_scr_document_number', label: 'Documento do SCR' },
         { key: 'cpr_contract_code', label: 'Código do contrato principal' }
       ]
     }

+ 14 - 12
src/routes/cpr/+page.svelte

@@ -164,10 +164,10 @@
     'cpr_place_name',
     'cpr_deliveryPlace_state_acronym',
     'cpr_deliveryPlace_city_name',
-    'cpr_issuer_name',
-    'cpr_issuers_document_number',
-    'cpr_issuers_person_type_acronym',
+    'cpr_deliveryPlace_ibge_code',
     'cpr_issuer_legal_nature_code',
+    'cpr_issuers_person_type_acronym',
+    'cpr_issuers_document_number',
     'cpr_issuers_state_acronym',
     'cpr_issuers_city_name',
     'cpr_scr_type_code',
@@ -176,13 +176,6 @@
     'cpr_creditor_name',
     'cpr_creditor_document_number',
     'cpr_production_place_name',
-    'cpr_property_registration_number',
-    'cpr_notary_name',
-    'cpr_total_production_area_in_hectares_number',
-    'cpr_total_area_in_hectares_number',
-    'cpr_car_code',
-    'cpr_latitude_code',
-    'cpr_longitude_code',
     'cpr_zip_code'
   ]);
 
@@ -713,11 +706,20 @@
                       <td class="px-4 py-3">
                         <button
                           type="button"
-                          class="text-sm font-medium text-blue-600 hover:text-blue-500 disabled:opacity-60"
+                          class="inline-flex items-center justify-center rounded-full p-1.5 text-blue-600 hover:text-blue-500 disabled:opacity-60"
                           on:click={() => handleViewDetails(row.cpr_id)}
                           disabled={!row.cpr_id || detailLoading && selectedDetailId === row.cpr_id}
+                          aria-label={detailLoading && selectedDetailId === row.cpr_id ? 'Carregando detalhes' : 'Mais informações'}
                         >
-                          {detailLoading && selectedDetailId === row.cpr_id ? 'Carregando...' : 'Mais informações'}
+                          <svg
+                            class="h-4 w-4"
+                            viewBox="0 0 20 20"
+                            fill="none"
+                            stroke="currentColor"
+                            stroke-width="1.8"
+                          >
+                            <path d="M7 5l5 5-5 5" stroke-linecap="round" stroke-linejoin="round" />
+                          </svg>
                         </button>
                       </td>
                     </tr>