User Function IncVtransp()
Local cViaTran := ""
Local lRot := .T.
Private lMsErroAuto := .F.
/************************
//Inicializa o ambiente
*************************/
RpcSetType(3)
RpcSetEnv("99", "01")
nModulo := 29
cModulo := "EEC"
__CUSERID := "000000"
cViaTran := AVKEY("V4","YQ_VIA")
while lRot
//Executa o primeiro critério de aceite, inclusão, alteração e exclusão simples
If MsgYesNo("Deseja executar o primeiro critério de aceite, inclusão, alteração e exclusão simples?", "Aviso")
//Executa a integração para Incluir a via de transporte
If MsgYesNo("Deseja Incluir a via de transporte?", "Aviso")
MyEECCV100(cViaTran, 3, 1)
//Executa a Alteração da via de transporte onde inclui mais um registro
elseIf MsgYesNo("Deseja Alterar a via de transporte incluindo uma origem destino?", "Aviso")
MyEECCV100(cViaTran, 4, 1)
//Executa a Alteração da via de transporte onde exclui um registro
elseIf MsgYesNo("Deseja Alterar a via de transporte excluindo uma origem destino?", "Aviso")
MyEECCV100(cViaTran, 6, 1)
//Executa a exclusão da via de transporte
elseIf MsgYesNo("Deseja Excluir a via de transporte?", "Aviso")
MyEECCV100(cViaTran, 5, 1)
endif
//Executa o segundo critério de aceite, inclusão, alteração e exclusão
elseif MsgYesNo("Deseja executar o segundo critério de aceite, inclusão de pedidos com e sem o detalhe do atuvia para atualizar o cadastro da via de transporte?", "Aviso")
//Executa a integração de um pedido de exportação sem o atuvia, onde deve retornar o erro de que não existe a origem ou destino para o pedido
If MsgYesNo("Deseja Incluir o pedido SEM o atuvia? Nesse cenário deve retornar a mensagem de error do execauto.", "Aviso")
MyEECCV100(cViaTran, 3, 2)
//Executa a Alteração da via de transporte onde inclui mais um registro
elseIf MsgYesNo("Deseja o pedido COM o atuvia? Nesse cenário deve incluir o registro de origem e destino no cadastro da via de transporte.", "Aviso")
MyEECCV100(cViaTran, 4, 2)
endif
//pergunta para sair da rotina de via de transporte
elseIf MsgYesNo("Deseja SAIR da rotina?", "Aviso")
lRot := .F.
EndIf
enddo
Return
static function MyEECCV100(cViaTran,nOpc,cCriterio)
Local nI
Local aCab := {}
Local aItem := {}
Local aItens := {}
if cCriterio == 1 // teste do execauto de rotinas padrões, inclusão, alteração e exclusão da via de transporte
if nOpc == 3 // inclusão da via de transporte
cTpTransp := "1-"+alltrim(tabela("Y3","1",.F.))
aCab := {}
aAdd(aCab, {"YQ_VIA" , cViaTran , Nil})
aAdd(aCab, {"YQ_DESCR" , "ITEG AUTOMATICA" , Nil})
aAdd(aCab, {"YQ_COD_DI" , cTpTransp , Nil})
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"SFA"))
cDescDest := SY9->Y9_DESCR
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"RIO"))
cDescOrig := SY9->Y9_DESCR
aItem := {}
aAdd(aItem, {"YR_VIA" , cViaTran , Nil})
aAdd(aItem, {"YR_ORIGEM" , "RIO" , Nil})
aAdd(aItem, {"YR_DESTINO" , "SFA" , Nil})
aAdd(aItem, {"YR_MOEDA" , "US$" , Nil})
aAdd(aItem, {"YR_TRANS_T" , 10 , Nil})
aAdd(aItem, {"YR_PAIS_DE" , "249" , Nil})
aAdd(aItem, {"YR_CID_DES" , cDescDest , Nil})
aAdd(aItem, {"YR_PAIS_OR" , "105" , Nil})
aAdd(aItem, {"YR_CID_ORI" , cDescOrig , Nil})
aAdd(aItem, {"YR_TIPTRAN" , "1" , Nil})
aAdd(aItens, aItem)
elseIf nOpc == 4 // alteração da via de transporte incluindo segundo registro
cTpTransp := "1-"+alltrim(tabela("Y3","1",.F.))
aCab := {}
aAdd(aCab, {"YQ_VIA" , cViaTran , Nil})
aAdd(aCab, {"YQ_DESCR" , "ITEG AUTOMATICA" , Nil})
aAdd(aCab, {"YQ_COD_DI" , cTpTransp , Nil})
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"SFA"))
cDescDest := SY9->Y9_DESCR
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"SSZ"))
cDescOrig := SY9->Y9_DESCR
aItem := {}
aAdd(aItem, {"YR_VIA" , cViaTran , Nil})
aAdd(aItem, {"YR_ORIGEM" , "SSZ" , Nil})
aAdd(aItem, {"YR_DESTINO" , "SFA" , Nil})
aAdd(aItem, {"YR_MOEDA" , "US$" , Nil})
aAdd(aItem, {"YR_TRANS_T" , 10 , Nil})
aAdd(aItem, {"YR_PAIS_DE" , "249" , Nil})
aAdd(aItem, {"YR_CID_DES" , cDescDest , Nil})
aAdd(aItem, {"YR_PAIS_OR" , "105" , Nil})
aAdd(aItem, {"YR_CID_ORI" , cDescOrig , Nil})
aAdd(aItem, {"YR_TIPTRAN" , "1" , Nil})
aAdd(aItens, aItem)
elseIf nOpc == 6 // alteração da via de transporte excluindo primeiro registro
nOpc := 4
cTpTransp := "1-"+alltrim(tabela("Y3","1",.F.))
aCab := {}
aAdd(aCab, {"YQ_VIA" , cViaTran , Nil})
aAdd(aCab, {"YQ_DESCR" , "ITEG AUTOMATICA" , Nil})
aAdd(aCab, {"YQ_COD_DI" , cTpTransp , Nil})
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"SFA"))
cDescDest := SY9->Y9_DESCR
SY9->(dbsetorder(2),msseek(xFilial("SY9")+"RIO"))
cDescOrig := SY9->Y9_DESCR
aItem := {}
aAdd(aItem, {"YR_VIA" , cViaTran , Nil})
aAdd(aItem, {"YR_ORIGEM" , "RIO" , Nil})
aAdd(aItem, {"YR_DESTINO" , "SFA" , Nil})
aAdd(aItem, {"YR_MOEDA" , "US$" , Nil})
aAdd(aItem, {"YR_TRANS_T" , 10 , Nil})
aAdd(aItem, {"YR_PAIS_DE" , "249" , Nil})
aAdd(aItem, {"YR_CID_DES" , cDescDest , Nil})
aAdd(aItem, {"YR_PAIS_OR" , "105" , Nil})
aAdd(aItem, {"YR_CID_ORI" , cDescOrig , Nil})
aAdd(aItem, {"YR_TIPTRAN" , "1" , Nil})
aAdd(aItem, {"AUTDELETA" , "S" , Nil})
aAdd(aItens, aItem)
elseIf nOpc == 5 // exclusão da via de transporte
aCab := {}
aAdd(aCab, {"YQ_VIA" , cViaTran , Nil})
EndIf
MsAguarde({|| MSExecAuto( {|X,Y,Z| EECCV100(X,Y,Z)},aCab ,aItens, nOpc) }, "Integrando Vias de transportes!")
If lMsErroAuto
MostraErro()
lMsErroAuto := .F.
Else
cAcao := iif( nOpc == 3 , " incluido",iif(nOpc==4," alterado"," excluido"))
MsgInfo("Via de Transporte "+ alltrim(cViaTran) + cAcao+" com sucesso!", "Aviso")
EndIf
elseif cCriterio == 2 // teste do execauto do vias de transporte através da inclusão de pedidos para validar com e sem atuvia no cabeçalho
aPPedidos := {}
dbselectarea("SA1")
SA1->(dbgotop())
while SA1->(!EOF())
if SA1->A1_MSBLQL <> "1" .AND. SA1->A1_TIPO == "X" .AND. SA1->A1_TIPCLI <> "3" // pega um cliente do exterior para gerar pedido
aadd(aPPedidos, {SA1->(recno())})
exit
endif
SA1->(dbskip())
enddo
cOrigem := ""
cVia := ""
lVia := .T.
dbselectarea("SYQ") // pega a primeira via da tabela e verifica uma sigla que não exista no cadastro de via de transporte como origem
SYQ->(dbgotop())
while SYQ->(!EOF())
cVia := SYQ->YQ_VIA
SY9->(dbsetorder(1),dbgotop())
while SY9->(!EOF())
if !SYR->(dbsetorder(1),msseek(xFilial("SYR")+cVia+SY9->Y9_SIGLA+avkey("SFA","YR_ORIGEM")+avkey("1","YR_TIPTRAN")))
cOrigem := SY9->Y9_SIGLA
exit
endif
SY9->(dbskip())
enddo
exit
enddo
cConPag := ""
dbselectarea("SY6")
SY6->(dbgotop())
while SY6->(!EOF())
if SY6->Y6_DIAS_PA == -1 // pega uma condição de pagamento a vista para o teste
cConPag := SY6->Y6_COD
exit
endif
SY6->(dbskip())
enddo
aPProdutos := {}
dbselectarea("SA5")
SA5->(dbsetorder(1))
SA5->(dbgotop())
cFornece := SA5->A5_FORNECE
cFoLoja := SA5->A5_LOJA
while SA5->(!EOF()) .AND. SA5->(A5_FORNECE+A5_LOJA) == cFornece+cFoLoja
SB1->(dbsetorder(1),dbseek(xFilial("SB1")+SA5->A5_PRODUTO))
if SB1->B1_MSBLQL <> "1" // pega o primeiro produto do primeiro fornedor posicionado e que não esteja bloqueado
aadd( aPProdutos, {SB1->(recno())} )
exit
endif
SA5->(dbskip())
enddo
aEmb := {}
dbselectarea("EE5")
EE5->(dbgotop())
while EE5->(!EOF())
if EE5->EE5_PESO > 0 // pega a embalagens para os produtos
aadd( aEmb, {EE5->(recno())} )
exit
endif
EE5->(dbskip())
enddo
// verifica a próxima numeração disponível para o pedido
cPedido := "DTRADE-749-1"
nI := 1
EE7->(dbsetorder(1),dbgotop())
while EE7->(!eof()) .and. EE7->(msseek(xFilial("EE7")+avkey(cPedido,'EE7_PEDIDO')))
nI++
cPedido := "DTRADE-749-"+alltrim(str(nI))
enddo
SA1->(dbgoto(aPPedidos[1][1]))
if !empty(SA1->A1_CONDPAG)
cConPag := SA1->A1_CONDPAG
endif
aadd( aCab , {'EE7_PEDIDO' , cPedido , NIL} )
aadd( aCab , {'EE7_IMPORT' , SA1->A1_COD , NIL} )
aadd( aCab , {'EE7_IMLOJA' , SA1->A1_LOJA , NIL} )
aadd( aCab , {'EE7_IMPODE' , SA1->A1_NOME , NIL} )
aadd( aCab , {'EE7_FORN' , cFornece , NIL} )
aadd( aCab , {'EE7_FOLOJA' , cFoLoja , NIL} )
aadd( aCab , {'EE7_IDIOMA' , "INGLES-INGLES" , NIL} )
aadd( aCab , {'EE7_CONDPA' , cConPag , NIL} ) // aba financeiro
aadd( aCab , {'EE7_INCOTE' , 'FOB' , NIL} )
aadd( aCab , {'EE7_MOEDA' , 'US$' , NIL} )
aadd( aCab , {'EE7_CALCEM' , '1' , NIL} ) //aba embalagens
aadd( aCab , {'EE7_VIA' , cVia , NIL} ) //aba transportes
aadd( aCab , {'EE7_ORIGEM' , cOrigem , NIL} )
aadd( aCab , {'EE7_DEST' , 'SFA' , NIL} )
aadd( aCab , {'EE7_TIPTRA' , '1' , NIL} )
if nOpc == 4
aadd( aCab , {'ATUVIA' , .T. , NIL} )
endif
cEmb := ""
if len(aEmb) > 0
EE5->(dbgoto(aEmb[1][1]))
cEmb := EE5->EE5_CODEMB
endif
aItens := {}
for nI := 1 to len(aPProdutos)
SB1->(dbgoto(aPProdutos[nI][1]))
aItem := {}
aAdd(aItem, {'EE8_SEQUEN' , str(nI) , NIL} )
aAdd(aItem, {'EE8_COD_I' , SB1->B1_COD , NIL} )
aAdd(aItem, {'EE8_FORN' , cFornece , NIL} )
aAdd(aItem, {'EE8_FOLOJA' , cFoLoja , NIL} )
aAdd(aItem, {'EE8_SLDINI' , nI*100 , NIL} )
aAdd(aItem, {'EE8_EMBAL1' , cEmb , NIL} )
aAdd(aItem, {'EE8_QE' , 1 , NIL} )
aAdd(aItem, {'EE8_PRECO ' , nI*100 , NIL} )
aAdd(aItem, {'EE8_PLSQUN' , 1 , NIL} )
if getmv("MV_EECFAT") == .T.
aAdd(aItem, {'EE8_TES' ,"501" , NIL} )
endif
aAdd(aItem, {'EE8_POSIPI' ,SB1->B1_POSIPI , NIL} )
aadd(aItens,aclone(aItem))
next
aAux := {}
nOpc := 3
MsAguarde({|| MSExecAuto( {|X,Y,Z,Aux| EECAP100(X,Y,Z,Aux)},aCab,aItens,nOpc,aAux) }, "Integrando Pedido Automático")
If lMsErroAuto
MostraErro()
lMsErroAuto := .F.
Else
cAcao := iif( nOpc == 3 , " incluido",iif(nOpc==4," alterado"," excluido"))
MsgInfo("Pedido "+cPedido + cAcao+" com sucesso!", "Aviso")
EndIf
endif
Return
|