Árvore de páginas

EECAC100 - MsExecAuto Rotina Automática de Adiantamentos de cliente

Descrição:

Possibilita a realização das manutenções dos Adiantamentos da Fase de Cliente na 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

EECAE105.PRWManutenção de Embarques de Exportação
EECAC100.PRW

Manutenção de Importadores/Clientes

AVGERAL.PRWFunção genérica para os módulos de Comércio Exterior
País(es):Todos
Banco(s) de Dados:Todos Homologados pela TOTVS
Tabelas Utilizadas:

EEQ - Valor das Parcelas do Embarque

Parâmetros:
NomeTipoDescriçãoObrigatório
aCabArray of RecordArray com os dados do Importador/Cliente para IntegraçãoX
nOpcNuméricoOpção: 3=Incluir; 4=Alterar; 5=Excluir;
X
aEEQArray of RecordArray com os dados do Adiantamento para IntegraçãoX

AC100ADIAN

CaracterNome da rotina de adiantamentoX

Observações:

Alguns campos da tabela EEQ 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,EEQ"


Integração automática Adiantamentos de Cliente na Exportação

Para realizar a integração automática de um Adiantamento de Cliente na Exportação, é necessária a utilização da função MsExecAuto. Para isso, deve ser utilizado o programa EECAC100, responsável pela manutenção dos Importadores/Clientes dentro do módulo de Exportação - SIGAEEC.

  • IMPORTANTE: Para que seja possível a utilização da rotina de adiantamentos de Clientes, é necessário estar com o Parâmetro MV_AVG0039 (Pagamento antecipado. (Exportacao)) Habilitado.

A utilização da rotina automática, depende da passagem de algumas informações para que possa ser executada. Na primeira delas, deve ser enviado um Array com os dados do Importador/Cliente que será gerado o Adiantamento. Em segundo lugar, devemos enviar 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. Em terceiro lugar, devemos enviar um novo Array com os dados do Adiantamento a ser gerado, e por fim, deverá ser informado o nome da rotina de Adiantamento, para que o sistema possa identificar o que está executando. 

Abaixo iremos detalhar como as informações devem ser enviadas para o sistema. Ao todo, são 4 informações a serem enviadas na execução da MsExecAuto da rotina EECAC100.

  • aCab - Array com os dados do Importador/Cliente para Integração: Para a realização da integração automática dos adiantamentos, a primeira informação importante que precisamos enviar para a rotina, são os dados do Importador/Cliente. Para isso, é necessário montar um Array com as informações de Código (A1_COD) e Loja (A1_LOJA) do Importador/Cliente. Este será o primeiro parâmetro a ser enviado na Execauto e deverá ser montado conforme exemplo abaixo (neste exemplo, iremos utilizar a nomeação de aCab para o Array com as informações do Importador/Cliente):

    aAdd(aCab, {"A1_COD" , "000001" , Nil})
    aAdd(aCab, {"A1_LOJA" , "01" , Nil})


  • nOpc - Operação que será realizada (3=Incluir; 4=Alterar; 5=Excluir;): Esta informação é necessário para que o sistema saiba se a operação a ser realizada se trata de uma Inclusão, uma Alteração ou uma Exclusão do Adiantamento. Neste exemplo, utilizamos a nomenclatura de nOpc para definir esta operação, que pode assumir um dos três conteúdos abaixo (Deve ser passado apenas o número, sem o texto):
    3 - Inclusão
    4 - Alteração
    5 - Exclusão

  • aEEQ - Array com os dados do Adiantamento para Integração: Esta informação é responsável por enviar ao sistema os dados para a geração do Adiantamento. É neste Array, que aqui chamamos de aEEQ, que enviaremos todos os dados, como Número da Invoice, Moeda, Valor, Data de Vencimento, Taxa, Dados Bancários e etc. O conteúdo deste Array deve estar no formato conforme mostrado abaixo:

    aAdd(aEEQ, {"EEQ_NRINVO", "AUTO1" , Nil})
    aAdd(aEEQ, {"EEQ_MOEDA" , "US$" , Nil})
    aAdd(aEEQ, {"EEQ_VL" , 1000 , Nil})
    aAdd(aEEQ, {"EEQ_MODAL" , cModal , Nil})
    aAdd(aEEQ, {"EEQ_PGT" , dDataBase+5 , Nil})
    aAdd(aEEQ, {"EEQ_DTNEGO", dDataBase , Nil})
    aAdd(aEEQ, {"EEQ_NROP" , "123456" , Nil})


    IMPORTANTE: O envio das informações do adiantamento, segue o mesmo critério que existe para a manutenção (inclusão, Alteração e Exclusão) via Tela. Neste caso, existem algumas regras que devem ser seguidas para o sucesso da operação, sendo elas:


    1. Quando a operação (nOpc) for uma Inclusão, NÃO deve ser enviada a informação do Número da Parcela (EEQ_PARC). Esta informação é definida pelo próprio sistema e deve ser enviada, obrigatoriamente, apenas para operações de Alteração e Exclusão;
    2. Quando o Adiantamento utilizar a Modalidade 2-Movimento no Exterior, NÃO deve ser enviada as informações de Dt. Liquidação (EEQ_PGT) e Taxa da Moeda (EEQ_TX). Para o Banco, deve ser informado os dados do banco no exterior (EEQ_BCOEXT, EEQ_AGCEXT e EEQ_CNTEXT);
    3. A operação de Alteração é limitada, somente alguns campos podem ser alterados, seguindo os mesmo critérios da alteração via tela;

