Árvore de páginas

EECAF200 - MsExecAuto Rotina Automática de Câmbio de Exportação

Descrição:

Possibilita a realização das manutenções de Câmbio de Exportação, tais como Inclusão, Alteração e Exclusão, Baixa, Liquidação e estornos 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
EECAF200.PRW

Manutenção de Câmbio de processos de exportação

EFFEX400.PRWManutenção de Contratos Financing
EFFEX401.PRWFunções FInancing
País(es):Todos
Banco(s) de Dados:Todos Homologados pela TOTVS
Tabelas Utilizadas:

EEQ - Parcelas de Câmbio do processo de exportação

Parâmetros:
NomeTipoDescriçãoObrigatório
xAutoCabArray of RecordArray com os dados do cabeçalho para integração automática
X
xOpcBrwAutoNuméricoOpção: 3X
xAutoItensArray of RecordArray com os dados da parcela para integração automáticax
xOpcDetAutoNumérico

Opções: 99 = Liquidar Parcela

98 = Estornar Liquidação da Parcela

95 = Excluir Parcela

4 = Incluir Parcela

5 = Alterar Parcela

x

Observações:

Para a integração via Execauto a opção xOpcBrwAuto deve ser sempre 3 e para os itens que seriam as parcelas temos a variável xOpcDetAuto onde são enviadas as opções para cada ação do câmbio, lembrando que e as ações são como na utilização do câmbio em tela, ou seja, para o de baixa de título com movimento no exterior deve ser enviado via Execauto um alteração da parcela informando os dados necessários, os mesmos que se usa via tela, para executar uma alteração e então a baixa do título e o mesmo vale para o estorno que deve ser enviado uma alteração com a data de crédito no exterior, assim como funciona em tela hoje.

É importante ressaltar que a associação de adiantamentos não está no escopo dessa melhoria e que por enquanto não é possível fazer uso dessa ação como parte da integração automática via ExecAuto.


Integração automática do Câmbio de Exportação


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

A utilização da rotina automática, funciona de acordo com as informações que são passadas na chamada do ExecAuto, onde:

xAutoCab que são os dados referentes ao processo de embarque do qual deseja alterar e que devem ser enviados os dados chave para localização da capa do processo de embarque e os dados são a filial e o número do processo de embarque, como mostrado no exemplo abaixo:

aadd( aCab , { "EEC_FILIAL"    , "Filial"           , Nil })
aadd( aCab , { "EEC_PREEMB" , "Embarque" , Nil })

que representa a opção da rotina do browse a ser executada e no caso da manutenção de câmbio deverá ser utilizada sempre a opção 3, responsável pela rotina de manutenção das parcelas;

xAutoItens que são os dados da parcela e que deve sempre receber os dados chave para as opções de liquidar, estornar, alterar e excluir parcela tendo como diferente somente a opção de incluir uma parcela conforme mostrado nos exemplos abaixo;

Inclusão de parcelas:

aadd( aIntegra , { "EEQ_EVENT"   , "EVENTO"        , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "EMBARQUE" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "INVOICE"      , Nil })

Alteração, Baixa, Liquidação e estornos:

aadd( aIntegra , { "EEQ_EVENT"   , "EVENTO"        , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "EMBARQUE" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "INVOICE"      , Nil })
aadd( aIntegra , { "EEQ_PARC "     , "PARCELA"     , Nil })

E por fim xOpcDetAuto que representa a ação a ser executada para a parcela que no caso está explicada no quadro de parâmetros da rotina, no rdmake disponibilizado abaixo e no explicativo logo a seguir:

Informações Técnicas


Todos as opções abaixo estão detalhadas no Rdmake abaixo e para caso de dúvida sobre quais campos enviar para o ExecAuto é importante ressaltar que são as mesmas validações de quando está fazendo uma operação em tela, ou seja, caso deseje incluir uma parcela específica ao tentar fazer a inclusão via tela é possível saber os campos necessários para a inclusão de uma parcela. Abaixo teremos uma explanação básica do necessário para executar cada opção a ser realizada pela rotina de Manutenção de Câmbio.

