Árvore de páginas

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

  

Informações Gerais

 

Especificação

Produto

Datasul

Módulo

Compras

Segmento Executor

Manufatura

Projeto1

D_MAN_COM002

IRM1

PCREQ-3555

Requisito1

PCREQ-3559

Subtarefa1

PDRMAN-2075

Chamado2

TRPZWK

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

Desenvolver uma tratativa de fator de conversão relacionada diretamente ao Item x UN.

Definição da Regra de Negócio

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

CC0104 – Manutenção Parâmetros Compras

Alteração

Logística -> Compras -> Cadastros

-

CC0105 - Manutenção Itens Fornecedor

Alteração

Logística -> Compras -> Cadastros

-

CC0106 - Manter Item x Unidade Medida

Criação

Logística -> Compras -> Cadastros

-

OC0201 - Manutenção CotaçõesEnvolvidaLogística -> Cotações -> Tarefas-

 

Exemplo de Aplicação:

  • Para que o usuário não precise incluir uma unidade de medida com determinado fator de conversão para cada fornecedor do item será desenvolvido o relacionamento Item X Unidade de Medida.

  • Será possível exportar as unidades para os fornecedores.

  • Na geração automática do relacionamento Item X Fornecedor deverá ser utilizado o novo relacionamento e o cadastro de fator de conversão CD0902 para compor o fator de conversão do novo registro. 


Para entender o conceito de fator de conversão pode ser consultada a FAQ disponível no link abaixo:
http://tdn.totvs.com/pages/releaseview.action?pageId=5244526

 

