Árvore de páginas


Descrição:

Possibilita a realização das manutenções do Embarque 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
EECAE100.PRW

Manutenção de Embarques de processos de exportação

EECAE102.PRWManutenção de Embarques de Exportação
EECAP106.PRWManutenção de Embarques 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:

EEC - Capa do Embarque de Exportação

EE9 - Itens do Embarque de Exportação

EXL - Dados Complementares do Embarque

EEN - Notify

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 EEC, EE9, EXL, EEN, EXB e EEB 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 "EEC,EE9"


Integração automática do Embarque de Exportação

Para realizar a integração automática de um Embarque de Exportação, é necessária a utilização da função MsExecAuto. Para isso, deve ser utilizado o programa EECAE100, responsável pela manutenção dos embarques.

A utilização da rotina automática, depende da passagem de duas informações para que possa ser executada, sendo a primeira delas, a opção que se deseja realizar, ou seja, é necessário informar para a rotina se a operação que será realizada é uma Inclusão, uma Alteração ou uma Exclusão, e a segunda informação obrigatória, é o array com as informações a serem integradas.

Este array com os dados da integração, devem ser informados seguindo o seguinte critério:

Deve ser montado um único array de dados, sendo este responsável por enviar tanto as informações da capa do processo de exportação, quanto os itens e seus auxiliares (os auxiliares são opcionais).

  • Para a integração da Capa do Embarque (Tabela EEC), deve ser montado um array, onde a primeira posição deve ser passado o Alias da tabela (ECC), e a segunda posição deve conter os dados, seguindo a estrutura de Nome do Campo, Informação a ser Gravada e um terceiro parâmetro que pode ser enviada uma validação adicional para o campo. As informações da Capa do Processo, são obrigatórias para a integração automática;
  • Para a integração dos Itens do Embarque (Tabela EE9), deve ser montado um array, seguindo o mesmo critério da Capa do Embarque. A primeira posição do array deve ser informado o Alias da tabela (EE9), e a segunda posição deve conter os dados a serem integrados, seguindo a mesma estrutura da capa,  Nome do Campo, Informação a ser Gravada e um terceiro parâmetro que pode ser enviada uma validação adicional para o campo;
  • A integração de Auxiliares também podem ser feitas de forma automática. Neste caso, cada um deles deve ser montado um novo array, seguindo a mesma estrutura do Embarque. Podem ser integrados de forma automática dados de Notify (Tabela EEN), Agenda de Documentos (Tabela EXB) e Agentes de Comissão (Tabela EEB). Cada um deles deve ser um array separado contendo o Alias a ser integrado e as informações contendo o Nome do Campo, Informação a ser Gravada e um terceiro parâmetro que pode ser enviada uma validação adicional para o campo. As informações dos Auxiliares, não são obrigatórias para a integração automática


Restrições

A rotina automática para integração de Embarques de Exportação somente está disponível para processos do tipo "Exportação Regular", não sendo possível integrar os tipos de processos abaixo:

  • Processos de Intermediação: São aqueles onde o campo "Offshore" (EEC_INTERM) possui seu conteúdo igual a "1=Sim"
  • Back to Back: Processos gerenciados pela opção de menu "Back to Back"
  • Remessa em Consignação: Processos gerenciados pelas opções de menu "Rem. Exportação" e "Rem. Back to Back"
  • Venda de Remessa de Consignação: Processos gerenciados pela opção de menu "Venda Remessa" 


Vinculação automática de Adiantamento ao Embarque de Exportação

Para realizar a vinculação automática de um adiantamento ao Embarque, é necessário que o Importador/Cliente utilizado no Processo, possua adiantamento com Saldo. Para que esta integração ocorra, é necessário que seja enviado pela MsExecAuto, dentro do Array aDados, as informações do Embarque que se deseja realizar a vinculação e os dados dos adiantamentos que serão vinculados. Também será necessário informar para o sistema, o nome da rotina de vinculação do adiantamento, que no caso deve ser sempre "AE100Adian".

