Pagetitle |
---|
| Custo em Partes - Recálculo do Custo Médio |
---|
| Custo em Partes - Recálculo do Custo Médio |
---|
|
Sugerimos usar a referencia mais atualizada do link : Custo em Partes - Recálculo do Custo Médio
Custo em Partes - Recálculo do Custo MédioDescrição dos procedimentos para utilização do custo em partes com e sem stored procedures. 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 acrescido de mais uma parte, a qual contempla os materiais que não se encontram em nenhuma regra. Utilização do Custo em Partes somente em ADVPLPara definir a regra de utilização do custo em partes, deve-se utilizar o ponto de entrada MA330CP. Abaixo segue um exemplo do ponto de entrada. Ponto de entrada MA330CP ( desenvolvido em linguagem AdvPL):
Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | MA330CP |
---|
linenumbers | true |
---|
| #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 descrito, é possível verificar 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 do quadro 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:CC – Numero do Custo Em Partes MM – Numero da Moeda (1 a 5)
TABELA | CAMPOS |
---|
SB9 – Saldos Iniciais | B9_CP + CC + MM (Custo em partes) – B9_VINI1
B9_CPM + CC + MM (Custo em partes Unitário) – B9_CM1 |
SB2 – Saldos em Estoque | B2_CP + CC + MM (Custo em partes Unitário) – B2_CM1
B2_CPF + CC + MM (Custo em partes Final) – B2_VFIM1 | SB6 – Saldos em poder de terceiros | B6_CP + CC + MM (Custo em partes) – B6_CUSTO1 |
SC2 – Ordens de Produção | 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 | SD1 – Itens das NFs de Entrada | D1_CP + CC + MM (Custo em partes) – D1_CUSTO | SD2 – Itens das NFs de Saída | D2_CP + CC + MM (Custo em partes) – D2_CUSTO1 | SD3 – Movimentos Internos | D3_CP+ CC + MM (Custo em partes) – D2_CUSTO1 |
Para processar o custo em partes em ADVPL, as procedures padrões não devem estar instaladas. Exemplo: se o processo 17 (Virada de Saldos) estiver instalado e as procedures do Custo em Partes não existirem no banco de dados, o sistema não atualizará as informações do custo em partes nas tabelas envolvidas. Utilização do Custo em Partes com Stored ProceduresA utilização do custo em partes com stored procedures é mais complexa que a utilização em ADVPL, pois, envolve a linguagem de programação SQL. Para definir a regra do custo em partes, é necessário utilizar o ponto de entrada MA330CP em ADVPL e, também, em Stored Procedure além de algumas stored procedures adicionais. Veja um exemplo de todo o procedimento a ser implementado para o correto funcionamento do custo em partes com stored procedures. Ponto de entrada MA330CP ( desenvolvido em linguagem AdvPL): Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | MA330CP |
---|
linenumbers | true |
---|
| #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): Bloco de código |
---|
language | sql |
---|
theme | Midnight |
---|
title | MA330CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
CREATE PROCEDURE MA330CP_99 (
| Bloco de código |
---|
language | sql |
---|
theme | Midnight |
---|
title | MA330CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
CREATE PROCEDURE MA330CP_99 ( @IN_FILIALCOR Char( 02 ) ,
@IN_FILIALCOR Char( 02 ) ,
@IN_COD Char( 15) ,
@OUT_RESULTADO Integer output @OUT_RESULTADO Integer output ) AS) AS
-- Declarações de variáveis
DECLARE @cFil_SB1 Char( 2)
DECLARE @cB1_TIPO Char( 2)
BEGIN
EXEC XFILIAL_19_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 foi escrito em linguagem SQL. Caso esteja utilizando outro gerenciador de banco de dados, é necessário fazer a compatibilização da linguagem escrita. 2. O nome da stored procedure deverá ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Caso o cliente esteja utilizando a Empresa 01, deve alterar a chamada da procedure MA330CP_99 para MA330CP_01 e, também, alterar a chamada da procedure XFILIAL_19_99 para XFILIAL_19_01. Caso não seja feita essa alteração, e seja mantida a chamada XFILIAL_19_99, ao salvar a procedure no banco de dados será apresentada a seguinte mensagem: "O módulo 'MA330CP_01' depende do objeto ausente 'XFILIAL_19_99'. O módulo ainda será criado; entretanto, não poderá ser executado com êxito até o objeto existir." Caso o cliente esteja utilizando a Empresa 01, é necessário 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. Desta forma, é recomendado que o procedimento descrito seja efetuado por um profissional qualificado TOTVS. Utilizando o exemplo, é possível verificar 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
Para utilizar o custo em partes devem ser criados alguns campos no sistema seguindo as regras e nomes, conforme quadro 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: CC – Numero do Custo Em Partes MM – Numero da Moeda (1 a 5) TABELA | CAMPOS |
---|
SB9 – Saldos Iniciais | B9_CP + CC + MM (Custo em partes) – B9_VINI1
B9_CPM + CC + MM (Custo em partes Unitário) – B9_CM1 |
SB2 – Saldos em Estoque | B2_CP + CC + MM (Custo em partes Unitário) – B2_CM1
B2_CPF + CC + MM (Custo em partes Final) – B2_VFIM1 | SB6 – Saldos em poder de terceiros | B6_CP + CC + MM (Custo em partes) – B6_CUSTO1 |
SC2 – Ordens de Produção | 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 | SD1 – Itens das NFs de Entrada | D1_CP + CC + MM (Custo em partes) – D1_CUSTO | SD2 – Itens das NFs de Saída | D2_CP + CC + MM (Custo em partes) – D2_CUSTO1 | SD3 – Movimentos Internos | D3_CP+ CC + MM (Custo em partes) – D2_CUSTO1 |
Além dos campos descritos, também devem ser ajustadas as stored procedures M330INB2CP, M330INC2CP, MA280INB9CP e MA280INC2CP. Este ajuste é necessário devido à implementação dos novos campos. Exemplos de como realizar o ajuste: Stored Procedure M330INB2CP Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | M330INB2CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
ALTER PROCEDURE M330INB2CP_99 ( @IN_FILIALCOR Char( 02 ) ,
@IN_DINICIO Char( 08 ) ,
@IN_CUSUNIF Char( 01 ) ,
@IN_COD Char( 15 ) ,
@IN_LOCAL Char( 2 ) ,
@IN_RECNOSB2 Integer ) AS
-- Declarações de variáveis
DECLARE @nB2_VFIM1 Float
DECLARE @nB2_VFIM2 Float
DECLARE @nB2_VFIM3 Float
DECLARE @nB2_VFIM4 Float
DECLARE @IN@nB2_DINICIOVFIM5 Float
-- Custo em Char( 08 ) ,
Partes Total
DECLARE @nB9_CP0101 Float
DECLARE @nB9_CP0102 Float
DECLARE @nB9_CP0103 Float
DECLARE @nB9_CP0104 Float
DECLARE @nB9_CP0105 Float
DECLARE @nB9_CP0201 Float
DECLARE @nB9_CP0202 Float
DECLARE @nB9_CP0203 Float
DECLARE @nB9_CP0204 Float
DECLARE @nB9_CP0205 Float
DECLARE @nB9_CP0301 Float
DECLARE @nB9_CP0302 Float
DECLARE @nB9_CP0303 Float
DECLARE @nB9_CP0304 Float
DECLARE @nB9_CP0305 Float
-- Custo em Partes Unitário
DECLARE @nB9_CPM0101 Float
DECLARE @nB9_CPM0102 Float
DECLARE @nB9_CPM0103 Float
DECLARE @nB9_CPM0104 Float
DECLARE @nB9_CPM0105 Float
DECLARE @nB9_CPM0201 Float
DECLARE @nB9_CPM0202 Float
DECLARE @nB9_CPM0203 Float
DECLARE @nB9_CPM0204 Float
DECLARE @nB9_CPM0205 Float
DECLARE @nB9_CPM0301 Float
DECLARE @nB9_CPM0302 Float
DECLARE @nB9_CPM0303 Float
DECLARE @nB9_CPM0304 Float
DECLARE @nB9_CPM0305 Float
DECLARE @nParte Integer
DECLARE @nQtd Float
DECLARE @IN@cFil_CUSUNIFSB9 Char( 0102 )
DECLARE @iRecnoTRT , Integer
BEGIN
EXEC XFILIAL_19_99 'SB9' , @IN_FILIALCOR , @cFil_SB9 output
UPDATE SB2990
WITH (ROWLOCK)
SET B2_CPF0101= 0, B2_CPF0102= 0, B2_CPF0103= 0, B2_CPF0104= 0, B2_CPF0105= 0 ,
B2_CPF0201= 0, B2_CPF0202= 0, B2_CPF0203= 0, B2_CPF0204= 0, B2_CPF0205= 0 ,
@IN_COD B2_CPF0301= 0, Char( 15 ) ,
B2_CPF0302= 0, B2_CPF0303= 0, B2_CPF0304= 0, B2_CPF0305= 0 ,
B2_CP0101 = 0, B2_CP0102 = 0, B2_CP0103 = 0, B2_CP0104 = 0, B2_CP0105 = 0 ,
B2_CP0201 = 0, B2_CP0202 = 0, B2_CP0203 = 0, B2_CP0204 = 0, B2_CP0205 = 0 ,
@IN_LOCAL Char( 2 B2_CP0301 )= 0,
B2_CP0302 = 0, B2_CP0303 = 0, B2_CP0304 = 0, B2_CP0305 = 0
WHERE R_E_C_N_O_ = @IN_RECNOSB2
IF SUBSTRING ( @IN_COD , 1 , 3 ) <> 'MOD'
BEGIN
SELECT @nB9_CP0101 = ISNULL (B9_CP0101,0), @nB9_CP0102 = ISNULL (B9_CP0102,0),
@IN_RECNOSB2 Integer ) AS
-- Declarações de variáveis
DECLARE @nB2_VFIM1 Float
DECLARE @nB2_VFIM2 Float
DECLARE @nB2_VFIM3 Float
DECLARE @nB2_VFIM4 Float
DECLARE @nB2_VFIM5 Float
-- Custo em Partes Total
DECLARE @nB9_CP0101 Float
DECLARE @nB9_CP0102 Float
DECLARE @nB9_CP0103 Float
DECLARE @nB9_CP0104 Float
DECLARE @nB9_CP0105 Float
DECLARE @nB9_CP0201 Float
DECLARE @nB9_CP0202 Float
DECLARE @nB9_CP0203 Float
DECLARE @nB9_CP0204 Float
DECLARE @nB9_CP0205 Float
DECLARE @nB9_CP0301 Float
DECLARE @nB9_CP0302 Float
DECLARE @nB9_CP0303 Float
DECLARE @nB9_CP0304 Float
DECLARE @nB9_CP0305 Float
-- Custo em Partes Unitário
DECLARE @nB9_CPM0101 Float
DECLARE @nB9_CPM0102 Float
DECLARE @nB9_CPM0103 Float
DECLARE @nB9_CPM0104 Float
DECLARE @nB9_CPM0105 Float
DECLARE @nB9_CPM0201 Float
DECLARE @nB9_CPM0202 Float
DECLARE @nB9_CPM0203 Float
DECLARE @nB9_CPM0204 Float
DECLARE @nB9_CPM0205 Float
DECLARE @nB9_CPM0301 Float
DECLARE @nB9_CPM0302 Float
DECLARE @nB9_CPM0303 Float
DECLARE @nB9_CPM0304 Float
DECLARE @nB9_CPM0305 Float
DECLARE @nParte Integer
DECLARE @nQtd @nB9_CP0103 = ISNULL (B9_CP0103,0), @nB9_CP0104 = ISNULL (B9_CP0104,0),
@nB9_CP0105 = ISNULL (B9_CP0105,0), @nB9_CP0201 = ISNULL (B9_CP0201,0),
@nB9_CP0202 = ISNULL (B9_CP0202,0), @nB9_CP0203 = ISNULL (B9_CP0203,0),
Float
DECLARE @cFil@nB9_SB9CP0204 = ISNULL Char( 02 )
DECLARE @iRecnoTRT Integer
BEGIN
EXEC XFILIAL_99 'SB9' , @IN_FILIALCOR , @cFil_SB9 output
UPDATE SB2990
(B9_CP0204,0), @nB9_CP0205 = ISNULL (B9_CP0205,0),
WITH (ROWLOCK)
SET B2@nB9_CPF0101CP0301 = 0,ISNULL B2_CPF0102= 0(B9_CP0301,0), B2@nB9_CPF0103CP0302 = 0,ISNULL B2_CPF0104= 0, B2_CPF0105= 0 ,(B9_CP0302,0),
B2_CPF0201= 0, B2_CPF0202= 0, B2_CPF0203= 0, B2_CPF0204= 0, B2_CPF0205= 0 ,
@nB9_CP0303 = ISNULL (B9_CP0303,0), @nB9_CP0304 = ISNULL (B9_CP0304,0),
B2_CPF0301= 0, B2_CPF0302= 0, B2@nB9_CPF0303CP0305 = 0,ISNULL B2_CPF0304= 0, B2_CPF0305= 0 ,
(B9_CP0305,0),
B2_CP0101 = 0, B2@nB9_CP0102CPM0101 = ISNULL (B9_CPM0101,0), B2@nB9_CP0103CPM0102 = ISNULL (B9_CPM0102,0),
B2_CP0104 = 0, B2_CP0105 = 0 ,
B2@nB9_CP0201CPM0103 = ISNULL (B9_CPM0103,0), B2@nB9_CP0202CPM0104 = ISNULL (B9_CPM0104,0),
B2_CP0203 = 0, B2_CP0204 = 0, B2_CP0205 = 0 ,
B2@nB9_CP0301CPM0105 = 0,ISNULL B2_CP0302 = 0(B9_CPM0105,0), B2@nB9_CP0303CPM0201 = 0,ISNULL B2_CP0304 = 0, B2_CP0305 = 0
(B9_CPM0201,0), WHERE R_E_C_N_O_ = @IN_RECNOSB2
IF SUBSTRING (
@IN_COD , 1 , 3 ) <> 'MOD'
BEGIN
SELECT @nB9_CP0101CPM0202 = ISNULL (B9_CP0101CPM0202,0), @nB9_CP0102CPM0203 = ISNULL (B9_CP0102CPM0203,0),
@nB9_CP0103CPM0204 = ISNULL (B9_CP0103CPM0204,0), @nB9_CP0104CPM0205 = ISNULL (B9_CP0104CPM0205,0),
@nB9_CP0105CPM0301 = ISNULL (B9_CP0105CPM0301,0), @nB9_CP0201CPM0302 = ISNULL (B9_CP0201CPM0302,0),
@nB9_CP0202CPM0303 = ISNULL (B9_CP0202CPM0303,0), @nB9_CP0203CPM0304 = ISNULL (B9_CP0203CPM0304,0),
@nB9_CP0204CPM0305 = ISNULL (B9_CP0204CPM0305,0), @nB9_CP0205 = ISNULL (B9_CP0205,0),
FROM SB9990
WHERE B9_FILIAL = @cFil_SB9
@nB9_CP0301 = ISNULL (B9_CP0301,0), @nB9_CP0302 = ISNULLand (B9_CP0302,0),COD = @IN_COD
and B9_LOCAL = @IN_LOCAL
@nB9_CP0303 = ISNULL (B9_CP0303,0), @nB9_CP0304 = ISNULL (B9_CP0304,0),
and B9_DATA = ( SELECT MAX @nB9_CP0305 = ISNULL (B9_CP0305,0),( B9_DATA )
@nB9_CPM0101 = ISNULL (B9_CPM0101,0), @nB9_CPM0102 = ISNULL (B9_CPM0102,0),
@nB9_CPM0103 =FROM ISNULL (B9_CPM0103,0), @nB9_CPM0104 = ISNULL (B9_CPM0104,0),
SB9990
@nB9_CPM0105 = ISNULL (B9_CPM0105,0), @nB9_CPM0201 = ISNULL (B9_CPM0201,0), WHERE B9_FILIAL = @cFil_SB9 and
@nB9_CPM0202 = ISNULL (B9_CPM0202,0), @nB9_CPM0203 = ISNULL (B9_CPM0203,0),
@nB9_CPM0204 = ISNULL (B9_CPM0204,0), @nB9_CPM0205COD = ISNULL (B9_CPM0205,0),
@IN_COD and
@nB9_CPM0301 = ISNULL (B9_CPM0301,0), @nB9_CPM0302 = ISNULL (B9_CPM0302,0),
@nB9_CPM0303 = ISNULL (B9_CPM0303,0), @nB9_CPM0304 = ISNULL (B9_CPM0304,0),
B9_LOCAL = @IN_LOCAL and
@nB9_CPM0305 = ISNULL (B9_CPM0305,0)
FROM SB9990
WHERE B9_FILIAL = @cFil_SB9
and B9_COD = @IN_COD
and B9_LOCALDATA <= @IN_LOCALDINICIO and
and B9_DATA = ( SELECT MAX ( B9_DATA )
FROM SB9990
D_E_L_E_T_ <> '*' )
WHERE B9_FILIAL = @cFil_SB9 and D_E_L_E_T_ <> '*'
END
andELSE
BEGIN
EXEC MA330CP_99 @IN_FILIALCOR , @IN_COD , @nParte output
SELECT @nB2_VFIM1 = ISNULL ( B2_VFIM1 , 0 ),
B9_COD = @IN@nB2_CODVFIM2 = ISNULL ( B2_VFIM2 , 0 and ),
@nB2_VFIM3 = ISNULL ( B2_VFIM3 , 0 ),
B9@nB2_LOCALVFIM4 = ISNULL @IN( B2_LOCALVFIM4 , 0 and ),
@nB2_VFIM5 = ISNULL ( B2_VFIM5 , 0 )
FROM SB2990
WHERE B9_DATAR_E_C_N_O_ <= @IN_DINICIORECNOSB2 and
SET @nB9_CP0101 = 0
SET @nB9_CP0102 = 0
SET @nB9_CP0103 = 0
SET @nB9_CP0104 = 0
SET @nB9_CP0105 = 0
SET @nB9_CP0201 = 0
SET @nB9_CP0202 = 0
SET @nB9_CP0203 = 0
SET @nB9_CP0204 = 0
SET D_E_L_E_T_@nB9_CP0205 <> '*' )= 0
SET @nB9_CP0301 = 0
and SET D_E_L_E_T_@nB9_CP0302 <>= '*'0
ENDSET
@nB9_CP0303 = ELSE0
BEGIN
SET @nB9_CP0304 = 0
EXEC MA330CP_99 @IN_FILIALCOR , @IN_COD , @nParte output SET @nB9_CP0305 = 0
SELECT @nB2_VFIM1 IF @nParte = ISNULL1 (
B2_VFIM1 , 0 ),
BEGIN
SET @nB9_CP0101 = @nB2_VFIM1
SET @nB2@nB9_VFIM2CP0102 = ISNULL ( B2@nB2_VFIM2 , 0 ),
SET @nB9_CP0103 = @nB2_VFIM3
SET @nB2@nB9_VFIM3CP0104 = ISNULL ( B2_VFIM3 , 0 ),
@nB2_VFIM4
SET @nB9_CP0105 = @nB2_VFIM5
END
IF @nB2_VFIM4@nParte = ISNULL2 (
B2_VFIM4 , 0 ),
BEGIN
SET @nB9_CP0201 = @nB2_VFIM1
@nB2SET @nB9_VFIM5CP0202 = ISNULL ( B2_VFIM5 , 0 )@nB2_VFIM2
SET @nB9_CP0203 = FROM@nB2_VFIM3 SB2990
SET WHERE R_E_C_N_O_@nB9_CP0204 = @IN@nB2_RECNOSB2VFIM4
SET @nB9_CP0101CP0205 = 0@nB2_VFIM5
SET @nB9_CP0102 = 0END
SETIF @nB9_CP0103@nParte = 03
SETBEGIN @nB9_CP0104
= 0
SET @nB9_CP0105CP0301 = 0@nB2_VFIM1
SET @nB9_CP0201CP0302 = 0@nB2_VFIM2
SET @nB9_CP0202CP0303 = 0@nB2_VFIM3
SET @nB9_CP0203CP0304 = 0@nB2_VFIM4
SET @nB9_CP0204CP0305 = 0@nB2_VFIM5
SETEND @nB9_CP0205
= 0END
SET @nB9_CP0301 = 0
SET @nB9_CP0302 = 0
-- Removendo valores Nulos
SET @nB9_CP0101 = ISNULL ( @nB9_CP0101 , 0 )
SET @nB9_CP0303CP0102 = ISNULL 0(
@nB9_CP0102 , 0 )
SET @nB9_CP0304CP0103 = ISNULL 0(
@nB9_CP0103 , 0 )
SET @nB9_CP0305CP0104 = 0ISNULL
( @nB9_CP0104 , 0 )
SET @nB9_CP0105 = ISNULL IF( @nParte@nB9_CP0105 , =0 1 )
SET @nB9_CP0201 BEGIN=
ISNULL ( @nB9_CP0201 , 0 )
SET @nB9_CP0101CP0202 = @nB2_VFIM1ISNULL
( @nB9_CP0202 , 0 )
SET @nB9_CP0102CP0203 = @nB2_VFIM2ISNULL
( @nB9_CP0203 , 0 )
SET @nB9_CP0103CP0204 = @nB2_VFIM3ISNULL
( @nB9_CP0204 , 0 )
SET @nB9_CP0104CP0205 = @nB2_VFIM4ISNULL
( @nB9_CP0205 , 0 )
SET @nB9_CP0105CP0301 = @nB2_VFIM5ISNULL
( @nB9_CP0301 , 0 )
END
SET @nB9_CP0302 = ISNULL ( IF@nB9_CP0302 @nParte, 0 = 2 )
SET @nB9_CP0303 BEGIN=
ISNULL ( @nB9_CP0303 , 0 )
SET @nB9_CP0201CP0304 = @nB2_VFIM1ISNULL
( @nB9_CP0304 , 0 )
SET @nB9_CP0202CP0305 = @nB2_VFIM2ISNULL
( @nB9_CP0305 , 0 )
SET @nB9_CP0203CPM0101 = @nB2_VFIM3ISNULL
( @nB9_CPM0101 , 0 )
SET @nB9_CP0204CPM0102 = @nB2_VFIM4ISNULL
( @nB9_CPM0102 , 0 )
SET @nB9_CP0205CPM0103 = @nB2_VFIM5ISNULL
( @nB9_CPM0103 , 0 END )
SET @nB9_CPM0104 = IFISNULL @nParte( @nB9_CPM0104 =, 30 )
SET @nB9_CPM0105 = BEGINISNULL
( @nB9_CPM0105 , 0 )
SET @nB9_CP0301CPM0201 = @nB2_VFIM1ISNULL
( @nB9_CPM0201 , 0 )
SET @nB9_CP0302CPM0202 = @nB2_VFIM2ISNULL
( @nB9_CPM0202 , 0 )
SET @nB9_CP0303CPM0203 = @nB2_VFIM3ISNULL
( @nB9_CPM0203 , 0 )
SET @nB9_CP0304CPM0204 = @nB2_VFIM4ISNULL
( @nB9_CPM0204 , 0 )
SET @nB9_CP0305CPM0205 = @nB2_VFIM5ISNULL
( @nB9_CPM0205 , END
END 0 )
-- Removendo valores Nulos
SET @nB9_CP0101CPM0301 = ISNULL ( @nB9_CP0101CPM0301 , 0 )
SET @nB9_CP0102CPM0302 = ISNULL ( @nB9_CP0102CPM0302 , 0 )
SET @nB9_CP0103CPM0303 = ISNULL ( @nB9_CP0103CPM0303 , 0 )
SET @nB9_CP0104CPM0304 = ISNULL ( @nB9_CP0104CPM0304 , 0 )
SET @nB9_CP0105CPM0305 = ISNULL ( @nB9_CP0105CPM0305 , 0 )
-- Tratamento para Custo Unificado
SETIF @nB9@IN_CP0201CUSUNIF = '1' ISNULL
( @nB9_CP0201 ,BEGIN 0
)
SETSELECT @nB9_CP0202@iRecnoTRT = ISNULL ( MAX ( @nB9_CP0202 R_E_C_N_O_ ), 0 )
SET @nB9_CP0203 = ISNULLFROM (TRT99SP
@nB9_CP0203 , 0 )
WHERE SET @nB9_CP0204TRB_FILIAL = @IN_FILIALCOR
= ISNULL ( @nB9_CP0204 , 0 )
SETAND @nB9TRB_CP0205COD = ISNULL@IN_COD
( @nB9_CP0205 , 0 )
SET @nB9_CP0301 IF @iRecnoTRT = ISNULL0 (
@nB9_CP0301 , 0 )
SET @nB9_CP0302BEGIN
= ISNULL ( @nB9_CP0302 , 0 )
SETSELECT @nB9_CP0303@iRecnoTRT = ISNULL ( @nB9_CP0303 MAX ( R_E_C_N_O_ ), 0 )
SET @nB9_CP0304 = ISNULL ( @nB9_CP0304 , 0 )
FROM TRT99SP
SET @nB9_CP0305 = ISNULL ( @nB9_CP0305 , 0 )
SET @nB9_CPM0101@iRecnoTRT = ISNULL@iRecnoTRT ( @nB9_CPM0101+ ,1 0
)
SET @nB9_CPM0102 INSERT =INTO ISNULLTRT99SP ( @nB9TRB_CPM0102COD , 0R_E_C_N_O_ )
SET @nB9_CPM0103 = ISNULLVALUES ( @nB9@IN_CPM0103COD , 0@iRecnoTRT )
SET @nB9_CPM0104 = ISNULLEND (
@nB9_CPM0104 , 0 )
SETSELECT @nB9_CPM0105@nQtd = ISNULL ( @nB9TRB_CPM0105QFIM , 0 )
SET @nB9_CPM0201 = ISNULLFROM (TRT99SP
@nB9_CPM0201 , 0 )
SET @nB9_CPM0202WHERE R_E_C_N_O_ = @iRecnoTRT ISNULL
(
@nB9_CPM0202 , 0 )
SET @nB9_CPM0203IF @nQtd = ISNULL0
( @nB9_CPM0203 , 0 )BEGIN
SET @nB9_CPM0204 = ISNULL ( @nB9_CPM0204 , 0 )
SET @nQtd @nB9_CPM0205= 1
= ISNULL ( @nB9_CPM0205 , 0 )END
SET @nB9_CPM0301 = ISNULL ( @nB9_CPM0301 , 0 )
SET @nB9_CPM0302 = ISNULL ( @nB9_CPM0302 , 0 )
SET @nB9_CPM0303 = ISNULL ( @nB9_CPM0303 , 0 )
SET @nB9_CPM0304 = ISNULL ( @nB9_CPM0304 , 0 )
SET @nB9_CPM0305 = ISNULL ( @nB9_CPM0305 , 0 )
-- Tratamento para Custo Unificado
IF @IN_CUSUNIF = '1'
BEGIN
-- Atualiza o Custo Unificado
UPDATE TRT99SP WITH (ROWLOCK)
SET TRB_VF0101 = TRB_VF0101 + @nB9_CP0101,
SELECT @iRecnoTRTTRB_VF0102 = ISNULLTRB_VF0102 ( MAX ( R_E_C_N_O_ ), 0 )
+ @nB9_CP0102,
FROM TRT990
WHERE TRB_FILIAL = @IN_FILIALCOR
AND TRB_CODVF0103 = @INTRB_COD
VF0103 + @nB9_CP0103,
IF @iRecnoTRT = 0
BEGIN
SELECTTRB_VF0104 @iRecnoTRT = =TRB_VF0104 ISNULL ( MAX ( R_E_C_N_O_ ), 0 )
+ @nB9_CP0104,
FROM TRT990
SET @iRecnoTRTTRB_VF0105 = @iRecnoTRT TRB_VF0105 + 1 @nB9_CP0105,
INSERT INTO TRT010 (TRB_COD , R_E_C_N_O_ )
VALUES (@IN_COD , @iRecnoTRT )
TRB_VF0201 = TRB_VF0201 END
+ @nB9_CP0201,
SELECT @nQtd = ISNULL ( TRB_QFIM , 0 )
FROM TRT990
WHERE R_E_C_N_O_TRB_VF0202 = @iRecnoTRTTRB_VF0202
+
@nB9_CP0202,
IF @nQtd = 0 BEGIN
SET @nQtd = 1
END
TRB_VF0203 = TRB_VF0203 + @nB9_CP0203,
UPDATE TRT990
WITH (ROWLOCK)
SET TRB_VF0101VF0204 = TRB_VF0101VF0204 + @nB9_CP0101CP0204,
TRB_VF0102VF0205 = TRB_VF0102VF0205 + @nB9_CP0102CP0205,
TRB_VF0103VF0301 = TRB_VF0103VF0301 + @nB9_CP0103CP0301,
TRB_VF0104VF0302 = TRB_VF0104VF0302 + @nB9_CP0104CP0302,
TRB_VF0105VF0303 = TRB_VF0105VF0303 + @nB9_CP0105CP0303,
TRB_VF0201VF0304 = TRB_VF0201VF0304 + @nB9_CP0201CP0304,
TRB_VF0202VF0305 = TRB_VF0202VF0305 + @nB9_CP0202CP0305,
TRB_VF0203CP0101 = TRB_VF0203VF0101 + (@nB9_CP0203CP0101 / @nQtd) ,
TRB_VF0204CP0102 = TRB_VF0204VF0102 + (@nB9_CP0204,CP0102 / @nQtd ),
TRB_VF0205 TRB_CP0103 = TRB_VF0205VF0103 + (@nB9_CP0205CP0103 / @nQtd) ,
TRB_VF0301CP0104 = TRB_VF0301VF0104 + (@nB9_CP0301,
CP0104 / @nQtd),
TRB_VF0302CP0105 = TRB_VF0302VF0105 + (@nB9_CP0302CP0105 / @nQtd) ,
TRB_VF0303CP0201 = TRB_VF0303VF0201 + (@nB9_CP0303,CP0201 / @nQtd) ,
TRB_VF0304CP0202 = TRB_VF0304VF0202 + (@nB9_CP0304,
CP0202 / @nQtd) ,
TRB_VF0305 = TRB_VF0305 + @nB9_CP0305,
TRB_CP0101CP0203 = TRB_VF0101VF0203 + (@nB9_CP0101CP0203 / @nQtd) ,
TRB_CP0102CP0204 = TRB_VF0102VF0204 + (@nB9_CP0102CP0204 / @nQtd) ,
TRB_CP0103CP0205 = TRB_VF0103VF0205 + (@nB9_CP0103CP0205 / @nQtd) ,
TRB_CP0104CP0301 = TRB_VF0104VF0301 + (@nB9_CP0104CP0301 / @nQtd) ,
TRB_CP0105CP0302 = TRB_VF0105VF0302 + (@nB9_CP0105CP0302 / @nQtd) ,
TRB_CP0201CP0303 = TRB_VF0201VF0303 + (@nB9_CP0201CP0303 / @nQtd) ,
TRB_CP0202 TRB_CP0304 = TRB_VF0202VF0304 + (@nB9_CP0202CP0304 / @nQtd) ,
TRB_CP0203CP0305 = TRB_VF0203VF0305 + (@nB9_CP0203CP0305 / @nQtd ,)
WHERE R_E_C_N_O_ = @iRecnoTRT TRB_CP0204
= TRB_VF0204 + @nB9_CP0204 / @nQtd
,END
UPDATE SB2990
WITH (ROWLOCK)
SET TRBB2_CP0205CPF0101 = TRB@nB9_VF0205CP0101 +, @nB9B2_CP0205CPF0102 /= @nQtd@nB9_CP0102 ,
B2_CPF0103 = @nB9_CP0103 , TRBB2_CP0301CPF0104 = TRB@nB9_VF0301CP0104 +,
@nB9_CP0301 / @nQtd ,
B2_CPF0105 = @nB9_CP0105 ,
TRB_CP0302 B2_CPF0201 = TRB@nB9_VF0302CP0201 +, @nB9B2_CP0302CPF0202 /= @nQtd@nB9_CP0202 ,
B2_CPF0203 = @nB9_CP0203 , TRBB2_CP0303CPF0204 = TRB_VF0303 + @nB9_CP0303 / @nQtdCP0204 ,
TRB_CP0304B2_CPF0205 = TRB_VF0304 + @nB9_CP0304CP0205 / @nQtd ,
B2_CPF0301 = @nB9_CP0301 , TRBB2_CP0305CPF0302 = TRB@nB9_VF0305CP0302 +, @nB9_CP0305
/ @nQtd
WHERE R_E_C_N_O_ = @iRecnoTRT
END
UPDATE SB2990
B2_CPF0303 = @nB9_CP0303 , B2_CPF0304 = @nB9_CP0304 ,
WITH (ROWLOCK)
SET B2_CPF0101CPF0305 = @nB9_CP0101 , B2_CPF0102 = @nB9_CP0102 ,CP0305
WHERE R_E_C_N_O_ = @IN_RECNOSB2
SELECT B2_CPF0103@nQtd = @nB9_CP0103ISNULL ,( B2_CPF0104QFIM , = @nB9_CP0104 ,0 )
FROM SB2990
B2_CPF0105WHERE R_E_C_N_O_ = @nB9@IN_CP0105RECNOSB2 ,
IF @nQtd = 0
BEGIN
SET @nQtd = 1
B2_CPF0201UPDATE SB2010 WITH (ROWLOCK)
= @nB9_CP0201 ,SET B2_CPF0202CP0101 = @nB9_CP0202 CPM0101,
B2_CPF0203 = @nB9_CP0203 , B2_CPF0204CP0102 = @nB9_CP0204 CPM0102,
B2_CPF0205CP0103 = @nB9_CP0205CPM0103,
,
B2_CPF0301CP0104 = @nB9_CP0301 CPM0104,
B2_CPF0302 = @nB9_CP0302 ,
B2_CP0105 = @nB9_CPM0105,
B2_CPF0303 = @nB9_CP0303 , B2_CPF0304CP0201 = @nB9_CP0304 CPM0201,
B2_CPF0305CP0202 = @nB9_CP0305 CPM0202,
WHERE R_E_C_N_O_ = @IN_RECNOSB2
SELECT @nQtdB2_CP0203 = ISNULL ( B2_QFIM , 0 )
@nB9_CPM0203,
FROM SB2990
WHERE R_E_C_N_O_B2_CP0204 = @IN_RECNOSB2
@nB9_CPM0204,
IF @nQtd = 0
BEGIN
SET @nQtd = 1
B2_CP0205 = UPDATE SB2010@nB9_CPM0205,
WITH (ROWLOCK)
SET B2_CP0101CP0301 = @nB9_CPM0101CPM0301,
B2_CP0102CP0302 = @nB9_CPM0102CPM0302,
B2_CP0103CP0303 = @nB9_CPM0103CPM0303,
B2_CP0104CP0304 = @nB9_CPM0104CPM0304,
B2_CP0105CP0305 = @nB9_CPM0105,CPM0305
WHERE R_E_C_N_O_ = B2_CP0201 = @nB9_CPM0201,
@IN_RECNOSB2
END ELSE
BEGIN
UPDATE SB2010 WITH (ROWLOCK)
SET B2_CP0202CP0101 = @nB9_CPM0202CP0101 / @nQtd ,
B2_CP0203CP0102 = @nB9_CPM0203CP0102 / @nQtd ,
B2_CP0204CP0103 = @nB9_CPM0204CP0103 / @nQtd ,
B2_CP0205CP0104 = @nB9_CPM0205,
CP0104 / @nQtd ,
B2_CP0301CP0105 = @nB9_CPM0301,
CP0105 / @nQtd ,
B2_CP0302CP0201 = @nB9_CPM0302,
CP0201 / @nQtd ,
B2_CP0303CP0202 = @nB9_CPM0303,
CP0202 / @nQtd ,
B2_CP0304CP0203 = @nB9_CPM0304CP0203 / @nQtd ,
B2_CP0305CP0204 = @nB9_CPM0305
CP0204 / @nQtd ,
WHERE R_E_C_N_O_ = @IN_RECNOSB2
END ELSE
BEGIN
UPDATE SB2010 WITH (ROWLOCK)
B2_CP0205 = @nB9_CP0205 / @nQtd ,
SET B2_CP0101CP0301 = @nB9_CP0101CP0301 / @nQtd ,
B2_CP0102CP0302 = @nB9_CP0102CP0302 / @nQtd ,
B2_CP0103CP0303 = @nB9_CP0103CP0303 / @nQtd ,
B2_CP0104CP0304 = @nB9_CP0104CP0304 / @nQtd ,
B2_CP0105CP0305 = @nB9_CP0105CP0305 / @nQtd ,
B2_CP0201WHERE R_E_C_N_O_ = @nB9@IN_CP0201RECNOSB2
/ @nQtd ,
B2_CP0202 = @nB9_CP0202 / @nQtd ,
B2_CP0203 = @nB9_CP0203 / @nQtd ,
B2_CP0204 = @nB9_CP0204 / @nQtd ,
B2_CP0205 = @nB9_CP0205 / @nQtd ,
B2_CP0301 = @nB9_CP0301 / @nQtd ,
B2_CP0302 = @nB9_CP0302 / @nQtd ,
B2_CP0303 = @nB9_CP0303 / @nQtd ,
B2_CP0304 = @nB9_CP0304 / @nQtd ,
B2_CP0305 = @nB9_CP0305 / @nQtd
WHERE R_E_C_N_O_ = @IN_RECNOSB2
END
END |
Atenção aos tópicos abaixo: 1. O ponto de entrada M330INB2CP foi escrito em linguagem SQL. Caso esteja utilizando outro gerenciador de banco de dados, é necessário fazer a compatibilização da linguagem escrita. 2. O nome da stored procedure deve ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Se for utilizada a Empresa 01, é necessário alterar a chamada das procedures: - M330INB2CP_99 para M330INB2CP_01 - XFILIAL_99 para XFILIAL_01 - MA330CP_99 para MA330CP_01 Atenção aos tópicos abaixo: 1. O ponto de entrada M330INB2CP foi escrito em linguagem SQL. Caso esteja utilizando outro gerenciador de banco de dados, é necessário fazer a compatibilização da linguagem escrita. 2. O nome da stored procedure deve ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Se for utilizada a Empresa 01, é necessário alterar a chamada das procedures: - M330INB2CP_99 para M330INB2CP_01 - XFILIAL_19_99 para XFILIAL_19_01 - MA330CP_99 para MA330CP_01
Se não for feita essa alteração e for mantida a chamada XFILIAL_19_99, ao salvar a procedure no banco de dados será apresentada a seguinte mensagem: "O módulo Se não for feita essa alteração e for mantida a chamada XFILIAL_99, ao salvar a procedure no banco de dados será apresentada a seguinte mensagem: "O módulo 'MA330CP_01' depende do objeto ausente 'XFILIAL_19_99'. O módulo ainda será criado; entretanto, não poderá ser executado com êxito até o objeto existir." Se for utilizada a Empresa 01, é necessário alterar o nome físico das seguintes tabelas: - SB2990 para SB2010 - SB9990 para SB9010 - TRT990 TRT99SP para TRT010TRT01SP 3. A implementação do custo em partes exige um grau elevado de conhecimentos em stored procedures e Protheus. Desta forma, é recomendado que o procedimento seja efetuado por um profissional qualificado TOTVS. Stored Procedure M330INC2CP Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | M330INC2CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
CREATE PROCEDURE M330INC2CP_99 (
@IN_FILIALCOR Char( 02 ) ) AS
-- Declaracoes de variaveis
DECLARE @cFil_SC2 Char( 02 )
DECLARE @nMaxRecnoSC2 Integer
DECLARE @nRec Integer
BEGIN
EXEC XFILIAL_19_99 'SC2' , @IN_FILIALCOR , @cFil_SC2 output
SELECT @nMaxRecnoSC2 = ISNULL ( MAX ( R_E_C_N_O_ ), 0 )
FROM SC2990
WHERE C2_FILIAL = @cFil_SC2 and D_E_L_E_T_ <> '*'
SELECT @nRec = ISNULL ( MIN ( R_E_C_N_O_ ), 0 )
FROM SC2990
WHERE C2_FILIAL = @cFil_SC2 and D_E_L_E_T_ <> '*'
WHILE (@nRec <= @nMaxRecnoSC2 )
BEGIN
UPDATE SC2010
WITH (ROWLOCK)
SET C2_CPF0101 = C2_CPI0101 ,
C2_CPF0102 = C2_CPI0102 ,
C2_CPF0103 = C2_CPI0103 ,
C2_CPF0104 = C2_CPI0104 ,
C2_CPF0105 = C2_CPI0105 ,
C2_CPF0201 = C2_CPI0201 ,
C2_CPF0202 = C2_CPI0202 ,
C2_CPF0203 = C2_CPI0203 ,
C2_CPF0204 = C2_CPI0204 ,
C2_CPF0205 = C2_CPI0205 ,
C2_CPF0301 = C2_CPI0301 ,
C2_CPF0302 = C2_CPI0302 ,
C2_CPF0303 = C2_CPI0303 ,
C2_CPF0304 = C2_CPI0304 ,
C2_CPF0305 = C2_CPI0305 ,
C2_APF0101 = C2_API0101 ,
C2_APF0102 = C2_API0102 ,
C2_APF0103 = C2_API0103 ,
C2_APF0104 = C2_API0104 ,
C2_APF0105 = C2_API0105 ,
C2_APF0201 = C2_API0201 ,
C2_APF0202 = C2_API0202 ,
C2_APF0203 = C2_API0203 ,
C2_APF0204 = C2_API0204 ,
C2_APF0205 = C2_API0205 ,
C2_APF0301 = C2_API0301 ,
C2_APF0302 = C2_API0302 ,
C2_APF0303 = C2_API0303 ,
C2_APF0304 = C2_API0304 ,
C2_APF0305 = C2_API0305 ,
WHERE R_E_C_N_O_ >= @nRec and R_E_C_N_O_ < @nRec + 1024 and
C2_FILIAL = @cFil_SC2 and D_E_L_E_T_ <> '*'
SET @nRec = @nRec + 1024
END
END |
Atenção aos tópicos abaixo: 1. O ponto de entrada M330INC2CP foi escrito em linguagem SQL. Se for utilizado outro gerenciador de banco de dados, é necessário compatibilizar a linguagem escrita 2. O nome da stored procedure deve ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Se for utilizada a Empresa 01, é necessário alterar a chamada das procedures: - M330INC2CP_99 para M330INC2CP_01 - XFILIAL_19_99 para XFILIAL_19_01 Se não for feita essa alteração e for mantida a chamada XFILIAL_19_99, ao salvar a procedure no banco de dados será apresentada a seguinte mensagem: "O módulo 'MA330CP_01' depende do objeto ausente 'XFILIAL_19_99'. O módulo ainda será criado; entretanto, não poderá ser executado com êxito até o objeto existir." Se for utilizada a Empresa 01, é necessário alterar o nome físico da tabela: - SC2990 para SC2010 3. A implementação do custo em partes exige um grau elevado de conhecimentos em stored procedures e Protheus. Desta forma, é recomendado que o procedimento seja efetuado por um profissional qualificado TOTVS. Stored Procedure MA280INB9CP Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | MA280INB9CP |
---|
linenumbers | true |
---|
| title | MA280INB9CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
CREATE PROCEDURE MA280INB9CP_99 (
@IN_FILIALCOR Char( 02 ) ,
@IN_COD Char( 15 ) ,
@IN_MV_CUSZERO Char( 01 ) ,
@IN_RECNOSB9 Integer ,
@IN_RECNOSB2 Integer ,
@IN_NDIVISOR Float ,
@IN_B9_VINI1 Float ,
@IN_B9_VINI2 Float ,
@IN_B9_VINI3 Float ,
@IN_B9_VINI4 Float ,
@IN_B9_VINI5 Float ) AS
-- Declarações de variáveis
DECLARE @nB2_CPF0101 Float
DECLARE @nB2_CPF0102 Float
DECLARE @nB2_CPF0103 Float
DECLARE @nB2_CPF0104 Float
DECLARE @nB2_CPF0105 Float
DECLARE @nB2_CPF0201 Float
DECLARE @nB2_CPF0202 Float
DECLARE @nB2_CPF0203 Float
DECLARE @nB2_CPF0204 Float
DECLARE @nB2_CPF0205 Float
DECLARE @nB2_CPF0301 Float
DECLARE @nB2_CPF0302 Float
DECLARE @nB2_CPF0303 Float
DECLARE @nB2_CPF0304 Float
DECLARE @nB2_CPF0305 Float
-- Variáveis de Custo Unitário
DECLARE @nB2_CPM0101 Float
DECLARE @nB2_CPM0102 Float
DECLARE @nB2_CPM0103 Float
DECLARE @nB2_CPM0104 Float
DECLARE @nB2_CPM0105 Float
DECLARE @nB2_CPM0201 Float
DECLARE @nB2_CPM0202 Float
DECLARE @nB2_CPM0203 Float
DECLARE @nB2_CPM0204 Float
DECLARE @nB2_CPM0205 Float
DECLARE @nB2_CPM0301 Float
DECLARE @nB2_CPM0302 Float
DECLARE @nB2_CPM0303 Float
DECLARE @nB2_CPM0304 Float
DECLARE @nB2_CPM0305 Float
BEGIN
IF @IN_MV_CUSZERO = 'S'
BEGIN
SET @nB2_CPF0101 = 0
SET @nB2_CPF0102 = 0
SET @nB2_CPF0103 = 0
SET @nB2_CPF0104 = 0
SET @nB2_CPF0105 = 0
SET @nB2_CPF0201 = 0
SET @nB2_CPF0202 = 0
SET @nB2_CPF0203 = 0-- Criacao de procedure
CREATE PROCEDURE MA280INB9CP_99 (
@IN_FILIALCOR Char( 02 ) ,
@IN_COD Char( 15 ) ,
@IN_MV_CUSZERO Char( 01 ) ,
@IN_RECNOSB9 Integer ,
@IN_RECNOSB2 Integer ,
@IN_NDIVISOR Float ,
SET @nB2_CPF0204 = 0
@IN_B9_VINI1SET @nB2_CPF0205 = Float0
,
SET @nB2_CPF0301 = 0
SET @nB2_CPF0302 = 0
@IN_B9_VINI2 Float SET @nB2_CPF0303 = ,0
SET @nB2_CPF0304 = 0
SET @IN@nB2_B9_VINI3CPF0305 = Float0
END ,
ELSE
BEGIN
SELECT @nB2_CPF0101 = @IN_B9_VINI4 FloatISNULL(B2_CPF0101,0), @nB2_CPF0102 = ISNULL(B2_CPF0102,0),
,
@nB2_CPF0103 = ISNULL(B2_CPF0103,0), @nB2_CPF0104 = ISNULL(B2_CPF0104,0),
@IN_B9_VINI5 Float ) AS
-- Declaracoes de variaveis
DECLARE @nB2_CPF0101 Float
DECLARE @nB2_CPF0102CPF0105 Float
DECLARE @nB2_CPF0103 Float
DECLARE= ISNULL(B2_CPF0105,0), @nB2_CPF0104CPF0201 Float
DECLARE @nB2_CPF0105 Float
DECLARE @nB2_CPF0201 Float
DECLARE @nB2_CPF0202 Float
DECLARE @nB2_CPF0203 Float
DECLARE @nB2_CPF0204 Float
DECLARE @nB2_CPF0205 Float
DECLARE @nB2_CPF0301 Float
DECLARE @nB2_CPF0302 Float
DECLARE @nB2_CPF0303 Float
DECLARE @nB2_CPF0304 Float
DECLARE @nB2_CPF0305 Float
BEGIN
IF @IN_MV_CUSZERO = 'S'
BEGIN
SET @nB2_CPF0101 = 0
= ISNULL(B2_CPF0201,0),
@nB2_CPF0202 = ISNULL(B2_CPF0202,0), @nB2_CPF0203 = ISNULL(B2_CPF0203,0),
@nB2_CPF0204 = ISNULL(B2_CPF0204,0), @nB2_CPF0205 = ISNULL(B2_CPF0205,0),
SET @nB2_CPF0102 _CPF0301 = ISNULL(B2_CPF0301,0), @nB2_CPF0302 = ISNULL(B2_CPF0302,0),
SET @nB2_CPF0103 = 0
@nB2_CPF0303 SET= ISNULL(B2_CPF0303,0), @nB2_CPF0104 CPF0304 = ISNULL(B2_CPF0304,0),
SET @nB2_CPF0105 = 0
@nB2_CPF0305 = ISNULL(B2_CPF0305,0),
SET @nB2_CPF0201 = 0
SET @nB2_CPF0202 CPM0101 = ISNULL(B2_CP0101,0),
@nB2_CPM0102 SET @nB2_CPF0203 = 0
= ISNULL(B2_CP0102,0),
SET @nB2_CPF0204 CPM0103 = 0
SET @nB2_CPF0205 = 0
ISNULL(B2_CP0103,0), @nB2_CPM0104 = ISNULL(B2_CP0104,0),
SET @nB2_CPF0301 = 0
SET @nB2_CPF0302CPM0105 = 0
SETISNULL(B2_CP0105,0), @nB2_CPF0303 CPM0201 = 0 ISNULL(B2_CP0201,0),
SET @nB2_CPF0304 = 0
@nB2_CPM0202 SET= ISNULL(B2_CP0202,0), @nB2_CPF0305 CPM0203 = 0
END
ELSE
ISNULL(B2_CP0203,0),
BEGIN
SELECT @nB2_CPF0101CPM0204 = ISNULL(B2_CPF0101CP0204,0), @nB2_CPF0102CPM0205 = ISNULL(B2_CPF0102CP0205,0),
@nB2_CPF0103CPM0301 = ISNULL(B2_CPF0103CP0301,0), @nB2_CPF0104CPM0302 = ISNULL(B2_CPF0104CP0302,0),
@nB2_CPF0105CPM0303 = ISNULL(B2_CPF0105CP0303,0), @nB2_CPF0201CPM0304 = ISNULL(B2_CPF0201CP0304,0),
@nB2_CPF0202CPM0305 = ISNULL(B2_CPF0202CP0305,0), @nB2_CPF0203
FROM SB2990
WHERE R_E_C_N_O_ = ISNULL(B2_CPF0203,0),@IN_RECNOSB2
END
UPDATE SB9010
WITH (ROWLOCK)
SET @nB2B9_CPF0204CP0101 = ISNULL(B2@nB2_CPF0204,0), @nB2_CPF0205CPF0101, B9_CP0102 = @nB2_CPF0102, B9_CP0103 = ISNULL(B2@nB2_CPF0205CPF0103,0),
B9_CP0104 = @nB2_CPF0104, @nB2B9_CPF0301CP0105 = ISNULL(B2_CPF0301,0)@nB2_CPF0105, @nB2B9_CPF0302CP0201 = ISNULL(B2@nB2_CPF0302CPF0201,0),
B9_CP0202 = @nB2_CPF0202, @nB2B9_CPF0303CP0203 = ISNULL(B2_CPF0303,0)@nB2_CPF0203, @nB2B9_CPF0304CP0204 = ISNULL(B2@nB2_CPF0304CPF0204,0),
B9_CP0205 = @nB2_CPF0205, @nB2B9_CPF0305CP0301 = ISNULL(B2@nB2_CPF0305CPF0301,0)
B9_CP0302 FROM SB2990
= @nB2_CPF0302,
WHERE R_E_C_N_O_ B9_CP0303 = @IN@nB2_RECNOSB2
END
UPDATE SB9010
WITH (ROWLOCK)
CPF0303, B9_CP0304 = @nB2_CPF0304, B9_CP0305 = @nB2_CPF0305,
SET B9_CP0101CPM0101 = @nB2_CPF0101CPM0101, B9_CP0102CPM0102 = @nB2_CPF0102CPM0102, B9_CP0103CPM0103 = @nB2_CPF0103CPM0103,
B9_CP0104CPM0104 = @nB2_CPF0104CPM0104, B9_CP0105CPM0105 = @nB2_CPF0105CPM0105, B9_CP0201CPM0201 = @nB2_CPF0201CPM0201,
B9_CP0202CPM0202 = @nB2_CPF0202CPM0202, B9_CP0203CPM0203 = @nB2_CPF0203CPM0203, B9_CP0204CPM0204 = @nB2_CPF0204CPM0204,
B9_CP0205CPM0205 = @nB2_CPF0205CPM0205, B9_CP0301CPM0301 = @nB2_CPF0301CPM0301, B9_CP0302CPM0302 = @nB2_CPF0302CPM0302,
B9_CP0303CPM0303 = @nB2_CPF0303CPM0303, B9_CP0304CPM0304 = @nB2_CPF0304CPM0304, B9_CP0305CPM0305 = @nB2_CPF0305CPM0305
WHERE R_E_C_N_O_ = @IN_RECNOSB9
END |
Atenção aos tópicos abaixo: 1. O ponto de entrada MA280INB9CP escrito em linguagem SQL. Se for utilizado outro gerenciador de banco de dados, é necessário compatibilizar a linguagem escrita. 2. O nome da stored procedure deve ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Se for utilizada a Empresa 01, é necessário alterar a chamada das procedures: - MA280INB9CP_99 para MA280INB9CP_01 - XFILIAL_19_99 para XFILIAL_19_01 Se for utilizada a Empresa 01, é necessário alterar o nome físico das tabelas: - SB2990 para SB2010 - SB9990 para SB9010 3. A implementação do custo em partes exige um grau elevado de conhecimentos em stored procedures e Protheus. Desta forma, é recomendado que o procedimento seja realizado por um profissional qualificado TOTVS. Stored Procedure MA280INC2CP Bloco de código |
---|
language | delphi |
---|
theme | Midnight |
---|
title | MA280INC2CP |
---|
linenumbers | true |
---|
| -- Criacao de procedure
CREATE PROCEDURE MA280INC2CP_99 (
@IN_RECNOSC2 Integer ) AS
BEGIN
UPDATE SC2990
WITH (ROWLOCK)
SET C2_CPI0101 = C2_CPF0101 ,
C2_CPI0102 = C2_CPF0102 ,
C2_CPI0103 = C2_CPF0103 ,
C2_CPI0104 = C2_CPF0104 ,
C2_CPI0105 = C2_CPF0105 ,
C2_CPI0201 = C2_CPF0201 ,
C2_CPI0202 = C2_CPF0202 ,
C2_CPI0203 = C2_CPF0203 ,
C2_CPI0204 = C2_CPF0204 ,
C2_CPI0205 = C2_CPF0205 ,
C2_CPI0301 = C2_CPF0301 ,
C2_CPI0302 = C2_CPF0302 ,
C2_CPI0303 = C2_CPF0303 ,
C2_CPI0304 = C2_CPF0304 ,
C2_CPI0305 = C2_CPF0305 ,
C2_API0101 = C2_APF0101 ,
C2_API0102 = C2_APF0102 ,
C2_API0103 = C2_APF0103 ,
C2_API0104 = C2_APF0104 ,
C2_API0105 = C2_APF0105 ,
C2_API0201 = C2_APF0201 ,
C2_API0202 = C2_APF0202 ,
C2_API0203 = C2_APF0203 ,
C2_API0204 = C2_APF0204 ,
C2_API0205 = C2_APF0205 ,
C2_API0301 = C2_APF0301 ,
C2_API0302 = C2_APF0302 ,
C2_API0303 = C2_APF0303 ,
C2_API0304 = C2_APF0304 ,
C2_API0305 = C2_APF0305
WHERE R_E_C_N_O_ = @IN_RECNOSC2
END |
Atenção aos tópicos abaixo: 1. O ponto de entrada MA280INC2CP acima foi escrito em linguagem SQL. Se for utilizado outro gerenciador de banco de dados, é necessário compatibilizar a linguagem escrita. 2. O nome da stored procedure deve ser compatibilizada de acordo com o ambiente do cliente. Exemplo: Se for utilizada a Empresa 01, é necessário alterar a chamada da procedure: - MA280INC2CP_99 para MA280INC2CP_01 Se for utilizada a Empresa 01, é necessário alterar o nome físico da tabela: - SC2990 para SC2010 3. A implementação do custo em partes exige um grau elevado de conhecimentos em stored procedures e Protheus. Desta forma, é recomendado que o procedimento seja efetuado por um profissional qualificado TOTVS. 4. A quantidade limite de campos em cada tabela deve ser observada, considerando os campos padrões e os campos criados para o custo em partes, que não deve ultrapassar o limite de 359 campos. Utilização do parâmetro MV_MUDATRTQuando o parâmetro MV_MUDATRT estiver configurado como .T. , a referência do grupo de tabelas TR* deve ser alterada para TR*_SP, conforme documentação disponível na URL abaixo: SIGAMNT com Stored Procedures de Materiais - MV_MUDATRT
|