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: https://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

 

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].

 

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…

 

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

Preencher os campos:

Título: VlrLimite

Descrição: Valor Limite R$

Tipo: Unidades e totais

Estrutura: Valor

Confirmar, clicando em [Sim]

 

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…

 

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

 

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

 

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 > ]

 

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

Depois clicar em [Seguinte > ]

 

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”

 

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 > ]

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

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

 

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 > ]

 

 

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

 

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

 

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

 

4. Definir consultas formatadas:

 

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

 

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”

 

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”

 

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

 

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

 

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]

 

 

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]

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”

 

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”.

 

 

 

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:

 

 

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.

 

 

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.

 

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.

 

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

New NetWeaver Information at SAP.com

Very Helpfull

User Rating: Be the first one !