---
# System prepended metadata

title: Padrões de Integrações

---

# Padrões de Integrações
> [name=Joelton da silva de moura]
> [time=Dec 23, 2021 11:47]


Neste documento será trato o padrão de integração

### Padrão de criação de objeto

Para criação de objeto no banco de dados externo deve manter um padrão de
nomenclatura: **inicial objeto** + **psi** + **nome objeto**.

<div style="
            background-color: #e9e9e9;
            color: inherit;
            height: 90; 
            width: 570PX; 
            border-radius: 15px 0px 15px 0px; 
            padding: 5px ">
     vw_psi_filial </br> 
     prc_psi_filial </br> 
     pkg_psi_filial
</div>

### Fluxo de consulta com base externa

As consulta de select entre clint, api e banco externo deve ser trata utilizando recurso de view com isso evitamos repetição de sql e melhoramos a semântica. Além de facilitar futuras integrações onde pode ser passado qual views o sistema já espera receber.

```mermaid
stateDiagram
   req_consulta --> api
    api -->  req_consulta
    api --> view
    view --> bd_externo
    bd_externo --> resultado
    resultado --> api
```

### Modelos de Views

**Regras de Modelagem**

- As view deve ser modeladas de forma que retorne apenas o espelho da entidade ou seja deve ser evitado multiplos join dentro da view.
- Os domínios que representa ativo ou inativo devera retorna **A** ou **I**.
- Campos de **FK** e **PK** nas views tem que está identificados
- Para melhor peformace retorna apenas campos que será utilizado evitando o uso do famoso retorna tudo ou ordenação.
- Retorna campos sem mascará Ex.: CNPJ 00.000.000/0000-00 - 00000000000000

<details>
<summary >
    <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_filial</a>
</summary>

nesta view será retornada os dados das empresas.

| column_name | data_type | data_length | nullable | comments                               |
| ----------- | --------- | ----------- | -------- | -------------------------------------- |
| DTEXCLUSAO  | DATE      | 7           | Y        | Indica a data de inativação da filial. |
| FANTASIA    | STRING    | 25          | Y        |                                        |
| CODFIL_PK   | STRING    | 2           | N        |                                        |
| RAZAOSOCIAL | STRING    | 40          | N        |                                        |
| CIDADE      | STRING    | 30          | Y        |                                        |
| UF          | STRING    | 2           | Y        |                                        |
| ATIVO       | STRING    | 1           | N        | Indica se filial está ativa ou inativa |

---

DML da view

```sql
create or replace view vw_psi_filial as  select
     CODIGO AS CODFIL_PK 
    ,RAZAOSOCIAL
    ,FANTASIA
    ,CIDADE
    ,UF
    ,DECODE(pcfilial.dtexclusao, NULL, 'A', 'I') AS ATIVO
    ,DTEXCLUSAO
from pcfilial
```

</details>

<details>
<summary >
    <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_fornecedores</a>
</summary>

View que retorna dados dos fornecedores

| column_name  | data_type | data_length | nullable | comments |
| ------------ | --------- | ----------- | -------- | -------- |
| TIPOFORNEC   | VARCHAR2  | 1           | Y        |          |
| CODFORNEC_PK | NUMBER    | 22          | N        |          |
| RAZAOSOCIAL  | VARCHAR2  | 60          | N        |          |
| CIDADE       | VARCHAR2  | 15          | Y        |          |
| ESTADO       | VARCHAR2  | 2           | Y        |          |
| CNPJ         | VARCHAR2  | 18          | Y        |          |
| REVENDA      | VARCHAR2  | 1           | Y        |          |
| DTEXCLUSAO   | DATE      | 7           | Y        |          |
| FANTASIA     | VARCHAR2  | 60          | Y        |          |
| Ativo        | VARCHAR2  | 1           | Y        |          |

---

DML da view

```sql
CREATE OR REPLACE VIEW vw_psi_fornecedores AS SELECT
 PCFORNEC.CODFORNEC AS CODFORNEC_PK,
 PCFORNEC.FORNECEDOR AS RAZAOSOCIAL,
 PCFORNEC.FANTASIA,
 REGEXP_REPLACE(PCFORNEC.CGC, '[^[:digit:]]') AS CNPJ,
 PCFORNEC.ESTADO,
 PCFORNEC.CIDADE,
 PCFORNEC.DTEXCLUSAO,
 DECODE(DTEXCLUSAO, NULL, 'A', 'I') ATIVO,
 CASE
    WHEN PCFORNEC.TIPOFORNEC = 'V'
        THEN 'COMÉRCIO VAREJISTA'
    WHEN PCFORNEC.TIPOFORNEC = 'D'
        THEN 'CENTRAL DE DISTRIBUIÇÃO'
    WHEN PCFORNEC.TIPOFORNEC = 'C'
        THEN 'COMÉRCIO ATACADISTA'
    WHEN PCFORNEC.TIPOFORNEC = 'I'
        THEN 'INDÚSTRIA'
    WHEN PCFORNEC.TIPOFORNEC = 'S'
        THEN 'PRESTADOR SERVIÇOS'
    ELSE 'OUTROS' END TIPOFORNEC,
 CASE
    WHEN PCFORNEC.REVENDA = 'B'
        THEN 'BENEFICIAMENTO'
    WHEN PCFORNEC.REVENDA = 'C'
        THEN 'COMUNICAÇÃO'
    WHEN PCFORNEC.REVENDA = 'O'
        THEN 'CONSUMO'
    WHEN PCFORNEC.REVENDA = 'E'
        THEN 'ENERGIA'
    WHEN PCFORNEC.REVENDA = 'X'
        THEN 'EXPORTADOR'
    WHEN PCFORNEC.REVENDA = 'N'
        THEN 'NÃO REVENDA'
    WHEN PCFORNEC.REVENDA = 'P'
        THEN 'PROFISSIONAL LIBERAL'
    WHEN PCFORNEC.REVENDA = 'T'
        THEN 'TRANSPORTADORA'
    END REVENDA
FROM PCFORNEC
```

</details>

<details>
<summary >
    <a style=" font-weight: bold; color: #000">&nbsp;&nbsp;vw_psi_marcas</a>
</summary>

View que retorna dados de marcas

| column_name | data_type | data_length | nullable | comments                                 |
| ----------- | --------- | ----------- | -------- | ---------------------------------------- |
| column_name | data_type | data_length | nullable | comments                                 |
| CODMARCA_PK | NUMBER    | 22          | N        | Indica o código da marca.                |
| MARCA       | VARCHAR2  | 40          | Y        | Indica o descrição da marca.             |
| ATIVO       | VARCHAR2  | 1           | Y        | Indica se a marca esta ativa ou inativa. |

---

DML da view

```sql
create or replace view vw_psi_marcas as SELECT
    PCMARCA.CODMARCA as CODMARCA_PK,
    PCMARCA.MARCA,
    PCMARCA.ATIVO
FROM PCMARCA
```

</details>

### Criação de novas entidades

Se no projeto for preciso criar uma nova entidade que não tenha no cliente a criação da mesma não dever ser feita na base externa (`base do cliente`) contendo na sua nomenclatura que se trata de um objeto integrador.

