Árvore de páginas

Versões comparadas

Chave

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

Incluir Página
EECAE100 -

...

Rotina Automática de

...

Descrição:

...

Embarque

...

Produto:

...

Microsiga Protheus

...

de

...

Exportação

...

(

...

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

...

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

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

...

languageactionscript3
linenumberstrue

...

EECAE100

...

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.

...

Bloco de código
languageactionscript3
linenumberstrue
#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.

...

Bloco de código
languageactionscript3
linenumberstrue
#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} ).

...

languageactionscript3
linenumberstrue

...

- Rotina Automática de Embarque de Exportação (MsExecAuto)