Programa Novo – Manutenção Item x UN (ccp\cc0106.w):

 

  •  Desenvolver o programa “CC0106 – Manutenção Item x Unidade Medida. Protótipo 01.
  • Esse programa deverá listar todos os itens cadastrados e com situação ativa (item.cod-obsoleto = 1).
  • Utilizar os botões “Incluir/Modificar/Eliminar” conforme é realizado no CC0105E para inclui/modificar ou excluir um registro de unidade medida. O programa de inclusão e modificação deverá ser nomeado ccp\cc0106a.w e os registros devem ser salvos na tabela “item-unid-compra”.
  •  Os campos a serem cadastrados/manutenidos serão: Unidade de medida, fator de conversão, casas decimais e Bloqueia UN Relacionamento Item x Fornecedor, como demonstrado no Protótipo 2.
    • Quando não houver nenhuma unidade de medida cadastrada para o item, ao incluir uma nova unidade o campo “Bloqueia UN Relacionamento Item x Fornecedor” deve ser exibido marcado. O usuário irá escolher se deseja manter marcado ou não.
    • Quando não houver nenhuma unidade de medida cadastrada para o item, ao incluir uma nova unidade o campo “Bloqueia UN Relacionamento Item x Fornecedor” deve ser exibido marcado. O usuário irá escolher se deseja manter marcado ou não.
    • Quando já houver unidades de medida cadastrada para esse item, ao incluir uma nova unidade deve ser sugerido o campo “Bloqueia UN Relacionamento Item x Fornecedor” conforme o que está cadastrado para as outras unidades, ou seja, esse parâmetro terá o mesmo valor (marcado ou desmarcado) para todas as unidades, pois é a nível de item.
    • Ao alterar o parâmetro “Bloqueia UN Relacionamento Item x Fornecedor” caso o item possua outras unidades de medida vinculadas a ele deve ser exibida a seguinte mensagem: “Deseja alterar todos os relacionamentos do item &1?” “Ao modificar o parâmetro Bloqueia UN Relacionamento Item x Fornecedor será alterado o mesmo campo para todas as unidades de medida que o item &1 possui relacionamento. Deseja continuar?”. Se o usuário selecionar a opção de continuar deverão ser alterados todos os registros da tabela item-unid-compra de acordo com o parâmetro alterado.
  • Os tipos de campos, tamanhos e regras de validação são identicas às utilizadas na tela CC0105E, conforme demonstrado no Protótipo 2. Consultar as regras de validação na procedure validateRecord do programa inbo/boin841.p. Porém nesse caso não deverá ser verificada a tabela item-fornec na emissão da mensagem 32682, deverá ser verificado apenas se já existe registro na tabela item-unid-compra com o item e unidade de medida que está sendo cadastrada.
  • Incluir o zoom no campo Unidade Medida (inzoom/z01in417.w), facilitando assim a busca, os demais campos incluir conforme formatação da tabela.
  • Quando for incluso uma nova unidade de medida para um item no programa cc0106, deverá ser realizada uma leitura na tabela item-fornec (cc0105) verificando se existem fornecedores cadastrados para aquele item e caso existir deve ser chamado o programa cc0106b.w (Exportação).
  • Ao incluir ou modificar uma unidade de medida para um item no programa cc0106 será sugerida a exportação dos valores alterados para as tabelas item-fornec (quando a unidade estiver nessa tabela) ou item-fornec-umd (botão de “Mais Unidades” da tela cc0105). Para tal deve ser criada a tela “ccp/cc0106b.w – Exportação Itens x Unidade de Medida” (Protótipo 3) que deverá exibir todos os códigos e descrições dos fornecedores encontrados para o item (campos item-fornec.cod-emitente e emitente.nome-abrev). No programa cc0106b.w o usuário poderá selecionar para quais fornecedores serão exportadas as informações da unidade de medida que foi alterada. No momento de efetivar a exportação no cc0106b deverá ser verificado se a unidade de medida que está sendo criada/alterada está informada no registro da tabela item-fornec. Se estiver o fator de conversão e casas decimais deverão ser repassados para os respectivos campos da item-fornec. Caso não esteja na item-fornec deverá ser procurado na item-fornec-umd e se existir deverá alterar o fator de conversão e casas decimais no registro dessa tabela, se não existir deverá ser criado um registro nessa tabela para a unidade de medida cadastrada e com o fator de conversão informado nesse cadastro.
  • Ao exportar as informações para o relacionamento item x fornecedor é necessário verificar se já existe algum documento utilizando o item e unidade de medida que está sendo exportado, para isso deve ser utilizado o comando “IF CAN-FIND” nas tabelas “cotacao-item, item-contrat, componente, recebimento e  item-doc-est” (verificar buscas na procedure atualizaUnidMedItemFornec do boin841.p). Caso exista algum documento utilizando este item e un deverá se exibida uma mensagem antes da exportação: “Deseja atualizar documentos já digitados?” “Foi alterado o fator de conversão da unidade de medida &1, ao atualizar o fator de conversão serão alteradas as quantidades dos documentos existentes. Deseja continuar?.
    • Se o usuário escolher não atualizar os documentos já existentes, deve ser feita a exportação dos dados apenas para a tabela item-fornec ou item-fornec-umd, para que assim os próximos documentos sejam criados com os valores atualizados.
  • Ao selecionar a opção de exportar deverão ser copiados os registros das unidades de medida da tabela item-unid-compra para a tabela item-fornec, caso a unidade estiver nos registros dessa tabela ou na item-fornec-umd caso contrário. A criação da tabela item-fornec-umd deverá ser feita utilizando o BO da tabela (inbo/boin841.p).
  • Caso o parâmetro Bloqueia UN Relacionamento Item x Fornecedor estiver marcado no programa CC0106 ao criar ou alterar uma unidade de medida deve ser feito a exportação de maneira automática para todos os fornecedores do item.

 

Manutenção Item x Fornecedor (CC0105):

                           

  • Ao abrir a tela de Mais Unidades deve ser verificado se o item possui unidades de medida cadastradas no programa CC0106 – Manutenção Item x Unidade de Medida. Caso possua, verificar se o parâmetro “Bloqueia UN Relacionamento Item x Fornecedor” está marcado. Caso esteja, não será permitida a inclusão ou exclusão dos dados cadastrados na tela CC0105D. Ou seja, desabilitar os botões. A modificação deve ser permitida, porém os campos “Fator de Conversão e Numero de Casas Decimais” deverão ficar desabilitados.
  • Quando o parâmetro “Bloqueia UN Relacionamento Item x Fornecedor” não estiver marcado será possível a inclusão, exclusão e modificação normal das unidades de medida do fornecedor.

 

