Regras e Validações do SDP para inclusão dos dados vindo dos Portos. Validação de Sintaxe (arquivo XSD) 1. Verifica se o arquivo recebido possui a mesma sintaxe apresentada no arquivo XSD. Campos: • Grupo: agrupador. • Numéricos: caracteres de 0 a 9. • Numéricos(N): N caracteres de 0 a 9. • Texto: caracteres alfas-numéricos. • Texto(N): N caracteres alfas-numéricos. • Constante(X): valor fixo X. • Data/Hora: data disposta na forma yyyy-MM-ddTHH:mm:ss onde: o yyyy = ano, 4 dígitos o MM = mês, 2 dígitos o dd = dia, 2 dígitos o T = constante, caractere 'T' o HH = hora, 2 dígitos o mm = minuto, 2 dígitos o ss = segundos, 2 dígitos • Decimal: Numérico com casas decimais • Decimal (N,M): Numérico de N dígitos com M casas decimais. • Valores (tipo - a,b,c...): apenas os valores específicos (a,b,c...) • Tempo: caracteres numéricos no formato hhh:mm onde: o hhh = hora, até 3 dígitos o mm = minuto, 2 dígitos As sintaxes verificadas são: • Movimento: agrupador; uma ocorrência. • Remetente: agrupador; uma ocorrência por movimento. • CNPJ: numérico (14); uma ocorrência por remetente. • RazaoSocial: texto; uma ocorrência por remetente. • ResponsavelEnvio: texto; uma ocorrência por remetente. • TipoRemetente: constante (1); uma ocorrência por remetente. • DataHoraEnvio: data/hora; uma ocorrência por remetente. • Atracacao: agrupador; uma ou mais ocorrências por movimento. • TrigramaPorto: texto (3); uma ocorrência por atracação. • NumeroAtracacao: texto (15); uma ocorrência por atracação. • LocalAtracacao: texto (4); uma ocorrência por atracação. • IMON: numérico; zero a uma ocorrência por atracação. • NumeroInscricaoCapitania: texto (10), zero a uma ocorrência por atracação. • Navegacao: valores (numérico - 1,3,5); uma ocorrência por atracação. • TipoOperacao: valores (numérico - 1,2,3,4,5,6); uma ocorrência por atracação. • CnpjAgente: 14 dígitos numéricos; uma ocorrência por atracação. • CnpjOperador: 14 dígitos numéricos; uma ocorrência por atracação. • DataHoraChegada: data/hora; uma ocorrência por atracação. • DataHoraAtracacao: data/hora; uma ocorrência por atracação. • DataHoraDesatracacao: data/hora; uma ocorrência por atracação. • DataHoraInicioOperacao: data/hora; zero a uma ocorrência por atracação. • DataHoraTerminoOperacao: data/hora; zero a uma ocorrência por atracação. • TempoEspera: tempo; zero a uma ocorrência por atracação. • • • • • • • • • • • • • • • • • • • • • • • 2. 3. 4. ParalizacaoPorto: tempo; zero a uma ocorrência por atracação. ParalizacaoOperador: tempo; zero a uma ocorrência por atracação. InfraEstruturaMaritima: decimal; zero a uma ocorrência por atracação. InfraEstruturaTerrestre: decimal; zero a uma ocorrência por atracação. TaxaAtracacao: decimal; zero a uma ocorrência por atracação. Equipamentos: decimal; zero a uma ocorrência por atracação. MaoObraTerra: decimal; zero a uma ocorrência por atracação. TransporteInterno: decimal, zero a uma ocorrência por atracação. OutrasTaxas: decimal; zero a uma ocorrência por atracação. Carga: agrupador; zero ou mais por atracação. CodigoCarga: texto (8); uma ocorrência por carga. NaturezaCarga: valores (numérico - 1,2,3); uma ocorrência por carga. Sentido: valores (numérico - 1,2); uma ocorrência por carga. Navegacao: valores (numérico - 1,3,5); uma ocorrência por carga. BigramaPaisOrigem: texto (2); uma ocorrência por carga. TrigramaPaisOrigem: texto (3); uma ocorrência por carga. BigramaPaisDestino: texto (2); uma ocorrência por carga. TrigramaPaisDestino: texto (3); uma ocorrência por carga. QuantidadeConteiner: numérico (5); uma ocorrência por carga. PesoCargaBruta: decimal (11,3); uma ocorrência por carga. CargaConteinerizada: agrupador; zero ou mais ocorrências por carga. CodigoCargaConteinerizada: texto (8); uma ocorrência por carga conteinerizada. PesoCargaLiquida: decimal (11,3); uma ocorrência por carga conteinerizada. Verifica se o arquivo é do tipo XML. Exceção: O arquivo deve ter o formato XML. Verifica se o arquivo possui extensão XML. Exceção: O arquivo não possui extensão XML. Verifica se o arquivo possui tamanho maior que o limite (4MB). Exceção: O arquivo excede o tamanho máximo permitido (4MB). Validação do Negócio (regras de negócio) Verifica se as informações se adequam às regras de funcionamento do sistema. As verificações são: • Remetente o CNPJ 1. Verifica se o CNPJ do remetente é válido (regra de formação). Exceção: O CNPJ do Remetente é inválido. • Atracação o Trigrama 1. Verifica se a autoridade portuária está vinculada ao Trigrama informado. Exceção: A autoridade portuária não está vinculada ao Trigrama informado. o IMO e Número Inscrição Capitania 1. Verifica se pelo menos um dos dois está preenchido. Exceção: A embarcação deve ter IMON e/ou Número Inscrição Capitania. o CNPJ do Agente 1. Verifica se o CNPJ do Agente é válido. Exceção: O CNPJ do Agente é inválido. o CNPJ do Operador 1. Verifica se o CNPJ do Operador é válido. Exceção: O CNPJ do Operador é inválido. o Data/Hora Atracação 1. Verifica se a Data/Hora de Atracação é superior à Data/Hora atual. Exceção: Data/ Hora de Atracação deve ser menor que a data atual. 2. o o o o Verifica se a Data/Hora de Atracação é superior à Data/Hora de Desatracação. Exceção: Data/Hora de Atracação deve ser menor que a Data/Hora de Desatracação. Data/Hora Desatracação 1. Verifica se a Data/Hora de Desatracação é superior à Data/Hora atual. Exceção: Data/Hora de Desatracação deve ser menor que a data atual. 2. Verifica se a Data/Hora de Desatracação é inferior à Data/Hora de Término da Operação. Exceção: Data/Hora de Desatracação deve ser maior que a Data/Hora de Término da Operação. Data/Hora Chegada 1. Verifica se a Data/Hora de chegada é superior à Data/Hora atual. Exceção: Data/Hora de Chegada deve ser menor que a data atual. 2. Verifica se a Data/Hora de chegada é superior à Data/Hora de Atracação. Exceção: Data/Hora de Chegada não deve ser menor que a Data/Hora de Atracação. Data/Hora Início da Operação 1. Verifica se a Data/Hora de Início da Operação é superior à Data/Hora atual. Exceção: Data/Hora de Início da Operação deve ser menor que a data atual. 2. Verifica se a Data/Hora de Início da Operação é superior à Data/Hora de Término da Operação. Exceção: Data/Hora de Início da Operação deve ser menor que a Data/Hora de Término da Operação. Data/Hora Término da Operação 1. Verifica se a Data/Hora de Término da Operação é superior à Data/Hora atual. Exceção: Data/Hora de Término da Operação deve ser menor que a data atual. • Carga o Tipo de Operação 1. Verifica se o Tipo de Operação é diferente do definido para Movimentação de Carga e se possui Cargas. Exceção: Essa atracação não é "Movimentação de Carga" e não pode possuir cargas. 2. Verifica se o Tipo de Operação é igual ao definido para Movimentação de Carga e se possui Cargas. Exceção: Toda atracação para "Movimentação de Carga" deve ter pelo menos uma carga cadastrada. o Contêineres 1. Verifica se a carga é do tipo contêiner cheio e se possui as informações para o contêiner. Exceção: A carga do tipo contêiner cheio exige a descrição da carga conteinerizada. 2. Verifica se o contêiner é do tipo contêiner vazio e se possui carga conteinerizada. Exceção: O contêiner deve ser cheio para que haja carga conteinerizada. 3. Verifica se a quantidade de contêineres é igual a zero e se possui carga conteinerizada. Exceção: Quantidade de contêiner deve ser maior que zero para que haja carga conteinerizada. 4. Verifica se há cargas conteinerizadas para uma carga que não seja do tipo contêiner. Exceção: O código de carga não permite que se informe carga conteinerizada. 5. Verifica se o campo Quantidade de Contêiner é maior que zero para cargas que não sejam do tipo contêiner. Exceção: Para o código da carga NCM a quantidade de contêiner deve ser igual à zero. o Carga Liquida x Carga Bruta 1. Verifica se a soma do Peso da Carga Liquida dos Contêineres é menor ou igual ao Peso da Carga Bruta da Carga. Exceção: O somatório do peso líquido da carga dos contêineres deve ser menor que o peso bruto da carga. • Carga Conteinerizada o Código Carga 1. Verifica se o código da carga conteinerizada não é um código de contêiner. Exceção: Não é permitido código de contêiner como carga conteinerizada. o Natureza da Carga 1. Verifica se a Natureza da Carga Conteinerizada é de "Carga Geral". Exceção: Natureza da carga deve ser Carga Geral para cargas do tipo contêiner. Validação de Integridade • Atracação o Atracação já cadastrada 1. Verifica se alguma atracação já foi cadastrada anteriormente na base de dados, através dos campos: Ano da Atracação, Número da Atracação, Porto e Berço. Exceção: Este arquivo contém atracações cadastradas na base. o Berço não cadastrado 1. Verifica se o berço informado consta na base de dados. Exceção: Berço não cadastrado. o Tipo de navegação não cadastrada 1. Verifica se o Tipo de Navegação informada consta na base de dados. Exceção: Tipo de Navegação não cadastrada. • Carga o Código NCM não encontrado 1. Verifica se código NCM da carga e o ano da atracação, existem na base de dados. Exceção: O Código da Carga não consta na base de dados. o Bigrama/Trigrama Origem 1. Verifica se o bigrama e o trigrama de origem constam na base. Exceção: O bigrama ou trigrama do porto de origem não constam na base de dados. o Bigrama/Trigrama Destino 1. Verifica se o bigrama e o trigrama de destino constam na base. Exceção: O bigrama ou trigrama do porto de destino não constam na base de dados. • Carga Conteinerizada o Carga já cadastrada 1. Verifica se a carga já está cadastrada. Exceção: Carga Conteinerizada já cadastrada. o Código NCM não encontrado 1. Verifica se código NCM da carga conteinerizada e o ano da atracação existem na base de dados. Exceção: O Código da Carga Conteinerizada não consta na base de dados.