Definição da Regra de Negócio
Para situações em que Processo de Exportação já teve parte da mercadoria embarcada para o exterior e o restante desta mercadoria permanecerá aguardando no mesmo porto/aeroporto para novo embarque.
- Implementar no programa de Manutenção do Processo de Exportação e em sua consulta (EX3001/EX3101) uma flag para que seja possível identificar se aquele processo é um Subprocesso;
- Implementar um campo novo no programa de Manutenção do Processo de Exportação ao lado da flag “Subprocesso”, um campo que seja permitido ao usuário informar o Processo de Exportação que dará origem ao SubProcesso, será possível pesquisar o seu conteúdo;
- Implementar no EX3001 para quando a flag de “Subprocesso” estiver marcada, habilitar o campo “Processo de Exportação de Origem” para que seja informado a partir de qual registro o Subprocesso será gerado e as informações deste processo serão preenchidas automaticamente como se fosse uma cópia de registro;
- Desenvolver uma nova tela que será executada ao confirmar a inclusão do SubProcesso onde:
- Será permitido ao usuário selecionar a partir de qual informação ele deseja fazer a quebra do Processo de Exportação:Esta nova tela irá carregar todas as Notas Fiscais e Embarques (independentes de já faturados ou não) que existem no Processo de Exportação Origem;
- A partir da Nota Fiscal do Processo de Origem;
- A partir do Embarque do Processo de Origem;
- Será permitido ao usuário selecionar quais registros (Notas Fiscais e/ou Embarques) deseja vincular ao Subprocesso, consequentemente irá desvincular no Processo de Exportação de Origem;
- Ao salvar o registro deverá permitir também selecionar quais informações deverão ser replicadas e/ou geradas de forma automaticamente com base no Processo de Exportação de Origem:
- SubProcesso de Exportação:
- Declarações/Comunicações do Processo;
- Acondicionamento;
- Registro de Exportação; (obs.: O Número do RE Siscomex deverá ser informado manualmente na tela do EX5000).
- Processo de Exportação de Origem:
- Acondicionamento;
- Registro de Exportação;
- Elimina Informações de Exportação no Documento Fiscal em OF;
Observação: Esta tela somente será aberta ao cliente para seleção, caso o Processo de Exportação de Origem possua:
- Declaração/Comunicação do Processo e/ou;
- Acondicionamento e/ou;
- Registro de Exportação;;
- Com relação ao Processo de Exportação de Origem e SubProcesso, o mesmo terá que:
- Ter seus valores recalculados;
- Ter as informações do Acondicionamento (se houver) atualizados;
- Ter as informações do RE e dos Anexos (se houver) atualizados;
- Caso o usuário selecione a informação de Registro de Exportação, habilitar uma opção se o usuário deseja “eliminar” as informações de Exportação no Documento Fiscal em OF. Caso positivo, o mesmo será eliminado e o usuário poderá via EX5000 realizar a exportação dos dados para OF;
- Título do Contas a Receber:
- Somente serão tratados os Processos de Exportação que estão na situação:
- Aberto;
- Faturado Parcial;
- Faturado.
- Desta forma, serão desconsiderados os Processos de Exportação que estão na situação Embarcados, e que poderão ter seus Log’s de contabilização gerados;
- Não será permitido desvincular uma nota fiscal que seu Processo de Exportação já tenha tido seu Log de Geração de Tìtulos no CR e/ou Contabilização da Receita Processados com Sucesso;
- Não será permitido desvincular uma nota fiscal que seu Processo de Exportação já tenha sido contabilizado (para clientes que realizam a contabilização pela Data do Embarque);
- Não será permitido desvincular uma nota fiscal que já tenha sido contabilizada;
- Implementar novo Folder no programa de Relacionamentos e Consulta dos Relacionamentos do Processo de Exportação (EX0190/EX1190) para que seja possível consultar todos os SubProcessos gerados a partir de um determinado Processo de Exportação;
- Quando o Processo de Exportação tiver SubProcessos relacionados, o botão “Desvincular” dos folder’s “Nota Fiscal” e “Embarque” ficará habilitado, mesmo que o tipo do relacionamento for “Automático”.
- Ao selecionar o botão “Desvincular” do EX0190, será executada a nova tela para que seja possível vincular a nota fiscal ao SubProcesso, onde o campo referente ao Processo de Exportação o qual as notas serão vinculadas, ficará habilitado para edição (mesma tela aberta quando confirmar a inclusão do Subprocesso de Exportação)
- Cancelamento da Nota Fiscal:
- Este procedimento não será afetado uma vez que uma Nota Fiscal será desvinculada total de um Processo para vinculação no Subprocesso de Exportação, portanto deverá realizar os mesmos cancelamentos já efetuados quando uma Nota Fiscal vinculada a um Processo é cancelada.
- Registro de Exportação (EX5000):
- Implementar um novo botão ao lado do “Anexos do RE” para que seja permitido “exportar” os dados de Exportação para o Documento Fiscal.
- Este botão somente ficará habilitado se:
- A Data da Emissão da Nota estiver dentro da Data de Congelamento dos Parâmetros de OF;
- Existir o Documento Fiscal gerado em OF.
- O Número do Registro de Exportação no Siscomex tiver sido informado no EX5000;
- Ao clicar no botão para “exportar” os dados, deverá ser criado um novo registro de Documento Fiscal Exportação, que são as informações de Exportação que são vinculadas ao Documento em OF.
Diagrama de Ação
- Todos os campos que utilizarão literais deverá ser utilizada a técnica de tradução.
- EX0001 – USUÁRIO DE EXPORTAÇÃO
Somente será possível desvincular uma Nota Fiscal e/ou Embarque que tenham sido vinculadas de forma “Automática”, caso o Usuário de Exportação possua permissão para realizar tal procedimento.
Disponibilizar um novo parâmetro “Permite Desvincular NF/Embarque do Processo” (ver protótipo 10);
Deverá ser armazenada esta informação no campo de atributo livro lógico da tabela “usuar-export” e deverá vir inicialmente desmarcado.
- EX3001/EX3101 – MANUTENÇÃO E CONSULTA DO PROCESSO DE EXPORTAÇÃO
- Implementar no programa de Manutenção do Processo de Exportação e em sua consulta (EX3001/EX3101) uma flag para que seja possível identificar se aquele processo é um Subprocesso de acordo com o Protótipo 01 e Protótipo 02.
- Implementar um campo novo no programa de Manutenção do Processo de Exportação e em sua consulta (EX3101) ao lado da flag “Subprocesso”, um campo que seja permitido ao usuário informar o Processo de Exportação que dará origem ao SubProcesso, será possível pesquisar o seu conteúdo (somente no EX3001).
- Na navegação dos registros, para que a informação seja mostrada em tela, implementar na procedure “AfterDisplayFields” para que os dados referentes à Flag SubProcesso de Exportação e Processo de Exportação de Origem seja mostrado em tela corretamente.
- Implementar na inclusão do registro de Processo de Exportação para quando a flag de “Subprocesso” estiver marcada, habilitar o campo “Processo de Exportação de Origem” para que seja informado a partir de qual registro o Subprocesso será gerado e as demais informações deste processo serão preenchidas automaticamente como se fosse uma cópia de registro;
- EX3001: Manutenção Processo de Exportação
- Informações do campo:
- Help do campo: Identifica se registro refere-se a SubProcesso de Exportação;
- Gravação:
Marcado | Desmarcado |
processo-exp.char-2,1,1 = “1’ | processo-exp.char-2,1,1 = “” |
- Na criação de novo registro de Exportação, a mesma deverá vir Habilitada e Desmarcada;
- Na modificação do registro, caso a flag estiver marcada deverá ficar “Desabilitada”;
- Na modificação do registro, caso a flag estiver “desmarcada”, deverá ficar “Habilitada”;
- Campo “Processo de Exportação de Origem”
- Informações do campo:
- Tamanho: 16
- Formato: x(12)
- Help do campo: Informe o Processo de Exportação de Origem
- Gravação:
- Criar registro na tabela “proces-export-relacdo” conforme tabela abaixo:
Campo Tabela “proces-export-relacdo” | Valor a armazenar | Observação |
cod-estabel | processo-exp.cod-estabel | |
nr-proc-exp | processo-exp.nr-proc-exp | |
| | |
cod-proces-export-orig | processo-exp.nr-proc-exp | Screen-value do campo “Processo de Exportação de Origem” da tela EX3001; |
cod-estabel-orig | processo-exp.cod-estabel | Possuirá o mesmo estabelecimento do SubProcesso de Exportação; |
hora | Hora Atual | STRING(TIME,"HH:MM:SS"). |
cod-usuario | Usuário logado no sistema | Definir a include ut-glob.i e utilizar o campo “c-seg-usuario”. |
Exemplo de criação da tabela:
Supondo que o Processo de Exportação de Origem “A” tenha gerado os SubProcessos “B” e “C” e o SubProcesso de Exportação “B” gerou os SubProcessos: “Z” e “Y”:
- Estabelecimento “1”
Processo de Exportação de Origem | SubProcesso de Exportação |
A | B |
A | C |
B | Z |
B | Y |
- Utilizar os métodos padrões da DBO para realizar gravação dos dados da tabela no dicionário de dados.
- Na Criação e/ou Modificação de novo Registro, este campo deverá vir sempre desabilitado. Somente ficará habilitado quando marcar a flag “SubProcesso”.
- Caso posicionado no campo, ao pressionar F5 ou dar duplo clique, deverá ser chamado o programa de Pesquisa de Processo de Exportação (Z10CX185);
- Validação na confirmação da Inclusão/Alteração do Registro:
As validações deverão ser efetuadas na procedure “ValidateRecord” da BOCX185.
Observação: Realizar as validações abaixo somente se a flag “subProcesso” estiver marcado (processo-exp.char-2,1,1 = “1”)
- Somente será permitido informar “Processo de Exportação de Origem” que pertença ao mesmo estabelecimento do registro que está sendo inserido/modificado:
SubProcesso de Exportação | Processo de Exportação de Origem |
tt-processo-exp.cod-estabel | bf-processo-exp.cod-estabel |
- Somente será permitido informar “Processo de Exportação de Origem” que pertença ao mesmo Itinerário do registro que está sendo inserido/modificado. Caso não esteja, deverá ser emitida a mensagem: “158 - &1 inválido(a). Informe um(a) &1 válido(a). &2”.
Onde: &1 = Processo de Exportação;
&2 = Itinerário do SubProcesso deve ser igual ao Itinerário do Processo de Exportação de Origem XXX (Informar no “XXX” o código do itinerário do Processo de Exportação de Origem).
- Se a flag “SubProcesso” estiver marcado, será obrigatório o usuário informar “Processo de Exportação de Origem”. Caso a informação esteja em branco, emitir a mensagem de validação “265 – Processo de Exportação de Origem deve ser informado”;
- Se a flag “SubProcesso” estiver marcado, e o usuário informar “Processo de Exportação de Origem”, a mesma deverá ser validada no sistema. E caso não encontrada, emitir a mensagem “2 - Não encontrado Processo de Exportação de Origem para chave informada”.
- Somente será possível informar no campo “Processo de Exportação de Origem” os processos que estiverem com a situação situação “Aberto”, “Faturado Parcial”, ou “Faturado” (processo-exp.cod-sit-proc = 1, 3, ou 7). Caso o “Processo de Exportação de Origem” informado for um diferente das 3 situações acima, o sistema deverá validar, emitindo a mensagem: “158 - &1 inválido(a).Informe um(a) &1 válido(a). &2
Onde: &1 = Processo de Exportação
&2 = Deverá ser selecionado um Processo de Exportação que esteja com a situação: Aberto, Faturado Parcial ou Faturado.
- Ao confirmar a inclusão do registro, caso não tenha sido encontrado nenhum erro deverá ser aberto o programa EX3001C (Novo) para que seja permitido desvincular uma Nota Fiscal e/ou Embarque do Processo de Exportação de Origem para o Novo Processo de Exportação/SubProcesso.
- Parâmetros a serem passados para o programa EX3001C:
Parâmetro | Tipo |
Rowid processo-exp de Origem | Entrada |
NO | Entrada |
- Validação de Eliminação do Registro
- Ao realizar a Eliminação de um Processo de Exportação (EX3001) que possua Processos Relacionados, emitir a mensagem abaixo questionando ao usuário se deseja eliminar o registro:
Mensagem: 17487 - &1 possui relacionamentos ativos.
Help: &1 possui relacionamento com a tabela &2. Confirma eliminação?
Parâmetros: &1 – Processo de Exportação
&2 – Processo de Exportação Relacionados. Caso a eliminação seja realizada, esse vinculo será desfeito.
Caso o usuário confirme a eliminação, o registro da tabela “proces-export-relacdo” deverá ser eliminado.
Consequentemente, as informações em tela do EX3001/EX3101 (flag e campo Processo de Exportação de Origem) e também nos Relacionamentos do Processo (EX0190/EX1190, novo Folder) não deverão ser mostrados.
- BOCX358 – BO DA TABELA PROC-PED-ENT-DESP
- Procedure AtualizaDespProcNota:
Dividir a procedure acima em duas etapas. O bloco existente após a execução da procedure “deleteDespProc” deverá ser colocado em outra procedure (ex.: AtualizaDespProcNotaAux) com os parâmetros de “ESTABELECIMENTO” E “NÚMERO DO PROCESSO DE EXPORTAÇÃO”. Isso pois temos que executar a criação das despesas no acompanhamento do procedure independente do valor recebido do parâmetro “pl-elimina-desp”, porém as despesas somente serão eliminadas caso o parâmetro “pl-elimina-desp” estiver igual a YES.
Portanto:
IF pl-elimina-desp THEN DO:
Run deletedesproc................
RUN AtualizaDespProcNotaAux (input p-cod-estabel,
Input p-nr-proc-exp).
ELSE DO:
RUN AtualizaDespProcNotaAux (input p-cod-estabel,
Input p-nr-proc-exp).
END.
- BOCX185 – BO DA TABELA PROCESSO-EXP
- Definir a temp-table “tt_retorna_tit_acr_proc_exp” conforme definição efetuada na include ex0403b.i
- Procedure pi-traducao-ems5:
Corrigir a acentuação da criação da tt_xml_input_output: “Função”.
- Procedure “pi-cria-despesa-declaracao-novo-itiner”:
- Inserir parâmetros para sua execução de acordo com a tabela abaixo:
Parâmetro | Tipo | Formato |
pc-cod-estabel | Entrada | Like processo-exp.cod-estabel |
pc-nr-proc-exp | Entrada | Like processo-exp.nr-proc-exp |
pi-cod-itiner | Entrada | Like processo-exp.cod-itiner |
pl-gera-despesa | Entrada | Lógico |
pl-gera-declaracao | Entrada | Lógico |
- Alterar a chamada da procedure “pi-cria-despesa-declaracao-novo-itiner” realizada pela procedure “validateUpdate” para passar os novos parâmetros:
- RowObject.cod-estabel;
- RowObject.nr-proc-exp;
- RowObject.i-cod-itiner;
- Yes;
- Yes.
- Substituir os locais que utilizam os campos da tabela “RowObject” pelos parâmetros recebidos pela procedure;
- Somente entrar no bloco referente às despesas quando a variável “pl-gera-despesa” for igual a YES;
- Somente entrar no bloco referente às Declarações/Comunicações do Processo quando a variável “pl-gera-declaracao” for igual a YES;
- Procedure pi-seta-atualiza-tit-ems5:
Colocar esse texto no objetivo da procedure:
“Essa procedure será responsável por identificar se deverá ou não ser zerado o titulo original para ser gerado novo titulo com o novo processo de exportação com o saldo restante.
Situações em que o título é gerado pelo número do Processo de Exportação.”
Deverá possuir o parâmetro abaixo que deverá atualizar uma variável do tipo lógica definida no inicio desta DBO:
Parâmetro | Tipo | Formato |
pl-gera-novo-titulo | Entrada | Lógico |
- Procedure “pi-busca-titulos-ems5”:
- Essa procedure deverá possuir o mesmo conteúdo da procedure “pi-busca-titulos-ems5” do programa EX0403B.p. Tem como objetivo retornar para o programa chamador todos os títulos do processo de Exportação que ainda possuem saldo.
- Informações referentes aos parâmetros criados na temp-table “tt_leitura_tit_acr_proc_exp.”:
Parâmetro | Valor a receber |
Empresa | “” (branco) |
Empresa Externa | i-empresa |
Estabelecimento | “” (branco) |
Estabelecimento Externo | tt-serie.cod-estab-faturam |
Número Processo | Nota-fiscal.nr-proc-exp |
Cliente | Nota-fiscal.cod-emitente |
Data Emissao Inicial | Da-dt-emis-nota-mais-antiga |
Espécie | Parâmetro recebido na procedure (p-cod-esp) |
Série | tt-serie.serie |
- i-empresa (exemplo do código no programa EX0403B):
- Carregar inicialmente com o valor da param-global:
ASSIGN i-empresa = param-global.empresa-prin.
- Acessar a tabela “estabelec” através do campo “nota-fiscal.cod-estabel”. Se o registro estiver disponível, executar o programa cd9970 conforme exemplo abaixo:
cdp/cd9970.p (INPUT ROWID(estabelec),
OUTPUT i-empresa).
- da-dt-emis-nota-mais-antiga (exemplo do código no programa EX0403B):
- Com a tabela nota-fiscal posicionada, carregar inicialmente com a data de emissão da nota:
ASSIGN da-dt-emis-nota-mais-antiga = nota-fiscal.dt-emis-nota.
- Em seguida realizar acesso à tabela “proc-nota-fiscal” contra os campos abaixo:
- Cod-estab-faturam;
- Serie;
- Nr-nota-fis.
- Acessar novamente a tabela nota-fiscal através de um BUFFER contra os campos chaves da tabela (ver item acima) e se o valor armazenado na variável de data for MAIOR que a data da emissão da nota que está sendo lida, atualizar a informação:
IF nota-fiscal.dt-emis-nota < da-dt-emis-nota-mais-antiga THEN
ASSIGN da-dt-emis-nota-mais-antiga = nota-fiscal.dt-emis-nota.
- Procedure “atualizaProcessoTitulosCR”
- Definir a variável “l-nr-processo” e carregá-la conforme está sendo feito hoje no programa ftapi001.p.
- Caso o título tenha sido gerado com o número do Processo de Exportação (l-nr-processo), e Caso a variável que identifica se deve ou não gerar novo título recebida na procedure “pi-seta-atualiza-tit-ems5” = YES realizar os procedimentos descritos abaixo:
- Antes de iniciar a integração com o Financeiro, realizar a criação da temp-table “tt-serie”. Sua definição e criação deverá ser feita como hoje é feito no programa EX0403B.p, procedure “pi-integra-ems5”;
- Realizar acesso na tabela “tt-serie” com break by:
BREAK BY tt-serie.serie
BY tt-serie.cod-estab-faturam
- Dentro do for each da tt-serie, realizar acesso no buffer da tabela “fat-duplic” para buscar a “Espécie” da primeira duplicata da Nota Fiscal em questão. Executar a procedure “pi-busca-titulos-ems5” passando como parâmetro espécie dessa duplicata para que seja retornada a temp-table “tt_retorna_tit_acr_proc_exp”.
- No retorno da execução da procedure, executar o comando abaixo para que seja retornada a ultima parcela gerada dos títulos no CR para aquele processo de exportação:
ASSIGN i-nr-ultima-parcela-gerada = 0.
FOR EACH tt_retorna_tit_acr_proc_exp
WHERE tt_retorna_tit_acr_proc_exp.tta_cod_tit_acr = tt-serie.serie:
IF INT(tt_retorna_tit_acr_proc_exp.tta_cod_parcela) > i-nr-ultima-parcela-gerada THEN
ASSIGN i-nr-ultima-parcela-gerada = INT(tt_retorna_tit_acr_proc_exp.tta_cod_parcela).
END.
- Caso o título não tenha sido gerado com o número do Processo de Exportação, executar o comando existente a partir do FOR EACH abaixo:
FOR EACH fat-duplic FIELDS(cod-estabel cod-esp serie nr-fatura parcela dt-vencimen dt-emissao dt-desconto)
- Procedure “pi-atualiza-cria-tit-ems5”:
Esta procedure será responsável por zerar o saldo do Título do Contas a Receber gerado com o número do Processo de Exportação de Origem para gerar NOVO título no Contas a Receber que deverá ser gerado com o número do SubProcesso de Exportação:
- Deverá ser verificado se o movimento da comissão do representante já foi enviado ao contas a Pagar (temp-table referente ao campo “movto_comis_repres.log_movto_comis_envdo” retornado da ACR923za.py):
- Caso negativo, o título original do Processo deverá ter seu saldo zerado e gerado novo título no Contas a Receber para o Subprocesso criado com o saldo restante;
- Caso já tenha sido enviado ao Contas a pagar, será gerado um arquivo notificando ao usuário que o movimento da comissão do representante já foi enviada ao AP. Desta forma, o título deverá ter seus ajustes realizados de forma manual no Contas a Receber.
Parâmetro | Tipo | Formato |
p-cod-estab | Entrada | Character |
p-id-tit-acr | Entrada | Inteiro |
p-nr-proc-exp-orig | Entrada | Character X(12) |
p-nr-proc-exp-sub | Entrada | Character X(12) |
* Este campo deverá corresponder ao Número do Processo de Exportação de Origem
Definir as variáveis c-cod-refer e i-num-tit-acr conforme definido no programa
DEF VAR p-cod-refer AS CHAR FORMAT 'X(10)':U NO-UNDO.
DEF VAR p-num-tit-acr AS INT NO-UNDO.
Definir dois buffer’s para a tabela “processo-exp”, onde uma será para acessar o ROWID do Processo de Exportação Original e o segundo para acessar o ROWID do SubProcesso de Exportação.
Acessar o buffer da tabela “processo-exp” referente ao Processo de Exportação Original.
Executar o programa ftapi016.p para que seja criada a Referencia, conforme exemplo abaixo:
RUN ftp/ftapi016.p(INPUT "F",
INPUT <estabelecimento_Processo_Original>,
OUTPUT p-cod-refer).
Executar a procedure “pi-retorna-seq-tit-acr” conforme sugestão abaixo:
RUN pi-retorna-seq-tit-acr (INPUT p-cod-estab,
INPUT p-id-tit-acr,
INPUT TODAY,
OUTPUT p-num-tit-acr).
- Zerando o saldo do Título:
Para que possa ser zerado o saldo do título no Contas a Receber, executar a criação da temp-table “tt_alter_tit_acr_base_5” com as seguintes informações:
tta_cod_estab | p-cod-estab |
tta_num_id_tit_acr | p-id-tit-acr |
tta_dat_transacao | TODAY |
ttv_cod_motiv_movto_tit_acr_imp | ? |
tta_val_sdo_tit_acr | 0 |
ttv_cod_motiv_movto_tit_acr_alt | |
ttv_ind_motiv_acerto_val | “Alteração” |
tta_cod_portador | ? |
tta_cod_cart_bcia | ? |
tta_val_despes_bcia | ? |
tta_cod_agenc_cobr_bcia | ? |
tta_cod_tit_acr_bco | ? |
tta_dat_vencto_tit_acr | &IF "{&ems_dbtype}":U = "MSS":U &THEN 01/01/1800 &ELSE 01/01/0001 &ENDIF |
tta_dat_prev_liquidac | &IF "{&ems_dbtype}":U = "MSS":U &THEN 01/01/1800 &ELSE 01/01/0001 &ENDIF |
tta_dat_fluxo_tit_acr | &IF "{&ems_dbtype}":U = "MSS":U &THEN 01/01/1800 &ELSE 01/01/0001 &ENDIF |
tta_ind_sit_tit_acr | ? |
tta_cod_cond_cobr | ? |
tta_dat_abat_tit_acr | &IF "{&ems_dbtype}":U = "MSS":U &THEN 01/01/1800 &ELSE 01/01/0001 &ENDIF |
tta_val_abat_tit_acr | ? |
tta_val_perc_desc | ? |
tta_val_desc_tit_acr | ? |
tta_qtd_dias_carenc_juros_acr | ? |
tta_val_perc_juros_dia_atraso | ? |
tta_val_perc_multa_atraso | ? |
tta_qtd_dias_carenc_multa_acr | ? |
tta_ind_ender_cobr | ? |
tta_nom_abrev_contat | ? |
tta_val_liq_tit_acr | ? |
tta_log_tip_cr_perda_dedut_tit | ? |
tta_cod_instruc_bcia_1_movto | ? |
tta_cod_instruc_bcia_2_movto | ? |
ttv_des_text_histor | ? |
tta_ind_tip_cobr_acr | normal |
tta_log_tit_acr_destndo | ? |
tta_des_obs_cobr | ? |
tta_cdn_repres | ? |
tta_val_perc_abat_acr | ? |
ttv_dat_base_fechto_vendor | ? |
tta_cod_proces_export | p-nr-proc-exp-orig |
tta_cod_refer | p-cod-refer |
tta_num_seq_tit_acr | p-num-tit-acr |
Após criação da temp-table acima, executar os mesmos comandos existentes na procedure “pi-atualiza-tit-ems5” da BOCX185.
Caso não seja encontrado nenhum registro na temp-table de erros (tt_log_erros_alter_tit_acr), deverá ser criado o novo Título de Exportação com o número do SubProcesso com o saldo restante.
- Criando o novo Título com o saldo do que foi zerado:
RUN pi_main_code_integr_acr_new_10 IN v_hdl_api_integr_acr (INPUT 11,
INPUT v_cod_matriz_trad_org_ext,
input yes,
input no,
INPUT TABLE tt_integr_acr_repres_comis_2,
INPUT-OUTPUT TABLE tt_integr_acr_item_lote_impl_8,
INPUT TABLE tt_integr_acr_aprop_relacto_2,
INPUT-OUTPUT TABLE tt_params_generic_api).
Variável “v_cod_matriz_trad_org_ext”:
RUN prgint/ufn/ufn908za.py (input "1":u,
INPUT "15":U,
OUTPUT v_cod_matriz_trad_org_ext).
Criação da temp-table “tt_integr_acr_repres_comis_2”:
- Verificar método da criação da tabela no programa FTAPI001 e FTAPI017;
Criação da temp-table “tt_integr_acr_item_lote_impl_8”:
- Verificar método da criação da tabela no programa EX0403B.p, porém criar com o saldo restante do Título Original;
Criação da temp-table “tt_integr_acr_aprop_relacto_2”:
- Não é necessária a criação dessa temp-table;
Criação da temp-table “tt_params_generic_api”:
- Não é necessária a criação dessa temp-table;
- BOCX285 – BO DA TABELA DECL-HIST-PROC-EXP
- Criar a procedure “findDeclHistProcExp” que deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato |
pcod-estabel | Entrada | Like decl-hist-proc-exp.cod-estabel |
pnr-proc-exp | Entrada | Like decl-hist-proc-exp.nr-proc-exp |
pcod-itiner | Entrada | Like decl-hist-proc-exp.cod-itiner |
pc-return | Saída | Character |
Deverá ser realizado acesso à tabela “decl-hist-proc-exp” de acordo com os parâmetros recebidos acima. O tratamento da variável “c-return” deverá ser o mesmo contido na procedure “findCh_emitida” da mesma DBO.
- BOCX347 – BO DA TABELA REG-EXPORT
- Criar a procedure “piCopiaRegistro” que deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato |
pr-rowid-proc-orig | Entrada | Rowid |
pr-rowid-proc-sub | Entrada | Rowid |
Esta procedure deverá realizar a leitura da tabela “processo-exp” pelo parâmetrodo ROWID do Processo de Exportação de Origem recebido acima.
Deverá também acessar a tabela “processo-exp” pelo parâmetro ROWID do SubProcesso de Exportação recebido acima (para esta, criar um buffer para leitura).
Caso o registro do Processo de Exportação de Origem tenha sido encontrado, realizar acesso na tabela “reg-export” e então realizar um “create” e em seguida buffer-copy para uma nova temp-table definida LIKE a tabela “reg-export” e com o campo r-rowid.
- Exceção do buffer copy:
- Campo “reg-export.nr-re-ems”:
- Será atualizado com o conteúdo do valor retornado da execução da procedure “afterProxSeq” da própria DBO;
- Campos abaixo que deverão ser atualizados com os dados do SubProcesso de Exportação:
- Estabelecimento do Processo de Exportação
- Número do Processo de Exportação
- Os campos abaixo deverão ser atribuídos com valor “0” (zero):
- reg-export.val-pagto-antec
- reg-export.val-pagto-avista
- reg-export.val-parcdo
- reg-export.val-margem-nao-sacad
- reg-export.val-consig
- reg-export.val-sem-cobert-cambio
- reg-export.val-financto-reg-cr
- reg-export.num-parcelas
- reg-export.num-periodic
- Os campos abaixo deverão receber os seguintes valores:
- reg-export.idi-sit-reg-export = 1
- reg-export.dat-envio = ?
- reg-export.nr-re-siscomex = “”
- reg-export.dat-reg-export = ?
- Executar os métodos padrões para criação do Registro no DBO.
- Criar a procedure “piVerificaProcesso” que deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato |
pcod-estabel | Entrada | Like reg-export.cod-estabel |
pnr-proc-exp | Entrada | Like reg-export.nr-proc-exp |
p-sit-reg-export | Saída | Like reg-export.idi-sit-reg-export |
- Deverá ser realizado acesso à tabela “reg-export” de acordo com os parâmetros recebidos acima.
- Caso o registro não seja encontrado, retornar “NOK”.
- Caso contrário, carregar a variável “p-sit-reg-export” com a variável “reg-export.idi-sit-reg-export e retornar “OK”:
- Caso “1” (Pendente) retornar “OK”;
- Caso “2” (Enviado) retornar “NOK”;
- BOCX355 – BO DA TABELA PROCES-ACOND
- Criar a procedure “piVerificaRegistroByProcesso” que deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato |
pcod-estabel | Entrada | Like proces-acond.cod-estabel |
pnr-proc-exp | Entrada | Like proces-acond.nr-proc-exp |
- Deverá ser realizado acesso à tabela “proces-acond” de acordo com os parâmetros recebidos acima.
- Caso o registro não seja encontrado, retornar “NOK”.
- Caso contrário, retornar “OK”.
- BOCX00436 – BO DA TABELA PROCES-EXPORT-RELACDO
- Criar a procedure “piRetornaProcesExportRelacdo” que seja retornada a temp-table “tt-proces-export-relacdo” para a tela EX0190/EX1190.
Parâmetros | Tipo | Formato | Observação |
pr-rowid | Entrada | Rowid | |
tt-proces-export-relacdo | Saída | Temp-table | Like proces-export-relacdo Field r-rowid as rowed Field identific as char |
Acessar a tabela “processo-exp” pelo rowid recebido como parâmetro.
Com a tabela “processo-exp” posicionada, realizar acesso via FOR EACH na tabela “proces-export-relacdo” contra os campos:
- Proces-export-relacdo.cod-estabel
- Proces-expor-relacdo.nr-proc-exp
Em seguida realizar o create na temp-table que será retornada como parâmetro conforme abaixo:
Create tt-process-export-relacdo.
Buffer-copy process-export-relacdo to tt-proces-export-relacdo.
If tt-proces-export-relacdo.cod-proces-export-orig = tt-proces-export-relacdo.nr-proc-exp then
Assign tt-proces-export-relacdo.identific = “Processo de Origem”;
Else
Assign tt-proces-export-relacdo.identific = “SubProcesso”;
- BOCX355 – BO DA TABELA PROCES-ACOND
- Criar a Procedure “piRetiraTodosVolumes” que será responsável por eliminar os volumes já realizados para o Acondicionamento de Origem.
Deverá conter os mesmos comandos existente na trigger de CHOOSE DO BOTÃO btRetiraTodosVolumes do programa EX3500g.w.
- Criar a procedure “piCriaCopiaAcond” responsável pela criação dos registros nas tabelas “Proces-acond” e “proces-acond-volm” na BOCX355 que deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato |
pr-rowid-subprocesso | Entrada | Rowid |
pr-rowid-processo-orig | Entrada | Rowid |
pl-cria-acond | Entrada | Lógico |
pl-cria-embalagem | Entrada | Lógico |
RowErrors | Saída | Temp-table |
Deverá ser feito acesso às tabelas “Processo-exp” para deixar os dois registros posicionados (do SubProcesso e do Processo de Origem)
- Quando o parâmetro “pl-cria-acond = NO” e o parâmetro “pl-cria-embalagem = YES”:
Executar a procedure “piRetiraTodosVolumes” desta mesma BOCX355. Para permitir esta execução, através da tabela “processo-exp” do Processo de Origem posicionada, acessar a tabela “proces-embal-volum” via FOR EACH, pelo campo chave das tabelas (proces-embal-volum.cod-estabel e proces-embal-volum.nr-proc-exp).
- Criação da tabela “proces-acond”:
Quando o parâmetro “pl-cria-acond” = yes:
Com o registro do Processo de Origem e do SubProcesso de Exportação posicionado, realizar acesso via FOR EACH no buffer da tabela “proces-acond” pelos campos chaves em comum entre as tabelas “processo-exp” e “proces-acond”.
Com a tabela posicionada, realizar create e buffer-copy do registro do buffer da tabela “PROCES-ACOND” para a TEMP-TABLE “PROCES-ACOND” atualizando as informações de Estabelecimento e Número do Processo de Exportação que deverão ser carregados com as informações do SubProcesso de Exportação via assign logo após o buffer-copy.
Executar os métodos padrões da BOCX355 para criação do registro.
- Criação da tabela “proces-acond-volum”:
Caso não tenha sido encontrado nenhum erro durante a criação da tabela “Proces-acond”:
Definir a temp-table “tt-itens-proc-exp” (verificar a definição no programa EX3500d.w)
Ainda dentro do FOR EACH do buffer da tabela “PROCES-ACOND”, realizar outro FOR EACH no buffer da tabela “PROCES-ACOND-VOLUM” através do campo chave entre as tabelas “proces-acond” e “proces-acond-volum” e realizar o mesmo CREATE e buffer-copy na TEMP-TABLE “PROCES-ACOND-VOLUM” atualizando as informações de Estabelecimento e Número do Processo de Exportação que deverão ser carregados com as informações do SubProcesso de Exportação via assign logo após o buffer-copy.
Executar os métodos padrões da BOCX356 para criação do registro.
Observação: Somente não deverão ser executados os métodos padrões da DBO para criação do registro para o registro da temp-table que o campo “num-volum-acond” for igual a zero (isso pois existe o método “afterCreateRecord” na BOCX355 que realiza a criação do registro acima com o valor zero).
Ao término deverá ser fechado o bloco da verificação do valor do parâmetro pl-cria-acond = yes.
- Criação da tabela “proces-embal-resum” e tabela “proces-embal-volum”;
Somente deverá ser executado esse bloco quando o valor do parâmetro “pl-cria-embalagem” = yes:
Executar a procedure abaixo no HANDLE da BOCX353 passando como parâmetros os dados do SubProcesso de Exportação:
RUN retornaItensProcExp IN h-bocx353 (INPUT <Estabelecimento do SubProcesso>,
INPUT <Número do processo do SUbProcesso>,
OUTPUT TABLE tt-itens-proc-exp).
Acessar a temp-table “tt-itens-proc-exp” via FOR EACH e executar os mesmos códigos existentes na trigger de CHOOSE DO BOTÃO “btOK” do programa EX3500G.w
Ao término deverá ser fechado o bloco da verificação do valor do parâmetro “pl-cria-embalagem” = yes.
- EX3001C – Manutenção SubProcesso de Exportação
- Desenvolver uma nova tela conforme Protótipo 03 que será executada ao confirmar a inclusão do SubProcesso onde:
- Deverá ser do tipo “MasterDetail”;
- Deverá possuir os parâmetros abaixo:
Parâmetro | Tipo | Formato | Observação |
prowid-proc-orig | Entrada | Rowid | Rowid referente à tabela “processo-exp” do Processo de Exportação de Origem; |
pl-habilita-sub-proc | Entrada | Lógico | Responsável por habilitar ou não o campo de SubProcesso de Exportação dependendo do programa chamador |
- Os browsers deverão conter as seguintes colunas:
- Browser de Notas Fiscais:
Coluna | Valor Atribuído |
Nota Fiscal | Nota-fiscal.nr-nota-fis |
Série | Nota-fiscal.serie |
Estab | Nota-fiscal.cod-estabel |
Embarque | Nota-fiscal.cdd-embarq |
Data Emissão | Nota-fiscal.dt-emis-nota |
NatOperação | Nota-fiscal.nat-operacao |
Embarque | Nota-fiscal.cdd-embarq |
Tipo Nota Fiscal | Nota-fiscal.ind-tip-nota (diinc/i09di037.i 03). |
Data Saída | Nota-fiscal.dt-saida |
Coluna | Valor Atribuído |
Embarque | Embarque.cdd-embarq |
Situação | {diinc/i01di162.i 04 embarque.cod-sit-pre} |
Estab | Nota-fiscal.cod-estabel |
Série | Nota-fiscal.serie |
Nota Fiscal | Nota-fiscal.nr-nota-fis |
DtEmbarque | Embarque.dt-embarque |
Preparador | Embarque.identific |
- Os campos de tela abaixo deverão ser carregados como hoje é feito nos programas “EX0190” e “EX0200”, porém com base nos dados referentes ao Processo de Exportação de Origem:
- Ao clicar o botão “Marca Todos”, deverá marcar todos os registros e o “Label” do botão mudará para “Desmarca Todos”, que se clicado deverá desmarcar todos os registros selecionados (ver exemplo do funcionamento do botão no programa MLA0122);
- Campo “SubProcesso de Exportação”: ficará habilitado somente quando executado via programa EX0190 através do botão “Desvincular” (variável “pl-habilita-sub-proc” = yes) para selecionar o Processo de Exportação que irá receber as notas/embarques vinculados. Somente Processos com as situações: Abertos, Faturados Parciais e Faturados.
- Caso posicionado no campo, ao pressionar F5 ou dar duplo clique, deverá ser chamado o programa de Pesquisa de Processo de Exportação (Z10CX185);
- Uma vez já vinculada Nota Fiscal e/ou Embarque ao SubProcesso de Exportação via EX3001C, o campo de SubProcesso de Exportação deverá ficar “desabilitado”.
- Será permitido ao usuário selecionar a partir de qual informação ele deseja fazer a quebra do Processo de Exportação:
- A partir da Nota Fiscal do Processo de Origem (Protótipo 03);
- A partir do Embarque do Processo de Origem (Protótipo 04);
- Esta nova tela irá carregar todas as Notas Fiscais e Embarques (independentes de já Confirmados ou não) que existem no Processo de Exportação Origem (browser 1) e todas as Notas Fiscais e Embarques que existem (se existirem) no SubProcesso conforme seleção do Usuário através do Radio-set do programa (ver nos protótipos 03 e 04);
- Processo de Exportação de Origem:
- Carregar Notas Fiscais (opção padrão do radio-set):
- Definir as temp-tables “tt-proc-nota-fiscal-orig” e “tt-proc-nota-fiscal-sub” utilizando a include “BOCX260.i”.
- Criar dois métodos na BOCX260NA:
- Uma será a SetConstraint que irá receber a chave da tabela Processo de Exportação (processo-exp);
- A outra será um OpenQuery na tabela {&TableName} com os campos recebidos pela SetConstraint criada acima;
- Para abertura das queries nos Browsers, executar os métodos SetConstraint passando a chave da tabela Processo de Exportação de Origem, executar o método OpenQuery e em seguida executar o método “getBatchRecords” (ver exemplo da execução através do programa “ex3500c.w”) retornando as temp-tables acima (todos os métodos deverão estar na BOCX260na).
- Executar novamente os métodos acima porém passando como parâmetros os dados referentes ao SubProcesso de Exportação para retornar a temp-table “tt-proc-nota-fiscal-sub”;
OBSERVAÇÃO: Deverão ser desconsideradas as Notas Fiscais que estiverem Canceladas e Devolvidas Totais (nota-fiscal.dt-cancela <> ? E proc-nota-fiscal.log-nf-devolvid = yes)
- Carregar Embarques Relacionados (quando selecionado no radio-set a opção “Embarques”):
- Definir as temp-tables “tt-embarque-orig” e “tt-embarque-sub” conforme definição da temp-table “tt-embarque” que consta no programa EX0190.w:
- Executar o método abaixo da BOCX190 que deverá ser instanciada de forma persistente em um avariável do tipo “Handle” que será responsável por retornar os Embarques Relacionados ao “Processo de Exportação de Origem”:
RUN EmbarquesRelacionados IN h-bocx190(INPUT <nr_proc_exp_origem>,
INPUT <cod_estab_origem>,
OUTPUT TABLE tt-embarque-orig).
- Executar novamente o método “EmbarquesRelacionados” na BOCX190 porém passando como parâmetros os dados referentes ao SubProcesso de Exportação para retornar a temp-table “tt-embarque-sub”;
- Tela dos botões do programa de “Filtro” (Protótipo 05):
Habilitará os campos de acordo com a opção marcada no Radio-set (Nota Fiscal ou Embarque).
Se estiver selecionado “Nota Fiscal”, os campos referentes ao Embarque deverão ser desabilitados. Caso selecionado “Embarque”, os campos referentes à Nota Fiscal deverão ser desabilitados;
- Filtros Nota Fiscal:
- Realizar leitura através da tabela proc-nota-fiscal (conforme o browser do botão de filtro de seleção – Processo de Exportação de Origem e/ou SubProcessos) e conforme a faixa de seleção informada em tela. Com relação ao campo de Emissão da Nota fiscal, após FOR EACH a tabela “proc-nota-fiscal”, realizar FOR FIRST na tabela “nota-fiscal” pelos campos chaves conforme tabela abaixo e caso o campo “dt-emis-nota” estiver fora da faixa de seleção, o registro deverá ser desconsiderado:
NOTA-FISCAL | PROC-NOTA-FISCAL |
cod-estabel | cod-estab-faturam |
serie | serie |
nr-nota-fis | nr-nota-fis |
- Filtros Embarque: Realizar leitura através da tabela “Embarque” (conforme o browser do botão de filtro de seleção – Processo de Exportação de Origem e/ou SubProcessos) e conforme a faixa de seleção informada em tela. Pelos campos chaves e campo de Situação do Embarque conforme tabela abaixo:
EMBARQUE | PROCESSO-EXP |
nr-proc-exp | nr-proc-exp |
cdd-embarq | cdd-embarq |
Acessar tabela “pre-fatur” para verificar a “Situação do Embarque conforme abaixo e caso o registro não seja encontrado, o mesmo deverá ser desconsiderado:
PRE-FATUR | EMBARQUE |
cdd-embarq | cdd-embarq |
Pre-fatur.cod-sit-pre:
- 1 Alocado
- 2 Calculado
- 3 Confirmado
- Botão “Vincula Nota fiscal/Embarque” ao SubProcesso:
- Definir a temp-table “tt-row-notas-geradas” que deverá possuir apenas um campo: “r-rowid-nota”.
Esta temp-table deverá conter todas os ROWIDs do registro da tabela “nota-fiscal” que foram vinculadas por intermédio da tela EX3001C para o SubProcesso de Exportação.
- Ao desvincular a Nota Fiscal/Embarque do Processo de Exportação de Origem para vincular ao SubProcesso (na trigger do botão de vincular – seta para baixo):
- Definir a variável “l-elimina-despesa” do tipo lógica;
- Definir a temp-table “tt-bo-erro” (include {include/boini.i});
- Definir a temp-table “tt-bo-erro-5” like tt-bo-erro;
- Executar de forma persistente as seguintes BOs:
- BOCX185.p;
- BOCX190.p;
- BOCX358.p.
COLOCAR TODO O TRECHO ABAIXO EM UMA TRANSAÇÃO, POIS CASO OCORRA ALGUMA VALIDAÇÃO, O BLOCO INTEIRO TERÁ QUE SER DESFEITO:
- Realizar as mesmas execuções existentes no botão “Desvincula” do folder “Nota Fiscal” e no botão “Desvincula” do folder “Embarque” do programa “EX0190” para que a Nota Fiscal/Embarque seja “Desvinculado” do processo de Exportação de Origem e tenha seus valores atualizados para que seja realizada a vinculação para o SubProcesso de Exportação:
- Criar uma nova Procedure: “pi-desvincula-nota-embarque” que receberá como parâmetro as seguintes informações:
- Estabelecimento do Processo de Exportação de Origem;
- Número do Processo de Exportação de Origem;
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal.
- Número da Nota Fiscal;
- Embarque
- Origem das informações (radio-set: 1 – Nota Fiscal, 2 – Embarque).
Caso a origem das informações seja “1 – Nota Fiscal”:
Aqui deverá existir o conteúdo da trigger de choose do botão “btDesvinculaSon3” do EX0190.w (com exceção da procedure referente ao Contas a Receber – PiValidaCR).
Caso a origem das informações seja “2 – Embarque”:
Aqui deverá existir o conteúdo da trigger de choose do botão “btDesvinculaSon5” do EX0190.w (com exceção da procedure referente ao Contas a Receber – PiValidaCR).
Caso o Embarque possua mais de uma Nota Fiscal a vincular, deverá ser emitida uma mensagem de alerta ao usuário notificando as notas fiscais já calculadas e se deseja continuar.
Caso não seja encontrado nenhum erro durante a execução das procedures acima, seguir com o descrito abaixo:
- Realizar as mesmas execuções da procedure “piGeracao” do programa EX0190L.w para que sejam criados os relacionamentos do SubProcesso de Exportação:
- Criar uma nova Procedure: “pi-vincula-nota-embarque” que receberá como parâmetro as seguintes informações:
- Estabelecimento do Processo de Exportação de Origem;
- Número do Processo de Exportação de Origem;
- Estabelecimento do SubProcesso de Exportação;
- Número do Processo de Exportação do SubProcesso;
- Origem das informações (radio-set da tela):
- 1 – Nota Fiscal
- 2 – Embarque
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal.
- Número da Nota Fiscal;
- Embarque;
- Parâmetros a serem passados para a Procedure “piValidaRelacionametnos”:
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal;
- Número da Nota Fiscal;
- Embarque;
- Origem do Relacionamento;
- Número do SubProcesso de Exportação;
- Estabelecimento do SubProcesso de Exportação.
- Retorno da temp-table tt-bo-erro
- Parâmetros a serem passados para a Procedure “piGeraRelacionamentos”:
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal;
- Número da Nota Fiscal;
- Embarque;
- Origem do Relacionamento;
- Número do SubProcesso de Exportação;
- Estabelecimento do SubProcesso de Exportação;
- Retorno da Temp-table tt-bo-erro.
- Executar a procedure “pi-seta-atualiza-tit-ems5” passando como parâmetro “YES”;
- Se a Origem da seleção de registros for pela Nota Fiscal:
- Parâmetros a serem passados para a Procedure “atualizaProcessoPelaNotaFiscal”:
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal;
- Número da Nota Fiscal;
- Número do SubProcesso de Exportação;
- Retorno da Temp-table tt-bo-erro-5;
- Retorno da Temp-table tt-bo-erro.
- Se a Origem da seleção de registros for pelo Embarque:
- Parâmetros a serem passados para a Procedure “atualizaProcessoPeloEmbarque”:
- Embarque;
- Número do SubProcesso de Exportação;
- Retorno da Temp-table tt-bo-erro-5;
Deverão ser vinculadas e atualizadas todas as notas fiscais que estão calculadas para o Embarque em questão.
- Abaixo das execuções acima, realizar as demais execuções existentes na procedure “PiGeracao” do EX0190L.w
- Antes de executar a procedure “PiAtualizaValoresProcesso”, realizar as execuções abaixo:
- Executar a procedure “AtualizaDespProcNota” no Handle da BOCX358 passando os parâmetros abaixo:
- Estabelecimento do SubProcesso de Exportação;
- Número do SubProcesso de Exportação;
- NO;
- Após a execução da procedure acima, voltar a executar o mesmo código da procedure “PiGeracao” do programa EX0190L:
- Sobre a procedure “PiAtualizaValoresProcesso”, passar os seguintes parâmetros:
- Número do SubProcesso de Exportação;
- Estabelecimento do SubProcesso de Exportação;
- Retorno da Temp-table tt-bo-erro;
- Procedure “atualizaSituacaoProcesso”, passar os seguintes parâmetros:
- Estabelecimento do SubProcesso de Exportação;
- Número do SubProcesso de Exportação;
- Realizar a criação da temp-table “tt-row-notas” a partir do registro da nota fiscal vinculada ao SubProcesso de Exportação.
- Executar a procedure “find_codigo” no handle da BODI135NA passando como parâmetros as informações abaixo de todas as notas Fiscais vinculada ao SubProcesso de Exportação:
- Estabelecimento da Nota Fiscal Vinculada;
- Série da Nota Fiscal Vinculada;
- Número da Nota Fiscal Vinculada;
Se o parâmetro recebido “c-return” for igual a branco, executar a procedure abaixo no handle da BODI135NA:
- getRowid e retornar o parâmetro "r-rowid-nota" que deverá ser utilizado para criação da temp-table “tt-row-notas”.
- Atualização das informações do Títulos do Contas a Receber
- Geração do título com o número da nota fiscal:
- Atualização do número do Processo de Exportação no título do CR;
- As procedures “atualizaProcessoPeloEmbarque” e “atualizaProcessoPelaNotaFiscal” também são responsáveis pela atualização o número do Processo de Exportação no título do Contas a Receber, portanto já irá atualizar esta informação no título.
- Geração do título com o número do Processo de Exportação:
- Se o título no Contas a Receber foi gerado com o número do Processo de Exportação, o título original do Processo deverá ter seu saldo zerado e deverá ser gerado novo título no Contas a Receber para o Subprocesso criado;
- Botão “Desvincula Nota Fiscal/Embarque” do SubProcesso:
Realizar as execuções das procedures “pi-desvincula-nota-embarque” e “pi-vincula-nota-embarque”, porém invertendo as informações:
- Aonde eram enviados os parâmetros referentes ao Processo de Exportação de Origem, deverá ser passado os parâmetros do SubProcesso de Exportação e vice-versa.
- Ao salvar o registro (clicar no botão “Sair” ou no “X” do programa EX3001C) deverá permitir também selecionar quais informações deverão ser replicadas e/ou geradas de forma automaticamente com base no Processo de Exportação de Origem, para isso realizar as seguintes verificações para execução do programa EX3001C1:
1) Seja localizado pelo menos uma Declaração/Comunicação do Processo e/ou;
- Executar a procedure “findDeclHistProcExp” no handle da BOCX285 passando como parâmetros:
- Estabelecimento do Processo de Exportação de Origem;
- Número do Processo de Exportação de Origem;
- Itinerário do Processo de Exportação de Origem;
- Verificar o retorno “c-return”:
- Carregar a variável “l-habilita-decl” de acordo com o c-return (se “diferente de branco”: no, se “branco”: yes)
- Caso “l-habilita-decl = yes”, foi encontrado registro e deverá ser aberta a tela EX3001C1.w.
2) Exista Registro de Exportação criado para o Processo de Exportação e/ou;
- Executar a procedure “piVerificaProcesso” no handle da BOCX347 passando como parâmetros:
- Estabelecimento do Processo de Exportação de Origem;
- Número do Processo de Exportação de Origem;
- Será retornado o parâmetro “p-sit-reg-export”
- Verificar o retorno “RETURN-VALUE”:
- Carregar a variável “l-habilita-re” de acordo com o return-value (se NOK = no, se OK = yes)
- Caso “l-habilita-re = yes”, foi encontrado registro e deverá ser aberta a tela EX3001C1.w.
3) O Documento fiscal que está sendo desvinculado do Processo de Exportação de Origem para vincular ao SubProcesso de Exportação esteja atualizado em OF:
- Executar a procedure “find_codigo” no handle da BODI135NA passando como parâmetros as informações abaixo de todas as notas Fiscais vinculada ao SubProcesso de Exportação:
- Estabelecimento da Nota Fiscal;
- Série da Nota Fiscal
- Número da Nota Fiscal;
Se o parâmetro recebido “c-return” for igual a branco, executar as procedures abaixo no handle da BODI135NA:
- getRowid e retornar o parâmetro "r-rowid-nota" que deverá ser utilizado para passar como parâmetro na execução do programa EX3001C1.w[MMdS3]
- getDateField passando como parâmetro a literal “dt-at-ofest” e retornando a variável dt-at-of. Atualizar a variável “l-possui-nota-of” da segunte forma:
Assign l-possui-nota-of = if dt-at-of <> ? then yes else no.
Observação: Este será o único parâmetro que não irá influenciar na abertura do programa EX3001C1.w.
4) Exista Acondicionamento criado para o Processo de Exportação:
- Executar a procedure “piVerificaRegistroByProcesso” no handle da BOCX355 passando como parâmetros:
- Estabelecimento do Processo de Exportação de Origem;
- Número do Processo de Exportação de Origem;
- Verificar o retorno “RETURN-VALUE”:
- Carregar a variável “l-habilita-acond” de acordo com o return-value (se NOK = no, se OK = yes)
- Caso “l-habilita-acond = yes”, foi encontrado registro e deverá ser aberta a tela EX3001C1.w.
- Parâmetros para execução do programa EX3001C1:
Parâmetros | Tipo | Formato |
pr-rowid-subprocesso | Entrada | Rowid |
pr-rowid-procorigem | Entrada | Rowid |
pl-habilita-decl | Entrada | Lógico |
pl-habilita-re | Entrada | Lógico |
pl-habilita-acond | Entrada | Lógico |
pl-possui-nota-of | Entrada | Lógico |
pr-rowid-nota-fiscal | Entrada | Rowid |
- EX3001C1 – ATUALIZAÇÃO DE INFORMAÇÕES
Criar uma nova tela (EX3001C1) com os seguintes parâmetros e informações (ver Protótipo 06):
- O programa deverá ser do tipo “Detail”, semelhante ao EX0190N.w.
- Enquanto esta tela estiver aberta, não será possível acessar a tela EX3001C.
- Sua execução e chamadas de parâmetros deverá ser semelhante ao programa EX0190N.w executado pelo programa principal EX0190.w;
- Receber como parâmetros (Entrada):
- Rowid da tabela “processo-exp” referente ao SubProcesso de Exportação;
- Rowid da tabela “processo-exp” referente ao Processo de Exportação de Origem;
- l-habilita-decl do tipo lógico;
- l-habilita-re do tipo lógico;
- l-habilita-acond do tipo lógico;
- l-possui-nota-of do tipo lógico;
- Regra de Negócio dos campos da tela EX3001C1:
- Parâmetros referentes ao SubProcesso de Exportação
- Declaração/Comunicação do Processo:
- Regra do campo estar habilitado: Somente Habilita quando encontrar pelo menos uma declaração/comunicação no Processo de Exportação de Origem (verificar valor recebido do parâmetro “l-habilita-decl” = yes);
- Acondicionamento:
- Regra do campo estar habilitado: Somente habilita quando encontrar um Acondicionamento gerado para o Processo de Exportação de Origem (verificar valor recebido do parâmetro “l-habilita-acond” = yes);
- Registro de Exportação:
- Regra do campo estar habilitado: Somente habilita quando encontrar pelo menos um Registro de Exportação no Processo de Exportação de Origem (verificar valor recebido do parâmetro “l-habilita-re” = yes).
- Parâmetros referentes ao Processo de Exportação de Origem:
- Acondicionamento:
- Regra do campo estar habilitado: Somente habilita quando encontrar um Acondicionamento gerado para o Processo de Exportação de Origem (verificar valor recebido do parâmetro “l-habilita-acond” = yes);
- Registro de Exportação:
- Regra do campo estar habilitado: Somente habilita quando encontrar pelo menos um Registro de Exportação no Processo de Exportação de Origem (verificar valor recebido do parâmetro “l-habilita-re” = yes)
- Elimina Informações de Exportação do Documento Fiscal em OF:
- Regra do campo estar habilitado: Somente habilita quando o usuário marcar a opção “Registro de Exportação” e a variável “l-habilita-of” = yes;
- Trigger de Choose do botão “OK” da tela EX3001C1 (criar uma procedure para cada atualização):
- SubProcesso de Exportação
- Declaração/Comunicação do Processo:
Caso o usuário tenha selecionado a opção “Declaração/Comunicação do Processo” para que seja gerado de forma automática realizar o descrito abaixo:
- Nesta procedure, deverá ser executada a procedure “pi-seta-itinerario-anterior” no handle da BOCX185 passando como parâmetro o “Itinerário” do Processo de Exportação de Origem;
- Em seguida realizar a execução da procedure “pi-cria-despesa-declaracao-novo-itiner” no handle da BOCX185, passando como parâmetros:
- Estabelecimento do SubProcesso de Exportação;
- Número do Processo do SubProcesso de Exportação;
- Itinerário do SubProcesso de Exportação (que será igual ao do Processo de Exportação de Origem);
- “NO” (para não gerar as despesas)
- “YES” (para gerar as Declarações/Comunicações do Processo);
- Registro de Exportação:
Caso o usuário tenha selecionado a opção “Registro de Exportação” para que seja gerado de forma automática:
- Executar a procedure “piCopiaRegistro” no handle da BOCX347 passando como parâmetros:
- Rowid da tabela Processo-exp referente ao Processo de Exportação de Origem;
- Rowid da tabela Processo-exp referente ao SubProcesso de Exportação;
- Criação dos Itens dos Anexos:
- Executar o mesmo código existente na trigger de choose do botão “btGerarItens” do programa EX5100E.w.
- Criação dos Anexos e atualização dos valores do Registro de Exportação:
- Executar o mesmo código existente na trigger de choose do botão “btGeranexos” do programa EX5100E.w, porém no lugar das variáveis abaixo, passar os seguintes valores:
Variáveis | Novos Valores |
i-idi-desc-anex | 1 |
i-idi-quant-col | 1 |
l-idi-consid-cfop | no |
- Acondicionamento:
Caso o usuário tenha selecionado a opção “Acondicionamento”, para que seja gerado de forma automática:
- Deverão ser criados os registros nas tabelas abaixo como sendo “cópia” do processo de exportação de Origem e o que irá mudar são os volumes relacionados. Ou sejam, os registros da tabela abaixo deverão ser iguais
- proces-acond
- proces-acond-volum
Para isso, executar o método “piCriaCopiaAcond” no Handle da BOCX355 passando como parâmetros:
Parâmetro | Tipo | Formato | Observação |
pr-rowid-subprocesso | Entrada | Rowid | |
pr-rowid-processo-orig | Entrada | Rowid | |
YES | Entrada | Lógico | Criar Acondicionamento? |
YES | Entrada | Lógico | Embalar as entregas? |
RowErrors | Saída | Temp-table de Erros | |
- Parâmetros referentes ao Processo de Exportação de Origem:
Caso selecionada a opção referente ao Registro de Exportação (Itens e Anexos), realizar os procedimentos descritos abaixo;
- Atualização dos Itens dos Anexos:
- Executar o mesmo código existente na trigger de choose do botão “btGerarItens” do programa EX5100E.w.
- Atualização dos Anexos e atualização dos valores do Registro de Exportação:
- Executar o mesmo código existente na trigger de choose do botão “btGeranexos” do programa EX5100E.w, porém no lugar das variáveis abaixo, passar os seguintes valores:
Variáveis | Novos Valores |
i-idi-desc-anex | 1 |
i-idi-quant-col | 1 |
l-idi-consid-cfop | no |
- Eliminar informações de Exportação do Documento Fiscal em OF:
Caso selecionada a opção para eliminar os dados de Exportação do documento em Obrigações Fiscais, deverão ser executados os comandos abaixo:
Posicionar na tabela “NOTA-FISCAL” através do ROWID recebido como parâmetro através do programa EX3001C e implementar também os mesmos comandos localizados nos programas e procedures abaixo:
- Trigger de choose do botão “bt-eliminar” do programa OF0305A-v05.w;
- Procedure “pi-grava-registro” do programa OF0305A-v05.w a partir do comentário “/*Elimina registros docto-fisc-export*/” até fechar o FOR EACH na tabela “tt-docto-fisc-exporta-elimina”.
- Na listagem do relatório, informar que o registro foi eliminado e que caso deseja atualizar com base no SubProcesso de Exportação, utilizar o botão do EX5000.
Caso selecionada a opção referente ao Acondicionamento (Itens e Anexos), realizar os procedimentos descritos abaixo;
Para isso, executar o método “piCriaCopiaAcond” no Handle da BOCX355 passando como parâmetros:
Parâmetro | Tipo | Formato | Observação |
pr-rowid-subprocesso | Entrada | Rowid | |
pr-rowid-processo-orig | Entrada | Rowid | |
NO | Entrada | Lógico | Criar Acondicionamento? |
YES | Entrada | Lógico | Embalar as entregas? |
RowErrors | Saída | Temp-table de Erros | |
- Título do Contas a Receber (contabilização pela data de emissão da nota):
- Geração do título com o número da nota fiscal:
- Deverá ser atualizado o número do Processo de Exportação no Título do Contas a Receber.
- Geração do título com o número do Processo de Exportação:
- Se o título no Contas a Receber foi gerado com o número do Processo de Exportação, o título original do Processo deverá ser baixado e gerado novo título no Contas a Receber para o Subprocesso criado;
- Não será permitido desvincular uma nota fiscal que seu Processo de Exportação já tenha tido seu Log de Geração de Tìtulos no CR e/ou Contabilização da Receita Processados com Sucesso;
- Não será permitido desvincular uma nota fiscal que seu Processo de Exportação já tenha sido contabilizado (para clientes que realizam a contabilização pela Data do Embarque);
- Não será permitido desvincular uma nota fiscal que já tenha sido contabilizada;
- EX0190/EX1190 – Relacionamentos do Processo de Exportação/Consulta dos Relacionamentos do Processo de Exportação
- Implementar novo Folder conforme Protótipos 07 e 08 no programa de Relacionamentos e Consulta dos Relacionamentos do Processo de Exportação (EX0190/EX1190) para que seja possível consultar todos os SubProcessos gerados a partir de um determinado Processo de Exportação;
- Esse folder corresponderá à tabela “proces-export-relacdo”;
- Informações das colunas do Browser:
Coluna | Valor |
Estabelecimento | tt-proces-export-relacdo.cod-estabel |
Processo de Exportação | tt-proces-export-relacdo.nr-proc-exp |
Identificador | SubProcesso de Exportação e/ou Processo de Exportação de Origem |
Para retornar os valores do browser, deverá ser executada a procedure abaixo e os seguintes parâmetros, em seguida realizar a abertura da query do Browser em questão:
Procedure: piRetornaProcesExportRelacdo
Parâmetros | Tipo | Formato | Observação |
pr-rowid | Entrada | Rowid | |
tt-proces-export-relacdo | Saída | Temp-table | Like proces-export-relacdo Field r-rowid as rowed Field identific as char |
- Antes de efetuar a chamada das procedures “atualizaProcessoPelaNotaFiscal” e “atualizaProcessoPeloEmbarque”, executar a procedure “pi-seta-atualiza-tit-ems5” passando como parâmetro “NO”;
- Botão “Desvincular” dos folder’s “Nota Fiscal” e “Embarque”:
- O botão “Desvincular” dos folder’s “Nota Fiscal” e “Embarque” ficarão habilitados, mesmo que o tipo do relacionamento seja “Automático”.
- Ao selecionar o botão “Desvincular” do EX0190, será executada a nova tela para que seja possível vincular a nota fiscal ao SubProcesso, onde o campo referente ao SubProcesso de Exportação o qual as notas serão vinculadas, ficará habilitado para edição (mesma tela aberta quando confirmar a inclusão do Subprocesso de Exportação):
- Parâmetros a serem passados para o programa EX3001C:
Parâmetro | Tipo |
Rowid processo-exp de Origem | Entrada |
YES | Entrada |
- Caso uma Nota Fiscal e/ou Embarque seja desvinculado do Processo de Exportação e vinculado ao SubProcesso de Exportação informado na tela do EX3001C, deverá:
- Ser criado registro na tabela “proces-export-relacdo” (ver regra de gravação da tabela no diagrama de ação do programa EX3001);
- SubProcesso de Exportação terá que ter a flag marcada (processo-exp.char-2,1,1 = “1’);
- Ao consultar o Processo de Exportação via EX3001/EX3101 e/ou consulta e manutenção dos relacionamentos (EX0190/EX1190) essa informação precisará estar disponível;
- EX0190L – Relacionamento Embarques/Notas Fiscais
- Antes de efetuar a chamada das procedures “atualizaProcessoPelaNotaFiscal” e “atualizaProcessoPeloEmbarque”, executar a procedure “pi-seta-atualiza-tit-ems5” passando como parâmetro “NO”;
- EX5000 – REGISTRO DE EXPORTAÇÃO
- Os dados de Exportação somente serão atualizados em Obrigações Fiscais caso a Data da Emissão da Nota estiver dentro da Data de Congelamento dos Parâmetros de OF;
- Implementar um novo botão ao lado do botão “Anexos do RE” para que seja permitido “exportar” os dados de Exportação para o Documento Fiscal. Verificar no Protótipo 08 a localização do botão.
- Informações referentes ao botão:
- IMAGE-UP FILE "image~\im-exp":U
- IMAGE-INSENSITIVE FILE "image~\ii-exp":U
- Tooltip: Atualiza Documento em OF;
- Este botão somente deverá estar habilitado se (criar uma procedure):
- Existir o Documento Fiscal gerado em OF:
- Lógica do botão para HABILITAR/DESABILITAR:
- Será necessário definir a temp-table “tt-row-doc-fisc” que conterá apenas um campo do tipo ROWID: r-rowid.
- Através da tabela “reg-export”, acessar a tabela “proc-nota-fiscal” através dos campos de Estabelecimento e Número do processo de Exportação de forma que sejam consideradas todas as notas fiscais vinculadas a esse Processo, mas este acesso somente deverá ser efetuado se existir informação no Número do Registro de Exportação (reg-export.nr-re-siscomex). Deverá ser definido nome para esta transação.
- Validar a Data de Congelamento dos Parâmetros de Obrigações Fiscais (OF0301)
- Através da tabela “proc-nota-fiscal”, acessar a tabela “nota-fiscal” através dos campos da tabela abaixo:
PROC-NOTA-FISCAL | NOTA-FISCAL |
cod-estab-faturam | cod-estabel |
serie | serie |
nr-nota-fis | nr-nota-fis |
Exemplo: find param-of where
param-of.cod-estabel = nota-fiscal.cod-estabel no-lock no-error.
FIND estabelec WHERE
estabelec.cod-estabel = nota-fiscal.cod-estabel NO-LOCK NO-ERROR.
if avail param-of
and param-of.dt-congela <> ? then
if nota-fiscal.dt-emis-nota <= param-of.dt-congela
and param-of.dt-congela <> ? then do:
end.
Se a afirmação acima for verdadeira, o botão também deverá estar desabilitado;
- Dentro da leitura da tabela “proc-nota-fiscal”, acessar a tabela “reg-export-anexo” contra a tabela “reg-export” utilizando o índice primário e único desta última tabela.
- Carregar a variável do tipo caracter “c-num-re” com as mesmas informações que hoje esta variável recebe na OFAPI002.P.
- Acessar a tabela “doc-fiscal” contra a tabela “proc-nota-fiscal” de acordo com a tabela abaixo e caso a tabela não esteja disponível, desconsiderar este registro para que seja considerado novo registro da transação de acesso à tabela “proc-nota-fiscal”.
DOC-FISCAL | PROC-NOTA-FISCAL |
cod-estabel | cod-estab-faturam |
serie | serie |
nr-nota-fis | nr-nota-fis |
- Realizar verificação da existência do registro do Documento Fiscal de Exportação (docto-fisc-export) contra a tabela “doc-fiscal” conforme abaixo:
DOCTO-FISC-EXPORT | DOC-FISCAL |
docto-fisc-export.cod-estab | doc-fiscal.cod-estabel |
docto-fisc-export.cod-serie | doc-fiscal.serie |
docto-fisc-export.cod-docto-fisc | doc-fiscal.nr-doc-fis |
docto-fisc-export.cdn-emitente | doc-fiscal.cod-emitente |
docto-fisc-export.cod-natur-operac | doc-fiscal.nat-operacao |
docto-fisc-export.cod-reg-export | trim(substring(c-num-re,1,12))) |
- Caso o registro na tabela “docto-fisc-export” não exista, o botão deverá ficar HABILITADO. Caso contrário deverá permanecer DESABILITADO.
- Atualização dos dados de Exportação em Obrigações Fiscais:
- Deverá ser utilizada a mesma lógica para HABILITAR E/OU DESABILITAR o botão de Exportação de dados e acrescentar o tratamento abaixo após o item “caso o registro na tabela “docto-fisc-export” não exista”:
- Criar um registro na temp-table “tt-row-doc-fisc” e o campo “r-rowid” deve ser atualizado com o ROWID da tabela “doc-fiscal”.
- Em seguida executar a API de OF responsável pela atualização dos dados de Exportação no Documento fiscal de acordo com as informações abaixo:
- RUN ofp/ofapi002.p (INPUT TABLE tt-row-doc-fiscal,
INPUT h-acomp).
- Observação h-acomp:
- Para o handle h-acomp, instanciar com a informação “Atualizando Documento em OF”.
- Desabilitar o botão “cancelar”;
- Eliminar o handle instanciado antes do bloco principal da lógica acima.
- Ao término da execução da atualização (OFAPI002), emitir uma mensagem em tela “34644 Atualização Efetuada com Sucesso. Help: Atualização &1 foi concluída com sucesso.” (&1 = “dos dados em OF”)
- ACR923ZA.py – BUSCA TÍTULOS DO EMS5
Alterar a API de busca de títulos do EMS5 para que também seja retornada a temp-table referente às comissões dos representantes;
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
EX3001 – Manutenção Processo de Exportação | [Alteração] | Logística -> Exportação -> Tarefas | - |
EX3101 - Consulta Processo de Exportação | [Alteração] | Logística -> Exportação -> Consultas | - |
EX3001C - Manutenção NF/Embarque SubProcesso de Exportação | [Criação] | Executado via EX3001/EX0190 | - |
EX3001C1 - Atualizações SubProcesso e Processo de origem | [Criação] | Executado via EX3001C | - |
EX3001C2 - Seleção de NF/Embarques | [Criação] | Executado via EX3001C | - |
EX0190 - Relacionamentos do Processo de Exportação | [Alteração] | Logística -> Exportação -> Tarefas | - |
EX0190L - Relacionamento Embarques/Notas Fiscais | [Alteração] | Executado via EX0190 | - |
EX1190 - Consulta Relacionamentos do Processo | [Alteração] | Logística -> Exportação -> Consultas | - |
BOCX185 | [Alteração] | BO tabela processo-exp | - |
BOCX260NA | [Alteração] | BO tabela proc-nota-fiscal | - |
BOCX355 | [Alteração] | BO tabela proces-acond | - |
BOCX358 | [Alteração] | BO tabela proc-ped-ent-desp | - |
BOCX347 | [Alteração] | BO tabela reg-export | - |
BOCX00436 | [Criação] | BO tabela proces-export-relacdo | - |
database/tgcx/tcp/tccx00436.p | [Criação] | Trigger de Create da tabela proces-export-relacdo | - |
database/tgcx/tdp/tdcx00436.p | [Criação] | Trigger de Delete da tabela proces-export-relacdo | - |
database/tgcx/twp/twcx00436.p | [Criação] | Trigger de Write da tabela proces-export-relacdo | |
ACR923ZA.PY | [Alteração] | API de busca de títulos de Exportação com saldo no EMS5 | - |