Integração Item x Fornecedor:

 

  • Esta última opção somente acontecerá se, na tela do Parâmetro de Compras – CC0104, o campo “Gera Relação Item/Fornecedor” estiver marcado.
  • No momento da criação automática do relacionamento Item x Fornecedor, o programa deve copiar os dados de fator de conversão  dos registros da tabela item-unid-compra (CC0106) associados ao item para novos registros  da tabela item-fornec-umd (CC0105D).
  • A criação da tabela item-fornec-umd deve ser feita na trigger de write da tabela item-fornec (database\tgin\twin178.p), para tal pode ser utilizado o fonte abaixo como exemplo:

FIND FIRST param-compra NO-LOCK NO-ERROR.

    if avail param-compra and param-compra.gera-item-for = yes then do:

        if avail item-fornec then do:

            FIND FIRST item-fornec-umd

                 WHERE item-fornec-umd.it-codigo    = item-fornec.it-codigo  

                   AND item-fornec-umd.cod-emitente = item-fornec.cod-emitente NO-LOCK NO-ERROR.

            IF NOT AVAIL item-fornec-umd THEN DO:

                FOR EACH item-unid-compra NO-LOCK

                    WHERE item-unid-compra.it-codigo = item-fornec.it-codigo

                          AND item-unid-compra.un <> item-fornec.unid-med-for:

                    CREATE item-fornec-umd.

                    ASSIGN item-fornec-umd.it-codigo    = item-fornec.it-codigo

                           item-fornec-umd.cod-emitente = item-fornec.cod-emitente

                           item-fornec-umd.unid-med-for = item-unid-compra.un                   

                           item-fornec-umd.fator-conver = item-unid-compra.fator-conver

                           item-fornec-umd.num-casa-dec = item-unid-compra.num-casa-dec

                           item-fornec-umd.log-ativo    = item-unid-compra.log-ativo

                           item-fornec-umd.lote-minimo  = 1

                           item-fornec-umd.lote-mul-for = 1.

                END.

            END.

        END.

    END.

 

Geração do relacionamento Item/Fornecedor na cotação:

  • Hoje quando o usuário tenta criar uma cotação para um fornecedor que não possui relacionamento com o item selecionado e cuja a unidade de medida do fornecedor é diferente da unidade de medida do item o sistema bloqueia a criação deste relacionamento nos programas Flex e cria esse relacionamento com fator de conversão 1 nos programas Progress.

  • Deve ser criado um novo parâmetro na tela de Manutenção Parâmetros Compras com o rótulo “Sugere Fator de Conv. Geração Item/Fornec”.

  •  Quando esse parâmetro estiver marcado, ao cadastrar uma cotação (Em telas Progress ou Flex) para um Fornecedor que não possui relacionamento Item/Fornecedor cadastrado (CC0105) e a unidade de medida do fornecedor for diferente da unidade de medida do item deverá ser verificado se existe o relacionamento Item X Unidade de Medida (CC0106) para a unidade do fornecedor informada. Caso exista deverá utilizar o fator de conversão desse relacionamento para criar o Item X Fornecedor, caso contrário deverá ser buscado o fator de conversão cadastrado no programa CD0902 para criar o relacionamento Item/Fornecedor. Caso não seja encontrado o fator de conversão nesse programa, esse relacionamento deverá ser gerado com os valores padrões: fator de conversão 1 e casas decimais 0.Caso o parâmetro “Sugere Fator de Conv. Geração Item/Fornec” não estiver marcado o sistema deverá se comportar como atualmente.

Exemplo:

 

Item

Unidade de Medida do Item

Unidade de Medida do Fornecedor

Fator de conversão

Casas Decimais

Parafuso


Un – unidades (1)


Cx – caixa (1000 un)

1

3

Anilha


Un – unidades (1)

