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ções | Envolvida | Logí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 | un | cdd-fator-conver | nr-casa-dec | log-bloqueia |
Tipo | Character | Character | Decimal | Integer | Logical |
Tamanho | x(16) | X(2) | >>>>>>>>9.9999 | 9 | Sim/Não |
Valor Inicial |
| 0 | 0 | Nã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 Medida | Fator de Conversão | Casas Decimais | Bloq. UN Relac. Item x Fornec |
Título | Item | UN | Fator Conversão | Casas Decimais | Bloq. UN Relac. Item x Fornec |
Picture | |||||
Help de Campo | Código do Item | Unidade de Medida | Fator de Conversão | Número de casas decimais do fator de conversão | Bloqueia 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. |
---|