Inclusão (número de operação 4)

- Para inclusão de uma parcela devem ser enviados os campos chaves, menos a parcela que é gerada automaticamente e vários outros campos que variam de acordo com a parcela a ser incluída.

Alterações (número de operação 5)

- Para executar uma alteração na parcela específica na parcela como por exemplo o desdobramento de valores de uma parcela será necessário enviar os dados citados acima para alteração e no mesmo modelo o valor da parcela que esteja de acordo, somente isso é suficiente para que a rotina entenda como desdobramento de parcelas.

- Também é possível excluir uma parcela de desdobramento ou uma parcela que não tenha sido gerada pela rotina de câmbio.

- Alterar uma parcela para movimento no exterior requer a alteração da modalidade da parcela e do preenchimento dos dados bancários.

Baixas (número de operação 5)

- E caso deseje baixar essa parcela com movimento no exterior é necessário enviar a data de crédito no exterior.

Estorno de baixa (número de operação 5)

- Para realizar um estorno de baixa de uma parcela com movimento no exterior é necessário mandar os campos chave da parcela assim como a data de crédito no exterior em branco no formato de data.

Liquidação (número de operação 99 )

- Para liquidar a parcela uma com movimento no exterior e baixada é necessário que envie os dados bancários de um banco nacional e as datas de solicitação de câmbio, negociação e pagamento para que seja movimentado o dinheiro entre o banco de recebimento no exterior e a movimentação desse dinheiro para um banco brasileiro.

- Para liquidar uma parcela de contrato de câmbio também é necessário enviar os dados bancários de um banco nacional e as datas de solicitação de câmbio, crédito no exterior, negociação e pagamento.

Estorno de liquidação (número de operação 98 )

- E o estorno da liquidação de um título em ambos os casos de contrato de câmbio ou movimento no exterior é necessário enviar apenas os campos chaves.

Parcela de Câmbio Integrada com o Financing (EFF)

Para as parcelas de câmbio integradas com o Financing é necessário enviar um parâmetro específico para quando executar a ação de liquidação de um título integrado e um outro para quando necessitar realizar o estorno de uma parcela de câmbio integrada, sendo que, para:

Liquidação (número de operação 99 ):

- É necessário enviar os dados chave da parcela e as datas de solicitação de câmbio, crédito no exterior, negociação e pagamento e mais um campo que é usado para saber se em caso de o contrato tiver seu limite 0 com a liquidação dessa parcela saber se deseja encerrar ou não o contrato de Financing do qual está atrelado e deve ser enviado da seguinte forma:

aadd( aIntegra , { "AUTENCERRACONTRA",     "S"   , Nil })

Deve ser enviado apenas S ou N e em caso de não enviar esse campo será considerado como sim por padrão da rotina.

Estorno da liquidação (número de operação 98 ):

- É necessário enviar os campos chaves da parcela que deseja estornar e um campo extra deverá conter a justificativa desse estorno, conforme rotina padrão e caso não seja enviado não realizará a ação de estorno. O campo deve ser enviado se seguinte forma:

aadd( aIntegra , { "AUTMOTIVO" ,  "JUSTIFICATIVA"  , Nil })


Rdmake para a rotina de Manutenção de Câmbio

Exemplos para utilização das rotinas de manutenção de câmbio via execauto.

#Include "Totvs.Ch"
#include "FWBrowse.Ch"
#include "protheus.ch"

User Function MyEECTela()

//Inicia o Ambiente
InitAmbiente()

//Executa a rotina
U_ManutCambio()
//Finaliza o Ambiente
RpcClearEnv()

Return

User Function ManutCambio()
Local oDlg
Local oRadio
Local oPanel1
Local nOpcA := 1
Local cTitulo := "Selecione a opção para simulação"