Pt – pacote (500 un)

2

3

 

Conforme conforme apresentado no Fluxograma Rotina Progress (Cadastro de Cotação) a rotina dos programas Progress é a seguinte:

Quando o parâmetro “Sugere Fator de Conv. Geração Item/Fornec” estiver ativo, busca o fator de conversão no relacionamento Item X Unidade Medida, não encontrando busca o fator de conversão no programa CD0902. Caso não exista o fator de conversão no CD0902 gera com o fator de conversão 1. Caso o parâmetro “Sugere Fator de Conv. Geração Item/Fornec” não estiver marcado, bloqueia a geração do Item X Fornec e o cadastro da cotação para unidades de medida diferentes.

A rotina executada através do cadastro de cotação Flex é semelhante á executada no Progress com a diferença de que não é emitida a mensagem 2154 questionando se deseja gerar automaticamente ou manualmente pelo CC0105. Nesse caso a geração será sempre automática. Ver Fluxograma Rotina Flex (Cadastro de Cotação).


Manutenção Parâmetros Compras (cc0104):

  • Alterar o programa invwr/v02in280.w e adicionar um novo parâmetro no formato de checkbox com o seguinte label: “Sugere Fator de Conv. Geração Item/Fornec”.
  • Salvar o valor do campo “Sugere Fator de Conv. Geração Item/Fornec” no seguinte campo livre: param-compra.char-2,136,1.
  • Caso o parâmetro “Gera Relação Item/Fornecedor” estiver desmarcado, deve ser desabilitado o campo “Sugere Fator de Conv Geração Item/Fornec”.

 

Manutenção Cotações (oc0201a-v01.w):

  • Alterar a criação do relacionamento Item/Fornecedor existente no programa ocp/oc0201a-v01.w para verificar se o parâmetro “Sugere Fator de Conv. Geração Item/Fornec” está marcado e se estiver deve ser verificado se existe relacionamento de Item X Unidade de Medida (CC0106), existindo deverá usar o fator de conversão encontrado. Caso não seja encontrado deve-se verificar se existe um relacionamento de fator de conversão para as unidades de medida do fornecedor e interna no programa CD0902, caso exista deve ser criado o relacionamento Item/Fornecedor utilizando o fator de conversão e casas decimais do programa CD0902, caso não exista este relacionamento deverá ser criado com os valores padrão (conforme Fluxograma Rotina Progress).
  • Deve ser criada uma nova mensagem de aviso para ser exibida após a criação do relacionamento item/fornecedor, exibindo o fator de conversão usado no relacionamento e pedindo que o cliente avalie o relacionamento criado.

 

Tipo Mensagem: Aviso

Texto: $1 criado com fator de conversão $2, casas decimais $3.  

Ajuda: Verifique se está correto e altere essas informações caso necessário.

Parâmetros: “Relacionamento Item x Fornecedor”, valor do fator de conversão, valor das casas decimais.

 

/* só busca o fator de conversão do cd0902 se o parametro "Gera Relação Item/Fornecedor na Cotação" estiver marcado */

create item-fornec.

