# ⚡ QUICK REFERENCE - Padrões em 1 Página

## 🗄️ BANCO DE DADOS

```sql
CREATE TABLE public.dim_novo_modulo (
	id serial4 NOT NULL PRIMARY KEY,
	empresa int4 NOT NULL,
	descricao varchar NOT NULL,
	status int4 DEFAULT 0 NOT NULL
);
```

**Padrão:** `id` (serial), `status` (0/2), `empresa` (obrigatório)

---

## 📝 SELECT.PHP

```php
<?php require ('../include/autenticacao.php');

if(strpos($rotina, 'dm_novo') === false) { echo "Sem permissão"; exit; }

$query = "SELECT * FROM dim_novo WHERE empresa=$codempresa AND status != 2";
$re = pg_query($bdcon, $query);
?>
```

---

## 📋 INDEX.PHP

```php
<?php require ('../include/validacaopermissao.php');
$rot = 'dm_novo';
validarPermissaoOuRedirecionar($rot, 'visualizar');
$permissoes = obterTodasPermissoes($rot);  // 1x antes do loop
$perm_editar = $permissoes['editar'];
$perm_deletar = $permissoes['deletar'];
?>
```

---

## ✏️ CAd.PHP

```php
<?php require ('../include/validacaopermissao.php');
$rot = 'dm_novo';
validarPermissaoOuRedirecionar($rot, 'visualizar');
include ('../include/inicio.php');
?>
```

---

## 💾 INSERT.PHP

```php
<?php require ('../include/validacaopermissao.php');
$rot = 'dm_novo';

if($action == 1) {
	validarPermissaoOuRedirecionar($rot, 'editar');
	$sql = "UPDATE dim_novo SET descricao='$desc', status=$status WHERE id=$id AND empresa=$empresa";
} else {
	validarPermissaoOuRedirecionar($rot, 'criar');
	$sql = "INSERT INTO dim_novo (empresa, descricao, status) VALUES ($empresa, '$desc', 0)";
}

pg_query($bdcon, $sql);
echo "<script>alert('Sucesso'); location='index';</script>";
?>
```

---

## 🗑️ DELETE.PHP (Soft Delete)

```php
<?php require ('../include/validacaopermissao.php');
$rot = 'dm_novo';
$empresa = $_SESSION['Codempresa'];

validarPermissaoOuRedirecionar($rot, 'deletar');

// ✅ SEMPRE UPDATE status=2, NUNCA DELETE
$sql = "UPDATE dim_novo SET status=2 WHERE id=$id AND empresa=$empresa";

pg_query($bdcon, $sql);
echo "<script>alert('Excluído'); location='index';</script>";
?>
```

---

## 🔍 FILTRO.PHP

```php
<?php 
require ('../include/autenticacao.php'); 
require ('../include/filtros_db.php');
require ('select.php');

$titulo = 'Filtrar Novo';
$action = '0';
$filtros = isset($_POST['filtros']) ? $_POST['filtros'] : [];
?>
```

---

## 🎯 4 PERMISSÕES OBRIGATÓRIAS

| Ação | Função | Onde Usar |
|------|--------|-----------|
| `visualizar` | Listar | select.php, cad.php, index.php |
| `criar` | Inserir | insert.php (else) |
| `editar` | Atualizar | insert.php (if $action==1) |
| `deletar` | Soft delete | delete.php |

---

## ✅ VALIDAÇÃO RÁPIDA

- [ ] DDL: `id serial4`, `status DEFAULT 0`, `empresa int4`
- [ ] select.php: `WHERE empresa=$codempresa AND status != 2`
- [ ] insert.php: `validar 'criar'` e `validar 'editar'`
- [ ] delete.php: `UPDATE status=2` (nunca DELETE)
- [ ] index.php: `obterTodasPermissoes()` 1x antes do loop
- [ ] cad.php: `validar 'visualizar'`

---

## 🚀 EM 5 PASSOS

1. Criar pasta: `mkdir dm_novo_modulo`
2. Criar DDL com id, empresa, status
3. Criar select.php com filtro `status != 2`
4. Usar prompt Copilot com DDL
5. Configurar permissões em `sis004a_grupopermissao`

---

> **NUNCA ESQUEÇA:** Soft delete sempre! `UPDATE status=2`, NUNCA `DELETE FROM`