A estrutura do Array deve constar os dados do Processo (Tabela EEC) contendo os campos chave do Embarque (EEC_FILIAL e EEC_PREEMB) e também os dados do adiantamento (Tabela EEQ).

  • Para a Vinculação do adiantamento, é importante que seja enviado os campos de Fase do Adiantamento (EEQ_FASE), Processo (EEQ_PREEMB), Parcela (EEQ_PARC) e o Valor a ser associado, que deve ser enviado com a tag AUTVALVINC;
  • Para a exclusão de uma associação, existem duas formas de ser efetuada. No primeiro cenário, a exclusão pode ser feita informando o número da parcela da associação (que pode não ser o mesmo número da parcela do adiantamento que foi utilizado neste associação). Neste caso, junto com a parcela (EEQ_PARC), deve ser informado a Fase (EEQ_FASE) e o Processo (EEQ_PREEMB) referente a associação. No segundo cenário, a exclusão pode ser feita informando para o sistema o número da parcela do adiantamento que foi associado ao Embarque. Neste caso, os campos a serem informados para o Array devem ser os campos referente a Parcela de Origem, sendo eles Parcela de Origem (EEQ_PAOR), Fase de Origem (EEQ_FAOR) e Processo de Origem (EEQ_PROR). É importante dizer, que ao enviar qualquer um destes campos de Origem, o sistema já irá tratar como uma exclusão através da origem, então para que a parcela seja localizada, os três campos sempre deverão ser enviados.


Abaixo temos 3 exemplos de integração automática do embarque de exportação, sendo na sequência uma Inclusão, uma Alteração e uma Excluisão e também um exemplo para Vinculação e Exclusão da Vinculação de um Adiantamento com o Embarque:


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


Exemplo - Inclusão de Embarque automático com Auxiliares (Notify (EEN), Agenda de Documentos (EXB) e Agente de Comissão (EEB) )
#include "Totvs.Ch"
#include "tbiconn.ch"
User Function MyEECAE100()


Local aCab      := {}
Local aItens    := {}
Local aDados    := {}

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'Administrador' PASSWORD '' TABLES 'EEC,EE9' MODULO 'EEC'

//Dados da Capa do Embarque
aCab :={{'EEC_PREEMB'   , "EMB-AUT001"              ,NIL},;
        {'EEC_IMPORT'   ,'001'                      ,NIL},;
        {'EEC_IMLOJA'   ,'01'                       ,NIL},;
        {'EEC_IMPODE'   ,"CLIENTE 001"              ,NIL},;
        {'EEC_FORN'     ,'001'                      ,NIL},;
        {'EEC_FOLOJA'   ,'01'                       ,NIL},;
        {'EEC_IDIOMA'   ,"PORT. -PORTUGUES"         ,NIL},;
        {'EEC_CONDPA'   ,"001"                      ,NIL},;
        {'EEC_DIASPA'   , 0                         ,NIL},;
        {'EEC_MPGEXP'   ,'001'                      ,NIL},;
        {'EEC_INCOTE'   ,'FOB'                      ,NIL},;
        {'EEC_MOEDA'    ,'US$'                      ,NIL},;
        {'EEC_FRPPCC'   ,'PP'                       ,NIL},;
        {'EEC_UNIDAD'   ,'KG'                       ,NIL},;
        {'EEC_EMBAFI'   ,' '                        ,NIL},;
        {'EEC_CALCEM'   ,'1'                        ,NIL},;
        {'EEC_VIA'      ,'02'                       ,NIL},;
        {'EEC_ORIGEM'   ,'SSZ'                      ,NIL},;
        {'EEC_DEST'     ,'HST'                      ,NIL},;
        {'EEC_PAISET'   ,'249'                      ,NIL},;
        {'EEC_VIA_DE'   ,"NOME DA VIA"              ,NIL},;
        {'EEC_TIPTRA'   ,'1'                        ,NIL}}

aAdd(aDados, {"EEC", aCab})

//Dados dos Itens do Embarque
aItens := {}

aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"1"            , NIL},;
                {'EE9_COD_I'    ,'001'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 3737.95       , NIL},;
                {'EE9_QE'       ,197            , NIL},;
                {'EE9_QTDEM1'   ,19             , NIL},;
                {'EE9_EMBAL1'   ,'01'           , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL}})


aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"2 "           , NIL},;
                {'EE9_COD_I'    ,'002'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 40            , NIL},;
                {'EE9_QE'       , 20            , NIL},;
                {'EE9_QTDEM1'   , 2             , NIL},;
                {'EE9_EMBAL1'   , '01'          , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL}})

aAdd(aDados, {"EE9", aItens})

