Descrição dos procedimentos para utilização do custo em partes com e sem stored procedures.
Custo em Partes - Recálculo do Custo Médio
O recálculo do custo médio possibilita dividir o custo de produtos fabricados em mais de uma parte, facilitando a visualização da composição de custos dos produtos acabados.
O sistema permite dividir o custo de produtos fabricados em até 99 partes diferentes, cada parte nas 5 moedas padrão do sistema.
O usuário deve através do ponto de entrada "MA330CP" definir as regras que irão classificar cada matéria-prima em uma parte do custo. O número de partes é sempre acrescientado de mais uma parte que contempla os materiais que não se encontram em nenhuma regra.
Utilização do Custo em Partes somente em ADVPL
Para definir a regra do custo em partes deve-se utilizar o ponto de entrada MA330CP, abaixo segue um exemplo do ponto de entrada.
Ponto de entrada MA330CP (Ponto de entrada desenvolvido em ADVPL):
#include "RWMAKE.CH"
User Function MA330CP ()
LOCAL aRegraCP:={}
AADD(aRegraCP,"SB1->B1_TIPO == 'MP'")
AADD(aRegraCP,"SB1->B1_TIPO == 'MC'")
Return aRegraCP
Utilizando o exemplo acima mencionado, teríamos o custo divido em três partes:
· A parte 1 composta dos valores de produtos que tenham o campo B1_TIPO = "MP"
· A parte 2 composta dos valores de produtos que tenham o campo B1_TIPO = "MC"
· A parte 3 composta dos valores de produtos que não se enquadram nas partes citadas anteriormente
Para utilizar o custo em partes devem ser criados alguns campos no sistema, seguindo as regras e nomes que seguem abaixo. Se o ponto de entrada que define as regras do custo existir e os campos não forem criados, a rotina de recálculo do custo processará o recálculo do custo desconsiderando o custo em partes.
Os campos devem ser definidos utilizando a seguinte regra:
Arquivo SB9 – Saldos Iniciais
Campos:
B9_CP + CC + MM (Custo em partes) – B9_VINI1
B9_CPM + CC + MM (Custo em partes Unitário) – B9_CM1
Arquivo SB2 – Saldos em Estoque
Campos:
B2_CP + CC + MM (Custo em partes Unitário) – B2_CM1
B2_CPF + CC + MM (Custo em partes Final) – B2_VFIM1
Arquivo SB6 – Saldos em poder de terceiros
Campo:
B6_CP + CC + MM (Custo em partes) – B6_CUSTO1
Arquivo SC2 – Ordens de Produção
Campos:
C2_CPF + CC + MM (Custo em partes Final) – C2_VFIM1
C2_CPI + CC + MM (Custo em partes Inicial) – C2_VINI1
C2_API + CC + MM (Apropriação Inicial do Custo em partes) – C2_APRINI1
C2_APF + CC + MM (Apropriação Final do Custo em partes) – C2_APRFIM1
Arquivo SD1 – Itens das NFs de Entrada
Campo:
D1_CP + CC + MM (Custo em partes) – D1_CUSTO
Arquivo SD2 – Itens das NFs de Saída
Campo:
D2_CP + CC + MM (Custo em partes) – D2_CUSTO1
Arquivo SD3 – Movimentos Internos
Campo:
D3_CP + CC + MM (Custo em partes) – D2_CUSTO1
CC – Numero do Custo Em Partes
MM – Numero da Moeda (1 a 5)
Utilização do Custo em Partes com Stored Procedures
A utilização do custo em partes com stored procedures e mais complexa que a utilização em ADVPL, pois envolve a linguagem de programação SQL. Para definir a regra do custo em partes deve-se utilizar o ponto de entrada MA330CP em ADVPL e também em Stored Procedure além de algumas stored procedures adicionais, abaixo segue um exemplo de todo o procedimento a ser implementado para o correto funcionamento do custo em partes com stored procedures.
Ponto de entrada MA330CP (Ponto de entrada desenvolvido em ADVPL):
#include "rwmake.ch"
User Function MA330CP ()
LOCAL aRegraCP:={}
AADD(aRegraCP,"SB1->B1_TIPO == 'MP'")
AADD(aRegraCP,"SB1->B1_TIPO == 'MC'")
Return aRegraCP
Ponto de entrada MA330CP (Ponto de entrada desenvolvido em Linguagem SQL):
-- Criacao de procedure
CREATE PROCEDURE MA330CP_99 (
@IN_FILIALCOR Char( 02 ) ,
@IN_COD Char( 15) ,
@OUT_RESULTADO Integer output ) AS
-- Declaracoes de variaveis
DECLARE @cFil_SB1 Char( 2)
DECLARE @cB1_TIPO Char( 2)
BEGIN
EXEC XFILIAL_99 'SB1' , @IN_FILIALCOR , @cFil_SB1 output
SELECT @cB1_TIPO = B1_TIPO
FROM SB1990
WHERE B1_FILIAL = @cFil_SB1 and B1_COD = @IN_COD and D_E_L_E_T_ = ' '
SET @OUT_RESULTADO = 3
IF @cB1_TIPO = 'MP'
BEGIN
SET @OUT_RESULTADO = 1
END
IF @cB1_TIPO = 'MC'
BEGIN
SET @OUT_RESULTADO = 2
END
END
Atenção aos tópicos abaixo:
1. O ponto de entrada MA330CP acima foi escrito em linguagem SQL, caso esteja utilizando outro gerenciador de banco de dados devera compatibilizar a linguagem escrita
2. O nome da stored procedure devera ser compatibilizada de acordo com o ambiente do cliente, veja abaixo o exemplo:
Caso o cliente esteja utilizando a Empresa 01 devera alterar a chamada da procedure MA330CP_99 para MA330CP_01 e também devera alterar a chamada da procedures XFILIAL_99 para XFILIAL_01
Caso o cliente esteja utilizando a Empresa 01 devera alterar o nome físico da tabela SB1990 para SB1010.
3. A implementação do custo em partes exige um grau elevado de conhecimentos em stored procedures, por isso recomendamos que o procedimento acima seja efetuado por um profissional qualificado Totvs.
Utilizando o exemplo acima mencionado, teríamos o custo divido em três partes:
· A parte 1 composta dos valores de produtos que tenham o campo B1_TIPO = "MP"
· A parte 2 composta dos valores de produtos que tenham o campo B1_TIPO = "MC"
· A parte 3 composta dos valores de produtos que não se enquadram nas partes citadas anteriormente
Para utilizar o custo em partes devem ser criados alguns campos no sistema, seguindo as regras e nomes que seguem abaixo. Se o ponto de entrada que define as regras do custo existir e os campos não forem criados, a rotina de recálculo do custo processará o recálculo do custo desconsiderando o custo em partes.
Os campos devem ser definidos utilizando a seguinte regra:
Arquivo SB9 – Saldos Iniciais
Campos:
B9_CP + CC + MM (Custo em partes)
B9_CPM + CC + MM (Custo em partes Unitário)
Arquivo SB2 – Saldos em Estoque
Campos:
B2_CP + CC + MM (Custo em partes Unitário)
B2_CPF + CC + MM (Custo em partes Final)
Arquivo SB6 – Saldos em poder de terceiros
Campo:
B6_CP + CC + MM (Custo em partes)
Arquivo SC2 – Ordens de Produção
Campos:
C2_CPF + CC + MM (Custo em partes Final)
C2_CPI + CC + MM (Custo em partes Inicial)
C2_API + CC + MM (Apropriação Inicial do Custo em partes)
C2_APF + CC + MM (Apropriação Final do Custo em partes)
Arquivo SD1 – Itens das NFs de Entrada
Campo:
D1_CP + CC + MM (Custo em partes)
Arquivo SD2 – Itens das NFs de Saída
Campo:
D2_CP + CC + MM (Custo em partes)
Arquivo SD3 – Movimentos Internos
Campo:
D3_CP + CC + MM (Custo em partes)
CC – Numero do Custo Em Partes
MM – Numero da Moeda (1 a 5)
Além dos campos acima também deve ser ajustadas as stored procedures M330INB2CP, M330INC2CP, MA280INB9CP e MA280INC2CP. Este ajuste se faz necessário devido à implementação dos novos campos. Veja abaixo os exemplos de como realizar o ajuste: