Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

RDMake de exemplo para integração automática da rotina de uma Via de Transportes.
Bloco de código
languageactionscript3
linenumberstrue
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