//-------Inclusão de Auxiliares
//Notify
    aNotifys := {}
    aNotify := {}
    aAdd(aNotify, {"EEN_IMPORT", "001"          , Nil})
    aAdd(aNotify, {"EEN_IMLOJA", "01"           , Nil})

    aAdd(aNotifys, aNotify)
    aAdd(aDados, {"EEN", aNotifys})

//Agenda de Documentos
    aDocs := {}
    aDoc := {}
    aAdd(aDoc, {"EXB_CODATV", "05"              , Nil})
    aAdd(aDoc, {"EXB_TIPO"  , "1"               , Nil})

    aAdd(aDocs, aDoc)
    aAdd(aDados, {"EXB", aDocs})

//Agentes
    aAgentes := {}
    aAgente := {}
    aAdd(aAgente, {"EEB_CODAGE", "002"          , Nil})
    aAdd(aAgente, {"EEB_TIPCOM", "1"            , Nil})
    aAdd(aAgente, {"EEB_TIPCVL", "1"            , Nil})
    aAdd(aAgente, {"EEB_VALCOM", 10, Nil})
    aAdd(aAgente, {"EEB_REFAGE", "TESTE", Nil})

    aAdd(aAgentes, aAgente)
    aAdd(aDados, {"EEB", aAgentes})

MsAguarde({|| MSExecAuto( {|aAux, nOpc| EECAE100(,nOpc,aAux) },aDados, 3) }, "Integrando Embarque Automático")

If lMsErroAuto
    MostraErro()
Else
    MsgInfo("Executado com sucesso!", "Aviso")
EndIf

RESET ENVIRONMENT

Return !lMsErroAuto


Alteração automática do Embarque de Exportação

IMPORTANTE: Para a alteração do Embarque de Exportação, é obrigatório que os itens tenham em sua estrutura o campo EE9_SEQEMB, pois este campo é responsável pela definição de cada item do embarque (Na Inclusão, este campo não precisa ser informado). Caso a alteração do embarque seja para a inclusão de um novo item ao Processo, os itens já existentes devem ser informado o campo EE9_SEQEMB e o item novo que está sendo incluído, não deve enviar o campo EE9_SEQEMB, pois o próprio sistema deve definir qual será a sequência deste novo item.


Exemplo - Alteração de Embarque automático com Auxiliares (Notify (EEN), Agenda de Documentos (EXB) e Agente de Comissão (EEB) )
#Include "Totvs.Ch"
#include "tbiconn.ch"


User Function MyEECAE100()

Local aCab      := {}
Local aItens    := {}
Local aDados    := {}

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'Administrador' PASSWORD '' TABLES 'EEC,EE9' MODULO 'EEC'

//Dados da Capa do Embarque
aCab :={{'EEC_PREEMB'   , "EMB-AUT001"              ,NIL},;
        {'EEC_IMPORT'   ,'001'                      ,NIL},;
        {'EEC_IMLOJA'   ,'01'                       ,NIL},;
        {'EEC_IMPODE'   ,"CLIENTE 001"              ,NIL},;
        {'EEC_FORN'     ,'001'                      ,NIL},;
        {'EEC_FOLOJA'   ,'01'                       ,NIL},;
        {'EEC_IDIOMA'   ,"PORT. -PORTUGUES"         ,NIL},;
        {'EEC_CONDPA'   ,"001"                      ,NIL},;
        {'EEC_DIASPA'   , 0                         ,NIL},;
        {'EEC_MPGEXP'   ,'001'                      ,NIL},;
        {'EEC_INCOTE'   ,'FOB'                      ,NIL},;
        {'EEC_MOEDA'    ,'US$'                      ,NIL},;
        {'EEC_FRPPCC'   ,'PP'                       ,NIL},;
        {'EEC_UNIDAD'   ,'KG'                       ,NIL},;
        {'EEC_EMBAFI'   ,' '                        ,NIL},;
        {'EEC_CALCEM'   ,'1'                        ,NIL},;
        {'EEC_VIA'      ,'02'                       ,NIL},;
        {'EEC_ORIGEM'   ,'SSZ'                      ,NIL},;
        {'EEC_DEST'     ,'HST'                      ,NIL},;
        {'EEC_PAISET'   ,'249'                      ,NIL},;
        {'EEC_VIA_DE'   ,"NOME DA VIA"              ,NIL},;
        {'EEC_TIPTRA'   ,'1'                        ,NIL}}

