Páginas filhas
  • ER_PCREQ-9045_Troca_de_Propriedade_Fase_I_Expedicao_e_Recebimento

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

Troca de Propriedade - Fase I - Expedição e Recebimento

Informações Gerais

Especificação

Produto

Logix

Módulo

WMS

Segmento Executor

Logística

Projeto1

L_DL_WMS002

IRM1

PCREQ-4909

Requisito1

PCREQ-9045

Subtarefa1

 

Chamado2

 

Release de Entrega Planejada

12.1.12

Réplica

12.1.12

País

( X ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo 

Criar as funções necessárias para a geração automática dos processos de recebimento e expedição do WMS, quando a Solicitação de Carga tiver o objetivo de efetuar uma troca de propriedade entre depositantes.

 

Definição da Regra de Negócio

Criar nova RNL para efetuar a inclusão das tabelas relacionadas ao processo de expedição e recebimento sem a necessidade de intervenção em tela por parte do usuário.

As funções serão utilizadas pelo processo de transferência de propriedade e deverão ser modularizadas, de forma que possam ser chamadas de qualquer ponto do sistema recebendo os parâmetros necessários e retornando os resultados. 

  1. Deverão ser criadas funções para a geração dos processos relacionados à Expedição: 
    • CESV/documental.
    • Plano de embarque.
    • Liberação da entrada do veículo.
    • Embarque.
    • Geração das informações fiscais.
    • Liberação da saída do veículo.

  1. Também deverão ser criadas as funções dos processos de Recebimento: 
    • CESV/documental e relacionamento CESV/documental x Nota fiscal.
    • Liberação da entrada do veículo.
    • Liberação da saída do veículo.

 Para que seja possível gerar as informações acima será necessária a criação de 3 novos parâmetros do Logix, sendo eles: 

  1. Transportadora genérica:
    • Valores possíveis: código de transportado válida (deverá ter validação semelhante a digitação do CESV).
    • Descrição do parâmetro: “Transportadora geração automática CESV/documental troca propriedade.”
    • Help: Código de uma transportadora válida e ativa, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.

  2. Motorista genérico:
    • Valores possíveis: código de um motorista válido e cadastrado na tabela frt_motorista.
    • Descrição do parâmetro: “Motorista geração automática CESV/documental troca de propriedade.”
    • Help: Código de um motorista válido cadastrado no módulo de Frotas, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.

  3. Tipo de veículo genérico:
    • Valores possíveis: código de um tipo de veículo válido e cadastrado no módulo de frotas (frt_tip_veiculo) ;
    • Descrição do parâmetro: “Tipo veículo geração automática CESV/documental troca de propriedade.”
    • Help: Código de um tipo de veículo válido cadastrado no módulo de frotas, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.

Os valores dos parâmetros para processamento deverão ser informados por funções wmrxxx_set_valor_parametro() e armazenados em variáveis modulares, sendo que os resultados deverão ser armazenados em variáveis modulares que poderão ser recuperados pela função chamadora usando funções wmsrxxx_get_valor_parametro().

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

wmsr114 - Geração automática da expediçãoCriação

 

RNL

wmsr128 - Geração automática do recebimento

Criação

 

RNL

WMS6270 - Função movimentação de estoque e encerramento do processo de expedição

Alteração

 

 
WMS6260 - Inclusão/Exclusão documento no planejamento de embarqueAlteração  

 

Criar novos parâmetros no LOG00086:

  1. Transportadora genérica.
    • Nome: wms_transp_generica
    • Valores possíveis: código de transportado válida (deverá ter validação semelhante a digitação do CESV).
    • Padrão do parâmetro em branco.
    • Deverá ser criado dentro de LOGIX WMS > PORTARIA.
    • Descrição do parâmetro: “Transportadora geração automática CESV/documental troca propriedade.”.
    • Help: Código de uma transportadora válida e ativa, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.

    • No WMS6325 deverá buscar a transportadora desse parâmetro.

       

  2. Motorista genérico.
    • Nome: wms_motorista_generico
    • Valores possíveis: código de um motorista válido e cadastrado na tabela frt_motorista.
    • Padrão do parâmetro em branco.
    • Deverá ser criado dentro de LOGIX WMS > PORTARIA
    • Descrição do parâmetro: “Motorista geração automática CESV/documental troca de propriedade.”

    • Help: Código de um motorista válido cadastrado no módulo de Frotas, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.

  3. Tipo de veículo genérico.
    • Nome: wms_tipo_veic_generico
    • Valores possíveis: código de um tipo de veículo válido e cadastrado no módulo de frotas (frt_tip_veiculo).
    • Padrão do parâmetro em branco.
    • Deverá ser criado dentro de LOGIX WMS > PORTARIA.
    • Descrição do parâmetro: “Tipo veículo geração automática CESV/documental troca de propriedade.”.
    • Help: Código de um tipo de veículo válido cadastrado no módulo de Frotas, que será utilizado na geração automática das informações do fluxo de expedição e recebimento em processos como o de troca de propriedade de produtos entre depositantes sem a saída física do armazém.


Função wmsr114

  • Função responsável pela geração das informações do fluxo de expedição que contemplará a geração automática:
    • CESV.
    • Plano de embarque.
    • Liberação da entrada do veículo.
    • Embarque.
    • Geração das informações fiscais.
    • Liberação da saída do veículo.
  1. Criar as funções para carregar os parâmetros de processamento:
    1. wmsr114_set_empresa(l_empresa) - receberá o valor do código da empresa e armazenará em uma modular m_empresa.
    2. wmsr114_set_depositante(l_depositante) - receberá o valor do código do depositante e armazenará em uma modular m_depositante.
    3. wmsr114_set_trans_solicitacao_carga(l_trans_solic_carga) -  receberá o valor da transação solicitação carga e armazenará em uma modular m_trans_solic_carga.
    4. wmsr114_set_cesv(l_cesv) - receberá o valor do cesv e armazenará em uma modular m_cesv.
    5. wmsr114_set_planejto_embarq(l_plano_embarque) - receberá o valor do cesv e armazenará em uma modular m_plano_embarque.
    6. wmsr114_set_gera_cesv_docum(l_gera) - receberá valor booleano indicando se gera ou não o cesv/documental e armazenará em variável modular m_gera_cesv_docum.
    7. wmsr114_set_gera_planejto_embarque(l_gera) - receberá valor booleano indicando se gera ou não o planejamento de embarque e armazenará em variável modular m_gera_planejto_embarque.
    8. wmsr114_set_gera_relacionamento_plano_docum(l_relaciona) - receberá valor booleano indicando se gera ou não o relacionamento dos documentos ao planejamento de embarque e armazenará em variável modular m_gera_planejto_docum.
    9. wmsr114_set_libera_entrada_veic(l_libera) - receberá valor booleano indicando se efetua o processo de liberação de entrada do veículo e armazenará em variável modular m_libera_entrada_veic.
    10. wmsr114_set_efetua_embarque(l_embarque) - receberá valor booleano indicando se efetua o processo de embarque e armazenará em variável modular m_libera_entrada_veic.
    11. wmsr114_set_gera_dados_fiscais(l_gera) - receberá valor booleano indicando se efetua o processo de geração de dados para emissão de notas fiscais e armazenará em variável modular m_gera_fiscal.
    12. wmsr114_set_libera_saida_veiculo(l_libera) - receberá valor booleano indicando se efetua o processo de liberação da saída do veículo e encerramento do cesv/documental e armazenará em variável modular m_libera_saida_veic.
    13. wmsr114_set_endereco_origem(l_end_origem) - receberá o endereço origem para o processo de geração do planejamento de embarque. Armazenar em variável modular m_endereco_origem.
    14. wmsr114_set_endereco_destino(l_end_destino) - receberá o endereço destino para o processo de geração do planejamento de embarque. Armazenar em variável modular m_endereco_destino.
    15. wmsr114_set_endereco_transferencia(l_end_transferencia) - receberá o endereço destino para o processo de geração do planejamento de embarque. Armazenar em variável modular m_endereco_transferencia.
    16. wmsr114_set_modo_exibicao(l_modo_exibicao) - receberá valor booleano indicando o modo de exibição das mensagens de tela e armazenará em variável modular m_modo_exibicao;
    17. wmsr114_get_cesv_docum - está função deve retornar o valor da modular m_cesv_docum.
    18. wmsr114_get_planejto_embarque - está função deve retornar o valor da modular m_planejto_embarque.

  2. Criar a função wmsr114_inicializa_variaveis() - Deverá inicializar para nulo as variáveis numéricas/texto e para FALSE as variáveis booleanas.

  3. Criar função wmsr114_processa_expedição()
    • Verificar se o valor de m_modo_exibicao é válido (diferente de nulo e espaço em branco), se estiver em branco ou nulo assumir valor TRUE.
    • Verificar se o valor de m_empresa é válido. Se a varável não estiver com valor válido o processamento deverá ser interrompido e exibir a mensagem: Empresa não informada.
    • Verificar se o valor de m_gera_cesv_docum é válido. Se estiver nulo ou em branco deverá assumir valor FALSE (não irá gerar CESVdocumental).
    • Verificar se o valor  m_gera_planejto_embarque é válido. Se estiver nulo ou em branco deverá assumir valor FALSE (não irá gerar planejamento de embarque). Se o valor for TRUE, então, deve verificar se o valor m_cesv e  m_trans_solic_carga são válidos. Para prosseguir o processamento ambos os valores deverão ser válidos, caso contrário, deverá interromper o processamento e exibir a mensagem CESV/documental não informado para geração do planejamento de embarque. ou Solicitação de carga não informado para geração do planejamento de embarque., ou ainda, CESV/documental e solicitação de carga não informados para geração do planejamento de embarque.
    • Verificar se o valor de m_trans_solic_carga é válido (diferente de nulo e espaço em branco). Se a varável não estiver com valor válido o processamento deverá ser interrompido e exibir a mensagem: Solicitação de carga não informada.
    • Criar lógica que realize todas a funções do processo de expedição em sequência, conforme indicado nos parâmetros de geração. A execução de cada uma das funções abaixo deverá controlar internamente o início e fim de transação. Quando o processamento for desencadeado pela função principal, o controle transacional deverá ser realizado na função wmsr114_processa_expedição() e não nas funções chamadas, para isso deverá criado um indicador que dirá se a transação está aberta ou não.

     

  4. Criar função wmsr114_gera_cesv_docum(l_tipo) - Esta função será responsável pelara geração automática dos dados  CESV/documental. Deverá receber o parâmetro l_tipo que indicará se é um CESV de recebimento ou expedição. 
    1. Verificar se o código da empresa foi informado na variável m_empresa, se estiver nulo ou em branco deverá exibir a mensagem Empresa não informada para inclusão da CESV/documental. e retornar FALSE.
    2. Verificar se o código do depositante foi informado na variável m_depositante, se estiver nulo ou em branco deverá exibir a mensagem "Depositante não informado para inclusão da CESV/documental." e retornar FALSE.
    3. Buscar valor do parâmetro possui_ctr_ent_sai_veic, se retornar nulo ou branco deve assumir valor S. Se possuir_ctr_ent_sai_veic for igual a S, o tipo de registro a ser incluído será C (CESV), senão será D (Documental).
    4. Buscar o valor do parâmetro controla_recurso_os_ativ, se retornar nulo ou branco deve assumir valor S.
    5. Na digitação do CESV, o campo ctr_ent_sai_veic_docum pode ser informado manualmente, conforme parametrizado no LOG00086, parâmetro wms_manutencao_num_cesv, porém, na geração automática será considerado sempre numeração automática do CESV/documental.
    6. Buscar o valor do parâmetro wms_transp_generica; se estiver nulo ou em branco deverá exibir a mensagem: Transportadora genérica não informada, nos Parâmetros LOGIX, para inclusão da CESV/documental. e retornar FALSE.
    7. Buscar o valor do parâmetro wms_motorista_generico; se estiver nulo ou em branco deverá exibir a mensagem: Motorista genérico não informado, nos Parâmetros LOGIX, para inclusão da CESV/documental. e retornar FALSE.
    8. Buscar o valor do parâmetro wms_tipo_veic_generico; se estiver nulo ou em branco deverá exibir a mensagem: Tipo de veículo genérico não informado, nos Parâmetros LOGIX, para inclusão da CESV/documental. e retornar FALSE.
    9. Chamar a função wmsm89_wms_ctr_ent_sai_veic_docum_set_default().
    10. Deverá ser aberta uma transação para efetuar a inclusão dos registros; caso ocorra algum erro na abertura da transação, deverá ser gerada mensagem de erro padrão e retornar FALSE.
    11. Deverão ser utilizadas as rnls de tratamento da tabela wms_ctr_ent_sai_veic_docum, a exemplo do WMS6448.
    12. Para a inclusão do registro na tabela wms_ctr_ent_sai_veic_docum:
      1. Para o campo empresa atribuir o valor da modular m_empresa.
      2. Para o campo ctr_ent_sai_veic_docum, deverá ser criada uma função semelhante à wms6448_busca_codigo_cesv() sem considerar o teste do parâmetro manutencao_num_cesv.
      3. Para o campo tip_registro deverá ser atribuído o valor conforme o parâmetro possui_ctr_ent_sai_veic. Se for igual a S valor C (CESV), senão será D (Documental).
      4. Para o campo sit_ctr_ent_sai_veic_docum atribuir valor 1 – pendente. Após o término do processamento será alterado para 2 – aberta.
      5. Para o campo tip_ctr_ent_sai_veic_docum deverá ser atribuído valor fixo E (Expedição).
      6. O campo transportador deverá receber o valor do parâmetro wms_transp_generica.
      7. O campo placa_veiculo deverá receber o valor do campo solicitação de carga recebido como parâmetro. Caso o argumento solicitação carga não seja informado, atribuir valor NAO INFO.
      8. Para atribuir os valores dos campos tip_docum_motorista,docum_motorista e nom_motorista deverá ser aplicada a mesma lógica da função wms6448_abre_zoom_motorista, utilizando o código do motorista retornado do parâmetro wms_motorista_generico;
      9. Atribuir 9999 para o campo cracha_motorista.
      10. campo tip_veiculo deverá receber o valor do parâmetro wms_tipo_veic_generico.
      11. Para os campos devolução, controle_lacre, cross_dock, dat_inclusao, hor_inclusao, respons_inclusao, cavalo_mecanico_ausente mater os valores atribuídos na função wmsm89_wms_ctr_ent_sai_veic_docum_set_default().
      12. Para os demais campos manter valores nulos.
    13. Para a inclusão dos parâmetros na tabela wms_parametro_complementar:
      1. Deverá ser incluído um parâmetro para indicar o tipo de carga. Ver função wms6448_atualiza_wms_parametro_complementar(); o valor do tipo carga deverá ser C (carga geral).
    14. Para a inclusão do registro na tabela wms_depos_cesv_docum:
      1. Para o campo empresa atribuir o valor da modular m_empresa.
      2. Para o campo ctr_ent_sai_veic_docum atribuir o mesmo valor da tabela wms_ctr_ent_sai_veic_docum.
      3. O campo deposit deverá receber o valor da modular m_depositante.
      4. O campo tip_cesv_documental deverá receber o valor de l_tipo.
      5. Os demais campos deverão receber valores nulos.
    15. Incluir registro na tabela wms_alter_sit_cesv_docum a exemplo do wms6448.
    16. Se ocorrer algum erro durante a inclusão ou atualização das tabelas deverão ser efetuados os tratamentos de erros, rollback da transação e a função retornar FALSE.
    17. Se o registro do CESV/documental foi incluído com sucesso, o valor deverá ser atribuído uma variável modular m_cesv_docum e retornar TRUE.

  5. Criar função wmsr114_gera_plano_embarque() - Esta função será responsável pela geração automática do planejamento de embarque.
    1. Verificar se o código da empresa foi informado na variável m_empresa; se estiver nulo ou em branco deverá exibir a mensagem Empresa não informada para inclusão da CESV/documental. e retornar FALSE.
    2. Buscar o valor do parâmetro wms_transp_generica; se estiver nulo ou em branco deverá exibir a mensagem: Transportadora genérica não informada, nos Parâmetros LOGIX, para inclusão da CESV/documental. e retornar FALSE.
    3. Para incluir a tabela wms_planejto_embarq deverá:
      1. Atribuir m_empresa para o campo empresa.
      2. Atribuir o valor da modular m_cesv para o campo ctr_ent_sai_veic_docum.
      3. Atribuir valor 1 para o campo sit_planejto_embarq.
      4. Para o campo data_emissao atribuir a data corrente.
      5. Para o campo usuario atribuir p_user.
      6. Para o campo qtd_vol_plnjt_embarque atribuir valor fixo 1.
      7. Utilizar as funções wmsm165wmst165 para as operações de tabela.
    4. Após a inclusão do registro do planejamento, efetuar a inclusão do endereço do planejamento a exemplo da função wms6255_confirm_create().
    5. A função deverá ter início e fim de transação, caso ocorra algum erro de SQL o mesmo deverá ser tratado, a transação desfeita e a função deve retornar FALSE.
    6. Se a inclusão do planejamento for realizada com sucesso deverá atribuir o número do planejamento gerado em variável modular m_planejto_embarque e retornar TRUE.

  6. Criar a função wmsr114_gera_plnjt_embq_solic_carga() - Esta função será responsável pelo relacionamento da planejamento de embarque com os documentos (solicitação carga).
    1. Deverá ser criada uma lógica para efetuar a associação dos documentos utilizando a função wms6260_inclui_solicitacao_carga_planejto_embarque_novo().
    2. Após o relacionamento dos documentos com o planejamento de embarque, a situação do planejamento deverá ser alterara para 4 - Aguardando Embarque. 
    3. A situação da entrada do veículo deverá ser alterada para 17 - em processo de carga.
    4. Basear-se na função wms6255_validate_inclusao_documento() 
      1. Efetuar a chamada da função wms6260_inclui_solicitacao_carga_planejto_embarque_novo() - está função gera os movimentos de embarque dos volumes e as ordens de serviço.
      2. Efetuar a atualização do planejamento de embarque chamando a função wmsr66_atualiza_situacao_planejto_embarque().
    5. Alterar a situação da entrada de veículo para 18 - Carga finalizada.

  7. Criar a função wmsr114_libera_planejamento_veiculo_exped() - Esta função será responsável pela liberação automática do veículos nos processos de transferência de propriedade.
    1. Criar função semelhante a wms6255_libera_entrada() efetuando os controles para exibição de mensagens.
    2. No inicio da função deverá efetuar a validação das varáveis modulares necessárias para o processo. m_planejto_embarque, m_cesv.
    3. Não será necessário efetuar o tratamento de DOCA ocupada.

  8. Criar a função wmsr114_libera_entrada_veiculo_exped() - Esta função será responsável pela liberação do veículo para entrada (WMS6497 Liberar Entrada).
    1. Criar função semelhante a wms6497_liberar_entrada() efetuando os controles para exibição de mensagens em tela.
    2. No inicio da função deverá efetuar a validação das varáveis modulares necessárias para o processo. m_cesv.
    3. Criar função wmsr114_get_cesv() baseada na função wms6497_get().

  1. Criar a função wmsr114_efetua_embarque_exped() - Está função irá efetuar o embarque automático dos volumes de expedição simulando a execução do WMS6372.
    1. Verificar se as variáveis m_empresa em_planejto_embarque são validas - se alguma delas estiver em branco ou nula, deverá processar mensagem de erro [empresa ou planejamento de embarque] não foram informados para processamento. e retornar FALSE.
    2. Criar função semelhante a wms6327_inicia_finaliza_servico() - wmsr114_inicia_finaliza_servico();
    3. Chamar a função wmsr114_inicia_finaliza_servico() executando a função "INICIAR";
    4. Se retornar l_status true deverá criar o cursor abaixo:
      DECLARE cq_volumes CURSOR FOR
      SELECT wms_volume_exped.cod_barras,
      wms_volume_exped.volume_exped
      FROM wms_volume_exped
      WHERE wms_volume_exped.empresa = m_empresa
      AND wms_volume_exped.trans_solicitacao_carga_mestre = m_trans_solic_carga

    5. Para cada volume encontrado:

      1. Buscar o processo de movimentação chamando a função wmsr68_retorna_processo_moviment_volume(m_empresa,m_planejto_embarque,m_trans_solic_carga,l_volume_exped,400,1)
      2. Se não encontrar o processo de movimentação deverá gerar mensagem de erro e retornar FALSE.
      3. Efetuar a transferência dos volumes chamando wmsr68_transfere_processo_moviment_embarque(m_planejto_embarque,m_trans_solic_carga,400,l_processo_moviment,m_endereco_destino,m_operacao_estoque,1)
      4. Se ocorrer algum erro na execução deve processar a mensagem de erro e retornar FALSE.
      5. Fazer a atualização do processo de movimentação chamando wmsr68_finaliza_processo_moviment_embarque(m_planejto_embarque,m_trans_solic_carga,400,l_processo_moviment,1)
      6. Se ocorrer algum erro na execução deve processar a mensagem de erro e retornar FALSE.
    6. Após o término do cursor deverá verificar se ainda há algum volume pendente de embarque chamando a função wmsr68_verifica_integridade_planejto_embarq_movto(m_empresa,m_planejto_embarque,400, 1);
    7. Se a quantidade de movimentos for maior que zero deve retornar FALSE, pois ocorreu alguma falha no processo.
    8. Chamar a função wmsr114_verifica_finaliza_embarque(), se retorno for verdadeiro chamar a função wmsr114_inicia_finaliza_servico("FINALIZAR")
    9. Se o processamento ocorreu sem erros retornar TRUE, senão retorna FALSE.

  2. Criar a função wmsr114_processamento_fiscal_filial() - está função irá gerar os dados fiscais referentes ao processo de expedição do regime filial.
    1. Verificar se as variáveis m_empresa, m_trans_solic_carga, m_depositante e m_cesv são validas - se alguma delas estiver em branco ou nula, deverá processar mensagem de erro  [VARIÁVEL] não foram informados para processamento. e retornar FALSE.
    2. Copiar o código da função wms6496_prepara_processamento_fiscal_filial().
    3. Os tratamentos referentes as solicitações de carga granel, bem como cross docking deverão ser removidos, pois está função será aplicada apenas a processos de carga geral e transferência de propriedade.
    4. A declaração do cursor cq_plnjt_embq_pend_proc_fisc não será necessária, pois será efetuado o processamento de uma solicitação de carga por vez.

  3. Criar função wmsr114_libera_saida_veiculo_expedição() - Está função irá executar o processo de liberação de saída de veículos executado no WMS6497 - Liberar Saída.
    1. Verificar se as variáveis modulares m_empresa, m_cesv são válidos. Se algum dos valores não foram informados deverá processar a mensagem de erro [Parâmetro] não informado para processamento da saída do veículo.
    2. Efetuar a leitura das informações do CESV/documentos. Utilizar a  wmsr128_get_cesv().
    3. Replicar lógica da função wms6497_liberar_veiculo().
    4. Os tratamentos para CESV de serviço e processo de carga Granel deverão ser retirados do lógica.
    5. Os tratamentos de cavalo_mecanico_ausente também poderão ser desconsiderados.
    6. Somente considerar os tratamentos para CESV de expedição.

  4. Criar a função wmsr114_exclusao_dados_gerados_troca_propriedade()

    1. Está função deverá excluir os dados gerados com o processamento da onda, CESV, Plano de embarque, relacionamento plano x documentos
    2. Tabelas: Wms_ctr_ent_sai_veic_docum; wms_planejto_embarq; wms_plnjt_embq_solic_carga

  5. (novo) Criar a função wmsr114_inicia_finaliza_servico(l_acao)
    1. Função utilizada no embarque responsável pela inicialização, finalização e apontamento das OS de expedição. Basear-se na função wms6372_inicia_finaliza_servico().


Função wmsr128

  • Função responsável pela geração das informações do fluxo de recebimento que irá contemplar a geração:
    • CESV/documental (wmr94).
    • Relacionamento CESV/documental X nota fiscal.
    • Liberação do veículo entrada.
    • Liberação da saída do veículo.
  1. Criar as funções para carregar os parâmetros de processamento:
    1. wmsr128_set_empresa(l_empresa) - receberá o valor do código da empresa e armazenará em uma modular m_empresa.
    2. wmsr128_set_depositante(l_depositante) - receberá o valor do código do depositante e armazenará em uma modular m_depositante.
    3. wmsr128_set_cesv(l_cesv) - receberá o valor do cesv e armazenará em uma modular m_cesv.
    4. wmsr128_set_gera_cesv_docum(l_gera) - receberá valor booleano indicando se gera ou não o CESV/documental e armazenará em variável modular m_gera_cesv_docum.
    5. wmsr128_set_relaciona_cesv_docum(l_relaciona) - receberá valor booleano indicando se relaciona ou não o CESV/documental ao documento de entrada. Armazenar em variável modular m_relaciona_cesv_docum.
    6. wms95_set_gera_planejto(l_planejto) - receberá valor booleano indicando se gera o plano de recebimento e libera o veículo para a entrada. Armazenar em variável modular m_planejto. (nova)
    7. wmsr128_set_libera_entrada_veic(l_libera_veic) - receberá valor booleano indicando se efetua o processo de liberação de entrada do veículo e armazenará em variável modular m_libera_entrada_veic.
    8. wmsr128_set_valida_veiculo(l_valida) - receberá valor booleano indicando se efetua o processo de validação do veículo e armazenará em variável modular m_valida_veic.
    9. wmsr128_set_libera_saida_veiculo(l_libera) - receberá valor booleano indicando se efetua o processo de liberação da saída do veículo e encerramento do CESV/documental e armazenará em variável modular m_libera_saida_veic;
    10. wmsr128_set_endereco_desembarque(l_end_origem) - receberá o endereço que receberá o estoque no processo de troca de propriedade. Pode ser um endereço definitivo ou intermediário. Armazenar em variável modular m_endereco_desembarque.
    11. wmsr128_set_docum_recebimento(l_nota, l_serie, l_sub_serie, l_especie, l_emitente) - receberá os dados da nota fiscal de recebimento, os valores deverão ser armazenados em variáveis modulares: m_nota, m_serie, m_sub_serie, m_especie, m_emitente.
    12. wmsr128_set_modo_exibicao(l_modo_exibicao) - receberá valor booleano indicando o modo de exibição das mensagens de tela e armazenará em variável modular m_modo_exibicao.
    13. wmsr128_get_cesv_docum - está função deve retornar o valor da modular m_cesv_docum.
    14. wmsr128_set_transacao(l_trans) - irá indicar se deve abrir ou não transação dentro da função. Armazenar em variável modular m_trans. (nova)

  1. Criar função wmsr128_processa_recebimento()
    • Verificar se o valor de m_modo_exibicao é válido (diferente de nulo e espaço em branco), se estiver em branco ou nulo assumir valor TRUE.
    • Verificar se o valor de m_empresa é válido. Se a varável não estiver com valor válido o processamento deverá ser interrompido e exibir a mensagem: Empresa não informada.
    • Verificar se o valor de m_gera_cesv_docum é válido. Se estiver nulo ou em branco deverá assumir valor FALSE (não irá gerar CESV/documental).
    • Verificar se o valor  m_relaciona_cesv_documé válido. Se estiver nulo ou em branco deverá assumir valor FALSE (não irá relacionar as notas com o CESV). Se o valor for TRUE, então, deve verificar se o valor m_cesv, m_nota, m_serie e demais variáveis da nota são válidos. Para prosseguir o processamento todos os valores deverão ser válidos, caso contrário deverá interromper o processamento e exibir a mensagem [Parâmetro] não informado para geração do planejamento de embarque.
    • Criar lógica que realize todas a funções do processo de recebimento em sequência, conforme indicado nos parâmetros de geração. A execução de cada uma das funções abaixo deverá controlar internamente o início e fim de transação. Quando o processamento for desencadeado pela função principal, o controle transacional deverá ser realizado na função wmsr128_processa_recebimento() e não nas funções chamadas, para isso deverá criado um indicador que dirá se a transação está aberta ou não.
    • Para geração da CESV/documental deverá ser utilizada a função wmsr114_gera_cesv_docum("R") e posteriormente buscar o nr da cesv/docum gerado utilizando a função wmsr114_get_cesv_docum()

  2. Criar a função wmsr128_relaciona_cesv_docum_nf() - Esta função irá efetuar o processo de relacionamento do CESV/documental com o documento de recebimento (WMS6138).
    1. Verificar se os parâmetros m_empresa, m_depositante, m_nota, m_serie, m_sub_serie, m_especie, m_emitente são válidos, caso algum esteja nulo ou em brando deverá exibir a mensagem [Parâmetro] não foi informado para o relacionamento do CESV/documental X Notas Fiscais e retornar FALSE.
    2. Efetuar validação da nota fiscal seguindo as mesmas consistências existente no After Field emitente da função wms6138_entrada() com exceção dos selects de buscas de descrição para exibição em tela.
    3. Copiar a lógica de inclusão da função wms6138_modificar()
    4. Efetuar a leitura da situação da CESV e efetuar o teste da situação, se a situação do CESV/documental não permitir associação deverá ser processada a mensagem de erro Situação do CESV/documental não permite associar notas fiscais. e retornar FALSE.
    5. Verificar se a conferência do recebimento já foi iniciada conforme a função wms6138_conferencia_iniciada() (deverá ser criada uma função semelhante dentro do wmsr128). Se conferência foi iniciada deverá ser processada a mensagem de erro Situação do CESV não permite relacionar novas notas. Conferência já executada ou iniciada. e retornar FALSE.
    6. O tratamento e carregamento das tabelas temporárias utilizadas no WMS6133 não é necessário, pois sera associada uma nota por CESV.
    7. Também não é necessário efetuar o tratamento de exclusão.
    8. Efetuar os tratamentos para a execução da função wmst122_wms_cesv_docum_nota_fiscal_inclui()
    9. As notas nunca serão de devolução, com isso os parâmetros de devolução devem ser incluídos como não devolução.
    10. Também não é necessário o tratamento de cross doking e agendamento e regime Alfandegado.

  3. (nova) Criar função wmsr128_planejto_liberacao() - Esta função executará o processo de planejamento do recebimento e liberação do veículo (onde são geradas as ordens de serviço).
    1. Primeiramente deverá realizar o processamento da função wms6449_after_botao_planejar(), onde deverá:
      1. Verificar se as variáveis m_empresa, m_cesv, m_depositante, m_endereco_destino são válidos. Se algum dos valores não foram informados deverá processar a mensagem de erro "[Parâmetro] não informado para processamento da saída do veículo."
      2. Efetuar a leitura do cesv/documental wmsm89_wms_ctr_ent_sai_veic_docum_leitura().
      3. Verificar se o tipo do cesv/documental é igual a "R" (recebimento), se for algum valor diferente deverá processar mensagem de erro CESV/documental: + nr do cesv + não é de recebimento. Retornar FALSE.
      4. Verificar se o depositante informado na m_depositante está relacionado na tabela wms_depos_cesv_docum, para isso efetuar o select abaixo:

        SELECT distinct 1
        FROM wms_depos_cesv_docum
        WHERE wms_depos_cesv_docum.empresa = m_empresa
        AND wms_depos_cesv_docum.ctr_ent_sai_veic_docum = m_cesv
        AND wms_depos_cesv_docum.tip_cesv_documental = 'R'

        AND wms_depos_cesv_docum.deposit = m_depositante
      5. Se não encontrar registro na tabela, o depositante não está associado ao processo. Então deve processar a mensagem de erro Depositante: + m_depositante + não está associado ao CESV/documental: + m_cesv. Retornar FALSE.

      6. Verificar se depositante informado tem nota fiscal relacionada ao processo, para isso efetuar o select abaixo:

        SELECT DISTINCT 1
        FROM wms_cesv_docum_nota_fiscal
        WHERE wms_cesv_docum_nota_fiscal.empresa = m_empresa
        AND wms_cesv_docum_nota_fiscal.ctr_ent_sai_veic_docum = m_cesv
        AND wms_cesv_docum_nota_fiscal.deposit = m_depositante

      7. Se não encontrar registro na tabela, o depositante não tem nota associado ao processo. Então deve processar a mensagem de erro Depositante: + m_depositante + não possui nota fiscal associado no CESV/documental: + m_cesv. Retornar FALSE.
      8. Carregar recursos do depositante na temporária conforme wms64492_carrega_deposit_recurso_proposta_complemento(), deverá ser criada temp conforme WMS64492. Caso ocorra algum erro dentro da função deverá processar mensagem de erro e retornar FALSE.
      9. Iniciar transação para gravação das tabelas.
      10. Executar inclusão do planejamento na tabela wms_planejto onde:
        1. empresa = m_empresa;
        2. agto_ctr_ent_sai_veic_docum = m_cesv;
        3. tip_planejto = wms_ctr_ent_sai_veic_docum.tip_registro (conforme leitura da cesv efetuada acima);
        4. doca_planejada = m_endereco_destino;
        5. conferencia_post = 'N'
        6. tempo_previsto_alocacao_doca = NULL
        7. conferencia_amostrag = 'N'
      11. Criar e executar função semelhante a wms64492_incluir_deposit_recurso()
      12. Criar e executar função semelhante wms64492_grava_situacao_definitiva(), porém, nesta nova função não será necessário efetuar o tratamento para tip_planejto = A. 
        1. Deverá ser criada uma função semelhante a função wms64492_efetua_criacao_os() que será chamada dentro da função acima.
      13. Criar e executar a função semelhante a wms6449_after_botao_liberar_entrada(). Deverá ser copiada a lógica desta função a partir da linha LET l_tem_conferencia_posterior = "N".
        1. Não será necessário validar conferência posterior.
        2. Não é necessário efetuar tratamento de EPLs.
        3. Não são necessários tratamentos para regime alfandegado.


  4. Criar a função wmsr128_libera_entrada_veic() - Esta função irá executar o processo de liberação da entrada do veículo conforme a função wms6497_liberar_entrada().
    1. Verificar se as variáveis modulares m_empresa, m_cesv são válidos. Se algum dos valores não foram informados deverá processar a mensagem de erro [Parâmetro] não informado para processamento da saída do veículo."
    2. Efetuar a leitura das informações do CESV/documentos. Criar função wmsr128_get_cesv() baseada na função wms6497_get().
    3. Deverão ser efetuados apenas os tratamentos para CESV de recebimento.  Além disso,  deverão ser retirados os tratamentos: CESV de carga granel; verificação de tempo limite de entrada; restrição de motorista; controle de lacre; validação de ajudantes e controle de peso.
    4. A situação da entrada deverá ser sempre alterada para 7 (Em processo de descarga).
    5. Se todo processo ocorrer com sucesso a função deverá retornar TRUE, caso contrário, deverá ser processada a mensagem de erro e retornar FALSE.

  5. Criar a função wmsr128_libera_saida_veiculo() - Está função irá executar o processo de liberação de saída de veículo no processo de recebimento, deverá ser baseada na função wms6497_liberar_veiculo()
    1. Verificar se as variáveis modulares m_empresa, m_cesv são válidos. Se algum dos valores não foram informados deverá processar a mensagem de erro [Parâmetro] não informado para processamento da saída do veículo.
    2. Efetuar a leitura das informações do CESV/documentos. Utilizar a  wmsr128_get_cesv() mencionada no item 4.
    3. Replicar lógica da função wms6497_liberar_veiculo().
    4. Os tratamentos para CESV de serviço e processo de carga Granel deverão ser retirados do lógica.
    5. Os tratamentos de cavalo_mecanico_ausente também poderão ser desconsiderados.
    6. Somente considerar os tratamentos para CESV de recebimento.
    7. A situação do CESV deverá ser alterada para 10 - concluída.

  6. Criar a função wmsr128_exclusao_dados_gerados_troca_propriedade() - Esta função será utilizada em casos de cancelamento do processo onde deverão ser excluídos os dados já gerados para o processo de recebimento.
    1. Verificar se as variáveis modulares m_empresa, m_cesv são válidos. Se algum dos valores não foram informados deverá processar a mensagem de erro [Parâmetro] não informado para processamento de exclusão de dados.
    2. Excluir registro da tabela wms_deposit_planejto.
    3. Excluir registro da tabela wms_planejto.
    4. Excluir registro da tabela wms_recurso_planejto.
    5. Criar cursor da tabela wms_ordem_servico_ativ_recurso buscando a ordem_servico e filtrando por Empresa e CESV.
      1. Para cada registro do cursor excluir as tabelas: wms_os_ativ_executor, wms_ordem_servico_ativ_recurso, wms_ordem_servico. Todos sendo filtrados por empresa e ordem de serviço retornada pelo cursor.
    6. Excluir registro da tabela wms_alter_sit_cesv_docum.
    7. Excluir registro da wms_depos_cesv_docum.
    8. Excluir o registro da tabela sup_par_ar onde o parâmetro seja igual a "wms_ar_devolucao".
    9. Excluir o registro da tabela wms_cesv_docum_nota_fiscal.
    10. Excluir o registro da tabela wms_parametro_complementar.
    11. Excluir o registro da tabela wms_ctr_ent_sai_veic_docum.

  7. Criar a função wmsr128_cria_tt_nota_fiscal()
    1. Criar tabela temporária com a seguinte estrutura:

      CREATE TEMP TABLE tt_nota_fiscal(
      nota_fiscal DECIMAL(7,0),
      serie_nota_fiscal CHAR(03),
      subserie_nota_fiscal DECIMAL(2,0),
      especie_nota_fiscal CHAR(03),
      emitente CHAR(15),
      deposit CHAR(15),
      devolucao CHAR(01))

  8. Criar a função wmsr128_cria_temporarias() - Criar tabelas temporárias para geração de ordens de serviço.
    1. Chamar função wmsr128_cria_tt_nota_fiscal();
    2. Chamar as funções: wmsr15_tt_os_servico_criacao(0); wmsr15_tt_os_servico_proposta_criacao(0); wmsr15_tt_os_depositante_item_criacao(0); wmsr15_tt_tip_processo_criacao(0) e wmsr15_tt_os_proposta_criacao(0);
    3. Se o retorno de alguma função for FALSE, deve retornar FALSE.

WMS6270 - Função Movimentação de Estoque e Encerramento do Processo de Expedição (NOVO)

  • Existem comandos BEGIN/COMMIT/ROLLBACK sem o teste da variável m_nao_inicia_transacao, isso provoca erro ao chamar da wmsr114.

 

WMS6260 - Inclusão/Exclusão documento no planejamento de embarque

  • Criar a função wms6260_set_troca_propriedade(l_solic_carga). Está função deverá executar o select a seguir:

    SELECT val_texto
    INTO m_troca_propriedade
    FROM wms_solic_carga_parametro
    WHERE empresa = p_cod_empresa
    AND solicitacao_carga = l_solic_carga
    AND parametro = 'troca_propriedade'


  • Testar m_troca_propriedade, se for nula ou em branco deverá efetuar a criação da ordem de serviço de checklist de expedição na função wms6260_inclui_solicitacao_carga_planejto_embarque_novo().


Fluxo do Processo


  1. Incluído campo indicador de SC de troca de propriedade, este campo estará habilitado apenas quando o depositante for regime Filial. Se uma solicitação for de troca de propriedade, o destinatário deverá ser obrigatoriamente outro depositante com contrato ativo. Ao incluir uma SC de troca de propriedade, será mostrada uma nova tela onde deverá ser informado o aviso de recebimento do depositante destinatário. 
    Na tela de informações do WMS do SUP3760, foi incluído o campo Troca de Propriedade. Este campo não permitirá edição e será mostrado como Sim a partir do momento que um AR for relacionado a uma solicitação de carga de troca.
  2. Fluxo do controle de entrada de veículo do recebimento:
    1. Ao processar a geração da Onda, o CESV de recebimento será incluído com a situação Em processo de descarga e associando a nota fiscal de recebimento. Será gerada apenas a OS de conferência de recebimento e ficará com a situação Bloqueada.
    2. Durante o processo de separação, quando for efetuado o primeiro descarregamento do equipamento, a situação do CESV de recebimento permanecerá Em processo de descarga e a OS de conferência será liberada.
    3. Ao finalizar a separação (última descarga do equipamento) a situação do CESV de recebimento será alterada para Descarga Finalizada.
  3. A entrada do veículo, bem como, o planejamento de embarque, serão iniciados e finalizados dentro da mesma transação, durante a finalização da separação. O CESV deverá ter o seguintes registros de situação: Pendente, Em processo de carga, Carga finalizada, Concluída.

 

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.