Árvore de páginas

Versões comparadas

Chave

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

...

Descrição:

Possibilita a realização das manutenções do Pedido de Exportação, tais como Inclusão, Alteração e Exclusão através do mecanismo de rotina automática.

Produto:

Microsiga Protheus

Segmento:Comércio Exterior
Módulo:SIGAEEC - Easy Export Control
Rotina:
RotinaNome Técnico
EECAP100.PRW

Manutenção Pedidos de exportação

EECAP101.PRWManutenção de Pedidos de Exportação
EECAP102.PRWManutenção de Pedidos de Exportação
AVGERAL.PRWFunção genérica para os módulos de Comércio Exterior
UPDEEC.PRWFunções de atualização de dicionários do módulo de Exportação - SIGAEEC
País(es):Todos
Banco(s) de Dados:Todos Homologados pela TOTVS
Tabelas Utilizadas:

EE7 - Capa do Pedidos de Exportação

EE8 - Itens do Pedidos de Exportação

EEN - Notifys

EXB - Agenda de Atividades/Documentos

EEB - Agentes de um Pedido

Parâmetros:
NomeTipoDescriçãoObrigatório
nOpcNuméricoOpção: 3=Incluir; 4=Alterar; 5=Excluir;
X
aDadosArray of RecordArray com os dados para integração automáticaX

Observações:

Alguns campos das tabelas de pedidos podem receber o tratamento via dicionario de dados (SX3), o qual permite ser utilizado somente por alguns módulos (X3_USADO).
Para esses casos é necessário executar a preparação do ambiente passando a opção do módulo ativo.

Exemplo: PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" Modulo "EEC" TABLES "EE7", "EE8","EEB", "EEN","EXB"

Inclusão automática do Pedido de Exportação

Para realizar a inclusão automática de um pedido de exportação é necessário a utilização da função MsExecAuto utilizando o programa EECAP100 responsável pela manutenção dos pedidos.

Para a utilização da rotina automática deve-se utilizar arrays multi dimensionais no envio dos dados para o processamento que segue o mesmo critério do pedidos que são colocados via tela. Esses arrays são definidos da seguinte forma:

Modelo do array:

    1. nome do campo;
    2. dados a serem inseridos;
    3. validação caso queira substituir a validação do dicionário de dados (SX3);

Para o caso de uma alteração e necessidade de deletar um item o mesmo deve receber no array uma linha onde o nome do campo deve ser AUTDELETA e o dado a ser enviado "S" para o caso de excluir o item do pedido ou "N" para manter, ou até mesmo não mandar nada quando não se deseja a exclusão. Abaixo alguns exemplos:

    • O array para o cabeçalho:

aadd( aCab , {'EE7_PEDIDO',"0000000001", NIL} )

    • O array para os itens que recebe três parâmetros e a cada item deve ser adicionado num array principal para envio dos itens:

aAdd(aItem, {'EE8_SEQUEN', str(1), NIL} )

quando for uma alteração e houver a necessidade de deletar um item deve-se passar a seguinte linha no array do item:

aAdd(aItem, {"AUTDELETA" , "S" , Nil} )

Após passar as informações de um item no array o mesmo deve ser incluído num outro array de itens e dessa forma manter a estrutura definida para cada item:

aadd( aItens, aClone( aItem ))

    • Para os arrays dos auxiliares que seguem praticamente a mesma lógica dos itens com um adendo de quando vai passar a informação para o array de auxiliares deve-se informar qual alias da tabela que receberá o cadastro:

aAdd(aDoc, {"EXB_TIPO"  , "1"            , Nil})

aAdd(aDoc, {"EXB_CODATV", "02"     , Nil})

aAdd(aDocs, aDoc)

aAdd(aAux, {"EXB", aDocs})

Repare que o array Doc é inserido no array Docs e em seguida inserido num novo array auxiliar onde o mesmo recebe o aliás da tabela de documentos e o array contendo os documentos que deseja incluir através da rotina automática.


Para um melhor entendimento segue abaixo um RDMake com a inclusão, alteração e exclusão de um pedido e seus auxiliares.

RDMake de exemplo para integração automática da rotina de Pedido de Exportação.Exemplo
Bloco de código
languageactionscript3
linenumberstrue
#INCLUDE "TOTVS.CH"


User Function MyEECAP100()
Local lRot := .T.
Local cPedido := "0000000001"
Private aPDocs       := {}
Private aPPedidos    := {}
Private aPAgentes    := {}
Private aPNotifys    := {}
Private aPProdutos   := {}
Private aCondPag    := {}
Private aEmb        := {}

/************************
//Inicializa o ambiente
*************************/
RpcSetType(3)
RpcSetEnv("99", "01")
nModulo := 29
cModulo := "EEC"
__CUSERID := "000000"