aAdd(aDados, {"EEC", aCab})

//Dados dos Itens do Embarque
aItens := {}

aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"1"            , NIL},;
                {'EE9_SEQEMB'   ,"1"            , NIL},;
                {'EE9_COD_I'    ,'001'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 3737.95       , NIL},;
                {'EE9_QE'       ,197            , NIL},;
                {'EE9_QTDEM1'   ,19             , NIL},;
                {'EE9_EMBAL1'   ,'01'           , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL}})


aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"2 "           , NIL},;
                {'EE9_SEQEMB'   ,"2"            , NIL},;
                {'EE9_COD_I'    ,'002'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 40            , NIL},;
                {'EE9_QE'       , 20            , NIL},;
                {'EE9_QTDEM1'   , 2             , NIL},;
                {'EE9_EMBAL1'   , '01'          , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL}})

aAdd(aDados, {"EE9", aItens})

//-------Inclusão de Auxiliares
//Notify
    aNotifys := {}
    aNotify := {}
    aAdd(aNotify, {"EEN_IMPORT", "001"          , Nil})
    aAdd(aNotify, {"EEN_IMLOJA", "01"           , Nil})

    aAdd(aNotifys, aNotify)
    aAdd(aDados, {"EEN", aNotifys})

//Agenda de Documentos
    aDocs := {}
    aDoc := {}
    aAdd(aDoc, {"EXB_CODATV", "05"              , Nil})
    aAdd(aDoc, {"EXB_TIPO"  , "1"               , Nil})

    aAdd(aDocs, aDoc)
    aAdd(aDados, {"EXB", aDocs})

//Agentes
    aAgentes := {}
    aAgente := {}
    aAdd(aAgente, {"EEB_CODAGE", "002"          , Nil})
    aAdd(aAgente, {"EEB_TIPCOM", "1"            , Nil})
    aAdd(aAgente, {"EEB_TIPCVL", "1"            , Nil})
    aAdd(aAgente, {"EEB_VALCOM", 10, Nil})
    aAdd(aAgente, {"EEB_REFAGE", "TESTE", Nil})

    aAdd(aAgentes, aAgente)
    aAdd(aDados, {"EEB", aAgentes})

MsAguarde({|| MSExecAuto( {|aAux, nOpc| EECAE100(,nOpc,aAux) },aDados, 4) }, "Integrando Embarque Automático")

If lMsErroAuto
	MostraErro()
Else
   	MsgInfo("Executado com sucesso!", "Aviso")
EndIf

RESET ENVIRONMENT

Return !lMsErroAuto


Exclusão automática do Embarque de Exportação

IMPORTANTE: Para a Exclusão do Embarque de Exportação e seus auxiliares, é obrigatório que seja informado nas estruturas que contém as informações dos campos a serem gravados, uma nova opção com o nome  AUTDELETA e o conteúdo S ( Exemplo: {"AUTDELETA" ,"S" , Nil} ). Esta informação é responsável por identificar o que deverá ser excluído pelo sistema.


Exemplo - Exclusão de Embarque automático com Auxiliares (Notify (EEN), Agenda de Documentos (EXB) e Agente de Comissão (EEB) )
#include "Totvs.Ch"
#include "tbiconn.ch"
User Function MyEECAE100()

Local aCab      := {}
Local aItens    := {}
Local aDados    := {}

Private lMsErroAuto := .F.

PREPARE ENVIRONMENT EMPRESA '99' FILIAL '01' USER 'Administrador' PASSWORD '' TABLES 'EEC,EE9' MODULO 'EEC'

