# REGRA AUTOMÁTICA ICMS-ST – CAPESYSTEM

## Motor Fiscal – Bahia

### Base Legal

- Convênio ICMS nº 142/2018

- RICMS-BA – Decreto 13.780/2012

- Anexo X

---

## 1. IDENTIFICAÇÃO AUTOMÁTICA

### Critérios para ST = true

```python
if produto.ncm and produto.cest:
    if CestNcm.tem_st_no_estado(produto.cest, 'BA'):
        produto.st = True
        produto.csosn_padrao = '500'  # SN
        produto.cst_padrao = '060'     # RPA

```

### Campos verificados:

| Campo | Obrigatório | Descrição |
| ------- | ------------- | ----------- |
| `ncm` | ✅ | NCM válido (8 dígitos) |
| `cest` | ✅ | CEST válido (7 dígitos) |
| `st_ba` | Auto | Flag ST Bahia na tabela cest_ncm |

---

## 2. REGRA DE ENTRADA

### Entrada com ICMS-ST destacado

| Ação | Comportamento |
| ------ | --------------- |
| Crédito ICMS | ❌ Não gerar |
| ICMS-ST | Compõe custo do produto |
| Saída posterior | Bloquear ICMS próprio |

### Entrada interestadual sem ST

| Verificação | Ação |
| ------------- | ------ |
| Protocolo existe? | ST na origem válida |
| Protocolo inexiste? | Gerar antecipação ICMS-ST |
| Recolhimento | DAE/GNRE Bahia |

---

## 3. REGRA DE VENDA – PDV / NF-e / NFC-e

### Produto com ST

```python
def aplicar_regra_st_venda(item):
    if produto.st:
        item.cst = '060' if empresa.regime == 'RPA' else None
        item.csosn = '500' if empresa.regime == 'SIMPLES' else None
        item.icms_valor = 0
        item.icms_base = 0
        item.icms_aliquota = 0
        # ICMS-ST apenas informativo
        item.icms_st_valor = 0
        item.icms_st_base = 0

```

### Campos na NF-e/NFC-e

| Tag | Valor ST |
| ----- | ---------- |
| `<CST>` | 060 (RPA) |
| `<CSOSN>` | 500 (SN) |
| `<vBC>` | 0.00 |
| `<vICMS>` | 0.00 |
| `<pICMS>` | 0.00 |

---

## 4. SIMPLES NACIONAL

### Tratamento no DAS

| Item | Comportamento |
| ------ | --------------- |
| ICMS-ST | ❌ Fora do DAS |
| Receita Bruta | Inclui valor da venda |
| PGDAS | Não computa ICMS desta operação |

### CSOSN permitidos para ST

| CSOSN | Permitido |
| ------- | ----------- |
| 500 | ✅ Obrigatório |
| 102 | ❌ Bloqueado |
| 103 | ❌ Bloqueado |
| Outros | ❌ Bloqueado |

---

## 5. EXCEÇÕES

### Quando ST = false

| Situação | Resultado |
| ---------- | ----------- |
| CEST preenchido mas segmento não adotado na BA | ST = false |
| Produto sem CEST | ST = false |
| Produto sem NCM | ST = false |
| NCM/CEST incompatíveis | ST = false |

### Venda interestadual

| Destino | Tratamento |
| --------- | ------------ |
| UF com ST do produto | Verificar protocolo |
| UF sem ST do produto | Tributação normal |
| Consumidor final fora BA | Validar regra destino |

---

## 6. LOG DE AUDITORIA

### Campos registrados

```python
registrar_auditoria(
    acao='validar_st',
    entidade='produto',
    entidade_id=produto.id,
    dados_adicionais={
        'cest': produto.cest,
        'ncm': produto.ncm,
        'st_aplicada': True,
        'uf': 'BA',
        'base_legal': 'Anexo X RICMS-BA',
        'cst_aplicado': '060',
        'csosn_aplicado': '500',
        'data_validacao': datetime.now().isoformat()
    }
)

```

---

## 7. ERROS A BLOQUEAR

### Validações obrigatórias

| Erro | Mensagem | Código |
| ------ | ---------- | -------- |
| ST com ICMS próprio | "Produto ST não pode destacar ICMS próprio" | ERR_ST_001 |
| CSOSN incompatível | "CSOSN deve ser 500 para produto ST" | ERR_ST_002 |
| CST incompatível | "CST deve ser 060 para produto ST" | ERR_ST_003 |
| CEST obrigatório | "Produto do segmento ST requer CEST" | ERR_ST_004 |
| NCM/CEST inválido | "NCM não compatível com CEST informado" | ERR_ST_005 |

### Implementação

```python
def validar_item_nfe(item):
    if item.produto.st:
        if item.icms_valor > 0:
            raise ValidationError("ERR_ST_001: Produto ST não pode destacar ICMS próprio")
        
        if empresa.regime == 'SIMPLES' and item.csosn != '500':
            raise ValidationError("ERR_ST_002: CSOSN deve ser 500 para produto ST")
        
        if empresa.regime == 'RPA' and item.cst != '060':
            raise ValidationError("ERR_ST_003: CST deve ser 060 para produto ST")

```

---

## 8. BENEFÍCIO OPERACIONAL

| Benefício | Descrição |
| ----------- | ----------- |
| 🔒 Redução de erro fiscal | Validação automática impede erros |
| 📋 Padronização | CST/CSOSN aplicados automaticamente |
| ✅ Conformidade SEFAZ-BA | Atende legislação estadual |
| 📊 Auditoria | Log completo de todas as operações |
| ⚡ Agilidade | Tributação calculada sem intervenção |

---

## 9. INTEGRAÇÃO COM SISTEMA

### Modelo Produto

```python
class Produto(db.Model):
    # ... campos existentes ...
    
    # ST calculada automaticamente
    @property
    def tem_st_bahia(self):
        if not self.cest or not self.ncm:
            return False
        return CestNcm.tem_st_no_estado(self.cest, 'BA')
    
    @property
    def cst_st(self):
        """Retorna CST para RPA se produto tem ST"""
        return '060' if self.tem_st_bahia else None
    
    @property
    def csosn_st(self):
        """Retorna CSOSN para SN se produto tem ST"""
        return '500' if self.tem_st_bahia else None

```

### API de Validação

```
GET /api/fiscal/verificar-st/{cest}/{uf}

Response:
{
    "tem_st": true,
    "csosn_recomendado": "500",
    "cst_recomendado": "060",
    "base_legal": "Decreto nº 13.780/2012 - Anexo X RICMS-BA"
}

```

---

Arquivo oficial para motor fiscal CapeSystem.
Atualizado em: 30/12/2025
