SC6 — Itens de Pedido de Venda

Itens do pedido. Cada SC5 (cabecalho) tem N SC6 (itens). Produto, quantidade, preco, TES, CFOP. Chave C6_FILIAL+C6_NUM+C6_ITEM.

SC6 e a tabela de itens do pedido — cada produto/quantidade dentro de um SC5 vira 1 registro aqui. Liberacao (SC9) e geracao de NF (SF2/SD2) puxam dela.

Campos principais

CampoTipoDescricao
C6_FILIALCFilial
C6_NUMCPedido (link SC5)
C6_ITEMCSequencia do item (01, 02, 03...)
C6_PRODUTOCCodigo produto (SB1)
C6_DESCRICDescricao (copiada de SB1 mas editavel)
C6_QTDVENNQuantidade vendida
C6_QTDENTNQuantidade ja entregue (faturada)
C6_PRCVENNPreco unitario
C6_VALORNValor total do item (qtd * preco)
C6_TESCTipo Entrada/Saida (SF4)
C6_CFCCFOP (5101, 5102, 6101...)
C6_LOCALCArmazem de saida
C6_LOTECTLCLote (se produto rastreado)
C6_ENTREGDData prevista entrega
C6_VALDESCNValor de desconto aplicado
C6_NOTACNF gerada (link com SF2)
C6_BLQCR=cancelado, ' '=ativo
C6_QTDLIBNQuantidade ja liberada (em SC9)

Indices

OrdemChave
1C6_FILIAL+C6_NUM+C6_ITEM+C6_PRODUTO
2C6_FILIAL+C6_PRODUTO+C6_NUM
3C6_FILIAL+C6_NUM+C6_PRODUTO
4C6_FILIAL+C6_ENTREG+C6_NUM

Codigo tipico

// Iterar itens de um pedido
SC6->(DBSetOrder(1))
SC6->(DBSeek(xFilial("SC6") + cNumPed))
While !SC6->(Eof()) .And. SC6->C6_NUM == cNumPed
    If Empty(SC6->C6_BLQ)  // ignora cancelados
        // Calcular saldo a faturar
        nSaldo := SC6->C6_QTDVEN - SC6->C6_QTDENT
        If nSaldo > 0
            ConOut("Item " + SC6->C6_ITEM + " saldo: " + cValToChar(nSaldo))
        EndIf
    EndIf
    SC6->(DBSkip())
EndDo

// Pedidos abertos de um produto
SC6->(DBSetOrder(2))
SC6->(DBSeek(xFilial("SC6") + "100001"))
While !SC6->(Eof()) .And. SC6->C6_PRODUTO == "100001"
    If SC6->C6_QTDVEN > SC6->C6_QTDENT  // saldo a faturar
        // ...
    EndIf
    SC6->(DBSkip())
EndDo

Tabelas relacionadas

TabelaRelacao
SC5Cabecalho do pedido
SC9Liberacao do item (1 SC6 -> 1+ SC9)
SF4TES (C6_TES aponta)
SB1Produto
SD2Item da NF gerada (apos faturar)

Pegadinhas

Veja também