//Dados da Capa do Embarque
aCab :={{'EEC_PREEMB'   , "EMB-AUT001"              ,NIL},;
        {'EEC_IMPORT'   ,'001'                      ,NIL},;
        {'EEC_IMLOJA'   ,'01'                       ,NIL},;
        {'EEC_IMPODE'   ,"CLIENTE 001"              ,NIL},;
        {'EEC_FORN'     ,'001'                      ,NIL},;
        {'EEC_FOLOJA'   ,'01'                       ,NIL},;
        {'EEC_IDIOMA'   ,"PORT. -PORTUGUES"         ,NIL},;
        {'EEC_CONDPA'   ,"001"                      ,NIL},;
        {'EEC_DIASPA'   , 0                         ,NIL},;
        {'EEC_MPGEXP'   ,'001'                      ,NIL},;
        {'EEC_INCOTE'   ,'FOB'                      ,NIL},;
        {'EEC_MOEDA'    ,'US$'                      ,NIL},;
        {'EEC_FRPPCC'   ,'PP'                       ,NIL},;
        {'EEC_UNIDAD'   ,'KG'                       ,NIL},;
        {'EEC_EMBAFI'   ,' '                        ,NIL},;
        {'EEC_CALCEM'   ,'1'                        ,NIL},;
        {'EEC_VIA'      ,'02'                       ,NIL},;
        {'EEC_ORIGEM'   ,'SSZ'                      ,NIL},;
        {'EEC_DEST'     ,'HST'                      ,NIL},;
        {'EEC_PAISET'   ,'249'                      ,NIL},;
        {'EEC_VIA_DE'   ,"NOME DA VIA"              ,NIL},;
        {'EEC_TIPTRA'   ,'1'                        ,NIL},;
        {"AUTDELETA"    ,"S"                        , Nil}}

aAdd(aDados, {"EEC", aCab})

//Dados dos Itens do Embarque
aItens := {}

aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"1"            , NIL},;
                {'EE9_COD_I'    ,'001'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 3737.95       , NIL},;
                {'EE9_QE'       ,197            , NIL},;
                {'EE9_QTDEM1'   ,19             , NIL},;
                {'EE9_EMBAL1'   ,'01'           , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL},;
                {"AUTDELETA"    ,"S"            , Nil}})

aAdd(aItens,   {{'EE9_PEDIDO'   ,"EMB-AUT001"   , NIL},;
                {'EE9_SEQUEN'   ,"2 "           , NIL},;
                {'EE9_COD_I'    ,'002'          , NIL},;
                {'EE9_FORN'     ,'001'          , NIL},;
                {'EE9_FOLOJA'   ,'01'           , NIL},;
                {'EE9_SLDINI'   , 40            , NIL},;
                {'EE9_QE'       , 20            , NIL},;
                {'EE9_QTDEM1'   , 2             , NIL},;
                {'EE9_EMBAL1'   , '01'          , NIL},;
                {'EE9_PSLQUN'   ,200            , NIL},;
                {'EE9_PRECO'    ,2100           , NIL},;
                {'EE9_PLSQUN'   ,200            , NIL},;
                {'EE9_TES'      ,"501"          , NIL},;
                {'EE9_CF'       ,"999"          , NIL},;
                {'EE9_POSIPI'   ,"01011010"     , NIL},;
                {"AUTDELETA"    ,"S"            , Nil}})

aAdd(aDados, {"EE9", aItens})

//-------Inclusão de Auxiliares
//Notify
    aNotifys := {}
    aNotify := {}
    aAdd(aNotify, {"EEN_IMPORT", "001"          , Nil})
    aAdd(aNotify, {"EEN_IMLOJA", "01"           , Nil})
    aAdd(aNotify, {"AUTDELETA" ,"S"             , Nil})

    aAdd(aNotifys, aNotify)
    aAdd(aDados, {"EEN", aNotifys})

//Agenda de Documentos
    aDocs := {}
    aDoc := {}
    aAdd(aDoc, {"EXB_CODATV", "05"              , Nil})
    aAdd(aDoc, {"EXB_TIPO"  , "1"               , Nil})
    aAdd(aDoc, {"AUTDELETA" ,"S"                , Nil})

    aAdd(aDocs, aDoc)
    aAdd(aDados, {"EXB", aDocs})

//Agentes
    aAgentes := {}
    aAgente := {}
    aAdd(aAgente, {"EEB_CODAGE", "002"          , Nil})
    aAdd(aAgente, {"EEB_TIPCOM", "1"            , Nil})
    aAdd(aAgente, {"EEB_TIPCVL", "1"            , Nil})
    aAdd(aAgente, {"EEB_VALCOM", 10             , Nil})
    aAdd(aAgente, {"EEB_REFAGE", "TESTE"        , Nil})
    aAdd(aAgente, {"AUTDELETA" ,"S"             , Nil})

    aAdd(aAgentes, aAgente)
    aAdd(aDados, {"EEB", aAgentes})