assign item-fornec.it-codigo    = item.it-codigo

         item-fornec.cod-emitente = emitente.cod-emitente

         item-fornec.item-do-forn = item.it-codigo

         item-fornec.ativo        = yes

         item-fornec.cod-cond-pag = emitente.cod-cond-pag

         item-fornec.classe-repro = 1

         &IF "{&bf_mat_versao_ems}" >= "2.06" &THEN

                         item-fornec.idi-tributac-pis    = 2  /*Tributacao PIS Isento*/

                         item-fornec.idi-tributac-cofins = 2. /*Tributacao COFINS Isento*/

         &ELSE

                         OVERLAY(item-fornec.char-1,1,1) = "2"  /*Tributacao PIS Isento*/

                         OVERLAY(item-fornec.char-1,8,1) = "2". /*Tributacao COFINS Isento*/

         &ENDIF

 

      /* param-compra.char-2,136,1 -> Sugere Fator de Conv. Gera‡Æo Item/Fornec */

      ASSIGN l-sugeriu-fator-conver   = YES

                    item-fornec.unid-med-for = cotacao-item.un:screen-value in frame {&frame-name}

                      item-fornec.fator-conver = 1

                      item-fornec.num-casa-dec = 0.

                                       

      if substring(param-compra.char-2,136,1) = "S"

                      AND cotacao-item.un <> ITEM.un  then do:

                      for first item-unid-compra fields(cdd-fator-conver nr-casa-dec)

                       where item-unid-compra.it-codigo = item.it-codigo

                           and item-unid-compra.un        = cotacao-item.un:screen-value in frame {&frame-name} no-lock: end.

                      if avail item-unid-compra then

                                     assign item-fornec.fator-conver = item-unid-compra.cdd-fator-conver

                                                item-fornec.num-casa-dec = item-unid-compra.nr-casa-dec.

                      else

                              for first tab-conv-un fields (fator-conver num-casa-dec)

                               where tab-conv-un.un = item.un

                                   and tab-conv-un.unid-med-for = cotacao-item.un:screen-value in frame {&frame-name} no-lock: 

                                           assign item-fornec.fator-conver = tab-conv-un.fator-conver

                                                        item-fornec.num-casa-dec = tab-conv-un.num-casa-dec.

                              end.

      end.

 

 

Adicionar Cotação Flex:

 

  • Alterar a procedure pi-cria-item-fornec do programa inbo/boin082vl.p para verificar se o parâmetro “Sugere Fator de Conv. Geração Item/Fornec” está marcado e se estiver deve ser verificado se existe relacionamento de Item X Unidade de Medida (CC0106), existindo deverá usar o fator de conversão encontrado. Caso não encontre o relacionamento Item X UM deve ser verificado se existe um relacionamento de fator de conversão para unidades de medida no programa CD0902, caso exista deve ser criado o relacionamento Item/Fornecedor utilizando o fator de conversão e casas decimais do programa CD0902, caso não existir este relacionamento deverá ser criado com os valores padrões: fator de conversão 1 e casas decimais 0 (conforme fluxograma 1).
  • Deve ser exibida a mensagem de aviso criada no tópico “Manutenção Cotações” após a criação do relacionamento item/fornecedor, exibindo o fator de conversão usado no relacionamento e pedindo que o cliente avalie o relacionamento criado.

 

/*Se a unidade de medida do item for diferente da unidade de medida do fornecedor

  deverá ser verificado se o parâmetro de compra "Sugere Fator de Conv. Gera‡Æo Item/Fornec" está marcado. Se estiver deverá ser verificado se existe relacionamento entre o item e a unidade do fornecedor(CC0106), se existir utiliza o fator de conversão, senão verifica se existe um fator de conversao cadastrado para estas duas unidades de medida no CD0902. Caso exista deverá criar a unidade de medida do fornecedor

  utilizando o fator de conversao informado no cadastro de fatores de conversao, caso contrario criará como 1 para 1.

  Exemplo:

  Unidade de medida do item:       UN - Unidade

  Unidade de medida do fornecedor: CX - Caixa de 12 unidades

  Relacionamento item-fornec será criado com a unidade de medida = "CX", fator de

  conversao = "8333333" e numero de casas decimais = "8"                            */

 

if not avail param-compra then

      find first param-compra no-lock no-error. 

 

/* param-compra.char-2,136,1 -> Sugere Fator de Conv. Gera‡Æo Item/Fornec */

if  substring(param-compra.char-2,136,1) <> "S" and item.un <> rowobject.un then

       RETURN "NOK":U.

       

create item-fornec.

assign item-fornec.it-codigo    = item.it-codigo

         item-fornec.cod-emitente = emitente.cod-emitente

         item-fornec.item-do-forn = item.it-codigo

         item-fornec.ativo        = yes

         item-fornec.cod-cond-pag = emitente.cod-cond-pag

         item-fornec.classe-repro = 1.

 