Private aItens := GetOpcRadio() //Opcoes disponiveis para o rdmake
Private nRadio := 1

DEFINE DIALOG oDlg TITLE cTitulo FROM 1,1 TO 600,800 OF oMainWnd PIXEL STYLE DS_MODALFRAME

lLowered := .T.
lRaised := .T.
nWidth := 390
nHeight := 255
nRow := 30
nCol := 03
oPanel1:= TPanel():New(nRow, nCol, "" , oDlg, , .T., , , ,nWidth,nHeight,lLowered,lRaised )

nRow := 10
nCol := 03
nWidth := 380
nHeight := 240
nRadio := 1
oRadio := TRadMenu():New (nRow, nCol,aItens,,oPanel1, , , , , , , , nWidth, nHeight,,,,.T.)
oRadio:bSetGet := {|u|Iif (PCount()==0,nRadio,nRadio:=u)}

oTButton := TButton():New( 003,150, "OK" ,oDlg,{|| nOpcA := 1,oDlg:End() }, 45,20,,,,.T.,,,, )
oTButton := TButton():New( 003,200, "CANCEL" ,oDlg,{|| nOpcA := 0,oDlg:End() }, 45,20,,,,.T.,,,, )

ACTIVATE MSDIALOG oDlg CENTERED

If nOpcA == 1
nRadio := strzero(nRadio,2)
U_IniciaProc()
EndIf

Return

User Function IniciaProc()
Local aCab := {}
Local aIntegra:= {}
Local oDlg
Local nOpc := 5

Private lMsErroAuto := .F.
Private lMsHelpAuto := .F.//Indica que todas as mensagens de help devem ser direcionadas para o arquivo de log

Do Case
Case alltrim(nRadio) $ "01" //liquida parcela contrato de câmbio

//01 - Deseja LIQUIDAR uma parcela de Câmbio a RECEBER (Contrato de Câmbio)?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_BANC" , "B01" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "AG001" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "1" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "TR" , Nil })

nOpc := 99 // Opc para a liquidação de títulos

Case alltrim(nRadio) $ "02" // estorna liquidação de contrato de câmbio

//02 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a RECEBER (Contrato de Câmbio) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })

nOpc := 98 // Opc para estorno de um título

Case alltrim(nRadio) $ "03" // altera parcela para em seguida baixar no mov ext

//03 - Deseja ALTERAR uma parcela de Câmbio a RECEBER, removendo as datas de crédito no exterior e solicitação de câmbio ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod('') , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod('') , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod('') , Nil })
aadd( aIntegra , { "EEQ_BANC" , "" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "" , Nil })

nOpc := 5 // Opc para executar alteração na parcela

Case alltrim(nRadio) == "04" // Baixar parcela com movimento exterior