while lRot 
    //Executa a integração para Incluir o Pedido
    If MsgYesNo("Deseja Incluir o Pedido e Auxiliares?", "Aviso")
        IncAP100(cPedido, 3, 3)
    //Executa a Alteração Alterando o Pedido e Reenviando os Auxiliares
    elseIf MsgYesNo("Deseja Alterar o Pedido e Auxiliares?", "Aviso")
        IncAP100(cPedido, 4, 4)
    //Executa a Alteração Alterando o Pedido e Excluindo os Auxiliares
    elseIf MsgYesNo("Deseja Alterar o Pedido e Excluir Auxiliares?", "Aviso")
        IncAP100(cPedido, 4, 5)
    //Executa a Alteração Excluindo o Pedido
    elseIf MsgYesNo("Deseja Excluir o Pedido?", "Aviso")
        IncAP100(cPedido, 5, 5)
    elseIf MsgYesNo("Deseja parar a rotina?", "Aviso")
        lRot := .F.
    EndIf

enddo

Return Nil
/*****************************************************************
******************************************************************/
Static Function IncAP100(cProcesso, nOpc, nOpcDet)
Local aCab := {}, aItens := {}, aAux := {}
Local nP := 0, nI, nN, nD, nA
Local cFornece := ""
Local cFoLoja := ""
Private lMsErroAuto := .f.

aPDocs       := {}
aPPedidos    := {}
aPAgentes    := {}
aPNotifys    := {}
aPProdutos   := {}
aCondPag     := {}
aEmb         := {}

aItens := {}
aItem := {}

if nOpc == 3

      aCab := {}
      aadd( aCab , {'EE7_PEDIDO'   , cPedido                 , NIL} )
      aadd( aCab , {'EE7_IMPORT'   , "000001"                , NIL} )
      aadd( aCab , {'EE7_IMLOJA'   , "01"                    , NIL} )
      aadd( aCab , {'EE7_IMPODE'   , "NOME CLIENTE"          , NIL} )
      aadd( aCab , {'EE7_FORN'     , "000001"                , NIL} )
      aadd( aCab , {'EE7_FOLOJA'   , "01"                    , NIL} )
      aadd( aCab , {'EE7_IDIOMA'   , "INGLES-INGLES"         , NIL} )
      aadd( aCab , {'EE7_CONDPA'   , "00001"                 , NIL} )
      aadd( aCab , {'EE7_INCOTE'   , 'FOB'                   , NIL} )
      aadd( aCab , {'EE7_MOEDA'    , 'US$'                   , NIL} )
      aadd( aCab , {'EE7_CALCEM'   , '1'                     , NIL} )
      aadd( aCab , {'EE7_VIA'      , "001"                   , NIL} )

      aAdd(aItem, {'EE8_SEQUEN'    , str(1)                  , NIL} )
      aAdd(aItem, {'EE8_COD_I'     , "0000000001"            , NIL} )
      aAdd(aItem, {'EE8_FORN'      , "000001"                , NIL} )
      aAdd(aItem, {'EE8_FOLOJA'    , "01"                    , NIL} )
      aAdd(aItem, {'EE8_SLDINI'    , 100                     , NIL} )
      aAdd(aItem, {'EE8_EMBAL1'    , "001"                   , NIL} )
      aAdd(aItem, {'EE8_QE'        , 1                       , NIL} )
      aAdd(aItem, {'EE8_PRECO '    , 100                     , NIL} )
      aAdd(aItem, {'EE8_PLSQUN'    , 1                       , NIL} )
      aAdd(aItem, {'EE8_TES'       , "501"                   , NIL} )
      aAdd(aItem, {'EE8_POSIPI'    , "00000000"              , NIL} )
      aAdd(aItem, {"AUTDELETA"     , "N"                     , Nil} )
      AADD( aItens, aClone(aItem))
      aItem := {}