MsAguarde({|| MSExecAuto( {|aAux, nOpc| EECAE100(,nOpc,aAux) },aDados, 5) }, "Integrando Embarque Automático")

If lMsErroAuto
	MostraErro()
Else
   	MsgInfo("Executado com sucesso!", "Aviso")
EndIf

RESET ENVIRONMENT

Return !lMsErroAuto


Vinculação automática de Adiantamento de Importador/Cliente no Embarque de Exportação

IMPORTANTE: Para a Vinculação do adiantamento, o valor a ser associado deve ser enviado na Tag AUTVALVINC (Exemplo: {"AUTVALVINC", nvalor, Nil} ). Já para a Exclusão da vinculação, é necessário enviar a Tag AUTDELETA e o conteúdo S ( Exemplo: {"AUTDELETA" ,"S" , Nil} ).


Exemplo - Vinculação e Exclusão da Vinculação de Adiantamento com Embarque
User Function MyEECAE100()

Private lMsErroAuto := .F.

RpcSetType(3)
RpcSetEnv("99", "01",,,"EEC")
nModulo := 29

If MsgYesNo("Deseja entrar na rotina de Associação dos Adiantamentos?", "Aviso")
	U_AdVincAuto()
EndIf

RpcClearEnv()

Return 

/***************************************************
* Function: AdVincAuto()									*
* Objetivo: Efetuar a Vinculação do Adiantamento	*
****************************************************/
User Function AdVincAuto()
Local aEmb := {}, aAdian := {}, aParc, aIntegra
Local lExecuta := .T.
Local cParc:=""
Local nValor:=0
Local cEmbarque := "PED-EMB-AUT002"
Private lMsErroAuto := .F.

While lExecuta
	lMsErroAuto := .F.
	aEmb 	:= {}
	aAdian:= {}
	lExcluir := .F.
	If !MsgYesNo("Selecione SIM para associar um adiantamento ou NÃO para excluir uma associação?", "Aviso")
      lExcluir := .T.
	EndIf
	aAdd(aEmb, {"EEC_FILIAL", "01"			, Nil})
	aAdd(aEmb, {"EEC_PREEMB", cEmbarque		, Nil}) //Informe qual o embarque que será vinculado o adiantamento
	
	aParc := {}
	If lExcluir
		If MsgYesNo("Deseja excluir informando a parcela de origem? Se SIM, informe a parcela do adiantamento. Caso escolha não, a parcela informada deverá ser a parcela da associação.", "Aviso")
			cParc := IoDlg()
			aAdd(aParc, {"EEQ_FAOR"		, "C"			, Nil})
			aAdd(aParc, {"EEQ_PROR"	   , "001   01", Nil})
			aAdd(aParc, {"EEQ_PAOR"		, cParc		, Nil})
		Else
			cParc := IoDlg()
			aAdd(aParc, {"EEQ_FASE"		, "E"			, Nil})
			aAdd(aParc, {"EEQ_PREEMB"	, cEmbarque , Nil})
			aAdd(aParc, {"EEQ_PARC"		, cParc		, Nil})
		EndIf
	Else
		cParc := IoDlg()
		aAdd(aParc, {"EEQ_FASE"		, "C"			, Nil})
		aAdd(aParc, {"EEQ_PREEMB"	, "001   01", Nil})
		aAdd(aParc, {"EEQ_PARC"		, cParc		, Nil})
	EndIf
	
	If !lExcluir
		nvalor := IoDlgValor()
		aAdd(aParc, {"AUTVALVINC", nvalor, Nil}) //Valor a ser associado
	Else	
		aAdd(aParc, {"AUTDELETA", "S", Nil})//Enviar quando for excluir uma vinculação
	EndIf

	aAdd(aAdian, aClone(aParc))

	aIntegra := {{"EEC", aEmb}, {"EEQ", aAdian}}

	MsAguarde({|| MsExecAuto({|aIntegra| EECAE100(,,aIntegra,"AE100Adian") }, aIntegra) }, "Integrando associação de adiantamentos")

	If lMsErroAuto
		MostraErro()
	Else
		MsgInfo("Executado com sucesso!", "Aviso")
	EndIf

	lExecuta := MsgYesNo("Continuar com as associações?", "Aviso")

EndDo

RpcClearEnv()

Return Nil