Sunteți pe pagina 1din 6

USE [P12_17]

GO
/****** Object: StoredProcedure [dbo].[MAT009_19_01] Script Date: 05/06/2018
21:12:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Procedure creation
ALTER PROCEDURE [dbo].[MAT009_19_01] (
@IN_ALIAS Char( 03 ) ,
@IN_ORDEM Char( 03 ) ,
@IN_RECFILE Integer ,
@IN_NRECRE5 Integer ,
@IN_NRECTRB Integer ,
@IN_MV_PAR14 Integer ,
@IN_MV_PAR1 Char( 08 ) ,
@IN_MV_PRODPR0 Integer ,
@IN_FILIALCOR Char( 2) ,
@IN_RECNOSMO Integer ,
@IN_CTRANSF Char( 01 ) ,
@IN_CPAISLOC Char( 03 ) ,
@IN_USAFILTRF Char( 01 ) ,
@IN_SEQ500 Char( 01 ) ) AS

-- Declaration of variables
DECLARE @cTRB_NIVEL Char( 02 )
DECLARE @cTRB_NIVSD3 Char( 01 )
DECLARE @cTRB_COD Char( 15)
DECLARE @cTRB_LOCAL Char( 2)
DECLARE @cTRB_CHAVE VarChar( 52)
DECLARE @cTRB_OP Char( 14)
DECLARE @cTRB_CF Char( 3)
DECLARE @cTRB_SEQ Char( 6)
DECLARE @cTRB_SEQPRO Char( 6)
DECLARE @cTRB_TES Char( 3)
DECLARE @dTRB_DTORIG Char( 08 )
DECLARE @nTRB_RECSD1 Integer
DECLARE @cTRB_DOC Char( 9)
DECLARE @cTRB_TIPO Char( 1)
DECLARE @nTRB_QUANT Float
DECLARE @cOPVAZIA Char( 14)
DECLARE @nTRX_QUANT Float
DECLARE @nTRX_QPERDA Float
DECLARE @dTRB_DTBASE Char( 08 )
DECLARE @cTRB_LOJA Char( 4)
DECLARE @cD3_ESTORNO Char( 1)
DECLARE @cTRB_CLI Char( 6)
DECLARE @cTRB_SERIE Char( 3)
DECLARE @lGrava Char( 01 )
DECLARE @cOrdem Char( 03 )
DECLARE @cExecutou Char( 01 )
DECLARE @cAlias Char( 03 )
DECLARE @dDtBusca Char( 08 )
DECLARE @iContador Integer
DECLARE @cD1_FORNECE Char( 6)
DECLARE @cAliasAux Char( 03 )
DECLARE @cRetFil Char( 2)
DECLARE @cTRB_ESPECIE Char( 5 )
DECLARE @cTRB_TIPODOC Char( 2 )
DECLARE @cTRB_FILTRA Char( 1 )
DECLARE @cTRB_ITEM Char( 4)
BEGIN
SET @lGrava = '0'
SET @cTRB_NIVEL = ' '
SET @cTRB_NIVSD3 = ' '
SET @cTRB_COD = ' '
SET @cTRB_LOCAL = ' '
SET @cTRB_CHAVE = ' '
SET @cTRB_OP = ' '
SET @cTRB_CF = ' '
SET @cTRB_SEQ = ' '
SET @cTRB_SEQPRO = ' '
SET @dTRB_DTORIG = ' '
SET @nTRB_RECSD1 = 0
SET @cTRB_TES = ' '
SET @cTRB_DOC = ' '
SET @cTRB_TIPO = ' '
SET @cOPVAZIA = ' '
SET @nTRX_QUANT = 0
SET @nTRX_QPERDA = 0
SET @cOrdem = @IN_ORDEM
SET @cExecutou = '0'
SET @cAlias = @IN_ALIAS
SET @cTRB_CLI = ' '
SET @cTRB_SERIE = ' '
SET @nTRB_QUANT = 0
SET @cRetFil = ' '
SET @cTRB_LOJA = ' '
SET @cTRB_ESPECIE = ' '
SET @cTRB_TIPODOC = ' '
SET @cTRB_FILTRA = ' '
SET @cTRB_ITEM = ' '
SET @cAlias = ' '
SET @cOrdem = ' '
SET @cExecutou = ' '
EXEC MA330SEQ_01 @IN_ORDEM , @IN_ALIAS , @IN_RECFILE , @cOrdem output , @cAlias
output , @cExecutou output
IF (@cExecutou = '1' )
BEGIN
IF @cAlias = 'SD1'
BEGIN
SET @lGrava = '1'
SELECT @cTRB_COD = D1_COD , @cTRB_LOCAL = D1_LOCAL , @cTRB_SEQ =
D1_NUMSEQ , @dTRB_DTORIG = D1_DTDIGIT , @cTRB_TES = D1_TES
, @cTRB_DOC = D1_DOC , @cTRB_TIPO = D1_TIPO , @cD1_FORNECE =
D1_FORNECE , @cTRB_SERIE = D1_SERIE , @nTRB_QUANT = D1_QUANT
, @cTRB_LOJA = D1_LOJA , @cTRB_OP = D1_OP , @cTRB_ITEM = D1_ITEM ,
@cTRB_ESPECIE = D1_ESPECIE , @cTRB_TIPODOC = D1_TIPODOC

FROM SD1010
WHERE R_E_C_N_O_ = @IN_RECFILE
SET @cAliasAux = 'SD1'
EXEC MAT047_19_01 @IN_FILIALCOR , @cAliasAux , @cTRB_TES , @cTRB_ESPECIE ,
@cTRB_TIPODOC , @IN_CPAISLOC , @cTRB_DOC ,
@cTRB_SERIE , @cD1_FORNECE , @cTRB_LOJA , @IN_USAFILTRF , @cRetFil
output
IF (@IN_MV_PAR14 = 1 )
BEGIN
SET @cTRB_SEQPRO = @cTRB_SEQ
END
IF @cOrdem = '300'
BEGIN
SET @cTRB_CHAVE = @cOPVAZIA + 'E' + @dTRB_DTORIG + @cTRB_SEQ +
'9y'
END
ELSE
BEGIN
IF @cOrdem = '500' and @IN_SEQ500 = '1'
BEGIN
SET @cTRB_CHAVE = @cTRB_SEQ + @cD1_FORNECE + @dTRB_DTORIG +
@cTRB_DOC + @cTRB_SERIE
END
ELSE
BEGIN
SET @cTRB_CHAVE = @cD1_FORNECE + @dTRB_DTORIG + @cTRB_SEQ +
@cTRB_DOC + @cTRB_SERIE
END
END
END
IF @cAlias = 'SD2'
BEGIN
SET @lGrava = '1'
SELECT @cTRB_COD = D2_COD , @cTRB_LOCAL = D2_LOCAL , @cTRB_SEQ =
D2_NUMSEQ , @dTRB_DTORIG = D2_EMISSAO , @cTRB_TES = D2_TES
, @cTRB_DOC = D2_DOC , @cTRB_CLI = D2_CLIENTE , @cTRB_SERIE =
D2_SERIE , @nTRB_QUANT = D2_QUANT , @cTRB_LOJA = D2_LOJA
, @cTRB_ITEM = D2_ITEM , @cTRB_ESPECIE = D2_ESPECIE , @cTRB_TIPODOC =
D2_TIPODOC
FROM SD2010
WHERE R_E_C_N_O_ = @IN_RECFILE
SET @cAliasAux = 'SD2'
EXEC MAT047_19_01 @IN_FILIALCOR , @cAliasAux , @cTRB_TES , @cTRB_ESPECIE ,
@cTRB_TIPODOC , @IN_CPAISLOC , @cTRB_DOC ,
@cTRB_SERIE , @cTRB_CLI , @cTRB_LOJA , @IN_USAFILTRF , @cRetFil
output
IF (@IN_MV_PAR14 = 1 )
BEGIN
SET @cTRB_SEQPRO = @cTRB_SEQ
END
IF @cOrdem <> '300'
BEGIN
IF @cOrdem = '500' and @IN_SEQ500 = '1'
BEGIN
SET @cTRB_CHAVE = @cTRB_SEQ + @cTRB_CLI + @dTRB_DTORIG +
@cTRB_DOC + @cTRB_SERIE
END
ELSE
BEGIN
SET @cTRB_CHAVE = @cTRB_CLI + @dTRB_DTORIG + @cTRB_SEQ +
@cTRB_DOC + @cTRB_SERIE
END
END
ELSE
BEGIN
SET @cTRB_CHAVE = @cOPVAZIA + 'E' + @dTRB_DTORIG + @cTRB_SEQ +
'9x'
END
END
IF @cAlias = 'SD3'
BEGIN
SET @lGrava = '1'
SELECT @cTRB_COD = D3_COD , @cTRB_LOCAL = D3_LOCAL , @cTRB_SEQ =
D3_NUMSEQ , @dTRB_DTORIG = D3_EMISSAO , @cTRB_DOC = D3_DOC
, @nTRX_QUANT = D3_QUANT , @cTRB_CF = D3_CF , @cTRB_OP = D3_OP ,
@cD3_ESTORNO = D3_ESTORNO , @nTRX_QPERDA = D3_PERDA
, @nTRB_QUANT = D3_QUANT
FROM SD3010
WHERE R_E_C_N_O_ = @IN_RECFILE

/*
-----------------------------------------------------------------------------------
-----
Polenghi - Ajustando Ordem para calculo do Custo medio no trb cujo alias =
'SD3' - inicio

-----------------------------------------------------------------------------------
-------*/
IF @cOrdem = '300' AND @cTRB_CF = 'DE6'
BEGIN
SET @cOrdem = '298'
END

