Escolar Documentos
Profissional Documentos
Cultura Documentos
CH'
#INCLUDE 'APVT100.CH'
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VIXA063 ºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Rotina de conferencia via coletor de dados º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
User Function VIXA063(lRadioF,cStatRF)
DLVTCabec(,.F.,.F.,.T.)
DLVEndereco(0,0,SDB->DB_LOCALIZ,SDB->DB_LOCAL,,,'Va para o Endereco')
lRet := VA063ESC(aRecSDB)
EndIf
DLVTCabec(,.F.,.F.,.T.)
@ 02,00 VTSay PadR('Endereco',VTMaxCol())
@ 03,00 VTSay PadR(SDB->DB_LOCALIZ,VTMaxCol())
@ 05,00 VTSay PadR('Confirme !',VTMaxCol())
@ 06,00 VTGet cEndereco Pict '@!' Valid VA063End(SDB-
>DB_LOCALIZ,@cEndereco,cLocal)
VTRead
lRet := VA063ESC(aRecSDB,"C",@cEndereco)
EndDo
EndIf
DLVTCabec(,.F.,.F.,.T.)
@ 01,00 VTSay PadR('LOTE '+SDB->DB_DOC,VTMaxCol())
@ 02,00 VTGet cLoteAConf Picture '@!' Valid(iif(cLoteAConf==SDB-
>DB_DOC,.t.,.f.))
VTRead
lRet := VA063ESC(aRecSDB,"C",@cLoteAConf)
EndDo
EndIf
//LEANDRO REMOVER
//cTxtArraySDB := ArrTokStr(aRecSDB)
//cTxtPrdSYS := ArrTokStr(aPrdSYS)
If lDigita
cProduto := Space(Len(SDB->DB_PRODUTO))
Else
If Len(SB1->B1_CODBAR) > 48
cProduto := Space(Len(SB1->B1_CODBAR))
Else
cProduto := Space(48) //-- Tamanho minimo da Etiqueta
EndIf
EndIf
lRet := VA063ESC(aRecSDB,"C",@cProduto)
lRet := VA063ESC(aRecSDB,"C",@cLoteCtl)
EndIf
If lRet
If lRetrab
If nPos > 0
cEtSugest := Alltrim(aEtBurra[nPos][1])
EndIf
ElseIf nQtdNorma == 0
EndIf
For i := 1 to Len(aEtBurra)
If Empty(aEtBurra[i][2])
If nPos > 0
cEtSugest := Alltrim(aEtBurra[i][1])
nQtdConfNor := aEtBurra[i][4][nPos][2]
Exit
EndIf
EndIf
Next
Else
If nPos > 0
cEtSugest := Alltrim(aEtBurra[nPos][1])
nPos2 := aSCan(aEtBurra[nPos][4],{|x| x[1] ==
cProduto .and. x[2] < nQtdNorma .and. x[3] == cIdOpera})
If nPos2 > 0
nQtdConfNor := aEtBurra[nPos][4][nPos2][2]
EndIf
EndIf
EndIf
If !Empty(cEtSugest)
DLVTCabec('Associe a Etiqueta',.F.,.F.,.T.)
@ 01, 00 VTSay PadR(cProduto ,VTMaxCol())
@ 02, 00 VTSay PadR('Etiqueta' ,VTMaxCol())
@ 03, 00 VTSay PadR(cEtSugest ,VTMaxCol())
@ 05, 00 VTSay PadR('Confirme!' ,VTMaxCol())
@ 06, 00 VTGet cEtBurra Pict '@!' Valid
VA063EtBurra(1,@cEtBurra,aEtBurra,cEtSugest)
VTRead
Else
//-- Escolha do Produto a ser Conferido
DLVTCabec(,.F.,.F.,.T.)
@ 01,00 VTSay PadR('Etiqueta Burra',VTMaxCol())
@ 02,00 VTGet cEtBurra Picture "@!" Valid
VA063EtBurra(1,@cEtBurra,aEtBurra,cEtSugest)
VTRead
EndIf
lRet := VA063ESC(aRecSDB,"C",@cEtBurra)
EndIf
If lRet
DLVTCabec(,.F.,.F.,.T.)
If !Empty(cDescPr2)
nLinha++; @ nLinha,00 VTSay PadR(cDescPr2,VTMaxCol())
EndIf
Else
EndIf
EndIf
EndIf
lRet := VA063ESC(aRecSDB,"N",@nQtde)
If lRet
If cOrigem == "Z54"
EndIf
EndIf
If lRet
If nQtde == nQtdAvar
cEtSugest := ""
EndIf
EndIf
If lRet
If !Empty(cEtBurra)
If nPosEti == 0
aAdd(aEtBurra,
{Alltrim(cEtBurra),cStage,lRetrab,{}})
nPosEti := Len(aEtBurra)
EndIf
If nPos == 0
aAdd(aEtBurra[nPosEti][4],{cProduto,nQtde-
nQtdAvar,cIDOpera})
Else
aEtBurra[nPosEti][4][nPos][2] += nQtde-nQtdAvar
EndIf
EndIf
aPrdSYS[nPos][4] += nQtde
aPrdSYS[nPos][5] += nQtdAvar
For z := 1 to Len(aPrdSYS[nPos][7])
SDB->(dbGoTo(aPrdSYS[nPos][7][z]))
nQtdeEti := 0
BEGIN TRANSACTION
If nQtde > 0
nQtde -= SDB-
>DB_QUANT-SDB->DB_QTDLID
nQtdeEti := SDB->DB_QUANT-
SDB->DB_QTDLID
RecLock("SDB",.F.)
SDB->DB_QTDLID += SDB-
>DB_QUANT-SDB->DB_QTDLID
SDB->DB_DATA :=
dDataBase
SDB->DB_HRINI := Time()
SDB->(msUnlock())
Else
RecLock("SDB",.F.)
SDB->DB_QTDLID += nQtde
SDB->DB_DATA :=
dDataBase
SDB->DB_HRINI := Time()
SDB->(msUnlock())
nQtdeEti:= nQtde
nQtde := 0
EndIf
EndIf
EndIf
If nQtdAvar > 0
nQtdAvar -= SDB->DB_QUANT-
SDB->DB_YQTAVAR
RecLock("SDB",.f.)
SDB->DB_YQTAVAR += SDB-
>DB_QUANT-SDB->DB_YQTAVAR
SDB->DB_DATA :=
dDataBase
SDB->DB_HRINI := Time()
SDB->(msUnlock())
nQtdeEti-= nQtdAvar
Else
RecLock("SDB",.f.)
SDB->DB_YQTAVAR +=
nQtdAvar
SDB->DB_DATA :=
dDataBase
SDB->DB_HRINI := Time()
SDB->(msUnlock())
nQtdeEti -= nQtdAvar
nQtdAvar := 0
EndIf
EndIf
EndIf
IF !Empty(cEtBurra)
If SZS->ZS_QUANT ==
nQtdNorma //.or. SDB->DB_QUANT == SDB->DB_QTDLID
aPrdSYS[nPos][6] += SZS-
>ZS_QUANT
RecLock('SDB',.F.)
SDB->DB_YQTLIBE += SZS-
>ZS_QUANT
SDB->(MsUnLock())
RecLock('SZS',.F.)
SZS->ZS_STATUS := "2"
SZS->(MsUnLock())
aDel(aEtBurra,nPosEti)
aSize(aEtBurra,Len(aEtBurra)-
1)
EndIf
//aPrdSYS[nPos][6] := SDB-
>DB_QTDLID-SDB->DB_YQTAVAR-SDB->DB_YQTLIBE
ElseIf nQtdNorma == 0
If SDB->DB_SERVIC ==
cServErro .and. SDB->DB_QUANT == SDB->DB_QTDLID .and. SDB->DB_QUANT == SZS-
>ZS_QUANT
aPrdSYS[nPos][6] := SDB-
>DB_QUANT
RecLock('SDB',.F.)
SDB->DB_YQTLIBE := SDB-
>DB_QUANT
SDB->(MsUnLock())
RecLock('SZS',.F.)
SZS->ZS_STATUS := "2"
SZS->(MsUnLock())
aDel(aEtBurra,nPosEti)
aSize(aEtBurra,Len(aEtBurra)-
1)
EndIf
EndIf
EndIf
END TRANSACTION
// Verifica se a conf do produto foi finalizada
If ( SDB->DB_QUANT - SDB->DB_QTDLID ) == 0
DLVTCabec("CONFERENCIA TOTAL",.F.,.F.,.T.)
@ 01,00 VTSay 'PRODUTO: '
@ 02,00 VTSay SDB->DB_PRODUTO
DLVTRodaPe()
End If
Next
EndIf
EndIf
EndDo
EndIf
Return(lRet)
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063ESC ºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Verifica se o conferente ira abandonar a rotina TECLAR ESC º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063ESC(aRecSDB,xTipo,xParam)
DLVTCabec(,.F.,.F.,.T.)
@ 01,00 VTSay PadR('MENU CONFERENCIA',VTMaxCol())
@ 03,00 VTSay PadR('1 - RETORNAR',VTMaxCol())
@ 04,00 VTSay PadR('2 - FINALIZAR',VTMaxCol())
@ 05,00 VTSay PadR('3 - TROCAR CONFERENCIA',VTMaxCol())
@ 06,00 VTSay PadR('4 - ABANDONAR',VTMaxCol())
@ 07,00 VTGet nOpc Picture "9" Valid (nOpc > 0 .and. nOpc < 5)
VTRead
Do Case
Case nOpc == 1
lRet := .t.
EndCase
Else
lRet := .t.
EndIf
Return(lRet)
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063AbandºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Verifica se o conferente ira abandonar a rotina TECLAR ESC º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063Abandona(aRecSDB,cOcorr,lAbandona,lRet)
Local nCont := 0
Local cStatAExe := SuperGetMV('MV_RFSTAEX',.F.,'4') //-- DB_STATUS
indincando Atividade A Executar
If !Empty(cOcorr)
EndIf
If lAbandona
If SDB->DB_QTDLID > 0
nCont++
EndIf
Next
//Caso não tenha ocorrido nenhuma contagem libera o registro para outro
conferente
If nCont == 0
For i := 1 to Len(aRecSDB)
RecLock('SDB',.F.)
SDB->DB_RECHUM := ""
SDB->DB_STATUS := cStatAExe
SDB->DB_HRINI := ""
SDB->(msUnLock())
Next
EndIf
EndIf
Return
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063TrocaºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Valida novo LOTE de conferencia º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063TrocaLote(aRecSDB,lRet)
If !lRet
//Chama tela para escolha do novo lote
DLVTCabec(,.F.,.F.,.T.)
@ 01,00 VTSay PadR("NOVO LOTE",VTMaxCol())
@ 02,00 VTGet cDocto Picture '@!' Valid VA063ValTroca(@cDocto)
VTRead
EndIf
Return
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063TrocaºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Verifica se o conferente ira mudar de LOTE de conferencia º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063ValTroca(cDocto)
AND SDB.%NotDel%
EndSql
(cAlias)->(dbGoTop())
Else
lRet := .f.
cDocto := Space(Len(SDB->DB_DOC))
DLVTAviso('VA063ValTroca',"LOTE INCORRETO")
EndIf
Return(lRet)
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063FinC ºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Rotina para finalização da conferencia º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063FinConf(aRecSDB)
Local i
Local j
Local nQtdOcorr := 0
Local nQtdEnder := 0
Local cNumSeq := ""
Local cIdMovto := ""
Local aEndFalta := {}
Local aExcecoes := {}
Local nPos := 0
Local lInc := .f.
Local nRecDC5 := 0
Local aTelaAnt := VTSave(00,00,VTMaxRow(),VTMaxCol())
Local cOcorr := "000005"
Local lRet := .T.
Local lFirstAprov := .T.
Local cIdLider := ""
Local lNeedAprov := .T.
Local xError := ""
Private lMsErroAuto
aNotasOrig := VA063GetNfs(AllTrim(SDB->DB_DOC),SDB->DB_PRODUTO,SDB-
>DB_LOTECTL,SDB->DB_NUMLOTE,SDB->DB_LOCAL)
nQtdDif := SDB->DB_QUANT - SDB->DB_QTDLID
// Validar se ocorrência já está registrada.
//Verifica a ultima atividade de endereçamento para diminuir a
quantidade do mesmo
lNeedAprov := .T.
cAliasSZT := GetNextAlias()
BeginSql Alias cAliasSZT
(cAliasSZT)->(dbGoTop())
If (cAliasSZT)->(!Eof())
While (cAliasSZT)->(!Eof())
SZT->( DbGoTo( (cAliasSZT)->SZTREC ) )
If ( SZT->ZT_QUANT == nQtdDif )
lNeedAprov := .F.
EndIf
(cAliasSZT)->(DbSkip())
EndDo
EndIf
(cAliasSZT)->(dbCloseArea())
If lNeedAprov
//Chama rotina para verificar a autorização do lider // Uma vez
que já existe a ocorrência
If lFirstAprov .AND. U_VIXA065(SDB->DB_DOC,SDB-
>DB_ORIGEM,cOcorr,aNotasOrig,nQtdDif)
cIdLider := SZT->ZT_USERLIB
lRet := .T.
lFirstAprov := .F.
RecLock('SZT',.T.)
SZT->ZT_FILIAL := xFilial('SZT')
SZT->ZT_DATA := dDataBase
SZT->ZT_DOC := SDB->DB_DOC
SZT->ZT_ORIG := SDB->DB_ORIGEM
SZT->ZT_OCORR := cOcorr
SZT->ZT_HORA := Time()
SZT->ZT_USER := RetCodUsr()
SZT->ZT_USERLIB := cIdLider
SZT->ZT_MOTIVO := FWGetSX5("ZZ",cOcorr)[1][4]
SZT->ZT_QUANT := nQtdDif
If !Empty(aNotasOrig)
SZT->ZT_FORNECE := aNotasOrig[1][3]
SZT->ZT_LOJA := aNotasOrig[1][4]
SZT->ZT_PRODUTO := aNotasOrig[1][8]
SZT->ZT_UMA := aNotasOrig[1][9]
SZT->ZT_CUSTO := aNotasOrig[1][10] * nQtdDif
EndIf
MsUnlock()
Else
lRet := .F.
Return .T.
EndIf
EndIf
EndIf
Next
If !lRet
Return lRet
EndIf
Begin Transaction
RecLock('SDB',.F.)
SDB->DB_DATAFIM:= dDataBase
SDB->DB_HRFIM := Time()
SDB->DB_STATUS := cStatExec
Else
SDB->DB_STATUS := cStatProb
SDB->DB_ANOMAL := 'S'
EndIf
SDB->(MsUnLock())
aNotasOrig := VA063GetNfs(AllTrim(SDB->DB_DOC),SDB->DB_PRODUTO,SDB-
>DB_LOTECTL,SDB->DB_NUMLOTE,SDB->DB_LOCAL)
RecLock("DCN",.T.)
DCN->DCN_FILIAL := xFilial("DCN")
DCN->DCN_NUMERO := GetSxENum("DCN","DCN_NUMERO")
DCN->DCN_OCORR := cOcorrAvar
DCN->DCN_STATUS := "1"
DCN->DCN_DTINI := dDataBase
DCN->DCN_HRINI := Time()
DCN->DCN_YLOTER := SDB->DB_DOC
DCN->DCN_PROD := SDB->DB_PRODUTO
DCN->DCN_LOCAL := SDB->DB_LOCAL
DCN->DCN_LOTECT := SDB->DB_LOTECTL
DCN->DCN_NUMLOT := SDB->DB_NUMLOTE
If Len(aNotasOrig) > 0
DCN->DCN_DOC := aNotasOrig[1][1]
DCN->DCN_SERIE := aNotasOrig[1][2]
DCN->DCN_CLIFOR := aNotasOrig[1][3]
DCN->DCN_LOJA := aNotasOrig[1][4]
DCN->DCN_NUMSEQ := aNotasOrig[1][6]
DCN->DCN_ITEM := aNotasOrig[1][5]
DCN->DCN_QUANT := nQtdOcorr
Else
DCN->DCN_QUANT := aNotasOrig[1][7]
EndIf
Else
DCN->DCN_DOC := SDB->DB_DOC
DCN->DCN_YLOTER := SDB->DB_DOC
DCN->DCN_QUANT := nQtdOcorr
nQtdOcorr := 0
EndIf
DCN->(msUnLock())
ConfirmSX8()
If Len(aNotasOrig) > 0
EndIf
EndDo
EndIf
If SDB->DB_QUANT-SDB->DB_QTDLID > 0
// Validar se já existe ocorrência cadastrada.
DbSelectArea("DCN")
DCN->(DbSetOrder(2)) // DCN_FILIAL + DCN_PROD + DCN_LOCAL + DCN_NUMSEQ
+ DCN_DOC + DCN_SERIE + DCN_CLIFOR+DCN_LOJA+DCN_ITEM
If Len(aNotasOrig) > 0
If DCN->(DbSeek( xFilial("DCN") + SDB->DB_PRODUTO + SDB->DB_LOCAL
+ aNotasOrig[1][6] + aNotasOrig[1][1] + aNotasOrig[1][2] + aNotasOrig[1][3] ))
nQtdOcorr := 0
Else
nQtdOcorr := SDB->DB_QUANT-SDB->DB_QTDLID
EndIf
Else
nQtdOcorr := SDB->DB_QUANT-SDB->DB_QTDLID
EndIf
// Validar se ocorrência já existe. _> Se estiver em aberto, cancela e
gera uma nova. _> Se estiver encerrada, não permite a geração.
While nQtdOcorr <> 0
RecLock("DCN",.T.)
DCN->DCN_FILIAL := xFilial("DCN")
DCN->DCN_NUMERO := GetSxENum("DCN","DCN_NUMERO")
DCN->DCN_OCORR := cOcorrFalta
DCN->DCN_STATUS := "1"
DCN->DCN_DTINI := dDataBase
DCN->DCN_HRINI := Time()
DCN->DCN_YLOTER := SDB->DB_DOC
DCN->DCN_PROD := SDB->DB_PRODUTO
DCN->DCN_LOCAL := SDB->DB_LOCAL
DCN->DCN_LOTECT := SDB->DB_LOTECTL
DCN->DCN_NUMLOT := SDB->DB_NUMLOTE
If Len(aNotasOrig) > 0
DCN->DCN_DOC := aNotasOrig[1][1]
DCN->DCN_SERIE := aNotasOrig[1][2]
DCN->DCN_CLIFOR := aNotasOrig[1][3]
DCN->DCN_LOJA := aNotasOrig[1][4]
DCN->DCN_ITEM := aNotasOrig[1][5]
DCN->DCN_NUMSEQ := aNotasOrig[1][6]
DCN->DCN_QUANT := nQtdOcorr
Else
DCN->DCN_QUANT := aNotasOrig[1][7]
EndIf
Else
DCN->DCN_DOC := SDB->DB_DOC
DCN->DCN_YLOTER := SDB->DB_DOC
DCN->DCN_QUANT := nQtdOcorr
nQtdOcorr := 0
EndIf
DCN->(msUnLock())
ConfirmSX8()
If Len(aNotasOrig) > 0
EndIf
EndDo
EndIf
//Quantidade a endereçar
nQtdEnder := SDB->DB_QTDLID-SDB->DB_YQTAVAR-SDB->DB_YQTLIBE
aEndFalta := {}
RecLock('SDB',.F.)
SDB->DB_YQTLIBE += nQtdEnder
SDB->(MsUnLock())
RecLock('SZS',.F.)
SZS->ZS_STATUS := "2"
SZS->(MsUnLock())
If SZS->ZS_QUANT == 0
Else
EndIf
x[12] == cIDDCF})
If nPos == 0
aAdd(aEndFalta,{ SDB->DB_SERVIC,;
SDB-
>DB_PRODUTO,;
SDB-
>DB_LOCAL,;
SDB-
>DB_NUMSEQ,;
SDB-
>DB_DOC,;
SDB-
>DB_SERIE,;
SDB-
>DB_CLIFOR,;
SDB-
>DB_LOJA,;
SDB-
>DB_LOCALIZ,;
SDB-
>DB_ORIGEM,;
SDB-
>DB_QUANT-SZS->ZS_QUANT,;
cIDDCF})
Else
aEndFalta[nPos][11] += SDB->DB_QUANT-SZS-
>ZS_QUANT
EndIf
EndIf
EndIf
SZS->(dbSkip())
EndDo
Else
If nPos == 0
aAdd(aEndFalta,{ SDB->DB_SERVIC,;
SDB->DB_PRODUTO,;
SDB->DB_LOCAL,;
SDB->DB_NUMSEQ,;
SDB->DB_DOC,;
SDB->DB_SERIE,;
SDB->DB_CLIFOR,;
SDB->DB_LOJA,;
SDB->DB_LOCALIZ,;
SDB->DB_ORIGEM,;
SDB->DB_QUANT,;
SDB->DB_IDDCF})
Else
aEndFalta[nPos][11] += SDB->DB_QUANT
EndIf
EndIf
WHERE SDB.%NotDel%
AND SDB.DB_FILIAL = %xFilial:SDB%
AND SDB.DB_STATUS = %Exp:cStatAExe%
AND SDB.DB_ESTORNO = %Exp:''%
AND SDB.DB_ATUEST = %Exp:'N'%
AND SDB.DB_TAREFA = %Exp:cTarefEnd%
AND SDB.DB_ORDATIV = %Exp:'01'%
AND SDB.DB_SERVIC = %Exp:SDB->DB_SERVIC%
AND SDB.DB_DOC = %Exp:SDB->DB_DOC%
AND SDB.DB_SERIE = %Exp:SDB->DB_SERIE%
AND SDB.DB_CLIFOR = %Exp:SDB->DB_CLIFOR%
AND SDB.DB_LOJA = %Exp:SDB->DB_LOJA%
AND SDB.DB_PRODUTO = %Exp:SDB->DB_PRODUTO%
AND SDB.DB_ORIGEM = %Exp:SDB->DB_ORIGEM%
AND SDB.DB_LOCAL = %Exp:SDB->DB_LOCAL%
AND SDB.DB_LOTECTL = %Exp:SDB->DB_LOTECTL%
AND SDB.DB_NUMLOTE = %Exp:SDB->DB_NUMLOTE%
EndSql
(cAlias)->(dbGoTop())
While (cAlias)->(!Eof())
SDB->(dbGoTo((cAlias)->SDBREC))
If nPos == 0
aAdd(aEndFalta,{ SDB->DB_SERVIC,;
SDB->DB_PRODUTO,;
SDB->DB_LOCAL,;
SDB->DB_NUMSEQ,;
SDB->DB_DOC,;
SDB->DB_SERIE,;
SDB->DB_CLIFOR,;
SDB->DB_LOJA,;
SDB->DB_LOCALIZ,;
SDB->DB_ORIGEM,;
SDB->DB_QUANT-(cAlias)-
>ZS_QUANT,;
SDB->DB_IDDCF})
Else
aEndFalta[nPos][11] += SDB->DB_QUANT-(cAlias)-
>ZS_QUANT
EndIf
//Verifica totas atividade de endereçamento para diminuir a
quantidade do mesmo
BeginSql Alias cAliasSDB
EndSql
(cAliasSDB)->(dbGoTop())
While (cAliasSDB)->(!Eof())
SDB->(dbGoTo((cAliasSDB)->SDBREC))
RecLock("SDB",.F.)
If (cAlias)->ZS_QUANT > 0
SDB->DB_QUANT := (cAlias)->ZS_QUANT
SDB->DB_QTSEGUM := ConvUM(SDB->DB_PRODUTO,
(cAlias)->ZS_QUANT,0,2)
DCR->(dbSetOrder(1))
If DCR->(dbSeek(xFilial("DCR")+SDB-
>DB_IDDCF+SDB->DB_IDDCF+SDB->DB_IDMOVTO+SDB->DB_IDOPERA))
RecLock("DCR",.F.)
DCR->DCR_QUANT := SDB->DB_QUANT
DCR->DCR_QTSEUM := SDB->DB_QTSEGUM
DCR->(msUnLock())
EndIf
Else
//Apaga amarração
DCR->(dbSetOrder(1))
If DCR->(dbSeek(xFilial("DCR")+SDB-
>DB_IDDCF+SDB->DB_IDDCF+SDB->DB_IDMOVTO+SDB->DB_IDOPERA))
RecLock("DCR",.F.)
DCR->(dbDelete())
DCR->(msUnLock())
EndIf
//Apaga movimento
SDB->(dbDelete())
EndIf
SDB->(msUnLock())
(cAliasSDB)->(dbSkip())
EndDo
(cAliasSDB)->(dbCloseArea())
EndIf
If (cAlias)->SZSREC > 0
SZS->(dbGoTo((cAlias)->SZSREC))
RecLock('SZS',.F.)
SZS->ZS_STATUS := "2"
SZS->(MsUnLock())
EndIf
(cAlias)->(dbSkip())
EndDo
(cAlias)->(dbCloseArea())
EndIf
//aAdd(aEndFalta,{SDB->DB_SERVIC,SDB->DB_PRODUTO,SDB->DB_LOCAL,SDB-
>DB_NUMSEQ,SDB->DB_DOC,SDB->DB_SERIE,SDB->DB_CLIFOR,SDB->DB_LOJA,SDB-
>DB_LOCALIZ,SDB->DB_QUANT-(cAlias)->ZS_QUANT}
lInc := .F.
aExcecoes := {}
DCL->(dbSetOrder(1))
If DCL->(dbSeek(xFilial('DCL')+SBE->BE_EXCECAO))
aAdd(aExcecoes,DCL->DCL_ATIVID)
DCL->(dbSkip())
EndDo
EndIf
cIdMovto := u_WMSProxSeq()
If aScan(aExcecoes,DC6->DC6_ATIVID) == 0
//aAdd(aEndFalta,{SDB->DB_SERVIC,SDB-
>DB_PRODUTO,SDB->DB_LOCAL,SDB->DB_NUMSEQ,SDB->DB_DOC,SDB->DB_SERIE,SDB-
>DB_CLIFOR,SDB->DB_LOJA,SDB->DB_LOCALIZ,SDB->DB_QUANT-(cAlias)->ZS_QUANT}
lInc := .T.
RecLock("SDB",.t.)
SDB->DB_FILIAL := xFilial("SDB")
SDB->DB_ITEM := StrZero(1,2)
SDB->DB_PRIORI := "ZZ"
SDB->DB_IDOPERA :=
GetSx8Num('SDB','DB_IDOPERA')
SDB->DB_HRINI := Time()
SDB->DB_DATA := dDataBase
SDB->DB_TIPO := "E"
SDB->DB_ATUEST := "N"
SDB->DB_TM := "499"
SDB->DB_PRODUTO := aEndFalta[z][2]
SDB->DB_LOCAL := aEndFalta[z][3]
SDB->DB_LOCALIZ := SBE->BE_LOCALIZ
SDB->DB_ESTFIS := SBE->BE_ESTFIS
SDB->DB_ENDDES := SBE->BE_LOCALIZ
SDB->DB_ESTDES := SBE->BE_ESTFIS
SDB->DB_DOC := aEndFalta[z][5]
SDB->DB_SERIE := aEndFalta[z][6]
SDB->DB_CLIFOR := aEndFalta[z][7]
SDB->DB_LOJA := aEndFalta[z][8]
SDB->DB_ORIGEM := aEndFalta[z][10]
SDB->DB_QUANT := aEndFalta[z]
[11]
SDB->DB_QTSEGUM := ConvUM(aEndFalta[z]
[2],aEndFalta[z][11],0,2)
SDB->DB_SERVIC := aEndFalta[z][1]
SDB->DB_TAREFA := DC5->DC5_TAREFA
SDB->DB_ORDTARE := DC5->DC5_ORDEM
SDB->DB_ATIVID := DC6->DC6_ATIVID
SDB->DB_RHFUNC := DC6->DC6_FUNCAO
SDB->DB_RECFIS := DC6->DC6_TPREC
SDB->DB_ORDATIV := DC6->DC6_ORDEM
SDB->DB_NUMSEQ := aEndFalta[z][4]
SDB->DB_STATUS := cStatAuto
SDB->DB_IDMOVTO := cIdMovto
SDB->DB_IDDCF := aEndFalta[z]
[12]
SDB->(MsUnLock())
ConfirmSX8()
RecLock("DCR",.t.)
DCR->DCR_FILIAL := xFilial("DCR")
DCR->DCR_IDORI := SDB->DB_IDDCF
DCR->DCR_IDDCF := SDB->DB_IDDCF
DCR->DCR_IDMOV := SDB->DB_IDMOVTO
DCR->DCR_QUANT := SDB->DB_QUANT
DCR->DCR_IDOPER := SDB->DB_IDOPERA
DCR->DCR_QTSEUM := SDB->DB_QTSEGUM
DCR->DCR_EMPENH := 0
DCR->DCR_EMP2 := 0
DCR->(msUnLock())
EndIf
DC6->(dbSkip())
EndDo
EndIf
EndIF
EndIf
EndIf
Next
End Transaction
Next
// Validar se o momvimento já não foi feito // SD7. -> NUMSEQ SDA -> *IDDCF -> NUM
CQ sd7
//Percorre todos os registros para analisar as divergencias e gerar os Pedidos de
devolução
For nI := 1 to Len(aRecSDB)
//Begin Transaction
//Seta no registro a conferir
SDB->(dbGoTo(aRecSDB[nI][2]))
If SDB->DB_YQTAVAR > 0 .or. SDB->DB_QUANT-SDB->DB_QTDLID > 0
VTAlert("Aguarde a transferência de produtos e geração do Pedido para
as Divergencias","Atenção.",.T.,1,3)
cProduto := SDB->DB_PRODUTO
nSldLiber := SDB->DB_YQTAVAR + (SDB->DB_QUANT - SDB->DB_QTDLID) //
SDB->DB_QUANT - SDB->DB_YQTLIBE
// Chama rotina de liberação do CQ
lRet := LiberarCQ(cDocto,cProduto,nSldLiber)
// Caso o produto tenha ocorrência, e não tenha o SKU no FALTA sem
saldo no CQ para transferência para o FALTA enviar #EnvWorkflow(cDocto)
// ENVIAR WORKFLOW
If lRet
// Chama rotina de transferencia armazem
lRet := EnderFalta(cDocto,cProduto,nSldLiber)
EndIf
EndIf
Next nI
// Gera Pedido de Devolucao das inconsistencias do checkin
If lRet
lRet := GeraPedDev(@xError)
If lRet
EnvWorkflow(cDocto) // ENVIAR WORKFLOW
For nI := 1 to Len(aRecSDB)
//Seta no registro a conferir
SDB->(dbGoTo(aRecSDB[nI][2]))
RecLock("SDB",.F.)
SDB->DB_DATAFIM:= dDataBase
SDB->DB_HRFIM := Time()
SDB->DB_STATUS := cStatManu // Status Manual
SDB->DB_ANOMAL := '011' // DEVOLVER MERCADORIAS
//SDB->DB_ATUEST := 'S'
SDB->(MsUnLock())
Next nI
Else
EnvWorkflow(cDocto, xError) // ENVIAR WORKFLOW
EndIf
EndIf
// Atualizar o STATUS GERAL!
// Finaliza o status de conferencia do romaneio
If lRet
//u_VWMSFinalLote(cDocto)
dbSelectArea("Z53")
Z53->(dbSetOrder(2))
If Z53->(dbSeek(xFilial("Z53")+Padr(cDocto,TamSx3("Z53_NUM")[1])))
RecLock("Z53",.f.)
Z53->Z53_STATUS := "R"
Z53->Z53_TXTSTT := "Recebido"
Z53->(msUnLock())
EndIf
EndIf
Return .F.
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063GetNfºAutor ³Ihorran Milholi º Data ³ 18/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Rotina para recuperar as notas fiscais de origem º±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063GetNfs(cDoc,cProduto,cLoteCtl,cNumLote,cLocal)
EndSql
(cAlias)->(dbGoTop())
While (cAlias)->(!Eof())
aAdd(aRet,{ (cAlias)->D1_DOC,(cAlias)->D1_SERIE,(cAlias)->D1_FORNECE,
(cAlias)->D1_LOJA,(cAlias)->D1_ITEM,;
(cAlias)->D1_NUMSEQ,(cAlias)->D1_QUANT,(cAlias)->D1_COD,
(cAlias)->ZS_CODIGO,(cAlias)->D1_VUNIT})
(cAlias)->(dbSkip())
EndDo
(cAlias)->(dbCloseArea())
Return(aRet)
/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³VA063TravaReg ºAutor ³Ihorran Milholi º Data ³ 09/10/13 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc. ³Trava todos os registros da conferencia para inicio do mesmoº±±
±±º ³ º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso ³SIGAWMS º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function
VA063TravaReg(cServic,cDocto,cSerie,cCliFor,cLoja,cOrigem,cServic,cTarefa,cAtivid,a
RecSDB)
EndSql
(cAlias)->(dbGoTop())
Begin TransAction
(cAlias)->(dbSkip())
Loop
EndIf
If SDB->(SimpleLock())
If Empty(SDB->DB_RECHUM)
Else
EndIf
Else
lErro := .t.
EndIf
Else
lErro := .t.
EndIf
(cAlias)->(dbSkip())
EndDo
DisarmTransaction()
aRecSDB := {}
EndIf
End TransAction
//Elimina a area de trabalho
(cAlias)->(dbCloseArea())
Return(Len(aRecSDB)>0)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063End | Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Valida o endereco ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063End(cEnderSYS,cEndereco,cLocal)
If cEndereco != cEnderSYS
DLVTAviso('VA063End','Endereco incorreto!')
cEndereco := Space(Len(SDB->DB_LOCALIZ))
lRet := .F.
EndIf
If lRet
SBE->(DbSetOrder(1))
If SBE->( ! MsSeek(xFilial('SBE')+cLocal+cEndereco))
DLVTAviso('VA063End','O Endereco '+AllTrim(cEndereco)+' nao esta
cadastrado!')
cEndereco := Space(Len(SDB->DB_LOCALIZ))
lRet := .F.
EndIf
EndIf
RestArea(aAreaSBE)
RestArea(aAreaAnt)
Return(lRet)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³ VA063Prd | Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Valida o produto ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function
VA063Prd(aPrdSYS,cProduto,cDescPro,cDescPr2,nConver,cNorma,cDscUM,cPictQt,cLoteCtl,
nQtdNorma,nQtdNorma2,lRetrab,cIDOPera,cStage,cIdMovto)
Local lDigita := (SuperGetMV('MV_DLCOLET',.F.,'N') == 'N')
Local cWmsUMI := AllTrim(SuperGetMv('MV_WMSUMI',.F.,'1'))
Local nMax := VTMaxCol()-5
Local cTipId := ""
Local lRet := .T.
Local aProduto := {}
Local nPos := 0
Local cAlias := GetNextAlias()
Local cEstFis := ""
Local cCodBarra := ""
If !lDigita
cTipId := CBRetTipo(cProduto)
If Len(aProduto) > 0
cCodBarra := cProduto
cProduto := aProduto[1]
nConver := aProduto[2]
cLoteCtl := Padr(aProduto[3],Len(SDB->DB_LOTECTL))
EndIf
/*
Else
aProduto := CBRetEti(cProduto,'01')
If Len(aProduto) > 0
cCodBarra := cProduto
cProduto := aProduto[1]
nConver := aProduto[2]
cLoteCtl := Padr(aProduto[16],Len(SDB->DB_LOTECTL))
EndIf
EndIf
*/
If Empty(aProduto)
DLVTAviso('VA063Prd','Etiqueta invalida!')
VTKeyBoard(chr(20))
lRet := .F.
EndIf
EndIf
If lRet
SB1->(DbSetOrder(1))
If !SB1->(MsSeek(xFilial('SB1')+cProduto))
DLVTAviso('VA063Prd','O produto '+AllTrim(cProduto)+' nao esta
cadastrado!')
VTKeyBoard(chr(20))
lRet := .F.
EndIf
EndIf
If lRet
EndIf
If lRet
SDB->(dbGoTo(aPrdSYS[nPos][7][1]))
cDscUM := SLK->LK_YUM
cPictQt:= PesqPict("SDB","DB_QUANT")
cDscUM := SB1->B1_SEGUM
cPictQt:= PesqPict("SDB","DB_QTSEGUM")
Else
cDscUM := SB1->B1_UM
cPictQt:= PesqPict("SDB","DB_QUANT")
EndIf
EndIf
Return(lRet)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³WMSV070LOT| Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Valida o lote ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063Lot(aLoteSYS,cProduto,cLoteCtl)
lRet := !Empty(cLoteCtl)
Return(lRet)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³WMSV070QTD| Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Valida a quantidade ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function
VA063Qtd(nQtde,nConver,cProduto,cLoteCtl,aPrdSYS,nQtdNorma,cStage,cIDOPera,nQtdConf
Nor)
If lRet
Else
EndIf
Do Case
Case nOpcao == 1
cOcorr := '000015'
Case nOpcao == 2
cOcorr := '000016'
VTRead
If !Empty(cTxtMotivo)
FwPutSX5(/*cFlavour*/, "ZZ", cOcorr, cTxtMotivo,
cTxtMotivo/*cTextoEng*/, cTxtMotivo/*cTextoEsp*/, /*cTextoAlt*/)
EndIf
EndCase
aNotasOrig := VA063GetNfs(AllTrim(SDB->DB_DOC),SDB->DB_PRODUTO,SDB-
>DB_LOTECTL,SDB->DB_NUMLOTE,SDB->DB_LOCAL)
nQtdDiver := aPrdSYS[nPos][4]+(nQtde*nConver) - aPrdSYS[nPos][3]
//Chama rotina para verificar a autorização do lider
If U_VIXA065(SDB->DB_DOC,SDB->DB_ORIGEM,cOcorr,aNotasOrig,nQtdDiver)
nQtde := 0
lRet := .F.
VTClear()
VTRestore(00,00,VTMaxRow(),VTMaxCol(),aTelaAnt)
Else
nQtde := 0
lRet := .F.
//Restaura a tela anterior
// VTClear()
// VTRestore(00,00,VTMaxRow(),VTMaxCol(),aTelaAnt)
EndIf
EndIf
If lRet
If nQtdNorma > 0
//If aPrdSYS[nPos][4]+(nQtde*nConver)-aPrdSYS[nPos][5]-
aPrdSYS[nPos][6] > nQtdNorma
EndIf
EndIf
EndIf
EndIf
Return lRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063EtBur| Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Valida a quantidade ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063EtBurra(nTipo,cEtBurra,aEtBurra,cEtSugest)
cEtBurra := alltrim(cEtBurra)
If SubStr(cEtBurra,1,1) == "B"
cEtBurra := AllTrim(SubStr(cEtBurra,2,Len(cEtBurra)))
Else
cEtBurra := AllTrim(cEtBurra)
EndIf
If lRet
If nTipo == 1
SZS->(dbSetOrder(1))
If SZS->(dbSeek(xFilial("SZS")+cEtBurra))
EndIf
Else
EndIf
Else
DLVTAviso('VA063EtBurra','Etiqueta Invalida!')
lRet := .f.
EndIf
ElseIf nTipo == 2
DLVTAviso('VA063EtBurra','Etiqueta Invalida!')
lRet := .f.
EndIf
EndIf
EndIf
If !lRet
cEtBurra := Space(TamSx3("ZS_CODIGO")[1]+1)
EndIf
Return lRet
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³WMSV070CON| Autor ³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³ Consulta produtos conferidos ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ExpA1 = vetor dos produtos ja conferidos ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063JaConf(cDocto,aPrdSYS)
If aPrdSYS[i][4] > 0
If cWmsUMI == "2"
nQuant := ConvUM(aPrdSYS[i][1],aPrdSYS[i][4],0,2)
cUM := SB1->B1_SEGUM
EndIf
If nQuant == 0
nQuant := aPrdSYS[i][4]
cUM := SB1->B1_UM
EndIf
If nPos == 0
aAdd(aJaConf,{aPrdSYS[i][1],nQuant,cUM})
Else
aJaConf[nPos] += nQuant
EndIf
EndIf
Next
If Len(aJaConf) > 0
VTClear()
VTaBrowse(02,00,VTMaxRow()-2,VTMaxCol(),aCab,aJaConf,aSize)
VTRestore(00,00,VTMaxRow(),VTMaxCol(),aTelaAnt)
Else
EndIf
Return
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063LibVol| Autor³ Alex Egydio ³Data³12.02.2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³Libera Volumes para Endereçamento atravez da etiqueta ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function VA063LibVol(cDocto,aEtBurra,aRecSDB,aPrdSYS)
Local cStatExec := SuperGetMV('MV_RFSTEXE',.F.,'1') //-- DB_STATUS
indincando Atividade Executada
Local aTelaAnt := VTSave(00,00,VTMaxRow(),VTMaxCol())
Local cEtBurra := Space(TamSx3("ZS_CODIGO")[1]+1)
Local lRet := .t.
Local nPos := 0
If Len(aEtBurra) > 0
lRet := VA063ESC(aRecSDB,"C",@cEtBurra)
EndDo
If lRet
VA063LibEti(cEtBurra,@aEtBurra,aRecSDB,@aPrdSYS)
// Else
// EndIF
EndIf
EndIf
Else
EndIf
//Restaura a tela anterior
VTClear()
VTRestore(00,00,VTMaxRow(),VTMaxCol(),aTelaAnt)
Return
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063LibEti| Autor³ Ihorran Milholi ³Data³28.10.2013³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³Libera etiquetas para endereçamento ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
Static Function VA063LibEti(cEtBurra,aEtBurra,aRecSDB,aPrdSYS)
SZS->(dbSetOrder(1))
If SZS->(dbSeek(xFilial("SZS")+cEtBurra))
AADD(aEtUMA,cEtBurra)
DbSelectArea("SB1")
DbSetOrder(1)
SB1->(DbSeek(xFilial("SB1")+cProduto))
cEndereco := u_EndUMA(cProduto,SZS->ZS_LOCAL)
DbSelectArea("SZS")
DbsetOrder(1)
// Selecione a Impressora
cImpre := SeleIMP()
If Empty(cImpre)
Return
End If
For i := 1 to len(aEtUMA)
if SZS->(DbSeek(xFilial("SZS") + aEtUMA[i]))
AADD(aEtiqImp,{SB1->B1_COD,;
SB1->B1_DESC,;
SB1->B1_UM,;
nQtdEnd,;
cEndereco,;
aEtUMA[i],;
SZS->ZS_LOCAL})
End if
Next
//Localizado no VIXR021
U_VIX21UMA(aEtiqImp,cImpre,"1",cRomaneio)
EndIf
For nX := 1 to Len(aRecSDB)
EndIf
If nPos == 0
nPos := Len(aPrdSYS)
Else
aPrdSYS[nPos][3] += SDB->DB_QUANT
aPrdSYS[nPos][4] += SDB->DB_QTDLID
aPrdSYS[nPos][5] += SDB->DB_YQTAVAR
aPrdSYS[nPos][6] += SDB->DB_YQTLIBE
aAdd(aPrdSYS[nPos][7],SDB->(Recno()))
EndIf
SZS->(dbSetOrder(2))
If SZS->(dbSeek(xFilial("SZS")+SDB->DB_DOC+SDB->DB_SERIE+SDB-
>DB_CLIFOR+SDB->DB_LOJA+SDB->DB_ORIGEM+SDB->DB_PRODUTO+SDB->DB_LOCAL+SDB-
>DB_LOTECTL+SDB->DB_NUMLOTE))
If !Empty(cStage)
//aPrdSYS[nPos][6] += SZS->ZS_QUANT
EndIf
If nPosEti == 0
aAdd(aEtBurra,{Alltrim(SZS-
>ZS_CODIGO),cStage,lRetrab,{}})
nPosEti := Len(aEtBurra)
EndIf
aAdd(aEtBurra[nPosEti][4],{SZS-
>ZS_PROD,SZS->ZS_QUANT,SZS->ZS_IDOPERA})
EndIf
EndIf
SZS->(dbSkip())
EndDo
EndIf
Else
lRet := .f.
Exit
EndIf
Next nX
Return lRet
SELECT CB5.CB5_CODIGO ,
CB5.CB5_DESCRI ,
CB5.CB5_SERVER ,
CB5.CB5_PORTIP
FROM %Table:CB5% CB5
WHERE CB5.CB5_FILIAL = %xFilial:SZH%
AND CB5.D_E_L_E_T_ = ''
AND CB5.CB5_SERVER <> ''
EndSql
While (cAlias)->(!EOF())
lPen := .T.
AADD(aImpressora,{ (cAlias)->CB5_CODIGO,(cAlias)->CB5_DESCRI,(cAlias)-
>CB5_SERVER,(cAlias)->CB5_PORTIP })
(cAlias)->(DbSkip())
EndDo
aCab := {"Codigo","Impressora","Server","Porta"}
aSize:= {6,15,12,04}
nPos := 1
If Len(aImpressora) > 0
// Solicite ao Usuario o codigo da transportadora
DLVTCabec("Impressoras", .F., .F., .T.)
End IF
RestArea(aArea)
VTRestore Screen From aTela
Return cCodImpres
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063GetInfProd| Autor³ Ihorran Milholi ³Data³28.10.2013³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³Rotina para recuperar informaçõe do produto ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function
VA063GetInfProd(cServic,cDoc,cSerie,cCliFor,cLoja,cOrigem,cProduto,cLocal,cLoteCtl,
cNumLote)
//SDB->DB_DOC,SDB->DB_SERIE,SDB->DB_CLIFOR,SDB->DB_LOJA,SDB->DB_ORIGEM,SDB-
>DB_PRODUTO,SDB->DB_LOCAL,,SDB->DB_LOTECTL,SDB->DB_NUMLOTE
/*
nQtdNorma := aAux[1]
lRetrab := aAux[2]
cStage := aAux[3]
cNorma := aAux[4]
ID de Oper := aAux[5]
*/
ORDER BY SDB.DB_IDOPERA
EndSql
(cAlias)->(dbGoTop())
If (cAlias)->(!Eof()) .and. (cAlias)->(!Bof())
DC2->(dbSetOrder(1))
If aAux[7] > 0 .and. DC2->(dbSeek(xFilial("DC2")+(cAlias)->DB_RECEMB))
aAux[7] := DC2->DC2_LASTRO*DC2->DC2_CAMADA
EndIf
EndIf
(cAlias)->(dbCloseArea())
Return(aAux)
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063GetStage | Autor³ Ihorran Milholi ³Data³06.11.2013³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³Rotina para recuperar STAGE a ser endereçado o produto ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063GetStage(cIDOpera)
EndSql
(cAliasAti)->(dbGoTop())
(cAliasAti)->(dbCloseArea())
Return cStage
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Fun‡„o ³VA063AvarValid | Autor³ Ihorran Milholi ³Data³06.11.2013³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descri‡„o ³Rotina para validação da avaria com autorização do lider ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³ ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
Static Function VA063AvarValid(nQtdAvar,nQtde,aRecSDB)
If nQtdAvar == 0
lRet := .t.
aNotasOrig := VA063GetNfs(AllTrim(SDB->DB_DOC),SDB->DB_PRODUTO,SDB-
>DB_LOTECTL,SDB->DB_NUMLOTE,SDB->DB_LOCAL)
lRet := .t.
Else
lRet := .f.
nQtdAvar:= 0
EndIf
lRet := .f.
nQtdAvar:= 0
EndIf
Return(lRet)
// LEANDRO
Static Function LiberarCQ(cDocto,cProduto,nSldLiber)
Local aLibera := {}
Local cLocCQ := SuperGetMV('MV_CQ', .F., '98')
Local cArmazDes := "01"
Local cLocDest := PadR("INSPECAO", TamSX3('D3_LOCALIZ') [1])
Local cAliasSD7 := GetNextAlias()
Local lRet := .T.
Local cAreaSDB := SDB->(GetArea())
DbSelectArea("SD7")
DbSetOrder(1)
DbGoTop()
nTotPed := 0
While !(cAliasSD7)->(Eof())
nTotPed += (cAliasSD7)->D7_SALDO
(cAliasSD7)->(DbSkip())
EndDo
If !(cAliasSD7)->(Eof())
If nTotPed < nSldLiber
VTAlert("Não ha saldo suficiente no armazem " +
cLocCQ,"Atencao",.T.,4000,3)
Return .T.
EndIf
EndIF
(cAliasSD7)->(DbGoTop())
If !(cAliasSD7)->(Eof())
While !(cAliasSD7)->(Eof())
lSdl98 := .T.
SD7->(dbGoTo((cAliasSD7)->R_E_C_N_O_))
If nSldLiber == 0
Exit
EndIf
If (cAliasSD7)->D7_SALDO == 0
(cAliasSD7)->(DbSkip())
Loop
EndIf
aLibera := {}
nQdtEnder := Min((cAliasSD7)->D7_SALDO, nSldLiber)
nSldLiber -= nQdtEnder
aAdd(aLibera,{ {"D7_TIPO" ,1
,Nil},; // 1=Libera o item do CQ
{"D7_DATA" ,dDataBase
,Nil},;
{"D7_NUMSEQ" ,SD7->D7_NUMSEQ
,Nil},;
{"D7_QTDE" ,nQdtEnder
,Nil},;
{"D7_OBS" ,"Lib. WMS VIXA063"
,Nil},;
{"D7_QTSEGUM" ,0
,Nil},;
{"D7_MOTREJE" ,""
,Nil},;
{"D7_LOCDEST" ,cArmazDes
,Nil},;
{"D7_LOCALIZ" ,cLocDest
,Nil},;
{"D7_SALDO" ,NIL
,Nil},;
{"D7_SALDO2" ,NIL
,Nil},;
{"D7_ESTORNO" ,NIL
,Nil}})
//{"D7_LOCAL" ,"98"
,Nil},;
//{"D7_PRODUTO" ,SD7-
>D7_PRODUTO ,Nil},;
lMsErroAuto := .F.
MSExecAuto({|x,y,z| MATA175(x,y)},aLibera,4)
If lMsErroAuto
//DisarmTransaction()
VTAlert("Houve um erro na rotina, favor tentar
novamente","Atenção.",.T.,4000,3)
//MOSTRAERRO()
lRet := .F.
Exit
Else
EndIf
(cAliasSD7)->(DbSkip())
EndDo
EndIf
(cAliasSD7)->(dbCloseArea())
RestArea(cAreaSDB)
Return lRet
dbSelectArea("SBE")
SBE->(dbSetOrder(1))
SBE->(DbSeek(xFilial("SBE")+"01"+cDestLocal))
dbSelectArea("SDA")
SDA->(dbSetOrder(1))
SDA->(DbGoTo((cAliasSDA)->SDARECNO))
aAdd(_aItensSDB,aItem)
lMsErroAuto := .F.
//Realiza o endereçamento
MSExecAuto({|x,y,z| mata265(x,y,z)},aCabSDA,_aItensSDB,3)
If lMsErroAuto
lRet := .F.
MostraErro()
Else
//Alert("Ok")
Endif
EndIf
(cAliasSDA)->(dbCloseArea())
Return lRet
If (_cAliasTMP)->(EOF())
(_cAliasTMP)->(dbCloseArea())
Return(.T.)
EndIf
(_cAliasTMP)->(dbGoTop())
While (_cAliasTMP)->(!EOF())
cItem := '00'
aCabec := {}
aItem := {}
aItens := {}
aDcn := {}
aItDcn := {}
aRecSZT := {} // Listagem das ocorrencias
que geraram o Pedido
aRecDCN := {}
_cOcorrencia := (_cAliasTMP)->ZT_OCORR
_cFornecedor := (_cAliasTMP)->F1_FORNECE
_cProduto := (_cAliasTMP)->D1_COD
_nSaldoPrd := (_cAliasTMP)->ZT_QUANT
_cTransp := (_cAliasTMP)->F1_TRANSP
cMensPedido := "DEV ROMANEIO " + (_cAliasTMP)->ZT_DOC + " - " +
ALLTRIM(cUserName)
While (_cAliasTMP)->(!Eof())
cItem := SOMA1(cItem)
aItem := {}
aItDcn := {}
nQtd := MIN(_nSaldoPrd,(_cAliasTMP)->D1_QUANT)
_nSaldoPrd := _nSaldoPrd - nQtd
//cTES := MaTesInt(2,MV_PAR05,MV_PAR01,MV_PAR02,'C',
(_cAliasTMP)->B1_COD)
aAdd(aItem, {"C6_FILIAL" , FwCodFil()
,Nil})
aAdd(aItem, {"C6_ITEM" , cItem
,Nil}) // Numero do Item no Pedido
aAdd(aItem, {"C6_PRODUTO" , (_cAliasTMP)->ZT_PRODUTO
,Nil}) // Codigo do Produto
If cTipoPed == "D" // Para devolução preenche os campos da
NF origem
aAdd(aItem, {"C6_NFORI" ,(_cAliasTMP)->D1_DOC
,Nil})
aAdd(aItem, {"C6_SERIORI" ,(_cAliasTMP)->D1_SERIE
,Nil})
aAdd(aItem, {"C6_ITEMORI" ,(_cAliasTMP)->D1_ITEM
,Nil})
EndIf
aAdd(aItem, {"C6_QTDVEN" , nQtd
,Nil}) // Quantidade Vendida
aAdd(aItem, {"C6_PRUNIT" , (_cAliasTMP)->D1_VUNIT
,NIL}) // PRECO DE LISTA
aAdd(aItem, {"C6_PRCVEN" , (_cAliasTMP)->D1_VUNIT
,Nil}) // Preco Unitario Liquido
aAdd(aItem, {"C6_VALOR" , Round((_cAliasTMP)->D1_VUNIT *
nQtd,2) ,Nil}) // Valor Total do Item
aAdd(aItem, {"C6_ENTREG" , dDataBase
,Nil}) // Data da Entrega
aAdd(aItem, {"C6_OPER" , "52"
,Nil}) // Tipo de Entrada/Saida do Item
//avaria
aAdd(aItem, {"C6_OPER" , "01"
,Nil}) // Tipo de Entrada/Saida do Item
aAdd(aItens, aItem)
aAdd(aRecSZT,(_cAliasTMP)->SZTRECNO)
(_cAliasTMP)->(dbSkip())
EndDo
If lMsErroAuto
xError := MostraErro("\system\","VIXA063_Erro_Pedido.log")
// cria o arquivo de erro e armazena o erro.
lRet := .F.
lRetSZT := .F.
Else
cNumPedido := SC5->C5_NUM
EndIf
EndDo
If lRetSZT
(_cAliasDCN)->(dbGoTop())
While (_cAliasDCN)->(!EOF())
dbSelectArea("DCN")
DCN->(dbGoTo((_cAliasDCN)->DCNRECNO))
RecLock("DCN",.F.)
DCN->DCN_ACAO := '2' // 1=Doc. Entrada;2=Doc.
Saida;3=Movimento Interno
DCN->DCN_STATUS := '3' // 1=Ocorrencia
Registrada;2=Ocorrencia em Aguardo;3=Ocorrencia Encerrada
DCN->DCN_DTFIM := dDatabase
DCN->DCN_HRFIM := TIME()
DCN->DCN_YPED := (_cAliasDCN)->ZT_PEDIDO
DCN->DCN_YITPED := (_cAliasDCN)->C6_ITEM
DCN->(MsUnlock())
(_cAliasDCN)->(dbSkip())
EndDo
(_cAliasDCN)->(dbCloseArea())
EndIf
(_cAliasTMP)->(dbCloseArea())
RestArea(aAreaSB2)
RestArea(aArea)
Return lRet
EndSQL
If (cAlias)->(EOF())
(cAlias)->(dbCloseArea())
Return
EndIf
If !Empty(xError)
cAssunto := 'Erro Checkin de Produtos. Romaneio nº: ' +cDocto
Else
cAssunto := 'Divergências Checkin de Produtos. Romaneio nº: '
+cDocto
EndIF
cOBS := ""
cHTML := '<HTML>'
cHTML += '<script language="JavaScript"></script>'
cHTML += '<TITLE>Produtos com Divergência no Checkin</TITLE>'
cHTML += '<body bgcolor="#FFFFFF">'
cHTML += '<font color="black" face="Verdana" size="3"><b>Romaneio nº: ' +
cDocto + ' - '+ DTOC((cAlias)->ZT_DATA)+ '</b></font><br><br>'
cHTML += '<font color="black" face="Verdana" size="2"><b>Transportadora: ' +
(cAlias)->Z53_NOMETR + ' </b></font><br><br>'
//cHTML += '<font color="black" face="Verdana"
size="2"><b>'+cOBS+'</b></font><br><br>'
If !Empty(xError)
cHTML += '<font color="black" face="Verdana" size="2"><b>Erro check-in!
</b></font><br>'
cHTML += '<font color="black" face="Verdana" size="3"><b>Abaixo segue
relatório de inconsistência gerada durante o processo para tratativa das
divergências para o check-in do romaneio.</b></font><br><br>'
cHTML += '<font color="black" face="Verdana" size="3"><b>'
cHTML += '<dd><dl>'+ xError +'</dd></dl>'
cHTML += '</b></font><br><br>'
cHTML += '<font color="black" face="Verdana"
size="3"><b>ATENÇÃO!</b></font><br><br>'
cHTML += '<font color="black" face="Verdana" size="3"><b>Após a solução
do incidente demonstrado no relatório, tentar finalizar o recebimento
novamente.</b></font><br><br>'
Else
cHTML += '<font color="black" face="Verdana" size="2"><b>Itens:
</b></font><br>'
cHTML += '<table border="1" cellpadding="10" cellspacing="1"
width="737" height="50">'
cHTML += '<tr>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Data Ocorr</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Hora</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Ocorrencia</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Operad.</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Lider</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Produto</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Descrição</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Pedido</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Qtd</b></font></td>'
cHTML += '<td bgcolor="#99CCFF"><p align="left"><font size="1"
face="Verdana"><b>Vlr Tot</b></font></td>'
cHTML += '</tr>'
While !(cAlias)->(EOF())
cHTML += '<tr>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+DTOC((cAlias)->ZT_DATA)+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+(cAlias)->ZT_HORA+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+ALLTRIM((cAlias)->ZT_MOTIVO)+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+UsrRetName((cAlias)->ZT_USER)+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+UsrRetName((cAlias)->ZT_USERLIB)+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+(cAlias)->ZT_PRODUTO+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+(cAlias)->B1_DESC+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+(cAlias)->C5_NUM+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+ALLTRIM(TRANSFORM((cAlias)->ZT_QUANT,PesqPict("SC6","C6_QTDVEN")))
+'</font></p></td>'
cHTML += '<td><p align="left"><font size="1"
face="Verdana">'+ALLTRIM(TRANSFORM((cAlias)->ZT_CUSTO,PesqPict("SC6","C6_VALOR")))
+'</font></p></td>'
cHTML += '</tr>'
(cAlias)->(DbSkip())
EndDo
EndIf
cHTML += '</table>'
cHTML += '<BR>'
cHTML += '<font size="1" color="#007FFF" face="Verdana">Este e-mail é
automático. Não Responda esta mensagem.</font>'
cHTML += '<BR>'
cHTML += '</body>'
cHTML += '</HTML>'
If u_EnvEmail(cDestino,cAssunto,cHtml)
Else
//MsgAlert('Problemas ao enviar email com dados do corte do pedido')
Endif
(cAlias)->(dbCloseArea())
Return