Histórico da Página
En este tópico mostraremos un ejemplo de cómo se utiliza un punto de entrada. El punto de entrada utilizado será el SF2460I, ejecutado después de grabar la factura de salida.
En la rutina estándar de la factura de salida (MATA460), se puso a disposición el punto de entrada de la siguiente manera (debido a la extensión del código fuente, ponemos solamente las líneas pertinentes al punto de entrada):
LOCAL lSF2460I := ExistBlock(“SF2460I”)
...
...
...
IF lSF2460I
ExecBlock("SF2460I",.f.,.f.)
ENDIF
…
…
…
A continuación, ponemos un ejemplo del punto de entrada SF2460, demostrando lo que éste puede hacer.
USER FUNCTION SF2460I()
Local aArea := GetArea()
Local aAreaSC6 := SC6->(GetArea())
Local aAreaSC5 := SC5->(GetArea())
Local cTipo := ""
Local cTipoEE := ""
Local cDocE := ""
Local cSerE := ""
Local cItemE := ""
Local cItemP := ""
Local cCodForn := ""
Local cLojForn := ""
Local cDocS := ""
Local cSerS := ""
Local cItemS := ""
Local cCodCli := ""
Local cLojCli := ""
Local cCodigo := ""
Local cLocal := ""
Local nQtdeVen := 0
Local aFifo := {}
Local nXv := 0
Local aAreaSF2 := SF2->( GetArea() )
Local aAreaSD2 := SD2->( GetArea() )
cTipo := SC5->C5_TIPO
dbSelectArea("SD2")
dbSetOrder(3)
dbSeek( SF2->( F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJA ) )
While SD2->( !eof() ) .and. SF2->( F2_FILIAL+F2_DOC+F2_SERIE+F2_CLIENTE+F2_LOJA ) == SD2->( D2_FILIAL+D2_DOC+D2_SERIE+D2_CLIENTE+D2_LOJA )
cTipoEE := ""
cDocE := ""
cSerE := ""
cItemE := ""
cCodForn := ""
cLojForn := ""
cPedido := SD2->D2_PEDIDO
cSerS := SD2->D2_SERIE
cItemS := SD2->D2_ITEM
cDocS := SD2->D2_DOC
cItemP := SD2->D2_ITEMPV
cCodCli := SD2->D2_CLIENTE
cLojCli := SD2->D2_LOJA
cLocal := SD2->D2_LOCAL
cCodigo := SD2->D2_COD
nQtdeVen := SD2->D2_QUANT
lConsig := .F.
dbSelectArea("SC6")
dbSetOrder(1)
If dbSeek(xFilial("SC6") + cPedido + cItemP)
lConsig := SC6->C6_CONSIG_ == '1'
IF cTipo == "D"
aFifo := { {SC6->C6_NFORI, SC6->C6_SERIORI, SC6->C6_ITEMORI,;
nQtdeVen, cCodCli, cLojCli} }
Elseif cTipo == "N"
aFifo := __RecNFEnt(cCodigo,cLocal,nQtdeVen)
Endif
If lConsig
IF cTipo == 'N'
cTipoEE := 'VC'
For nXv := 1 to len(aFifo)
cDocE := aFifo[nXv, 1]
cSerE := aFifo[nXv, 2]
cItemE := aFifo[nXv, 3]
nQtdeVen := aFifo[nXv, 4]
cCodForn := aFifo[nXv, 5]
cLojForn := aFifo[nXv, 6]
U_RegConsig( cTipoEE, cDocE, cSerE, cItemE, cCodForn, cLojForn, cDocS, cSerS, cItemS, cCodCli, cLojCli, nQtdeVen, cCodigo, cLocal )
Next nXv
ElseIf cTipo == 'D'
cTipoEE := 'DC'
For nXv := 1 to len(aFifo)
cDocE := aFifo[nXv, 1]
cSerE := aFifo[nXv, 2]
cItemE := aFifo[nXv, 3]
nQtdeVen := aFifo[nXv, 4]
cCodForn := aFifo[nXv, 5]
cLojForn := aFifo[nXv, 6]
U_RegConsig( cTipoEE, cDocE, cSerE, cItemE, cCodForn, cLojForn, cDocS, cSerS, cItemS, cCodCli, cLojCli, nQtdeVen, cCodigo, cLocal )
Next nXv
Endif
// Registrar na NF
Reclock("SD2", .F.)
SD2->D2_CONSIG_ := "1"
MsUnlock()
Else
// Registrar na NF
Reclock("SD2", .F.)
SD2->D2_CONSIG_ := "2"
MsUnlock()
EndIf
EndIF
dbSelectArea("SD2")
SD2->( dbSkip() )
End
RestArea( aAreaSD2 )
RestArea( aAreaSF2 )
RestArea(aAreaSC5)
RestArea(aAreaSC6)
RestArea(aArea)
Return Nil