O processo de negócio do seu cliente ou da empresa onde trabalha, precisa de uma nova funcionalidade?

 

Há orçamento disponível para investir em um desenvolvimento?

 

Estas duas perguntas poderão balizar as ações do consultor.

 

É provável que o desenvolvimento de um add-on/customização seja a melhor opção, mas muitas vezes não possuímos recursos financeiros ou de pessoal disponíveis. Nestes casos com um pouco de criatividade e tempo (não podemos desconsiderar aqui um pouco de conhecimento técnico: SQL e lógica) podemos desenvolver novos recursos, usando ferramentas nativas do SAP Business One e melhor sem um custo direto $$$ (não podemos desconsiderar que tempo é dinheiro).

 

Então vamos para o “case”!

 

O cliente/empresa precisa criar uma forma mais eficiente de controlar a determinação de limite de crédito dos clientes. Procurando em autorizações gerais, não há (particularmente eu não encontrei até a versão 9.0 PL 7) uma opção para definir os usuários que tem permissão para alterar o campo “Limite de Crédito” da aba “Condições de Pagamento” do cadastro de parceiros de negócio. Desenvolver a customização não está no orçamento $$$.

 

A ideia consiste em criar uma tabela de usuário que deverá armazenar: Código, Nome do Parceiro de Negócios e o Limite de Crédito definido.

Utilizar esta nova tabela para a criação de um UDO.

Criar uma nova restrição de acesso, conforme o artigo/documento: http://scn.sap.com/docs/DOC-48526 no formulário criado para o UDO, onde somente os funcionários/usuários do setor financeiro poderão definir e alterar os dados.

Estabelecer na “SBO_SP_TransactionNotification” uma regra, que impossibilite os outros usuários que cadastram ou modificam “Cadastro de Parceiros de Negócios” em definir um valor de limite de crédito, diferente do estabelecido pela equipe do financeiro.

A condição na transaction, verificará o seguinte:

Se (PN = Cliente e Limite de crédito no cadastro de PN > 0) então {

     Se (Limite de crédito do cadastro de PN <> do valor definido no UDO para o PN) então{

               retornar um bloqueio via “transaction” de alteração ou inclusão de PN

     }

}

 

Então, os recursos nativos são:

1. Tabelas definidas pelo usuário.

2. Campos definidos pelo usuário.

3. Assistente de registro de objetos… (UDO)

4. Consultas formatadas (FMS)

5. Editar a “SBO_SP_TransactionNotification”

6. Criar uma nova restrição de acesso

 

Vamos ao passo a passo da solução:

 

1. Criar um nova “Tabela definida pelo usuário”:

 

Através do recurso “Tabela definida pelo usuário”, criaremos uma tabela na base de dados do SAP Business One, onde será registrado o “Código do PN”, “Nome do PN” e o “Limite de Crédito R$” definido.

 

Acessar o menu: Ferramentas -> Ferramentas de Configuração -> Tabelas def. pelo usuário – configuração

/wp-content/uploads/2013/12/00_346755.jpg

 

Inserir uma nova linha, onde:

No campo nome da tabela, informar: LIMITECREDITO

Em descrição: Limite Crédito

Tipo de objeto: Cadastro

Clicar em [Atualizar].

/wp-content/uploads/2013/12/01_346756.jpg

 

2. Criar campos de usuário para a tabela criada no passo 1:

 

No processo padrão de criação de tabelas no SAP Business One, automaticamente são gerados os campos: Code e Name, desta forma falta criar apenas o campo para registrar o valor do limite.

 

Acessar o menu: Ferramentas -> Ferramentas de configuração -> Campos definidos pelo usuário – administração…

/wp-content/uploads/2013/12/02_346835.jpg

 

Selecionar a tabela criada: “LimiteCredito” e clicar em adicionar

/wp-content/uploads/2013/12/03_349107.jpg

Preencher os campos:

Título: VlrLimite

Descrição: Valor Limite R$

Tipo: Unidades e totais

Estrutura: Valor

/wp-content/uploads/2013/12/04_349108.jpg

Confirmar, clicando em [Sim]

/wp-content/uploads/2013/12/05_349166.jpg

 

3. Assistente de registro de objetos… (UDO):

 