//04 - Deseja BAIXAR uma parcela de Câmbio a RECEBER (Com Movimento no Exterior)?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_MODAL" , "2" , Nil })
aadd( aIntegra , { "EEQ_BCOEXT" , "BFI" , Nil })
aadd( aIntegra , { "EEQ_CNTEXT" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_AGCEXT" , "00001" , Nil })
aadd( aIntegra , { "EEQ_OBS" , "" , Nil })

nOpc := 5 // Para baixar o título com movimento no exterior é necessário envir o Opc
// como alteração e com as informações do banco do exterior para realizar a baixa

Case alltrim(nRadio) == "05" // liquida a parcela com mov ext

//05 - Deseja LIQUIDAR uma parcela de Câmbio a RECEBER (Com Movimento no Exterior)?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_BANC" , "B01" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "AG001" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "1" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "TR" , Nil })

nOpc := 99 // Opc para a liquidação de títulos


Case alltrim(nRadio) $ "06" // estorna liquidação de contrato de câmbio

//06 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a RECEBER (Com Movimento no Exterior) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })

nOpc := 98 // Opc para estorno de um título

Case alltrim(nRadio) == "07" // estorna baixa com mov ext

//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod('') , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod('') , Nil })

nOpc := 5 // Opc para executar alteração na parcela removendo a data de crédito no exterior e assim realizando
// o estorno da parcela de câmbio

Case alltrim(nRadio) $ "08" // altera parcela para realizar um desdobramento da parcela principal

//08 - Deseja ALTERAR uma parcela de Câmbio a RECEBER (Realizando Desdobramento da parcela) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "01" , Nil })
aadd( aIntegra , { "EEQ_VL" , 500000 , Nil })

nOpc := 5 // Opc para executar alteração na parcela

Case alltrim(nRadio) $ "09" // exclusão/estorno de parcelas com desdobramento

//09 - Deseja EXCLUIR uma parcela de Câmbio a RECEBER (Parcela gerada por Desdobramento) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })

nOpc := 95 // Opc para exclusão/estorno de parcelas

Case alltrim(nRadio) $ "10" // exclusão/estorno de parcelas de embarque para simular o retorno de validação

//10 - Deseja EXCLUIR uma parcela de Câmbio a RECEBER (Parcela gerada pelo Embarque, não deve remover a parcela) ?")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "01" , Nil })

nOpc := 95 // Opc para exclusão/estorno de parcelas

Case alltrim(nRadio) $ "11" //liquida parcela A PAGAR com contrato de câmbio
/// parcelas a pagar
//11 - Deseja LIQUIDAR uma parcela de Câmbio a PAGAR (Contrato de Câmbio)?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_BANC" , "B01" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "AG001" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "1" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "TR" , Nil })

nOpc := 99 // Opc para a liquidação de títulos

Case alltrim(nRadio) $ "12" // estorna liquidação de contrato de câmbio

//14 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a PAGAR (Contrato de Câmbio) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })

nOpc := 98 // Opc para estorno de um título

Case alltrim(nRadio) $ "13" // alrear parcela de câmbio a pagar preparando para mov ext

//13 - Deseja ALTERAR uma parcela de Câmbio a PAGAR (preparando para liquidar no exterior) ?")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod('') , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod('') , Nil })
aadd( aIntegra , { "EEQ_BANC" , "" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "" , Nil })

nOpc := 5 // Opc para executar alteração na parcela

Case alltrim(nRadio) $ "14" // liquidar título a pagar com movimento no exterior

//14 - Deseja LIQUIDAR uma parcela de Câmbio a PAGAR, realizando o Movimento no Exterior ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_MODAL" , "2" , Nil })
aadd( aIntegra , { "EEQ_BCOEXT" , "BFI" , Nil })
aadd( aIntegra , { "EEQ_CNTEXT" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_AGCEXT" , "00001" , Nil })
aadd( aIntegra , { "EEQ_OBS" , "" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "1" , Nil })

nOpc := 99 // Opc para a liquidação de títulos

Case alltrim(nRadio) $ "15" // estorno da liquidação do título a pagar com movimento no exterior

//15 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a PAGAR (Com Movimento no Exterior) ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })

nOpc := 98 // Opc para estorno de um título

Case alltrim(nRadio) $ "16" // altera parcela para realizar um desdobramento da parcela principal

//16 - Deseja ALTERAR uma parcela de Câmbio a PAGAR (Realizando o Desdobramento) ?")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })
aadd( aIntegra , { "EEQ_VL" , 100 , Nil })

nOpc := 5 // Opc para executar alteração na parcela

Case alltrim(nRadio) $ "17" // exclusão/estorno de parcelas com desdobramento

//17 - Deseja EXCLUIR uma parcela de Câmbio a PAGAR (Parcela gerada por Desdobramento) ?")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "07" , Nil })

nOpc := 95 // Opc para exclusão/estorno de parcelas

Case alltrim(nRadio) $ "18" // exclusão/estorno de parcelas com desdobramento, não deve permitir

//18 - Deseja EXCLUIR uma parcela de Câmbio a PAGAR (Parcela gerada pelo Embarque) ?")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "102" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "05" , Nil })

nOpc := 95 // Opc para exclusão/estorno de parcelas

Case alltrim(nRadio) == "19"

//21 - Deseja INCLUIR uma parcela de Câmbio ?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2200-02" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "127" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2200-02" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "INCLUSAO" , Nil })
aadd( aIntegra , { "EEQ_EMISSA" , stod("20190905") , Nil })
aadd( aIntegra , { "EEQ_VCT" , stod("20191005") , Nil })
aadd( aIntegra , { "EEQ_MOEDA" , "US$" , Nil })
aadd( aIntegra , { "EEQ_PARI" , 1 , Nil })
aadd( aIntegra , { "EEQ_VL" , 200 , Nil })
aadd( aIntegra , { "EEQ_CODEMP" , "F-FRET" , Nil })
aadd( aIntegra , { "EEQ_FORN " , "F-FRET" , Nil })
aadd( aIntegra , { "EEQ_FOLOJA" , "01" , Nil })
aadd( aIntegra , { "EEQ_OBS" , "" , Nil })

nOpc := 4 // Opc para inclusão de uma parcela de câmbio

Case alltrim(nRadio) $ "20" // liquidação de parcela de comissão a pagar

//20 - Deseja LIQUIDAR uma parcela de Câmbio de comissão sem receber o título principal antes? (deve rejeitar o pagamento.)")
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2374-03" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "120" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2374-03" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "I-DTRADE-2374-03" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "02" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190909") , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod("20190909") , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod("20190909") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190909") , Nil })
//aadd( aIntegra , { "EEQ_TX" , 3 , Nil })
//aadd( aIntegra , { "EEQ_EQVL" , 3*200 , Nil })
aadd( aIntegra , { "EEQ_BANC" , "B01" , Nil })
aadd( aIntegra , { "EEQ_AGEN" , "AG001" , Nil })
aadd( aIntegra , { "EEQ_NCON" , "CC00000001" , Nil })
aadd( aIntegra , { "EEQ_NROP" , "1" , Nil })
aadd( aIntegra , { "EEQ_RFBC" , "TR" , Nil })

nOpc := 99 // Opc para liquidar parcelas parcelas

Case alltrim(nRadio) $ "21" // liquida parcela vinculada à um contrato EFF

//21 - Deseja LIQUIDAR uma parcela de Câmbio a PAGAR vinculada à um contrato de financing?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "03" , Nil })
aadd( aIntegra , { "EEQ_DTCE" , stod("20190910") , Nil })
aadd( aIntegra , { "EEQ_SOL" , stod("20190910") , Nil })
aadd( aIntegra , { "EEQ_DTNEGO" , stod("20190910") , Nil })
aadd( aIntegra , { "EEQ_PGT" , stod("20190910") , Nil })
aadd( aIntegra , { "AUTENCERRACONTRA", "S" , Nil })

nOpc := 99 // Opc para liquidar parcela

Case alltrim(nRadio) $ "22" // estorna liquidação da parcela vinculada à um contrato EFF

//22 - Deseja ESTORNAR O VINCULO de uma parcela de Câmbio a PAGAR de um contrato de financing?
//Cabeçalho do câmbio
aadd( aCab , { "EEC_FILIAL" , "01" , Nil })
aadd( aCab , { "EEC_PREEMB" , "DTRADE-2690-01" , Nil })
//Itens da parcela
aadd( aIntegra , { "EEQ_EVENT" , "101" , Nil })
aadd( aIntegra , { "EEQ_PREEMB" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_NRINVO" , "DTRADE-2690-01" , Nil })
aadd( aIntegra , { "EEQ_PARC" , "03" , Nil })
aadd( aIntegra , { "AUTMOTIVO" , "THE ZUEIRA NEVER ENDS" , Nil })

nOpc := 98 // Opc para estorno da liquidação

EndCase

if len(aCab) > 0
If EEC->( DbSetOrder(1) , DbSeek( avkey(acab[1][2] , "EEC_FILIAL" ) + avkey(acab[2][2] , "EEC_PREEMB" ) ))

MsExecAuto({|a,b,c,d| EECAF200(a,b,c,d) },aCab, 3, aIntegra, nOpc)

If lMsErroAuto
mostraerro()
Else
msgSTOP("Parcela atualizada com sucesso.","CAUTION")
endif

Else // se não encontrar o embarque
Alert("Embarque não encontrado")

EndIf
endif
Return

Static Function InitAmbiente()

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

Return

Static Function GetOpcRadio()
Local aRet := {}

//RECEBER
aAdd(aRet,"01 - Deseja LIQUIDAR uma parcela de Câmbio a RECEBER (Contrato de Câmbio)?")
aAdd(aRet,"02 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a RECEBER (Contrato de Câmbio) ?")
aAdd(aRet,"03 - Deseja ALTERAR uma parcela de Câmbio a RECEBER, realizando o Movimento no Exterior ?")
aAdd(aRet,"04 - Deseja BAIXAR uma parcela de Câmbio a RECEBER (Com Movimento no Exterior)?")
aAdd(aRet,"05 - Deseja LIQUIDAR uma parcela de Câmbio a RECEBER (Com Movimento no Exterior)?")
aAdd(aRet,"06 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a RECEBER (Com Movimento no Exterior) ?")
aAdd(aRet,"07 - Deseja ESTORNAR BAIXA de uma parcela de Câmbio a RECEBER (Com Movimento no Exterior) ?")
aAdd(aRet,"08 - Deseja ALTERAR uma parcela de Câmbio a RECEBER (Realizando Desdobramento da parcela) ?")
aAdd(aRet,"09 - Deseja EXCLUIR uma parcela de Câmbio a RECEBER (Parcela gerada por Desdobramento) ?")
aAdd(aRet,"10 - Deseja EXCLUIR uma parcela de Câmbio a RECEBER (Parcela gerada pelo Embarque, não deve remover a parcela) ?")

//PAGAR
aAdd(aRet,"11 - Deseja LIQUIDAR uma parcela de Câmbio a PAGAR (Contrato de Câmbio)?")
aAdd(aRet,"12 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a PAGAR (Contrato de Câmbio) ?")
aAdd(aRet,"13 - Deseja ALTERAR uma parcela de Câmbio a PAGAR (preparando para liquidar no exterior) ?")
aAdd(aRet,"14 - Deseja LIQUIDAR uma parcela de Câmbio a PAGAR, realizando o Movimento no Exterior ?")
aAdd(aRet,"15 - Deseja ESTORNAR LIQUIDAÇÃO de uma parcela de Câmbio a PAGAR (Com Movimento no Exterior) ?")
aAdd(aRet,"16 - Deseja ALTERAR uma parcela de Câmbio a PAGAR (Realizando o Desdobramento) ?")
aAdd(aRet,"17 - Deseja EXCLUIR uma parcela de Câmbio a PAGAR (Parcela gerada por Desdobramento) ?")
aAdd(aRet,"18 - Deseja EXCLUIR uma parcela de Câmbio a PAGAR (Parcela gerada pelo Embarque) ?")
aAdd(aRet,"19 - Deseja INCLUIR uma parcela de Câmbio ?")

//comissão
aAdd(aRet,"20 - Deseja LIQUIDAR uma parcela de Câmbio de comissão sem receber o título principal antes? (deve rejeitar o pagamento.)")

//contrato de financing
aAdd(aRet,"21 - Deseja LIQUIDAR uma parcela de Câmbio a vinculada à um contrato de financing?")
aAdd(aRet,"22 - Deseja ESTORNAR O VINCULO de uma parcela de Câmbio a PAGAR de um contrato de financing?")

Return aRet