IF @cOrdem = '300' AND @cTRB_CF = 'RE6'


BEGIN
SET @cOrdem = '298'
END

IF @cOrdem = '300' AND @cTRB_CF = 'DE7'


BEGIN
SET @cOrdem = '299'
END

IF @cOrdem = '300' AND @cTRB_CF = 'RE7'


BEGIN
SET @cOrdem = '299'
END
/*
-----------------------------------------------------------------------------------
-----
Polenghi - Ajustando Ordem para calculo do Custo medio no trb cujo alias =
'SD3' - fim

-----------------------------------------------------------------------------------
-------*/

IF (@IN_MV_PAR14 = 1 )
BEGIN
SET @cTRB_SEQPRO = @cTRB_SEQ
END
SET @cTRB_CHAVE = @cTRB_OP + SUBSTRING ( @cTRB_CF , 2 , 1 ) +
@dTRB_DTORIG + @cTRB_SEQ + @IN_CTRANSF
IF @cTRB_CF in ('DE4' , 'DE6' , 'DE7' )
BEGIN
SET @cTRB_CHAVE = @cTRB_CHAVE + '9'
END
ELSE
BEGIN
SET @cTRB_CHAVE = @cTRB_CHAVE + '0'
END
IF @IN_NRECRE5 > 0
BEGIN
SELECT @cD1_FORNECE = D1_FORNECE , @cTRB_DOC = D1_DOC , @cTRB_SERIE
= D1_SERIE , @cTRB_SEQ = D1_NUMSEQ ,
@dTRB_DTORIG = D1_DTDIGIT , @cTRB_ITEM = D1_ITEM
FROM SD1010
WHERE R_E_C_N_O_ = @IN_NRECRE5
IF @cOrdem = '300'
BEGIN
SET @cTRB_CHAVE = @cOPVAZIA + 'E' + @dTRB_DTORIG + @cTRB_SEQ +
'9z'
END
ELSE
BEGIN
SET @cTRB_CHAVE = @cD1_FORNECE + @dTRB_DTORIG + @cTRB_SEQ +
@cTRB_DOC + @cTRB_SERIE + 'z'
END
END
IF (@cTRB_CF in ('PR0' , 'PR1' ) ) and (@cD3_ESTORNO <> 'S' )
BEGIN
IF (@IN_MV_PAR14 <> 3 )
BEGIN
SET @dDtBusca = @IN_MV_PAR1
SELECT @iContador = COUNT ( * )
FROM TRX010_SP TRX
WHERE TRX_FILIAL = @IN_FILIALCOR and TRX_DATA = @dDtBusca and
TRX_OP = @cTRB_OP and TRX_COD = @cTRB_COD
and TRX_LOCAL = @cTRB_LOCAL
END
ELSE
BEGIN
SET @dDtBusca = @dTRB_DTORIG
SELECT @iContador = COUNT ( * )
FROM TRX010_SP TRX
WHERE TRX_FILIAL = @IN_FILIALCOR and TRX_DATA = @dDtBusca and
TRX_OP = @cTRB_OP and TRX_COD = @cTRB_COD
and TRX_LOCAL = @cTRB_LOCAL
END
IF @iContador is null
BEGIN
SET @iContador = 0
END
IF (@iContador > 0 )
BEGIN
UPDATE TRX010_SP
WITH (ROWLOCK)
SET TRX_QUANT = TRX_QUANT + @nTRX_QUANT , TRX_QPERDA =
TRX_QPERDA + @nTRX_QPERDA
WHERE TRX_FILIAL = @IN_FILIALCOR and TRX_DATA = @dDtBusca and
TRX_OP = @cTRB_OP and TRX_COD = @cTRB_COD
and TRX_LOCAL = @cTRB_LOCAL
END
ELSE
BEGIN
INSERT INTO TRX010_SP (TRX_FILIAL , TRX_COD , TRX_DATA , TRX_OP ,
TRX_LOCAL , TRX_QUANT , TRX_QPERDA )
VALUES (@IN_FILIALCOR , @cTRB_COD , @dDtBusca , @cTRB_OP ,
@cTRB_LOCAL , @nTRX_QUANT , @nTRX_QPERDA );
END
END
END
IF (@lGrava = '1' )
BEGIN
begin transaction
SET @dTRB_DTBASE = @dTRB_DTORIG
IF (@IN_MV_PAR14 <> 3 )
BEGIN
SET @dTRB_DTBASE = @IN_MV_PAR1
END
IF (@cRetFil <> ' ' )
BEGIN
SET @cTRB_FILTRA = 'S'
END
INSERT INTO TRB010_SP (TRB_CHAVE , TRB_ALIAS , TRB_RECNO , TRB_ORDEM ,
TRB_NIVEL , TRB_NIVSD3 , TRB_COD , TRB_LOCAL ,
TRB_DTBASE , TRB_OP , TRB_CF , TRB_SEQ , TRB_SEQPRO , TRB_DTORIG ,
TRB_RECSD1 , TRB_TES , TRB_DOC , TRB_RECTRB ,
TRB_TIPONF , TRB_FILIAL , TRB_QUANT , TRB_SERIE , TRB_FILTRA ,
TRB_USATRA , TRB_ITEM )
VALUES (@cTRB_CHAVE , @cAlias , @IN_RECFILE , @cOrdem , @cTRB_NIVEL ,
@cTRB_NIVSD3 , @cTRB_COD , @cTRB_LOCAL , @dTRB_DTBASE ,
@cTRB_OP , @cTRB_CF , @cTRB_SEQ , @cTRB_SEQPRO , @dTRB_DTORIG ,
@IN_NRECRE5 , @cTRB_TES , @cTRB_DOC , @IN_NRECTRB ,
@cTRB_TIPO , @IN_FILIALCOR , @nTRB_QUANT , @cTRB_SERIE , @cRetFil ,
@cTRB_FILTRA , @cTRB_ITEM );
commit transaction
END
END
END

S-ar putea să vă placă și