Através do registro de um “UDO” objeto do usuário, será habilitado um novo item de menu, para facilitar a inserção de dados pelos usuários em um formulário, onde serão registrados: Código, Nome e Valor do Limite de Crédito do PN.

 

Acessar o menu: Ferramentas -> Ferramentas de configuração -> Assistente de registro de objetos…

/wp-content/uploads/2013/12/06_349167.jpg

 

Na primeira tela de registro, apenas clicar em [Seguinte > ]

/wp-content/uploads/2013/12/07_349168.jpg

 

Na tela de “Seleção do modo de registro”, marcar a opção “Inserir um novo objeto” e pressionar [Seguinte > ]

/wp-content/uploads/2013/12/08_349169.jpg

 

Na tela de “Definição de configurações básicas”, preencher os campos:

ID único: LimiteCredito

Nome: Limite de Crédito

Tipo: Cadastro

Nome da tabela: LIMITECREDITO

 

Depois pressionar: [Seguinte > ]

/wp-content/uploads/2013/12/09_349170.jpg

 

Em “Definição de serviços” ativar as opções: Procurar, Eliminar e Log.

Depois clicar em [Seguinte > ]

/wp-content/uploads/2013/12/10_349171.jpg

 

Na tela de “Configurações de IU” será definido os dados pertinentes a criação do menu de acesso.

Ativar: “Formulário padrão”

Marcar a opção: “Estilo de matriz”

Ativar: “Item de menu”

Em Legenda do menu: Limite de Crédito

No campo ID do menu sintético, clicar em […] depois selecionar “Parceiros de negócios”

 

/wp-content/uploads/2013/12/12_349178.jpg

No campo posição: 1 para definir como o segundo item dentro da pasta: “Parceiros de negócios” do menu principal.

Em UID menu: LimiteCredito

Depois pressionar em [Seguinte > ]

/wp-content/uploads/2013/12/13_349179.jpg

Em “Definição de campos para pesquisa”:

Ativar a opção: “U_VlrLimite” e clicar em [Seguinte > ]

/wp-content/uploads/2013/12/14_349180.jpg

 

Na tela de “Definição de campos para formulário padrão”, serão definidos os títulos para as colunas do formulário padrão, onde deverá ser alteradas algumas descrições:

Para o campo: “Code”, definir a descrição: “Código do PN”

Para o campo: “Name”, definir a descrição: “Nome do PN”

Para o campo: “U_VlrLimite”, definir a descrição: “Valor Limite R$”

Depois clicar em [Seguinte > ]

 

/wp-content/uploads/2013/12/15_349184.jpg

 

Na tela de “Inserir tabelas inferiores do usuário”, clicar apenas em [Seguinte > ] pois não será associada nenhuma tabela inferior.

/wp-content/uploads/2013/12/16_349185.jpg

 

Na tela de “Definições de campo para um formulário padrão da tabela inferior” apenas clicar em [Seguinte > ]

/wp-content/uploads/2013/12/17_349186.jpg

 

Clicar em [Finalizar] para concluir a criação do UDO.

/wp-content/uploads/2013/12/18_349187.jpg

 

4. Definir consultas formatadas:

 

Acessar o menu: Ferramentas -> Consultas -> Gerador de consultas

/wp-content/uploads/2013/12/20_349188.jpg

 

No código de execução da consulta, colocar:

SELECT T0.[CardCode], T0.[CardName], T0.[CreditLine] FROM OCRD T0 WHERE T0.[CardType] = ‘C’ AND T0.[validFor] = ‘Y’

 

Clicar em [Gravar]

Selecionar uma categoria para a consulta, e definir o nome: “LIMITE DE CRÉDITO – Campo: Código – Procurar PN”

/wp-content/uploads/2013/12/23_349190.jpg

 

Substituir o código da consulta, por:

SELECT T0.[CardName] FROM OCRD T0 WHERE T0.[CardCode] = $[@LIMITECREDITO.Code]

 

e clicar em [Gravar] selecionar a categoria e definir o nome para a consulta:

“LIMITE DE CRÉDITO – Campo: Nome do PN”

/wp-content/uploads/2013/12/22_349189.jpg

 

Substituir o código de consulta por:

DECLARE @TEMP AS DECIMAL(18,2)

SET @TEMP = (SELECT T0.[U_VlrLimite] FROM [@LIMITECREDITO]  T0 WHERE T0.[Code] = $[OCRD.CardCode])

