Escolar Documentos
Profissional Documentos
Cultura Documentos
CH"
#include "PROTHEUS.CH"
#include "APVT100.CH"
#include "TBICONN.CH"
#include "TBICODE.CH"
//--------------------------------------------------------------------------------------
/*/
{Protheus.doc} FSACDP01
@since 11/12/14
@version P.11
@param Nenhum
@return Nenhum
@obs Nenhum
------------+-----------------+---------------------------------------------------------
------------+-----------------+---------------------------------------------------------
/*/
//---------------------------------------------------------------------------------------
VTSetSize(nMaxRow,nMaxCol)
cOpcao := Space(1)
cOpcao := space(1)
VTCLEARBUFFER()
VTRead
If Empty(cOpcao)
Loop
Else
If cOpcao $ "1/2"
fArmTra(cOpcao)
EndIf
EndIf
EndDo
Return(Nil)
//--------------------------------------------------------------------------------------
/*/
{Protheus.doc} fArmTra
@since 11/12/14
@version P.11
@param Nenhum
@return Nenhum
@obs Nenhum
------------+-----------------+---------------------------------------------------------
------------+-----------------+---------------------------------------------------------
/*/
//---------------------------------------------------------------------------------------
Local nSaldBF := 0
SBE->(dbSetOrder(1))
Do While .T.
VTCLEARBUFFER()
cArEndO := Space(TamSX3("D3_LOCAL")[1]+TamSX3("D3_LOCALIZ")[1])
VTRead
If (AllTrim(cArEndO) == "999999")
Exit
EndIf
cArmOri := SubStr(cArEndO,1,TamSX3("D3_LOCAL")[1])
cEndOri := SubStr(cArEndO,1+TamSX3("D3_LOCAL")[1],TamSX3("D3_LOCALIZ")[1])
If !SBE->(MsSeek(xFilial("SBE")+cArEndO))
VTBEEP(1)
Loop
EndIf
VTCLEARBUFFER()
cPrLoId := Space(TamSX3("D3_LOTECTL")[1]+TamSX3("D3_NUMLOTE")[1]+TamSX3("D3_COD")[1])
VTRead
If (AllTrim(cPrLoId) == "999999")
Exit
EndIf
cNuLote := SubStr(cPrLoId,1,TamSX3("D3_LOTECTL")[1])
cNumIDE := SubStr(cPrLoId,1+TamSX3("D3_LOTECTL")[1],TamSX3("D3_NUMLOTE")[1])
cProdut := SubStr(cPrLoId,1+TamSX3("D3_LOTECTL")[1]+TamSX3("D3_NUMLOTE")[1],TamSX3("D3_COD")[1])
VTCLEARBUFFER()
cQuanti := Space(TamSX3("D3_QUANT")[1])
VTRead
If (AllTrim(cQuanti) == "999999")
Exit
EndIf
SBF->(dbSetOrder(1))
SBF->(MsSeek(xFilial("SBF")+cArmOri+cEndOri+cProdut+AvKey("","BF_NUMSERI")+cNuLote+cNumIDE)) //--
BF_FILIAL+BF_LOCAL+BF_LOCALIZ+BF_PRODUTO+BF_NUMSERI+BF_LOTECTL+BF_NUMLOTE
nSaldBF := SBFSaldo()
VTBEEP(1)
Loop
EndIf
VTCLEARBUFFER()
cArEndD := Space(TamSX3("D3_LOCAL")[1]+TamSX3("D3_LOCALIZ")[1])
VTRead
If (AllTrim(cArEndD) == "999999")
Exit
EndIf
cArmDes := SubStr(cArEndD,1,TamSX3("D3_LOCAL")[1])
cEndDes := SubStr(cArEndD,1+TamSX3("D3_LOCAL")[1],TamSX3("D3_LOCALIZ")[1])
If !SBE->(MsSeek(xFilial("SBE")+cArEndD))
VTBEEP(1)
Loop
EndIf
VTCLEARBUFFER()
cMot := Space(TamSX3("ZR_CODIGO")[1])
VTRead
If (AllTrim(cMot) == "9")
Exit
EndIf
//If !Posicione("SZR",1,xFilial("SZR")+AvKey(cMot,"ZR_CODIGO"),"ZR_DESCRI")
DbSelectArea("SZR")
SZR->(dbSetOrder(1))
SZR->(dbGoTop(1))
If !SZR->(MsSeek(xFilial("SZR")+cMot))
VTBEEP(1)
Loop
Else
cDesMot := SZR->ZR_DESCRI
EndIf
EndIf*/
cConfir := Space(1)
VTCLEARBUFFER()
VTCLEAR() // Limpa tela
VTRead
If (AllTrim(cConfir) == "2")
Loop
EndIf
VTBEEP(1)
Loop
ElseIf !fValArm(cArmOri,cArmDes,cProdut)
VTBEEP(1)
Loop
EndIf
//fMovPro(cArmOri,cArmDes,cEndOri,cEndDes,cProdut,cNuLote,cNumIDE,cQuanti,cMot)
fMovPro(cArmOri,cArmDes,cEndOri,cEndDes,cProdut,cNuLote,cNumIDE,cQuanti)
EndDo
Return(Nil)
//--------------------------------------------------------------------------------------
/*/
{Protheus.doc} fMovPro
@since 11/12/14
@version P.11
@param Nenhum
@return Nenhum
@obs Nenhum
Prod.Orig. D3_COD C 15 0
Desc.Orig. D3_DESCRI C 60 0
UM Orig. D3_UM C 2 0
Armazem Or D3_LOCAL C 2 0
Endereco O D3_LOCALIZ C 15 0
Prod.Desti D3_COD C 15 0
Desc.Desti D3_DESCRI C 60 0
UM Destino D3_UM C 2 0
Armazem De D3_LOCAL C 2 0
Endereco D D3_LOCALIZ C 15 0
Lote D3_LOTECTL C 10 0
Sub-Lote D3_NUMLOTE C 6 0
Validade D3_DTVALID D 8 0
Potencia D3_POTENCI N 6 2
Quantidade D3_QUANT N 12 2
Qt 2aUM D3_QTSEGUM N 12 2
Estornado D3_ESTORNO C 1 0
Sequencia D3_NUMSEQ C 6 0
Validade D D3_DTVALID D 8 0
------------+-----------------+---------------------------------------------------------
------------+-----------------+---------------------------------------------------------
/*/
//---------------------------------------------------------------------------------------
Local aAuto := {}
Local nSavRegSD3 := 0
Private nModulo := 4
//-- Início - Busca o próximo código de documento para movimentação no SD3 - (Códificação utilizada pelo padrão -
MATA261)
nSavRegSD3 := SD3->(RecNo())
cDocumento := IIf(Empty(cDocumento),NextNumero("SD3",2,"D3_DOC",.T.),cDocumento)
cDocumento := A261RetINV(cDocumento)
cMay := "SD3"+Alltrim(xFilial("SD3"))+cDocumento
SD3->(dbSetOrder(2))
SD3->(dbSeek(xFilial("SD3")+cDocumento))
If SD3->D3_ESTORNO # "S"
cDocumento := Soma1(cDocumento)
cMay := "SD3"+Alltrim(xFilial("SD3"))+cDocumento
EndIf
SD3->(dbSkip())
EndDo
SD3->(dbSetOrder(1))
SD3->(dbGoTo(nSavRegSD3))
//-- Fim - Busca o próximo código de documento para movimentação no SD3 - (Códificação utilizada pelo padrão -
MATA261)
SB8->(dbSetOrder(2))
SB8->(MsSeek(xFilial("SB8")+cNumIDE+cNuLote+cProdut+cArmOri))///--
B8_FILIAL+B8_NUMLOTE+B8_LOTECTL+B8_PRODUTO+B8_LOCAL+DTOS(B8_DTVALID)
aAuto := {{cDocumento,dDataBase}}
aSB1 := GetAdvfVal("SB1",{"B1_DESC","B1_UM"},xFilial("SB1")+cProdut,1,{"",""},.T.)
aItem := {}
//ORIGEM
aadd(aItem,{"ITEM",'001',Nil})
aAdd(aItem,{"D3_LOCALIZ", AvKey(cEndOri,"D3_LOCALIZ"),Nil})
//DESTINO
aAdd(aItem,{"D3_LOCALIZ", AvKey(cEndDes,"D3_LOCALIZ"),Nil})
aAdd(aItem,{"D3_POTENCI", 0, Nil})
aAdd(aItem,{"D3_QTSEGUM", 0, Nil})
/*
//aadd(aItem,'001')
aAdd(aItem,AvKey(cProdut,"D3_COD")) //
D3_COD //Prod.Orig.
aAdd(aItem,AvKey(cArmOri,"D3_LOCAL")) // D3_LOCAL
//Armazem Or
aAdd(aItem,AvKey(cEndOri,"D3_LOCALIZ")) // D3_LOCALIZ
//Endereco O
//destino
aAdd(aItem,AvKey(cProdut,"B8_PRODUTO")) // D3_COD
//Prod.Desti
aAdd(aItem,AvKey(cArmDes,"D3_LOCAL")) // D3_LOCAL
//Armazem De
aAdd(aItem,AvKey(cEndDes,"D3_LOCALIZ")) // D3_LOCALIZ
//Endereco D
aAdd(aItem,CriaVar("D3_NUMSERI")) // D3_NUMSERI`
//Numero Ser
aAdd(aItem,AvKey(cNuLote,"D3_LOTECTL")) // D3_LOTECTL
//Lote
aAdd(aItem,AvKey(cNumIDE,"D3_NUMLOTE")) // D3_NUMLOTE
//Sub-Lote
aAdd(aItem,SB8->B8_DTVALID) //
D3_DTVALID //Validade
aAdd(aItem,0)
// D3_POTENCI //Potencia
aAdd(aItem,Val(cQuanti)) //
D3_QUANT //Quantidade
aAdd(aItem,0)
// D3_QTSEGUM //Qt 2aUM
aAdd(aItem,CriaVar("D3_ESTORNO")) // D3_ESTORNO
//Estornado
aAdd(aItem,CriaVar("D3_NUMSEQ")) // D3_NUMSEQ
//Sequencia
aAdd(aItem,AvKey(cNuLote,"D3_LOTECTL")) // D3_LOTECTL
//Lote Desti
aAdd(aItem,AvKey(cNumIDE,"D3_NUMLOTE")) // D3_NUMLOTE
//Sub-Lote
aAdd(aItem,SB8->B8_DTVALID) //
D3_DTVALID //Validade D
aAdd(aItem,CriaVar("D3_ITEMGRD")) // D3_ITEMGRD
//Item Grade
aAdd(aItem,CriaVar("D3_OBSERVA")) // D3_OBSERVA
//Observa磯
//aAdd(aItem,CriaVar("D3_IDDCF")) //
D3_IDDCF //Id DCF
*/
aAdd(aAuto,aItem)
MSExecAuto({|x,y| mata261(x,y)},aAuto,3)
If lMsErroAuto
VTBEEP(1)
conout(cMsg)
VTAlert(cMsg)
Else
fCriaMot(aItem,cMot)
EndIf*/
VTBEEP(2)
EndIf
Return()
//--------------------------------------------------------------------------------------
/*/
{Protheus.doc} fValArm
@since 11/12/14
@version P.11
@param Nenhum
@return Nenhum
@obs Nenhum
------------+-----------------+---------------------------------------------------------
------------+-----------------+---------------------------------------------------------
/*/
//---------------------------------------------------------------------------------------
SB1->(dbSetOrder(1))
SB1->(MsSeek(xFilial("SB1")+cProdut))
If cArmOri == cArmDes
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
If SB1->B1_LOCPAD == cArmDes
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
lOk := .T.
lOk := .T.
EndIf
If SB1->B1_LOCPAD == cArmDes
lOk := .T.
EndIf
If SB1->B1_LOCPAD == cArmDes
lOk := .T.
EndIf
EndIf
Return(lOk)
//--------------------------------------------------------------------------------------
/*/
{Protheus.doc} fCriaMot
@since 09/03/15
@version P.11
@param Nenhum
@return Nenhum
@obs Nenhum
------------+-----------------+---------------------------------------------------------
------------+-----------------+---------------------------------------------------------
/*/
//---------------------------------------------------------------------------------------
DbSelectArea("SB8")
SB8->(DbSetOrder(3))
If SB8-
>(MsSeek(xFilial("SB8")+AvKey(aZSD3[1],"D3_COD")+AvKey(aZSD3[9],"D3_LOCAL")+AvKey(aZSD3[12],"D3_LOTECTL")+A
vKey(aZSD3[13],"D3_NUMLOTE")))
If RecLock("SB8",.F.)
SB8->B8_ZMOTIVO := AllTrim(cMot)
SB8->(MsUnlock())
EndIf
cArmazem := Posicione("NNR",1,xFilial("NNR")+AvKey(aZSD3[9],"D3_LOCAL"),"NNR_DESCRI")
DbSelectArea("SZW")
If RecLock("SZW",.T.)
SZW->ZW_FILIAL := SB8->B8_FILIAL
SZW->ZW_IDLOTE := AvKey(aZSD3[13],"D3_NUMLOTE")
SZW->ZW_EMISSAO := DDATABASE
SZW->ZW_PRODUTO := AvKey(aZSD3[1],"D3_COD")
SZW->ZW_DESCRI := AllTrim(aZSD3[2])//AvKey(aZSD3[2],"D3_DESCRI")
SZW->ZW_QUANT := aZSD3[16]//AvKey(aZSD3[16],"D3_QUANT")
SZW->ZW_LOTE := AvKey(aZSD3[12],"D3_LOTECTL")
SZW->ZW_VENLOTE := aZSD3[21]//AvKey(aZSD3[21],"D3_DTVALID")
SZW->ZW_ARMAZEM := AvKey(aZSD3[9],"D3_LOCAL")
SZW->ZW_DESCARM := AllTrim(cArmazem)
SZW->ZW_MOTIVO := AllTrim(cMot)
SZW->ZW_AREA := "Logistica"
SZW->ZW_USER := __CUSERID
SZW->ZW_NOTA := ""
SZW->ZW_SERIE := ""
SZW->ZW_FORMUL := ""
SZW->ZW_CLIENTE := ""
SZW->ZW_LOJA := ""
SZW->ZW_IDAREA := "001"
SZW->ZW_DESCMOT := posicione("SZR",1,xFilial("SZR")+AVKEY(cMot,"ZR_CODIGO"),"ZR_DESCRI")
SZW->(MsUnlock())
EndIf
EndIf
Return()