SD2 sao os itens da NF emitida. Quantidade, preco, base ICMS, IPI por item. Faz par direto com SD1 (entradas) mas pro lado de saidas.
Campos principais
| Campo | Tipo | Descricao |
|---|
| D2_FILIAL | C | Filial |
| D2_DOC | C | NF |
| D2_SERIE | C | Serie |
| D2_CLIENTE | C | Cliente |
| D2_LOJA | C | Loja |
| D2_COD | C | Produto |
| D2_ITEM | C | Sequencia |
| D2_QUANT | N | Quantidade |
| D2_PRCVEN | N | Preco unitario |
| D2_TOTAL | N | Total item |
| D2_TES | C | TES |
| D2_CF | C | CFOP (5101 venda, 5102 revenda...) |
| D2_VALICM | N | ICMS |
| D2_VALIPI | N | IPI |
| D2_PEDIDO | C | Pedido origem |
| D2_ITEMPV | C | Item pedido origem |
Indices
| Ordem | Chave |
|---|
| 1 | D2_FILIAL+D2_DOC+D2_SERIE+D2_CLIENTE+D2_LOJA+D2_COD+D2_ITEM |
| 2 | D2_FILIAL+D2_COD+D2_DOC |
| 3 | D2_FILIAL+D2_PEDIDO+D2_ITEMPV |
Codigo tipico
// Itens vendidos hoje
SD2->(DBSetOrder(1))
SD2->(DBSeek(xFilial("SD2") + cDoc + cSerie + cCli + cLoja))
While !SD2->(Eof()) .And. SD2->D2_DOC == cDoc
nFat += SD2->D2_TOTAL
SD2->(DBSkip())
EndDo
Tabelas relacionadas
| Tabela | Relacao |
|---|
| SF2 | NF cabecalho |
| SB1 | Produto |
| SC6 | Item pedido origem (D2_PEDIDO+D2_ITEMPV) |
| SD3 | Movimento estoque gerado |
Pegadinhas
- Em NF com servico (B1_TIPO=SV), SD2 existe mas nao gera SD3 (sem estoque).
- Devolucao: D2 com CFOP 1xxx/2xxx em vez de 5xxx/6xxx.
- Em geracao automatica via MATA440, ICMS/IPI calculados pelo TES (D2_TES → SF4).
Veja também