SELECT ISNULL(@TEMP,0)

 

clicar em [Gravar] selecionar a categoria e definir o nome:

LIMITE DE CRÉDITO – Campo: Limite de Crédito – Em Cadastro de PN

/wp-content/uploads/2013/12/24_349191.jpg

 

para atribuir as consultas formatadas aos campos, acessar o objeto criado em “Menu Principal” -> “Parceiros de Negócios” -> “Limite de Crédito”

/wp-content/uploads/2013/12/25_349192.jpg

 

No formulário, clicar no campo: “Código do PN”, pressionar “Alt+Shift+F2”

Marcar a opção “Procurar nos valores existentes definidos pelo usuário de acordo com a consu”

Clicar em [Abrir Consulta Gravada]

Na lista de categorias, localizar a consulta criada com o título: “LIMITE DE CRÉDITO – Campo: Código – Procurar PN”

clicar em [OK]

Depois em [Atualizar]

/wp-content/uploads/2013/12/26_349193.jpg

 

 

No formulário, clicar no campo: “Nome do PN”, pressionar “Alt+Shift+F2”

Marcar a opção “Procurar nos valores existentes definidos pelo usuário de acordo com a consu”

Clicar em [Abrir Consulta Gravada]

Na lista de categorias, localizar a consulta criada com o título: “LIMITE DE CRÉDITO – Campo: Nome do PN”

clicar em [OK]

/wp-content/uploads/2013/12/28_349194.jpg

Ativar a opção “Atualização automática” e “Ao sair da coluna modificada”.

Selecionar o campo: “Código do PN”

Deixar ativo “Exibir valores definidos pelo usuário gravados”

Depois clicar em “Atualizar”

/wp-content/uploads/2013/12/29_349195.jpg

 

Acessar o cadastro de Parceiros de Negócios

Clicar na aba “Condições de Pagto.”

Depois no campo “Limite de Crédito”, dentro do campo pressionar “Alt”+”Shift”+”F2”

Marcar (*) em “Procurar nos valores existentes definidos pelo usuário de acordo com a consulta…”

Depois clicar em [Abrir consulta gravada]

Na categoria, localizar a consulta criada anteriormente.

Depois clicar em [OK] na tela do “Administrador de consultas” e em [Atualizar] na tela de definição de “Valores def. pelo usuário”.

/wp-content/uploads/2013/12/32_367504.jpg

 

 

 

5. Código inserido na “SBO_SP_TransactionNotification”:

 

Via SQL management Studio, adicionar na “Transaction” o seguinte código:

 

——- PROCEDIMENTO DE TESTE DE LIMITE DE CRÉDITO ——-

IF @object_type IN (‘2’) AND @transaction_type IN (‘A’,’U’)

BEGIN

DECLARE

@CardType nvarchar(1) = (SELECT T0.[CardType] FROM OCRD T0 WHERE T0.[CardCode] = @list_of_cols_val_tab_del),

@LimiteCadastro DECIMAL(18,2),

@LimiteFinanceiro DECIMAL(18,2)

 

IF @CardType = ‘C’ AND @transaction_type = ‘A’

     BEGIN

     IF (SELECT ISNULL(T0.[CreditLine],0) FROM OCRD T0 WHERE T0.[CardCode] = @list_of_cols_val_tab_del) > 0

          BEGIN

          SELECT @error = 1001, @error_message = ‘O limite de crédito deve ser definido pelo Depto. Financeiro após o cadastramento do cliente (Transaction Error)’

          END

     END

 

 

IF @CardType = ‘L’ AND @transaction_type = ‘A’

     BEGIN

     IF (SELECT ISNULL(T0.[CreditLine],0) FROM OCRD T0 WHERE T0.[CardCode] = @list_of_cols_val_tab_del) > 0

          BEGIN

          SELECT @error = 1002, @error_message = ‘Não é permitido definir limite de crédito para LEADs, informar ZERO no campo Limite de Crédito (Transaction Error)’

          END

     END

 

 