Elseif nOpc == 4
      aadd( aCab , {'EE7_PEDIDO'   , cPedido                 , NIL} )
      aadd( aCab , {'EE7_IMPORT'   , "000001"                , NIL} )
      aadd( aCab , {'EE7_IMLOJA'   , "01"                    , NIL} )
      aadd( aCab , {'EE7_IMPODE'   , "NOME CLIENTE"          , NIL} )
      aadd( aCab , {'EE7_FORN'     , "000001"                , NIL} )
      aadd( aCab , {'EE7_FOLOJA'   , "01"                    , NIL} )
      aadd( aCab , {'EE7_IDIOMA'   , "INGLES-INGLES"         , NIL} )
      aadd( aCab , {'EE7_CONDPA'   , "00002"                 , NIL} )
      aadd( aCab , {'EE7_INCOTE'   , 'FOB'                   , NIL} )
      aadd( aCab , {'EE7_MOEDA'    , 'US$'                   , NIL} )
      aadd( aCab , {'EE7_CALCEM'   , '1'                     , NIL} )
      aadd( aCab , {'EE7_VIA'      , "002"                   , NIL} )

      aAdd(aItem, {'EE8_SEQUEN'    , str(1)                  , NIL} )
      aAdd(aItem, {'EE8_COD_I'     , "0000000001"            , NIL} )
      aAdd(aItem, {'EE8_FORN'      , "000001"                , NIL} )
      aAdd(aItem, {'EE8_FOLOJA'    , "01"                    , NIL} )
      aAdd(aItem, {'EE8_SLDINI'    , 100                     , NIL} )
      aAdd(aItem, {'EE8_EMBAL1'    , "001"                   , NIL} )
      aAdd(aItem, {'EE8_QE'        , 1                       , NIL} )
      aAdd(aItem, {'EE8_PRECO '    , 100                     , NIL} )
      aAdd(aItem, {'EE8_PLSQUN'    , 1                       , NIL} )
      aAdd(aItem, {'EE8_TES'       , "501"                   , NIL} )
      aAdd(aItem, {'EE8_POSIPI'    , "00000000"              , NIL} )
      aAdd(aItem, {"AUTDELETA"     , "S"                     , Nil} )
      AADD( aItens, aClone(aItem))
      aItem := {}

      aAdd(aItem, {'EE8_SEQUEN'    , str(1)                  , NIL} )
      aAdd(aItem, {'EE8_COD_I'     , "0000000002"            , NIL} )
      aAdd(aItem, {'EE8_FORN'      , "000001"                , NIL} )
      aAdd(aItem, {'EE8_FOLOJA'    , "01"                    , NIL} )
      aAdd(aItem, {'EE8_SLDINI'    , 200                     , NIL} )
      aAdd(aItem, {'EE8_EMBAL1'    , "002"                   , NIL} )
      aAdd(aItem, {'EE8_QE'        , 2                       , NIL} )
      aAdd(aItem, {'EE8_PRECO '    , 200                     , NIL} )
      aAdd(aItem, {'EE8_PLSQUN'    , 2                       , NIL} )
      aAdd(aItem, {'EE8_TES'       , "501"                   , NIL} )
      aAdd(aItem, {'EE8_POSIPI'    , "00000000"              , NIL} )
      aAdd(aItem, {"AUTDELETA"     , "N"                     , Nil} )
      AADD( aItens, aClone(aItem))
      aItem := {}

elseIf nOpc == 5
      aadd( aCab , {'EE7_PEDIDO'   , cPedido                 , NIL} )
      aadd( aCab , {'EE7_IMPORT'   , "000001"                , NIL} )
      aadd( aCab , {'EE7_IMLOJA'   , "01"                    , NIL} )
      aadd( aCab , {'EE7_FORN'     , "000001"                , NIL} )
      aadd( aCab , {'EE7_FOLOJA'   , "01"                    , NIL} )
      aAdd( aCab , {"AUTDELETA"    ,"S"                      , Nil})

      aAdd(aItem, {'EE8_SEQUEN'    , str(1)                  , NIL} )
      aAdd(aItem, {'EE8_COD_I'     , "0000000002"            , NIL} )
      aAdd(aItem, {'EE8_FORN'      , "000001"                , NIL} )
      aAdd(aItem, {'EE8_FOLOJA'    , "01"                    , NIL} )
      aAdd(aItem, {"AUTDELETA"     ,"S"                      , Nil} )
      AADD( aItens, aClone(aItem))
      aItem := {}

EndIf

