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: |
| ||||||||||||||||||||
País(es): | Todos | ||||||||||||||||||||
Banco(s) de Dados: | Todos Homologados pela TOTVS | ||||||||||||||||||||
Tabelas Utilizadas: | EEQ - Valor das Parcelas do Embarque | ||||||||||||||||||||
Parâmetros: |
| ||||||||||||||||||||
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). 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:
- 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;
- 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);
- 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 |