/****** Object: StoredProcedure [dbo].[taIVTransferHeaderInsert] Script Date: 9/26/2024 2:28:56 PM ******/
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[taIVTransferHeaderInsert]
@I_vBACHNUMB CHAR(15),
@I_vIVDOCNBR CHAR(17),
@I_vDOCDATE DATETIME,
@I_vPOSTTOGL TINYINT = 0,
@I_vRequesterTrx SMALLINT = 0,
@I_vUSRDEFND1 CHAR(50) = '',
@I_vUSRDEFND2 CHAR(50) = '',
@I_vUSRDEFND3 CHAR(50) = '',
@I_vUSRDEFND4 CHAR(8000) = '',
@I_vUSRDEFND5 CHAR(8000) = '',
@O_iErrorState INT OUTPUT,
@oErrString VARCHAR(255) OUTPUT
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
DECLARE @IVDOCTYP SMALLINT,
@BCHSOURC CHAR(15),
@iStatus INT,
@iAddCodeErrState INT,
@iStatement INT,
@O_oErrorState INT,
@sCompanyID SMALLINT,
@nNextNoteIndex NUMERIC(19, 5),
@iGetNextNoteIdxErrState INT,
@TRXTOTAL NUMERIC(19, 5),
@iUpdtBthErrState INT,
@iCustomState INT,
@iCustomErrString VARCHAR(255),
@iCreateBatchErrString VARCHAR(255),
@iError INT,
@DBName CHAR(50),
@O_iInitErrorState INT,
@oInitErrString VARCHAR(255),
@O_iErrorStateAASub INT,
@O_iErrorStringAASub VARCHAR(255),
@itaProcessAnalyticsErrState INT,
@itaProcessAnalyticsErrString VARCHAR(8000),
@aaSubLedgerHdrID INT,
@CURNCYID CHAR(15),
@CURRNIDX INT,
@INTERID CHAR(5);
SELECT @IVDOCTYP = 3,
@BCHSOURC = 'IV_Trans',
@iStatus = 0,
@iAddCodeErrState = 0,
@O_oErrorState = 0,
@iStatement = 0,
@TRXTOTAL = 0,
@iUpdtBthErrState = 0,
@O_iErrorState = 0,
@O_iErrorStateAASub = 0,
@O_iErrorStringAASub = '',
@itaProcessAnalyticsErrState = 0,
@itaProcessAnalyticsErrString = '',
@aaSubLedgerHdrID = 0,
@CURNCYID = '',
@CURRNIDX = 0,
@INTERID = '';
IF (@oErrString IS NULL)
BEGIN
SELECT @oErrString = '';
END;
SELECT @DBName = DB_NAME();
EXEC @iStatus = taIVTransferHeaderInsertPre @I_vBACHNUMB OUTPUT,
@I_vIVDOCNBR OUTPUT,
@I_vDOCDATE OUTPUT,
@I_vPOSTTOGL OUTPUT,
@I_vRequesterTrx OUTPUT,
@I_vUSRDEFND1 OUTPUT,
@I_vUSRDEFND2 OUTPUT,
@I_vUSRDEFND3 OUTPUT,
@I_vUSRDEFND4 OUTPUT,
@I_vUSRDEFND5 OUTPUT,
@O_iErrorState = @iCustomState OUTPUT,
@oErrString = @iCustomErrString OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
BEGIN
SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
OR (@iCustomState <> 0)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCustomErrString));
SELECT @O_iErrorState = 1352;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF (
@I_vBACHNUMB IS NULL
OR @I_vIVDOCNBR IS NULL
OR @I_vDOCDATE IS NULL
OR @I_vPOSTTOGL IS NULL
OR @I_vRequesterTrx IS NULL
)
BEGIN
SELECT @O_iErrorState = 1353;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @I_vBACHNUMB = UPPER(@I_vBACHNUMB),
@I_vIVDOCNBR = UPPER(@I_vIVDOCNBR);
IF NOT EXISTS (SELECT 1 FROM MC40000 (NOLOCK))
BEGIN
SELECT @O_iErrorState = 7047;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vBACHNUMB = '')
BEGIN
SELECT @O_iErrorState = 1354;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (EXISTS
(
SELECT 1
FROM SY00500 (NOLOCK)
WHERE BACHNUMB = @I_vBACHNUMB
AND MKDTOPST <> 0
AND BCHSOURC = @BCHSOURC
)
)
BEGIN
SELECT @O_iErrorState = 1356;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@iAddCodeErrState OUTPUT;
END;
IF (@I_vIVDOCNBR = '')
BEGIN
SELECT @O_iErrorState = 1357;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF EXISTS
(
SELECT 1
FROM IV10000 (NOLOCK)
WHERE IVDOCTYP = @IVDOCTYP
AND IVDOCNBR = @I_vIVDOCNBR
)
OR EXISTS
(
SELECT 1
FROM IV30200 (NOLOCK)
WHERE IVDOCTYP = @IVDOCTYP
AND DOCNUMBR = @I_vIVDOCNBR
)
BEGIN
SELECT @O_iErrorState = 1358;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @INTERID = INTERID,
@sCompanyID = CMPANYID
FROM DYNAMICS..SY01500 (NOLOCK)
WHERE INTERID = DB_NAME();
EXEC @iStatus = DYNAMICS..tasmGetNextNoteIndex @I_sCompanyID = @sCompanyID,
@I_iSQLSessionID = 0,
@I_noteincrement = 1,
@O_mNoteIndex = @nNextNoteIndex OUTPUT,
@O_iErrorState = @iGetNextNoteIdxErrState OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
BEGIN
SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
OR (@iGetNextNoteIdxErrState <> 0)
BEGIN
IF (@iGetNextNoteIdxErrState <> 0)
BEGIN
EXEC @iStatus = taUpdateString @iGetNextNoteIdxErrState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @O_iErrorState = 1359;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
SELECT @TRXTOTAL = ISNULL(SUM(TRXQTY), 0)
FROM IV10001 (NOLOCK)
WHERE IVDOCTYP = @IVDOCTYP
AND IVDOCNBR = @I_vIVDOCNBR
AND TRXQTY > 0;
IF (@TRXTOTAL < 0)
BEGIN
SELECT @O_iErrorState = 1355;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
IF (@I_vRequesterTrx < 0 OR @I_vRequesterTrx > 1)
BEGIN
SELECT @O_iErrorState = 3703;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@iAddCodeErrState OUTPUT;
END;
IF (@O_iErrorState <> 0)
BEGIN
RETURN (@O_iErrorState);
END;
IF (@I_vRequesterTrx = 0)
BEGIN
EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'IV_Transaction',
@I_vINDEX1 = @I_vIVDOCNBR,
@I_vINDEX2 = @IVDOCTYP,
@I_vINDEX3 = '',
@I_vINDEX4 = '',
@I_vINDEX5 = '',
@I_vINDEX6 = '',
@I_vINDEX7 = '',
@I_vINDEX8 = '',
@I_vINDEX9 = '',
@I_vINDEX10 = '',
@I_vINDEX11 = '',
@I_vINDEX12 = '',
@I_vINDEX13 = '',
@I_vINDEX14 = '',
@I_vINDEX15 = '',
@I_vDelete = 0,
@O_iErrorState = @iCustomState OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
BEGIN
SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
OR (@iCustomState <> 0)
BEGIN
SELECT @O_iErrorState = 2925;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
EXEC @iStatus = taCreateUpdateBatchHeaderRcd @I_vBACHNUMB = @I_vBACHNUMB,
@I_vSERIES = 5,
@I_vGLPOSTDT = @I_vDOCDATE,
@I_vBCHSOURC = @BCHSOURC,
@I_vDOCAMT = @TRXTOTAL,
@I_vORIGIN = 2,
@I_vNUMOFTRX = 1,
@I_vCHEKBKID = '',
@I_vPOSTTOGL = @I_vPOSTTOGL,
@O_iErrorState = @iUpdtBthErrState OUTPUT,
@oErrString = @iCreateBatchErrString OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
SELECT @iStatus = @iError;
IF (@iStatus <> 0)
OR (@iUpdtBthErrState <> 0)
BEGIN
IF (@iUpdtBthErrState <> 0)
BEGIN
EXEC @iStatus = taUpdateString @iUpdtBthErrState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
END;
SELECT @O_iErrorState = 1360;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
INSERT INTO IV10000
(
BACHNUMB,
BCHSOURC,
IVDOCNBR,
RCDOCNUM,
IVDOCTYP,
DOCDATE,
MODIFDT,
MDFUSRID,
PTDUSRID,
GLPOSTDT,
PSTGSTUS,
TRXQTYTL,
NOTEINDX,
SRCRFRNCNMBR,
SOURCEINDICATOR
)
SELECT @I_vBACHNUMB,
@BCHSOURC,
@I_vIVDOCNBR,
@I_vIVDOCNBR,
@IVDOCTYP,
@I_vDOCDATE,
CONVERT(VARCHAR(12), GETDATE()),
'',
'',
@I_vDOCDATE,
0,
@TRXTOTAL,
@nNextNoteIndex,
'',
1;
IF @@error <> 0
BEGIN
SELECT @O_iErrorState = 1361;
SELECT @iStatement = 1;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@iAddCodeErrState OUTPUT;
RETURN (@O_iErrorState);
END;
IF EXISTS
(
SELECT 1
FROM DYNAMICS..sysobjects (NOLOCK)
WHERE name = 'AAG00102'
)
BEGIN
IF EXISTS
(
SELECT 1
FROM DYNAMICS..AAG00102 (NOLOCK)
WHERE CMPANYID = @sCompanyID
)
BEGIN
EXEC @iStatus = aagCreateSubWorkDist @aaSubLedgerHdrID OUT,
0,
3,
@I_vIVDOCNBR,
'',
10001,
5,
@sCompanyID,
0,
@CURNCYID,
@CURRNIDX,
'',
'',
0,
'',
'',
'',
0,
0,
0,
1,
@INTERID,
0,
0,
'',
@O_iErrorStateAASub OUTPUT,
@O_iErrorStringAASub OUTPUT;
IF (@@error <> 0)
BEGIN
SELECT @O_iErrorState = 9443;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF @aaSubLedgerHdrID <> 0
BEGIN
EXEC @iStatus = taProcessAnalytics @I_vDOCNMBR = @I_vIVDOCNBR,
@I_vKey = @I_vIVDOCNBR,
@I_vDOCTYPE = 0,
@O_iErrorState = @itaProcessAnalyticsErrState OUTPUT,
@oErrString = @itaProcessAnalyticsErrString OUTPUT;
SELECT @iError = @@error;
IF (
(@iStatus <> 0)
OR (@itaProcessAnalyticsErrState <> 0)
OR (@iError <> 0)
)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + @itaProcessAnalyticsErrString;
SELECT @O_iErrorState = 9444;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
END;
END;
EXEC @iStatus = taIVTransferHeaderInsertPost @I_vBACHNUMB,
@I_vIVDOCNBR,
@I_vDOCDATE,
@I_vPOSTTOGL,
@I_vRequesterTrx,
@I_vUSRDEFND1,
@I_vUSRDEFND2,
@I_vUSRDEFND3,
@I_vUSRDEFND4,
@I_vUSRDEFND5,
@O_iErrorState = @iCustomState OUTPUT,
@oErrString = @iCustomErrString OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
BEGIN
SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
OR (@iCustomState <> 0)
BEGIN
SELECT @oErrString = RTRIM(@oErrString) + ' ' + LTRIM(RTRIM(@iCustomErrString));
SELECT @O_iErrorState = 1362;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
IF (@I_vRequesterTrx = 0)
BEGIN
EXEC @iStatus = eConnectOutVerify @I_vDOCTYPE = 'IV_Transaction',
@I_vINDEX1 = @I_vIVDOCNBR,
@I_vINDEX2 = @IVDOCTYP,
@I_vINDEX3 = '',
@I_vINDEX4 = '',
@I_vINDEX5 = '',
@I_vINDEX6 = '',
@I_vINDEX7 = '',
@I_vINDEX8 = '',
@I_vINDEX9 = '',
@I_vINDEX10 = '',
@I_vINDEX11 = '',
@I_vINDEX12 = '',
@I_vINDEX13 = '',
@I_vINDEX14 = '',
@I_vINDEX15 = '',
@I_vDelete = 1,
@O_iErrorState = @iCustomState OUTPUT;
SELECT @iError = @@error;
IF @iStatus = 0
AND @iError <> 0
BEGIN
SELECT @iStatus = @iError;
END;
IF (@iStatus <> 0)
OR (@iCustomState <> 0)
BEGIN
SELECT @O_iErrorState = 2926;
EXEC @iStatus = taUpdateString @O_iErrorState,
@oErrString,
@oErrString OUTPUT,
@O_oErrorState OUTPUT;
RETURN (@O_iErrorState);
END;
END;
RETURN (@O_iErrorState);