ASSIGN l-sugeriu-fator-conver = YES

         item-fornec.unid-med-for = rowobject.un

         item-fornec.fator-conver = 1

         item-fornec.num-casa-dec = 0.

        

if substring(param-compra.char-2,136,1) = "S"

   AND rowObject.un <> ITEM.un  then do:

   for first item-unid-compra fields(cdd-fator-conver nr-casa-dec)

                      where item-unid-compra.it-codigo = item.it-codigo

                        and item-unid-compra.un        = rowObject.un no-lock: end.

   if avail item-unid-compra then

                      assign item-fornec.fator-conver = item-unid-compra.cdd-fator-conver

                                        item-fornec.num-casa-dec = item-unid-compra.nr-casa-dec.

   else

        for first tab-conv-un fields (fator-conver num-casa-dec)

                        where tab-conv-un.un = item.un

                                     and tab-conv-un.unid-med-for = rowObject.un no-lock: 

                         assign item-fornec.fator-conver = tab-conv-un.fator-conver

                                                       item-fornec.num-casa-dec = tab-conv-un.num-casa-dec.

        end.

end. 

Protótipo de Tela 

Protótipo 01

Novo programa.


 Protótipo 02

Campos preenchimentos.

 


Protótipo 03

Exportação Unidade de medida x Item.

 

 

Protótipo 04

Parametro Sugere Fator de Conv. Geração Item/Fornec.

 

 

Fluxo do Processo

 Fluxograma Rotina Progress (Cadastro de Cotação)



 Fluxograma Rotina Flex (Cadastro de Cotação).

Dicionário de Dados

 

Arquivo ou Código do Script: item-unid-compra

  

Índice

Chave

01

codigo(it-codigo, un)

 

 

Campo

it-codigo

uncdd-fator-convernr-casa-declog-bloqueia

Tipo

Character

CharacterDecimalIntegerLogical

Tamanho

x(16)

X(2)>>>>>>>>9.99999Sim/Não

Valor Inicial

 

 00Não

Mandatório

Sim ( X ) Não (  )

Sim ( X ) Não (  )Sim (  ) Não ( X )Sim (  ) Não ( X )Sim (  ) Não ( X )

Descrição

Código do Item

Unidade de MedidaFator de ConversãoCasas DecimaisBloq. UN Relac. Item x Fornec

Título

Item

UNFator ConversãoCasas DecimaisBloq. UN Relac. Item x Fornec

Picture

     

Help de Campo

Código do Item 

Unidade de MedidaFator de ConversãoNúmero de casas decimais do fator de conversãoBloqueia UN Relacionamento Item x Fornecedor

 

 

 

 

Estrutura de Menu

Procedimentos

 

Procedimento

 cc0106

Descrição

Manutenção Item x Unidade Medida

Módulo

 MCC

Programa base

 cc0106

Nome Menu

Manutenção Item x Unidade Medida

Interface

GUI

Registro padrão

Sim

Visualiza Menu

Sim

Release de Liberação

 

 

Programas

 

Programa

 cc0106

Descrição

Manutenção Item x Unidade Medida

Nome Externo

 ccp/cc0106.w

Nome Menu/Programa

Manutenção Item x Unidade Medida

Nome Verbalizado[1]

Manutenção Item x Unidade Medida

Procedimento

 cc0106

Template

Cadastro Pai x filho filho

Tipo[2]

Manutenção

Interface

GUI

Categoria[3]

 

Executa via RPC

Não

Registro padrão

Não

Outro Produto

Não

Visualiza Menu

Sim

Query on-line

Não

Log Exec.

Não

Rotina (EMS)

 

Sub-Rotina (EMS)

 

Localização dentro da Sub Rotina (EMS)

 

Compact[4]

 

Home[5]

 

Posição do Portlet[6]

 

Informar os papeis com os quais o programa deve ser vinculado

 

 

[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.

[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante

[3] Categorias são obrigatórias para os programas FLEX.

[4] Obrigatório quando o projeto for FLEX

[5] Obrigatório quando o projeto for FLEX

[6] Obrigatório quando o projeto for FLEX

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