TPO001 — Produtos (enriquecimento)
Menu: Cadastros > Tabelas de Produtos > Produtos
Objetivo
A tela TPO001 é o cadastro central de produtos e serviços do ERP, usado para registrar mercadorias, matérias-primas, serviços, combustíveis, pneus, sementes e outros tipos de itens. Nela o usuário define dados fiscais (NCM, condição fiscal), de estoque (locais de armazenagem, unidades), de preço (tabelas de venda e compra), fornecedores, ficha técnica de produção, itens agregados para Ordens de Serviço, dados agronômicos de receituário e, para o segmento de recapagem de pneus, os cadastros de Serviço/Conserto/Carcaça. As abas exibidas variam conforme as licenças contratadas pela empresa (Fat. Básico, OS, Oficina, Estoque, Produção, Vulcano, Cotações, Gourmet, Logística, NFe).
Fluxo principal
- Acessar Cadastros > Tabelas de Produtos > Produtos (TPO001) e clicar em Novo, ou localizar/consultar um produto existente pela navegação/filtro. (Aba Item) —
source/TPO001/UdmTPO001.pas:756-790 (TdmTPO001.tabITEMAfterInsert) - Preencher os dados obrigatórios do produto: Descrição, Tipo do Produto, Grupo, Marca, NCM, Tipo de Cálculo de Preço, Condição Fiscal, Ativo/Inativo e Unidade de Estoque. (Aba Item) —
source/TPO001/UdmTPO001.pas:1058-1120 (TdmTPO001.tabITEMBeforePost) - Se o código do produto não for informado manualmente, o sistema gera um código sequencial automaticamente ao salvar. (Aba Item) —
source/TPO001/UdmTPO001.pas:1179-1210 (TdmTPO001.tabITEMBeforePost) - Cadastrar o(s) Local(is) de Armazenagem do produto (Tipo de Local + Local), definindo se aceita estoque negativo. (Aba Local de Armazenagem) —
source/TPO001/UdmTPO001.pas:1312-1343 (TdmTPO001.tabITEMLOCALBeforePost) - Opcionalmente completar as demais abas: Fornecedores, Tabela de Preço, Tabela de Compra, Similares, Itens Agregados, Ficha de Produção, Empresas, Perfil, Receituário Agronômico, Documentos, Tags e (para produtos de recapagem de pneus) Serviço/Conserto/Carcaça. (Demais abas) —
source/TPO001/UTPO001.pas:1604-1634 (TfrmTPO001.btnSalvarClick) - Clicar em Salvar (F6). O sistema grava o item e todas as grades pendentes em uma única operação, valida perfil/local obrigatórios conforme parâmetro do sistema, e recalcula o preço de venda se a margem de lucro mudou. (Barra de botões) —
source/TPO001/UdmTPO001.pas:1251-1298 (TdmTPO001.tabITEMBeforePost) - Sistema exibe mensagem de confirmação (I-0047 - Alterações Efetuadas com Sucesso, no catálogo do módulo). (Barra de botões) —
source/TPO001/UTPO001.pas:1500-1500 (TfrmTPO001.btnExcluirClick)
Campos obrigatórios
| Campo | Condição | Mensagem | Fonte |
|---|---|---|---|
| DS_ITEM (Descrição do Produto) | sempre, ao salvar | É Obrigatório informar a Descrição do Produto! | source/TPO001/UdmTPO001.pas:1059-1064 (TdmTPO001.tabITEMBeforePost) |
| TP_ITEM (Tipo do Produto) | sempre, ao salvar | É Obrigatório informar o Tipo do Produto! | source/TPO001/UdmTPO001.pas:1066-1071 (TdmTPO001.tabITEMBeforePost) |
| CD_GRUPO / CD_MARCA / NR_NCM / CD_TIPOCALCULO / CD_CONDFISCAL / ST_ATIVO / SG_UNIDMED | sempre, ao salvar | É Obrigatório informar o Grupo/Marca/NCM/Tipo de Cálculo/Condição Fiscal/Se está Ativo/Unidade de Estoque do Produto! | source/TPO001/UdmTPO001.pas:1073-1120 (TdmTPO001.tabITEMBeforePost) |
| CD_CODIGOBARRA (Código de Barras) | quando o parâmetro de sistema (ADM010, ist_cadProduto) exige código de barras ('C' ou 'B') e a tela não está com geração automática de código de barras habilitada | É obrigatório informar um código de barras para o Produto! | source/TPO001/UdmTPO001.pas:1122-1129 (TdmTPO001.tabITEMBeforePost) |
| PS_LIQUIDO (Peso de Conversão) | quando o produto possui Unidade Alternativa informada (SG_UNIDALT) | É Obrigatório informar o Peso de Conversão para o Produto que possui Unidade Alternativa! | source/TPO001/UdmTPO001.pas:1134-1140 (TdmTPO001.tabITEMBeforePost) |
| PC_COMISSAOVISTA e PC_COMISSAOPRAZO | se um dos dois percentuais de comissão for informado, o outro passa a ser obrigatório | É Obrigatório informar o Percentual de Comissão à Vista!/à Prazo! | source/TPO001/UdmTPO001.pas:1142-1158 (TdmTPO001.tabITEMBeforePost) |
| SG_UFORIGEMANP / PC_UFORIGEMANP | quando TP_INDIMPORTACAOANP está preenchido (item é combustível com indicador de importação ANP) | É obrigatório Informar o Código da UF. / É obrigatório Informar o Percentual de origem da UF. | source/TPO001/UdmTPO001.pas:1160-1177 (TdmTPO001.tabITEMBeforePost) |
| CD_ITEM (Código do Produto) | sempre; se deixado em branco o sistema gera automaticamente via procedure GERA_SEQUENCIA(SEQ_ITEM) | É Obrigatório informar o Código do Produto! | source/TPO001/UdmTPO001.pas:1179-1217 (TdmTPO001.tabITEMBeforePost) |
| NR_PRODANVISA / DS_MOTIVOISENCAO / VL_PRECOMAXIMOCONSUMIDOR | quando o campo de código de produto ANVISA é preenchido | O Código de produto da Anvisa deverá ter 13 Dígitos, ou ser [ISENTO] / É Obrigatório informar o Motivo! / É Obrigatório informar o Preço Máximo ao Consumidor | source/TPO001/UdmTPO001.pas:1219-1247 (TdmTPO001.tabITEMBeforePost) |
| PS_LIQUIDO (Peso Conversão) > 0 | quando ST_UNIDADEFECHADA = 'S' (produto vendido em unidade fechada/fardo) | O Peso Conversão para Unidade Fechada deve ser maior que Zero! | source/TPO001/UdmTPO001.pas:1300-1309 (TdmTPO001.tabITEMBeforePost) |
| CD_TIPOLOCAL / CD_LOCAL / ST_ESTOQUE (aba Locais de Armazenagem) | ao gravar uma linha de local de armazenagem do produto | É Obrigatório informar o Tipo de Local de Armazenagem/o Local de Armazenagem/se o Local pode ter Estoque Negativo para este Produto! | source/TPO001/UdmTPO001.pas:1317-1335 (TdmTPO001.tabITEMLOCALBeforePost) |
| CD_PESSOA (aba Fornecedores) | ao gravar uma linha de fornecedor/pessoa vinculada ao item | É Obrigatório informar a Pessoa Física / Jurídica do Produto! | source/TPO001/UdmTPO001.pas:1359-1364 (TdmTPO001.tabITEMPESSOABeforePost) |
| CD_ITEMAGREGADO, NR_FATOR, TP_CALCULO (aba Itens Agregados) | ao gravar uma linha de item agregado | É obrigatório informar o Item Agregado! / O campo Fator deve ser um valor numérico positivo maior que zero. / É obrigatório informar o Tipo de Cálculo. | source/TPO001/UdmTPO001.pas:1407-1428 (TdmTPO001.tabITEMAGREGADOBeforePost) |
| CD_ITEMSIMILAR (aba Similares) | ao gravar uma linha de produto similar | É Obrigatório informar o Produto Similar! | source/TPO001/UdmTPO001.pas:1729-1734 (TdmTPO001.tabITEMSIMILARBeforePost) |
| CD_TABPRECO e VL_PRECO (aba Tabela de Preços) / CD_TABCOMPRA e VL_PRECO (aba Tabela de Compra) | ao gravar uma linha de tabela de preço/compra | Informe o Código da Tabela de Preço/Compra! / Informe o Preço do Produto | source/TPO001/UdmTPO001.pas:1795-1801 (TdmTPO001.tabITEMTABPRECOBeforePost) |
| CD_MATERIAPRIMA e QT_PARTICIPACAO (aba Ficha de Produção/Composição) | ao gravar uma linha de matéria-prima da ficha de produção | É Obrigatório informar o Produto/a Quantidade que compõe a Ficha de Produção! | source/TPO001/UdmTPO001.pas:1876-1888 (TdmTPO001.tabITEMPRODUCAOBeforePost) |
| CD_CULTURA, CD_DIAGNOSTICO, SG_TIPOEMBALAGEM, SG_EMBALAGEM, SG_UNIDMED, CD_APLICACAO, QT_DOSAGEM (aba Receituário Agronômico) | ao gravar uma linha de receituário quando o produto é agrotóxico/semente | É Obrigatório informar a Cultura/o Diagnóstico/o Tipo de Embalagem/a Embalagem/a Unidade de Medida/a Forma de Aplicação/a Qtde de Dosagem! | source/TPO001/UdmTPO001.pas:2132-2182 (TdmTPO001.tabITEMRECEITABeforePost) |
| CD_EMPRESA (aba Empresas) | ao gravar uma linha de empresa associada ao produto | Informe o Código da Empresa | source/TPO001/UdmTPO001.pas:2571-2575 (TdmTPO001.tabEMPRESABeforePost) |
| CD_PERFIL (aba Perfil) | ao gravar uma linha de perfil de acesso do produto | É obrigatório informar o perfil !. Verifique | source/TPO001/UdmTPO001.pas:2634-2642 (TdmTPO001.tabPERFILBeforePost) |
| BI_DOCUMENTO (arquivo, aba Documentos) | ao gravar uma linha de documento anexado | Selecione Um Arquivo Para Salvar | source/TPO001/UdmTPO001.pas:2934-2943 (TdmTPO001.tabDOCUMENTOSBeforePost) |
| DS_TAG (aba Tags do Usuário) | ao gravar uma tag personalizada; mínimo de 3 caracteres | Tag não Informada! Verifique. / A Tag deve possuir no Mínimo 3 caracteres! | source/TPO001/UdmTPO001.pas:3905-3918 (TdmTPO001.tabTAGSUSUARIOBeforePost) |
| Perfil e Local de Armazenagem obrigatórios na 1ª gravação | conforme o parâmetro de sistema ist_cadProduto (ADM010): tipos 'P' e 'A' exigem Perfil; tipos 'L', 'B' e 'A' exigem Local de Armazenagem | É Obrigatório informar um Perfil para o Produto! / É Obrigatório informar um Local para Armazenagem para o Produto! | source/TPO001/UTPO001.pas:1543-1601 (TfrmTPO001.btnSalvarClick) |
| DSSERVICO/IDMEDIDAPNEU/IDTIPOSERVICO (Serviço de Recapagem) | DSCONSERTO (Conserto) | DSCARCACA/IDMEDIDA/IDSERVICO/IDMODELO (Carcaça) | quando TP_CADASTRORECAP do item indica 'S' (Serviço), 'C' (Conserto) ou 'A' (Carcaça) |
Mensagens: causa e ação
C-0045
Causa: Usuário clicou em Excluir na tela de Produtos.
Ação: O sistema pede confirmação; ao confirmar, remove em cascata os registros vinculados ao item (empresa, produção, tabela de preço, fornecedores, locais, perfis, similares, receita, tags) antes de excluir o produto.
Fonte: source/TPO001/UTPO001.pas:1357-1417 (TfrmTPO001.btnExcluirClick)
I-0046
Causa: Exclusão do produto (ou de uma grade dele) foi concluída com sucesso.
Ação: Nenhuma ação necessária; é apenas a confirmação de que o registro foi removido.
Fonte: source/TPO001/UTPO001.pas:1500-1500 (TfrmTPO001.btnExcluirClick)
W-1649
Causa: Usuário clicou no botão de atalho para abrir o Cadastro de Grupos (TPO006), mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela TPO006 em ADM004.
Fonte: source/TPO001/UTPO001.pas:4196-4209 (TfrmTPO001.btnPessoaClick)
W-1650
Causa: Usuário clicou no botão de atalho para abrir o Cadastro de SubGrupos (TPO007), mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela TPO007 em ADM004.
Fonte: source/TPO001/UTPO001.pas:4211-4224 (TfrmTPO001.btnSUBGRUPOClick)
W-1651
Causa: Usuário clicou no botão de atalho para abrir o Cadastro de Marcas (TPO002), mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela TPO002 em ADM004.
Fonte: source/TPO001/UTPO001.pas:4226-4239 (TfrmTPO001.btnMARCAClick)
W-1652
Causa: Usuário clicou no botão de atalho para abrir o Cadastro de Seção (TPO008), mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela TPO008 em ADM004.
Fonte: source/TPO001/UTPO001.pas:4241-4254 (TfrmTPO001.btnSECAOClick)
W-1653
Causa: Usuário clicou no botão de atalho para abrir a Grade de Produtos (TPO011) a partir do produto, mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela TPO011 em ADM004.
Fonte: source/TPO001/UTPO001.pas:4263-4279 (TfrmTPO001.btnGradeProdClick)
W-1463
Causa: Após salvar o item com Tipo de Local e Local de Armazenagem preenchidos, o sistema tenta abrir o Lançamento Avulso (MEQ002), mas essa tela não está liberada no menu do usuário.
Ação: Solicitar ao administrador do sistema a liberação de acesso à tela MEQ002 em ADM004.
Fonte: source/TPO001/UTPO001.pas:2930-2967 (TfrmTPO001.btnLancarClick)
Regras de negócio
TPO001.R001(verregras/TPO001/TPO001.R001.md)TPO001.R002(verregras/TPO001/TPO001.R002.md)TPO001.R003(verregras/TPO001/TPO001.R003.md)TPO001.R004(verregras/TPO001/TPO001.R004.md)TPO001.R005(verregras/TPO001/TPO001.R005.md)TPO001.R006(verregras/TPO001/TPO001.R006.md)TPO001.R007(verregras/TPO001/TPO001.R007.md)TPO001.R008(verregras/TPO001/TPO001.R008.md)TPO001.R009(verregras/TPO001/TPO001.R009.md)TPO001.R010(verregras/TPO001/TPO001.R010.md)TPO001.R011(verregras/TPO001/TPO001.R011.md)TPO001.R012(verregras/TPO001/TPO001.R012.md)TPO001.R013(verregras/TPO001/TPO001.R013.md)TPO001.R014(verregras/TPO001/TPO001.R014.md)TPO001.R015(verregras/TPO001/TPO001.R015.md)TPO001.R016(verregras/TPO001/TPO001.R016.md)TPO001.R017(verregras/TPO001/TPO001.R017.md)TPO001.R018(verregras/TPO001/TPO001.R018.md)TPO001.R019(verregras/TPO001/TPO001.R019.md)TPO001.R020(verregras/TPO001/TPO001.R020.md)TPO001.R021(verregras/TPO001/TPO001.R021.md)TPO001.R022(verregras/TPO001/TPO001.R022.md)TPO001.R023(verregras/TPO001/TPO001.R023.md)TPO001.R024(verregras/TPO001/TPO001.R024.md)TPO001.R025(verregras/TPO001/TPO001.R025.md)TPO001.R026(verregras/TPO001/TPO001.R026.md)TPO001.R027(verregras/TPO001/TPO001.R027.md)TPO001.R028(verregras/TPO001/TPO001.R028.md)
Perguntas frequentes
P: Por que não consigo salvar o produto e aparece 'É Obrigatório informar...'?
R: O cadastro de produto exige, no mínimo, Descrição, Tipo do Produto, Grupo, Marca, NCM, Tipo de Cálculo de Preço, Condição Fiscal, se está Ativo e a Unidade de Estoque. Preencha o campo indicado na mensagem (o sistema já leva o cursor até ele) e salve novamente.
Fonte: source/TPO001/UdmTPO001.pas:1058-1120 (TdmTPO001.tabITEMBeforePost)
P: Por que o sistema pede código de barras para salvar o produto?
R: Isso ocorre quando a parametrização do sistema (ADM010) exige código de barras para o tipo de cadastro de produto configurado (tipos 'C' ou 'B') e a geração automática de código de barras não está habilitada nesta tela. Informe manualmente o código de barras ou use a função de Gerar Código de Barras em lote.
Fonte: source/TPO001/UdmTPO001.pas:1122-1129 (TdmTPO001.tabITEMBeforePost)
P: Deu a mensagem 'Código de Barras já Cadastrado para o Produto [X]'. O que fazer?
R: O código de barras informado já pertence a outro produto (verificado pela procedure VALIDA_CODIGOBARRA). Confira o produto indicado na mensagem; se for um erro de digitação, corrija o código; se o código realmente pertence a outro item, ele precisa ser removido de lá antes de ser reutilizado aqui.
Fonte: source/TPO001/UdmTPO001.pas:1774-1793 (TdmTPO001.tabITEMCD_CODIGOBARRAValidate)
P: Por que não consigo adicionar um item como agregado de outro?
R: O sistema bloqueia se: o item é o próprio produto principal, está inativo, já existe a configuração inversa (o item que você quer adicionar já tem o produto atual como agregado dele, o que geraria um loop), já foi adicionado antes, ou se qualquer um dos dois itens já participa de outra relação de agregação (o sistema não permite cascata de agregados). Reveja o vínculo dos itens envolvidos na aba Itens Agregados antes de tentar novamente.
Fonte: source/TPO001/UdmTPO001.pas:1431-1503 (TdmTPO001.tabITEMAGREGADOCD_ITEMAGREGADOValidate)
P: Por que não consigo excluir um Local de Armazenagem do produto?
R: O sistema não permite excluir um local de armazenagem se ainda houver saldo de estoque registrado nele para o produto. É preciso transferir o saldo para outro local (via movimentação de estoque) antes de excluir o registro em TPO001.
Fonte: source/TPO001/UdmTPO001.pas:2358-2376 (TdmTPO001.tabITEMLOCALBeforeDelete)
P: Por que não consigo mudar a Grade do Produto?
R: O campo de Grade fica bloqueado assim que o produto já teve alguma movimentação de estoque. Isso é uma trava definitiva do sistema para não corromper o histórico de movimentação; não é possível reabrir esse campo pela própria tela.
Fonte: source/TPO001/UdmTPO001.pas:2068-2087 (TdmTPO001.tabITEMCD_GRADEValidate)
P: Por que não consigo mudar o produto de Combustível para outro tipo (ou vice-versa)?
R: O sistema verifica os locais de armazenagem já vinculados ao item. Se o produto é Combustível e possui locais que não são do tipo Tanque (ou vice-versa), a troca de Tipo do Produto é bloqueada até que os locais incompatíveis sejam ajustados na aba Local de Armazenagem.
Fonte: source/TPO001/UdmTPO001.pas:1630-1654 (TdmTPO001.tabITEMTP_ITEMValidate)
P: Por que não consigo desmarcar o campo 'Semente' do produto?
R: Se o produto ainda tem quantidade registrada em algum lote de semente (LOTESEMENTE), o sistema não permite retirar a marcação de Semente. É necessário zerar o saldo do lote antes de alterar essa flag.
Fonte: source/TPO001/UdmTPO001.pas:2378-2392 (TdmTPO001.tabITEMST_SEMENTEValidate)
P: Por que não consigo inativar um produto?
R: Quando a parametrização de código de fornecedor está ligada, o sistema impede inativar um produto que tenha locações futuras pendentes ou em andamento vinculadas a ele. Finalize ou cancele essas locações antes de inativar o item.
Fonte: source/TPO001/UdmTPO001.pas:2610-2632 (TdmTPO001.tabITEMST_ATIVOValidate)
P: Ao duplicar um produto, o código de barras foi copiado?
R: Não. A rotina de duplicação de produto remove explicitamente o código de barras do item copiado, para evitar duplicidade de código de barras entre o produto original e a cópia. É preciso cadastrar um novo código de barras (ou gerar automaticamente) para o produto duplicado.
Fonte: source/TPO001/UTPO001DUPLICAR.pas:138-160 (TfrmDadosDUPLICAR.btnConfirmarClick)
P: Por que a importação diz que o arquivo é inválido?
R: A tela de importação só aceita arquivos com extensão .csv. Gere o arquivo a partir do modelo disponibilizado pelo botão de baixar modelo CSV para garantir compatibilidade.
Fonte: source/TPO001/UfrmIMPORTACAOCADASTRO.pas:589-603 (TfrmIMPORTARCADASTRO.btnBuscarArquivoClick)
P: Deu a mensagem que o usuário não tem acesso à tela de Grupo/Marca/Seção/NCM/Categoria etc. ao clicar no atalho dentro de TPO001. O que fazer?
R: Os botões de atalho do cadastro de produto (para abrir Grupo, Subgrupo, Marca, Seção, Grade, NCM, Categoria, Banda ou Carcaça) checam se aquela tela está liberada no menu do usuário. Solicite ao administrador do sistema que libere o acesso ao módulo indicado entre colchetes na mensagem, em ADM004 - Controle de Acesso.
Fonte: source/TPO001/UTPO001.pas:4196-4254 (TfrmTPO001.btnPessoaClick)
P: Por que o preço mínimo/máximo da tabela de preço não aceita o valor digitado?
R: O Preço Mínimo não pode ser maior que o preço de venda atual do item, nem o Preço Máximo pode ser menor que ele. Esses campos são interligados com o Percentual de Desconto/Acréscimo Máximo, que é recalculado automaticamente quando um dos valores muda.
Fonte: source/TPO001/UdmTPO001.pas:3953-4004 (TdmTPO001.tabITEMTABPRECOPC_DESCONTOMAXIMOValidate)
Dúvidas em aberto (o código não responde)
- Quais são exatamente os valores possíveis do parâmetro 'ist_cadProduto' (proveniente de ADM010) e o que cada letra ('C', 'B', 'P', 'A', 'L') significa por completo? — O código usa ist_cadProduto em várias validações (obrigatoriedade de código de barras, obrigatoriedade de perfil e local de armazenagem), mas o carregamento/definição completa desse parâmetro não está no módulo TPO001; provavelmente vem de uma tela ADM010 não incluída no briefing.
- O que exatamente controla a flag iTp_CodFornec ('N', 'D', 'S') e onde ela é definida? — Essa variável muda o comportamento da validação de Código de Fornecedor/Referência duplicado (UdmTPO001.pas linhas 880-929), mas sua origem/configuração não está nos arquivos lidos.
- Quais mensagens de catálogo exatas correspondem aos códigos de erro genéricos usados por jValidate.pas (ex.: E-0059, E-0061, E-0253, E-0254, W-0122)? — Essas mensagens de erro são usadas pelos validadores compartilhados (ValidaItem, ValidaSubGrupo, ValidaGrade) chamados pelo TPO001, mas o texto final delas está no catálogo de mensagens (jMessage), não lido nesta sessão.
- Existe alguma trava que impeça excluir um produto que já tenha movimentação de estoque (nota fiscal, venda) além dos deletes em cascata vistos? — O botão Excluir remove ITEMEMPRESA, ITEMPRODUCAO, PRODUCAO, ITEMTABPRECO, ITEMPESSOA, ITEMLOCAL, ITEMPERFIL, ITEMSIMILAR, ITEMRECEITA e TAGINDEX antes do delete do ITEM, mas não há validação explícita de saldo/movimentação de nota fiscal no código lido; pode haver constraint de integridade referencial no banco (Firebird) que barra a exclusão nesses casos, não visível neste módulo.