Vinculação do Adiantamento ao Embarque de Exportação

Para realizar a vinculação dos adiantamentos existentes para o Importador/Cliente, foi criada também uma rotina automática que pode ser executada via MsExecAuto. Para verificar como deve ser montada a estrutura dos dados de vinculação e como efetuar a chamada da MsExecAuto, consultar a documentação de integração automática do Embarque de Exportação, disponível em: http://tdn.totvs.com/pages/viewpage.action?pageId=394218147



Abaixo temos um exemplo de um Rdmake utilizando a integração automática dos adiantamentos (Inclusão / Alteração / Exclusão).


Exemplo - Rdmake de manutenção de Adiantamentos
User Function MyEECAC100()
Local aCab 		:= {}
Local aEEQ 		:= {}
Local cParc		:= "01"
Local lContinua := .T.

Private lMsErroAuto := .F.

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

While lContinua

	If MsgYesNo("Deseja entrar na rotina de Manutenção dos Adiantamentos?", "Aviso")
		//Executa a integração para Incluir um adiantamento modalidade 1
		If MsgYesNo("Deseja Incluir um Adiantamento (Modalidade 1-Contrato de Câmbio)?", "Aviso")
			IncAC100(3,"1","")
		EndIf
		//Executa a integração para Alterar um adiantamento modalidade 1
		If MsgYesNo("Deseja Alterar um Adiantamento (Modalidade 1-Contrato de Câmbio)?", "Aviso")
			cParc := IoDlg()
			IncAC100(4,"1",cParc)
		EndIf
		//Executa a integração para Excluir um adiantamento modalidade 1
		If MsgYesNo("Deseja Excluir um Adiantamento (Modalidade 1-Contrato de Câmbio)?", "Aviso")
			cParc := IoDlg()
			IncAC100(5,"1",cParc)
		EndIf
		//====================MOVIMENTO NO EXTERIOR====================
		//Executa a integração para Incluir um adiantamento modalidade 2
		If MsgYesNo("Deseja Incluir um Adiantamento (Modalidade 2-Movimento no Exterior)?", "Aviso")
			IncAC100(3,"2","")
		EndIf
		//Executa a integração para Alterar um adiantamento modalidade 2
		If MsgYesNo("Deseja Alterar um Adiantamento (Modalidade 2-Movimento no Exterior)?", "Aviso")
			cParc := IoDlg()
			IncAC100(4,"2",cParc)
		EndIf
		//Executa a integração para Excluir um adiantamento modalidade 2
		If MsgYesNo("Deseja Excluir um Adiantamento (Modalidade 2-Movimento no Exterior)?", "Aviso")
			cParc := IoDlg()
			IncAC100(5,"2",cParc)
		EndIf

	EndIf

	lContinua := MsgYesNo("Continuar Executnado o Rdmake?", "Aviso")

End

RpcClearEnv()

Return 

//EXECUTA A INTEGRAÇÃO DE MANUTENÇÃO DOS ADIANTAMENTOS - INCLUSÃO, ALTERAÇÃO E EXCLUSÃO
Static Function IncAC100(nOpc,cModal,cParc)
Local aCab 		:= {}
Local aEEQ 		:= {}
//Dados do Cliente/Importador
aAdd(aCab, {"A1_COD"	, "001"	, Nil})
aAdd(aCab, {"A1_LOJA", "01"	, Nil})
//Na inclusão não pode enviar a parcela
If nOpc <> 3
   aAdd(aEEQ, {"EEQ_PARC", cParc, Nil})
EndIf

aAdd(aEEQ, {"EEQ_NRINVO", "AUTO1"		, Nil})
aAdd(aEEQ, {"EEQ_MOEDA"	, "US$"			, Nil})
aAdd(aEEQ, {"EEQ_VL"		, 1000, Nil})
aAdd(aEEQ, {"EEQ_MODAL"	, cModal 		, Nil})
aAdd(aEEQ, {"EEQ_DTCE"	, dDataBase		, Nil})
aAdd(aEEQ, {"EEQ_SOL"	, dDataBase		, Nil})
aAdd(aEEQ, {"EEQ_DTNEGO", dDataBase		, Nil})
aAdd(aEEQ, {"EEQ_NROP"	, "123456"		, Nil})


//Caso a modalidade seja 2-movimento no exterior, são pode enviar os campos EEQ_PGT e EEQ_TX e deve ser enviado os dados do banco no exterior
If cModal == "1"
	aAdd(aEEQ, {"EEQ_PGT"	, dDataBase	, Nil})
	aAdd(aEEQ, {"EEQ_TX"		, 4				, Nil})
	aAdd(aEEQ, {"EEQ_BANC"	, "CX1"			, Nil})
	aAdd(aEEQ, {"EEQ_AGEN"	, "00001"		, Nil})
	aAdd(aEEQ, {"EEQ_NCON"	, "0000000001"	, Nil})
	aAdd(aEEQ, {"EEQ_RFBC"	, "TESTE"		, Nil})
Else
	aAdd(aEEQ, {"EEQ_BCOEXT", "002"			, Nil})
	aAdd(aEEQ, {"EEQ_AGCEXT", "00002"		, Nil})
	aAdd(aEEQ, {"EEQ_CNTEXT", "0000000002"	, Nil})
EndIf

MsAguarde({|| MSExecAuto( {|X,Y,Z,Aux| EECAC100(x,,y,z,"AC100ADIAN") }, aCab, nOpc, aEEQ) }, "Integrando Adiantamento Automático")

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

Return