# Configurações para Guiné-Bissau Este documento descreve as configurações específicas implementadas para garantir compatibilidade com a Guiné-Bissau. ## Informações do País - **Código do País**: GW (ISO 3166-1 alpha-2) - **Nome**: Guiné-Bissau - **Moeda**: XOF (Franco CFA da África Ocidental) - **Símbolo da Moeda**: FCFA - **Timezone**: Africa/Bissau (UTC+0) - **Locale**: pt_GW (Português da Guiné-Bissau) - **Código Telefônico**: +245 ## Configurações Implementadas ### 1. Timezone O sistema está configurado para usar o timezone `Africa/Bissau` (UTC+0) em todas as operações: - **application.yml**: `spring.jackson.time-zone: Africa/Bissau` - **SigefpApplication**: Configuração do timezone padrão na inicialização - **LocaleConfig**: Bean para garantir timezone correto ### 2. Locale e Idioma - **Locale padrão**: `pt_GW` (Português da Guiné-Bissau) - **Fallback**: `pt` (Português genérico) se pt_GW não estiver disponível - Configurado em `LocaleConfig` e `JacksonConfig` ### 3. Formatação de Datas Formatos padrão implementados: - **Data**: `dd/MM/yyyy` (ex: 25/12/2024) - **Data e Hora**: `dd/MM/yyyy HH:mm` (ex: 25/12/2024 14:30) - **Data e Hora Completo**: `dd/MM/yyyy HH:mm:ss` (ex: 25/12/2024 14:30:45) ### 4. Formatação de Moeda - **Código**: XOF - **Símbolo**: FCFA - **Formato**: Números com separador de milhares (ponto) e decimal (vírgula) - **Exemplo**: `1.234,56 FCFA` ### 5. Formatação de Números - **Separador de milhares**: Ponto (.) - **Separador decimal**: Vírgula (,) - **Exemplo**: `1.234,56` ### 6. Utilitários A classe `GuineaBissauConfig` fornece métodos utilitários para: - `formatCurrency(BigDecimal)`: Formata valores monetários - `formatNumber(BigDecimal)`: Formata números decimais - `formatInteger(Long)`: Formata números inteiros - `getDateFormatter()`: Retorna formatter para datas - `getDateTimeFormatter()`: Retorna formatter para data/hora ## Uso ### No Backend (Java) ```java import br.gov.sigefp.common.util.GuineaBissauConfig; import java.math.BigDecimal; // Formatar moeda BigDecimal valor = new BigDecimal("1234.56"); String formatado = GuineaBissauConfig.formatCurrency(valor); // Resultado: "1.234,56 FCFA" // Formatar número String numero = GuineaBissauConfig.formatNumber(valor); // Resultado: "1.234,56" // Formatar data LocalDate data = LocalDate.now(); String dataFormatada = data.format(GuineaBissauConfig.getDateFormatter()); // Resultado: "25/12/2024" ``` ### Configuração de Perfil Para usar o perfil específico da Guiné-Bissau: ```bash mvn spring-boot:run -Dspring-boot.run.profiles=gw ``` Ou definir a variável de ambiente: ```bash export SPRING_PROFILES_ACTIVE=gw ``` ## Arquivos de Configuração - `application.yml`: Configuração base com timezone e locale - `application-gw.yml`: Perfil específico para Guiné-Bissau - `LocaleConfig.java`: Configuração de locale e timezone - `JacksonConfig.java`: Configuração de serialização JSON - `WebConfig.java`: Configuração de formatação web - `GuineaBissauConfig.java`: Utilitários e constantes ## Validações O sistema valida automaticamente: - Timezone em todas as operações de data/hora - Locale em formatação de números e moedas - Formato de datas em serialização JSON - Formato de números em serialização JSON ## Notas Importantes 1. **PostgreSQL**: Certifique-se de que o PostgreSQL está configurado com timezone `Africa/Bissau`: ```sql SET timezone = 'Africa/Bissau'; ``` 2. **JVM**: O timezone da JVM é configurado automaticamente na inicialização da aplicação. 3. **Frontend**: O frontend deve usar as mesmas configurações de locale e timezone para consistência. 4. **Moeda**: XOF (Franco CFA) é a moeda oficial da Guiné-Bissau e é compartilhada com outros países da África Ocidental.