IF @CardType = ‘C’ AND @transaction_type = ‘U’

     BEGIN

     SELECT @LimiteCadastro = (SELECT isnull(T0.[CreditLine],0) FROM OCRD T0 WHERE T0.[CardCode] = @list_of_cols_val_tab_del)

     SELECT @LimiteFinanceiro = (SELECT isnull(T0.[U_VlrLimite],0) FROM [@LIMITECREDITO] T0 WHERE T0.[Code] = @list_of_cols_val_tab_del)

     IF @LimiteCadastro > 0

          IF @LimiteCadastro = @LimiteFinanceiro

               SELECT @error = 0

          ELSE

               BEGIN

               SELECT @error = 1003, @error_message = ‘O limite de crédito informado é diferente do definido pelo Depto. Financeiro (Transaction Error)’

               END

     END

 

IF @CardType = ‘L’ AND @transaction_type = ‘U’

     BEGIN

     IF (SELECT ISNULL(T0.[CreditLine],0) FROM OCRD T0 WHERE T0.[CardCode] = @list_of_cols_val_tab_del) > 0

          BEGIN

          SELECT @error = 1004, @error_message = ‘Não é permitido definir limite de crédito para LEADs, informar ZERO no campo Limite de Crédito (Transaction Error)’

          END

     END

 

END

 

——-

 

 

6. Criar uma restrição de acesso:

 

Para realizar a criação de restrição de acesso, acesso o documento: Criando novas restrições de acesso no SAP Business One

 

 

7. Utilizando o recurso:

 

Para utilizar o recurso, acesse a tabela de definição de limites:

/wp-content/uploads/2013/12/25_349192.jpg

 

 

Na tabela de definição do “Limite de Crédito”, na coluna do código do PN clique na “Lupa” pesquise o PN, ao localiza-lo faça a seleção.

/wp-content/uploads/2013/12/30_367502.jpg

 

 

Na tabela será atualizado o Nome do PN, então preencha o limite de crédito para PN e clique em [OK] para gravar as alterações.

/wp-content/uploads/2013/12/31_367503.jpg

 

De acordo com as procedures definidas na Transaction, só será possível atualizar o cadastro de cliente com o valor definido na tabela de “Limite de Crédito”, para então fazer esta definição, deve-se após atualizar a tabela de limite abrir o cadastro de PN e na aba “Condições de Pagto.”, depois clicar na “Lupa” no campo do limite de crédito, carregando automaticamente o valor definido para o PN e permitindo que seu cadastro seja atualizado.

/wp-content/uploads/2013/12/33_367517.jpg

 

Pronto!!!

 

Ao final desta leitura, registre seu feedback adicionando um comentário, possibilitando a melhoria do documento.

Obrigado e espero ter colaborado.

Rodrigo da Costa Feula
#SBOBR #B1BR

To report this post you need to login first.

6 Comments

You must be Logged on to comment or reply to a post.

  1. Ribeiro Kelvin

    Eu faço e treino o pessoal pra criar e fazer controles como o limite de crédito

    por meio de alçada, que no SAP são os procedimentos de autorização.

    para melhorar o Dia a Dia do Usuário, Eu crio alguns campos nos Documentos de Marketing com a Intenção  de Ficarem no Pedido de Venda e quando o cara seleciona o Cliente já traz automatico em um campo o Limite de Credito, no outro quanto ele já gastou e no Outro a relação entre os dois que eu chamo de crédito disponivel, isso facilita a vida do cliente, do usuário e da consultoria.

    (0) 
  2. Adalberto Miglionni

    Olá, comecei minhas atividades como consultor SAP B1 a pouco tempo, e dicas como está como você colocou e muitas outras são de grande ajuda. Tenho experiência em outros ERP e já observei que o B1 é a melhor opção para médias e pequenas empresas, apesar de não ter algumas facilidades para o usuário, mas a possibilidade de criar recursos como este faz com que o uso do B1 ultrapasse em qualidade qualquer ERP do mercado.

    Gostei muito do material, obrigado !

    (0) 
    1. Rodrigo da Costa Feula Post author

      Adalberto, obrigado por seus comentários.

      Tenho certeza que utilizamos uma excelente solução, caberá a nós consultores e aos usuários tornarem a plataforma cada vez mais poderosa, utilizando o máximo dos recursos e explorando as funcionalidades existentes.

      Fico muito feliz em ver que a minha publicação colaborou para a sua percepção sobre o SBO.

      Abraços,

      Rodrigo da Costa Feula

      (0) 

Leave a Reply