// Complementos dos pedido Notifys, Documentos e Agentes
If alltrim(str(nOpcDet)) $ "3|4|5" .and. nOpc <> 5
   aAux := {}

   // Notifys
   aNotifys := {}
   aNotify := {}

   if nOpcDet == 3 // inclusão dos notifys

         aAdd(aNotify, {"EEN_IMPORT", "000001"        , Nil})
         aAdd(aNotify, {"EEN_IMLOJA", "01"            , Nil})

   elseif nOpcDet == 4 // alteração dos notifys

         aAdd(aNotify, {"EEN_IMPORT", "000001"        , Nil})
         aAdd(aNotify, {"EEN_IMLOJA", "01"            , Nil})
         aAdd(aNotify, {"AUTDELETA" , "S"             , Nil})

         aAdd(aNotify, {"EEN_IMPORT", "000002"        , Nil})
         aAdd(aNotify, {"EEN_IMLOJA", "01"            , Nil})
         aAdd(aNotify, {"AUTDELETA" , "N"             , Nil})


   elseIf nOpcDet == 5 // exclusão do notify

         aAdd(aNotify, {"EEN_IMPORT", "000001"        , Nil})
         aAdd(aNotify, {"EEN_IMLOJA", "01"            , Nil})
         aAdd(aNotify, {"AUTDELETA" , "S"             , Nil})

   EndIf
   aAdd(aNotifys, aNotify)
   aAdd(aAux, {"EEN", aNotifys})

   // Documentos
   aDocs := {}
   aDoc := {}
   if nOpcDet == 3 // inclusão dos Documentos

         aAdd(aDoc, {"EXB_TIPO"  , "1"           , Nil})
         aAdd(aDoc, {"EXB_CODATV", "01"          , Nil})

   elseif nOpcDet == 4 // alteração dos Documentos
   
         aAdd(aDoc, {"EXB_TIPO"  , "1"           , Nil})
         aAdd(aDoc, {"EXB_CODATV", "01"          , Nil})
         aAdd(aDoc, {"AUTDELETA" , "S"           , Nil})

         aAdd(aDoc, {"EXB_TIPO"  , "1"           , Nil})
         aAdd(aDoc, {"EXB_CODATV", "02"          , Nil})
         aAdd(aDoc, {"AUTDELETA" ,"N"            , Nil})

   elseIf nOpcDet == 5  // exclusão do documento

         aAdd(aDoc, {"EXB_TIPO"  , "1"           , Nil})
         aAdd(aDoc, {"EXB_CODATV", "02"          , Nil})
         aAdd(aDoc, {"AUTDELETA" , "S"           , Nil})

   EndIf
   aAdd(aDocs, aDoc)
   aAdd(aAux, {"EXB", aDocs})

   // Agentes
   aAgentes := {}
   aAgente := {}
   if nOpcDet == 3 // inclusão dos Agentes

         aAdd(aAgente, {"EEB_CODAGE", "001"           , Nil})
         aAdd(aAgente, {"EEB_TIPCOM", "1"             , Nil}) // 1-A Remeter | 2-Conta Grafcica | 3-Deduzir da Fatura
         aAdd(aAgente, {"EEB_TIPCVL", "2"             , Nil}) // 1-Percentual | 2-Valor Fixo | 3-Percentual por item
         aAdd(aAgente, {"EEB_VALCOM", nA*10           , Nil})
         aAdd(aAgente, {"EEB_REFAGE", "NOME AGENTE"   , Nil})

   elseif nOpcDet == 4 // alteração dos Agentes

         aAdd(aAgente, {"EEB_CODAGE", "001"           , Nil})
         aAdd(aAgente, {"EEB_TIPCOM", "1"             , Nil}) // 1-A Remeter | 2-Conta Grafcica | 3-Deduzir da Fatura
         aAdd(aAgente, {"EEB_TIPCVL", "2"             , Nil}) // 1-Percentual | 2-Valor Fixo | 3-Percentual por item
         aAdd(aAgente, {"EEB_VALCOM", nA*10           , Nil})
         aAdd(aAgente, {"EEB_REFAGE", "NOME AGENTE"   , Nil})
         aAdd(aAgente, {"AUTDELETA" ,"S" , Nil})

         aAdd(aAgente, {"EEB_CODAGE", "002"           , Nil})
         aAdd(aAgente, {"EEB_TIPCOM", "1"             , Nil}) // 1-A Remeter | 2-Conta Grafcica | 3-Deduzir da Fatura
         aAdd(aAgente, {"EEB_TIPCVL", "2"             , Nil}) // 1-Percentual | 2-Valor Fixo | 3-Percentual por item
         aAdd(aAgente, {"EEB_VALCOM", nA*10           , Nil})
         aAdd(aAgente, {"EEB_REFAGE", "NOME AGENTE"   , Nil})
         aAdd(aAgente, {"AUTDELETA" ,"N" , Nil})

   elseIf nOpcDet == 5  // exclusão do agente

         aAdd(aAgente, {"EEB_CODAGE", "002"           , Nil})
         aAdd(aAgente, {"EEB_TIPCOM", "1"             , Nil}) // 1-A Remeter | 2-Conta Grafcica | 3-Deduzir da Fatura
         aAdd(aAgente, {"EEB_TIPCVL", "2"             , Nil}) // 1-Percentual | 2-Valor Fixo | 3-Percentual por item
         aAdd(aAgente, {"AUTDELETA" ,"S" , Nil})

   EndIf
   aAdd(aAgentes, aAgente)
   aAdd(aAux, {"EEB", aAgentes})

EndIf

   // execução DA rotina utomática
   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 "++ cAcao+" com sucesso!", "Aviso")
    EndIf

Next

Return

...