First, let's create the tables
if exists (select 1 from INFORMATION_SCHEMA.TABLES where table_name = 'DDtaPOHdr' ) BEGIN
drop table DDtaPOHdr
end
GO
CREATE TABLE DDtaPOHdr
(
RowID int NOT NULL IDENTITY (1, 1),
errorText varchar(max),
POTYPE smallint ,
PONUMBER char (17) ,
VENDORID char (15) ,
VENDNAME char (64) ,
DOCDATE datetime ,
BUYERID char (15) ,
ALLOWSOCMTS tinyint ,
TRDISAMT numeric (19,5) ,
FRTAMNT numeric (19,5) ,
MSCCHAMT numeric (19,5) ,
TAXAMNT numeric (19,5) ,
SUBTOTAL numeric (19,5) ,
CUSTNMBR char (15) ,
PRSTADCD char (15) ,
CMPNYNAM char (64) ,
CONTACT char (60) ,
ADDRESS1 char (60) ,
ADDRESS2 char (60) ,
ADDRESS3 char (60) ,
CITY char (35) ,
STATE char (29) ,
ZIPCODE char (10) ,
CCode char (6) ,
COUNTRY char (60) ,
PHONE1 char (21) ,
PHONE2 char (21) ,
PHONE3 char (21) ,
FAX char (21) ,
Print_Phone_NumberGB smallint ,
VADCDPAD char (15) ,
PURCHCMPNYNAM char (64) ,
PURCHCONTACT char (60) ,
PURCHADDRESS1 char (60) ,
PURCHADDRESS2 char (60) ,
PURCHADDRESS3 char (60) ,
PURCHCITY char (35) ,
PURCHSTATE char (29) ,
PURCHZIPCODE char (10) ,
PURCHCCode char (6) ,
PURCHCOUNTRY char (60) ,
PURCHPHONE1 char (21) ,
PURCHPHONE2 char (21) ,
PURCHPHONE3 char (21) ,
PURCHFAX char (21) ,
PRBTADCD char (15) ,
SHIPMTHD char (15) ,
PYMTRMID char (20) ,
DSCPCTAM numeric (19,2) ,
DSCDLRAM numeric (19,5) ,
DISAMTAV numeric (19,5) ,
DUEDATE datetime ,
DISCDATE datetime ,
TXRGNNUM char (25) ,
CONFIRM1 char (20) ,
COMMNTID char (15) ,
COMMENT_1 char (50) ,
COMMENT_2 char (50) ,
COMMENT_3 char (50) ,
COMMENT_4 char (50) ,
HOLD tinyint ,
TAXSCHID char (15) ,
Purchase_Freight_Taxable smallint ,
Purchase_Misc_Taxable smallint ,
FRTSCHID char (15) ,
MSCSCHID char (15) ,
FRTTXAMT numeric (19,5) ,
MSCTXAMT numeric (19,5) ,
BCKTXAMT numeric (19,5) ,
BackoutFreightTaxAmt numeric (19,5) ,
BackoutMiscTaxAmt numeric (19,5) ,
BackoutTradeDiscTax numeric (19,5) ,
USINGHEADERLEVELTAXES smallint ,
CURNCYID char (15) ,
XCHGRATE numeric (19,7) ,
RATETPID char (15) ,
EXPNDATE datetime ,
EXCHDATE datetime ,
EXGTBDSC char (30) ,
EXTBLSRC char (50) ,
RATEEXPR smallint ,
DYSTINCR smallint ,
RATEVARC numeric (19,7) ,
TRXDTDEF smallint ,
RTCLCMTD smallint ,
PRVDSLMT smallint ,
DATELMTS smallint ,
TIME1 datetime ,
USERID char (15) ,
POSTATUS smallint ,
CMMTTEXT varchar (500) ,
PRMDATE datetime ,
PRMSHPDTE datetime ,
REQDATE datetime ,
CONTENDDTE datetime ,
CNTRLBLKTBY smallint ,
REQTNDT datetime ,
UpdateIfExists smallint ,
NOTETEXT varchar (8000) ,
RequesterTrx smallint ,
USRDEFND1 char (50) ,
USRDEFND2 char (50) ,
USRDEFND3 char (50) ,
USRDEFND4 varchar (8000) ,
USRDEFND5 varchar (8000)
) ON [PRIMARY]
GO
ALTER TABLE DDtaPOHdr ADD CONSTRAINT
PK_taPOHdr PRIMARY KEY CLUSTERED
(
RowID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
if exists (select 1 from INFORMATION_SCHEMA.TABLES where table_name = 'DDtaPOLine' ) BEGIN
drop table DDtaPOLine
end
GO
CREATE TABLE DDtaPOLine
(
RowID int NOT NULL IDENTITY (1, 1),
HeaderID int NOT NULL ,
POTYPE smallint ,
PONUMBER char (17) ,
DOCDATE datetime ,
VENDORID char (15) ,
LOCNCODE char (10) ,
VNDITNUM char (30) ,
ITEMNMBR char (30) ,
QUANTITY numeric (19,5) ,
QTYCANCE numeric (19,5) ,
FREEONBOARD smallint ,
REQSTDBY char (20) ,
COMMNTID char (15) ,
COMMENT_1 char (50) ,
COMMENT_2 char (50) ,
COMMENT_3 char (50) ,
COMMENT_4 char (50) ,
REQDATE datetime ,
RELEASEBYDATE datetime ,
PRMDATE datetime ,
PRMSHPDTE datetime ,
NONINVEN smallint ,
IVIVINDX int ,
InventoryAccount varchar (75) ,
ITEMDESC char (100) ,
UNITCOST numeric (19,5) ,
VNDITDSC char (100) ,
UOFM char (8) ,
Purchase_IV_Item_Taxable smallint ,
Purchase_Item_Tax_Schedu char (15) ,
Purchase_Site_Tax_Schedu char (15) ,
BSIVCTTL smallint ,
TAXAMNT numeric (19,5) ,
BCKTXAMT numeric (19,5) ,
Landed_Cost_Group_ID char (15) ,
PLNNDSPPLID smallint ,
SHIPMTHD char (15) ,
BackoutTradeDiscTax numeric (19,5) ,
POLNESTA smallint ,
CMMTTEXT varchar (500) ,
ORD int ,
CUSTNMBR char (15) ,
ADRSCODE char (15) ,
CMPNYNAM char (64) ,
CONTACT char (60) ,
ADDRESS1 char (60) ,
ADDRESS2 char (60) ,
ADDRESS3 char (60) ,
CITY char (35) ,
STATE char (29) ,
ZIPCODE char (10) ,
CCode char (6) ,
COUNTRY char (60) ,
PHONE1 char (21) ,
PHONE2 char (21) ,
PHONE3 char (21) ,
FAX char (21) ,
Print_Phone_NumberGB smallint ,
CURNCYID char (15) ,
ProjNum char (15) ,
CostCatID char (15) ,
LineNumber int ,
UpdateIfExists smallint ,
NOTETEXT varchar (8000) ,
RequesterTrx smallint ,
USRDEFND1 char (50) ,
USRDEFND2 char (50) ,
USRDEFND3 char (50) ,
USRDEFND4 varchar (8000) ,
USRDEFND5 varchar (8000)
) ON [PRIMARY]
GO
ALTER TABLE DDtaPOLine ADD CONSTRAINT
PK_taPOLine PRIMARY KEY CLUSTERED
(
RowID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Insert the data
--initialize
DECLARE @dt date = GETDATE()
DECLARE @HeaderID int
INSERT INTO DDtaPOHdr(POTYPE,VENDORID,DOCDATE)
VALUES ( 1,'TEST' , @dt )
SELECT @HeaderID = SCOPE_IDENTITY()
INSERT INTO DDtaPOLine ( headerid , POTYPE, DOCDATE, VENDORID, LOCNCODE, ITEMNMBR , QUANTITY, UOFM , ORD , LineNumber)
VALUES ( @headerid, 1 , @dt , 'TEST' , '001' , 'TEST~STEVE~TEST' , 1500 , 'EACH', 16384, 1)
INSERT INTO DDtaPOLine ( headerid , POTYPE, DOCDATE, VENDORID, LOCNCODE, ITEMNMBR , QUANTITY, UOFM , ORD , LineNumber)
VALUES ( @HeaderID, 1 , @dt , 'TEST' , '001' , 'TEST~STEVE~TEST' , 1500 , 'EACH', 32768, 2)
-- DELETE DDtaPOLine DELETE DDtaPOHdr
DECLARE @PONumber VARCHAR(21)
EXEC fp_taPOPTransactionTypeWrapper @headerid, @PONumber OUT
SELECT @PONumber
Finally, here are the three stored procedures
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'fp_taPOPTransactionTypeWrapper'
AND type = 'P')
DROP PROCEDURE fp_taPOPTransactionTypeWrapper
GO
CREATE PROCEDURE fp_taPOPTransactionTypeWrapper
--we expect there to be lines in DDtaPOHdr and DDtaPOLine
--the HeaderID in DDtaPOHdr links to the RowID in DDtaPOLine
--this proc will process one document and return any errors
@HeaderID INT,
@PONumber VARCHAR(21) OUT
AS
BEGIN TRY
BEGIN TRAN
-- be carefull not to exit this or the transaction will not get committed, you'll lock the table up
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET NOCOUNT ON
DECLARE @O_iErrorState int
DECLARE @oErrString varchar(255)
DECLARE @DOCID VARCHAR(21)
DECLARE @LineID INT
DECLARE @O_vPONUMBER VARCHAR(17)
--we allow the sopnumbe to be null. if it is, we'll fill it in
EXEC taGetPONextNumber
@I_vInc_Dec = 0, -- tinyint
@O_vPONUMBER = @O_vPONUMBER OUTPUT, -- varchar(17)
@O_iErrorState = @O_iErrorState OUTPUT -- int
IF @O_iErrorState > 0 BEGIN
SElect @oErrString = ErrorDesc
FROM dynamics..taerrorcode ec
WHERE ec.ErrorCode = @O_iErrorState
PRINT 'fp_taPOPTransactionTypeWrapper An error occurred getting the next PO number'
RETURN 1
end
SELECT @PONumber = @O_vPONUMBER
UPDATE DDtaPOHdr SET PONUMBER = @O_vPONUMBER WHERE rowid = @HeaderID
UPDATE DDtaPOLine SET PONUMBER = @O_vPONUMBER WHERE HeaderID = @HeaderID
--=========================================================================================
-- loop through the lines and send them
--=========================================================================================
DECLARE curName CURSOR LOCAL FAST_FORWARD FOR
select RowID
from DDtaPOLine t
WHERE HeaderID = @HeaderID
OPEN curName
WHILE 1=1
BEGIN
FETCH NEXT FROM curName INTO @LineID
if @@fetch_status <> 0 begin
break
END
EXEC fp_taPOLineWrapper @LineID
IF @O_iErrorState > 0 BEGIN
SElect @oErrString = ec.ErrorDesc
FROM dynamics..taerrorcode ec
WHERE ec.ErrorCode = @O_iErrorState
RETURN 1
end
END
CLOSE curName
DEALLOCATE curName
--=========================================================================================
-- send the header
--=========================================================================================
EXEC fp_tapohdrwrapper @HeaderID
IF @O_iErrorState > 0 BEGIN
PRINT 'fp_taPOPTransactionTypeWrapper fp_taSopHdrIvcInsertWrapper error'
SElect @oErrString = ErrorDesc
FROM dynamics..taerrorcode ec
WHERE ec.ErrorCode = @O_iErrorState
RETURN 1
end
DELETE DDtaPOHdr WHERE RowID = @HeaderID
DELETE DDtaPOLine WHERE @HeaderID = @HeaderID
COMMIT TRAN
END TRY
BEGIN CATCH
--find out what went wrong
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
--roll everything back
ROLLBACK TRAN
END CATCH
GO
Grant EXEC on fp_taPOPTransactionTypeWrapper to public
-- sp_sps 'r'
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'fp_taPOHdrWrapper'
AND type = 'P')
DROP PROCEDURE fp_taPOHdrWrapper
GO
CREATE PROCEDURE fp_taPOHdrWrapper
-- fp_taPOHdrWrapper '1','PO0001','4/12/2027','ADVANCED0001'
@HeaderID int
AS
set transaction isolation level read uncommitted
DECLARE @RC int
DECLARE @I_vPOTYPE smallint
DECLARE @I_vPONUMBER char(17)
DECLARE @I_vVENDORID char(15)
DECLARE @I_vVENDNAME char(64)
DECLARE @I_vDOCDATE datetime
DECLARE @I_vBUYERID char(15)
DECLARE @I_vALLOWSOCMTS tinyint
DECLARE @I_vTRDISAMT numeric(19,5)
DECLARE @I_vFRTAMNT numeric(19,5)
DECLARE @I_vMSCCHAMT numeric(19,5)
DECLARE @I_vTAXAMNT numeric(19,5)
DECLARE @I_vSUBTOTAL numeric(19,5)
DECLARE @I_vCUSTNMBR char(15)
DECLARE @I_vPRSTADCD char(15)
DECLARE @I_vCMPNYNAM char(64)
DECLARE @I_vCONTACT char(60)
DECLARE @I_vADDRESS1 char(60)
DECLARE @I_vADDRESS2 char(60)
DECLARE @I_vADDRESS3 char(60)
DECLARE @I_vCITY char(35)
DECLARE @I_vSTATE char(29)
DECLARE @I_vZIPCODE char(10)
DECLARE @I_vCCode char(6)
DECLARE @I_vCOUNTRY char(60)
DECLARE @I_vPHONE1 char(21)
DECLARE @I_vPHONE2 char(21)
DECLARE @I_vPHONE3 char(21)
DECLARE @I_vFAX char(21)
DECLARE @I_vPrint_Phone_NumberGB smallint
DECLARE @I_vVADCDPAD char(15)
DECLARE @I_vPURCHCMPNYNAM char(64)
DECLARE @I_vPURCHCONTACT char(60)
DECLARE @I_vPURCHADDRESS1 char(60)
DECLARE @I_vPURCHADDRESS2 char(60)
DECLARE @I_vPURCHADDRESS3 char(60)
DECLARE @I_vPURCHCITY char(35)
DECLARE @I_vPURCHSTATE char(29)
DECLARE @I_vPURCHZIPCODE char(10)
DECLARE @I_vPURCHCCode char(6)
DECLARE @I_vPURCHCOUNTRY char(60)
DECLARE @I_vPURCHPHONE1 char(21)
DECLARE @I_vPURCHPHONE2 char(21)
DECLARE @I_vPURCHPHONE3 char(21)
DECLARE @I_vPURCHFAX char(21)
DECLARE @I_vPRBTADCD char(15)
DECLARE @I_vSHIPMTHD char(15)
DECLARE @I_vPYMTRMID char(20)
DECLARE @I_vDSCPCTAM numeric(19,2)
DECLARE @I_vDSCDLRAM numeric(19,5)
DECLARE @I_vDISAMTAV numeric(19,5)
DECLARE @I_vDUEDATE datetime
DECLARE @I_vDISCDATE datetime
DECLARE @I_vTXRGNNUM char(25)
DECLARE @I_vCONFIRM1 char(20)
DECLARE @I_vCOMMNTID char(15)
DECLARE @I_vCOMMENT_1 char(50)
DECLARE @I_vCOMMENT_2 char(50)
DECLARE @I_vCOMMENT_3 char(50)
DECLARE @I_vCOMMENT_4 char(50)
DECLARE @I_vHOLD tinyint
DECLARE @I_vTAXSCHID char(15)
DECLARE @I_vPurchase_Freight_Taxable smallint
DECLARE @I_vPurchase_Misc_Taxable smallint
DECLARE @I_vFRTSCHID char(15)
DECLARE @I_vMSCSCHID char(15)
DECLARE @I_vFRTTXAMT numeric(19,5)
DECLARE @I_vMSCTXAMT numeric(19,5)
DECLARE @I_vBCKTXAMT numeric(19,5)
DECLARE @I_vBackoutFreightTaxAmt numeric(19,5)
DECLARE @I_vBackoutMiscTaxAmt numeric(19,5)
DECLARE @I_vBackoutTradeDiscTax numeric(19,5)
DECLARE @I_vUSINGHEADERLEVELTAXES smallint
DECLARE @I_vCURNCYID char(15)
DECLARE @I_vXCHGRATE numeric(19,7)
DECLARE @I_vRATETPID char(15)
DECLARE @I_vEXPNDATE datetime
DECLARE @I_vEXCHDATE datetime
DECLARE @I_vEXGTBDSC char(30)
DECLARE @I_vEXTBLSRC char(50)
DECLARE @I_vRATEEXPR smallint
DECLARE @I_vDYSTINCR smallint
DECLARE @I_vRATEVARC numeric(19,7)
DECLARE @I_vTRXDTDEF smallint
DECLARE @I_vRTCLCMTD smallint
DECLARE @I_vPRVDSLMT smallint
DECLARE @I_vDATELMTS smallint
DECLARE @I_vTIME1 datetime
DECLARE @I_vUSERID char(15)
DECLARE @I_vPOSTATUS smallint
DECLARE @I_vCMMTTEXT varchar(500)
DECLARE @I_vPRMDATE datetime
DECLARE @I_vPRMSHPDTE datetime
DECLARE @I_vREQDATE datetime
DECLARE @I_vCONTENDDTE datetime
DECLARE @I_vCNTRLBLKTBY smallint
DECLARE @I_vREQTNDT datetime
DECLARE @I_vUpdateIfExists smallint
DECLARE @I_vNOTETEXT varchar(8000)
DECLARE @I_vRequesterTrx smallint
DECLARE @I_vUSRDEFND1 char(50)
DECLARE @I_vUSRDEFND2 char(50)
DECLARE @I_vUSRDEFND3 char(50)
DECLARE @I_vUSRDEFND4 varchar(8000)
DECLARE @I_vUSRDEFND5 varchar(8000)
DECLARE @O_iErrorState int
DECLARE @oErrString varchar(255)
DECLARE @ErrorDesc VARCHAR(MAX)
select
@I_vPOTYPE = po.POTYPE
,@I_vPONUMBER = po.PONUMBER
,@I_vVENDORID = po.VENDORID
,@I_vVENDNAME = po.VENDNAME
,@I_vDOCDATE = po.DOCDATE
,@I_vBUYERID = ISNULL(po.BUYERID,'')
,@I_vALLOWSOCMTS = po.ALLOWSOCMTS
,@I_vTRDISAMT = po.TRDISAMT
,@I_vFRTAMNT = isnull(po.FRTAMNT,0)
,@I_vMSCCHAMT = isnull(po.MSCCHAMT,0)
,@I_vTAXAMNT = po.TAXAMNT
,@I_vSUBTOTAL = po.SUBTOTAL
,@I_vCUSTNMBR = ISNULL(po.CUSTNMBR,'')
,@I_vPRSTADCD = po.PRSTADCD
,@I_vCMPNYNAM = po.CMPNYNAM
,@I_vCONTACT = po.CONTACT
,@I_vADDRESS1 = po.ADDRESS1
,@I_vADDRESS2 = po.ADDRESS2
,@I_vADDRESS3 = po.ADDRESS3
,@I_vCITY = po.CITY
,@I_vSTATE = po.STATE
,@I_vZIPCODE = po.ZIPCODE
,@I_vCCode = po.CCode
,@I_vCOUNTRY = po.COUNTRY
,@I_vPHONE1 = po.PHONE1
,@I_vPHONE2 = po.PHONE2
,@I_vPHONE3 = po.PHONE3
,@I_vFAX = po.FAX
,@I_vPrint_Phone_NumberGB = po.Print_Phone_NumberGB
,@I_vVADCDPAD = po.VADCDPAD
,@I_vPURCHCMPNYNAM = po.PURCHCMPNYNAM
,@I_vPURCHCONTACT = po.PURCHCONTACT
,@I_vPURCHADDRESS1 = po.PURCHADDRESS1
,@I_vPURCHADDRESS2 = po.PURCHADDRESS2
,@I_vPURCHADDRESS3 = po.PURCHADDRESS3
,@I_vPURCHCITY = po.PURCHCITY
,@I_vPURCHSTATE = po.PURCHSTATE
,@I_vPURCHZIPCODE = po.PURCHZIPCODE
,@I_vPURCHCCode = po.PURCHCCode
,@I_vPURCHCOUNTRY = po.PURCHCOUNTRY
,@I_vPURCHPHONE1 = po.PURCHPHONE1
,@I_vPURCHPHONE2 = po.PURCHPHONE2
,@I_vPURCHPHONE3 = po.PURCHPHONE3
,@I_vPURCHFAX = po.PURCHFAX
,@I_vPRBTADCD = po.PRBTADCD
,@I_vSHIPMTHD = po.SHIPMTHD
,@I_vPYMTRMID = po.PYMTRMID
,@I_vDSCPCTAM = po.DSCPCTAM
,@I_vDSCDLRAM = po.DSCDLRAM
,@I_vDISAMTAV = po.DISAMTAV
,@I_vDUEDATE = po.DUEDATE
,@I_vDISCDATE = po.DISCDATE
,@I_vTXRGNNUM = isnull(po.TXRGNNUM ,'')
,@I_vCONFIRM1 = isnull(po.CONFIRM1 ,'')
,@I_vCOMMNTID = isnull(po.COMMNTID ,'')
,@I_vCOMMENT_1 = isnull(po.COMMENT_1,'')
,@I_vCOMMENT_2 = isnull(po.COMMENT_2,'')
,@I_vCOMMENT_3 = isnull(po.COMMENT_3,'')
,@I_vCOMMENT_4 = isnull(po.COMMENT_4,'')
,@I_vHOLD = isnull(po.HOLD,'')
,@I_vTAXSCHID = po.TAXSCHID
,@I_vPurchase_Freight_Taxable = po.Purchase_Freight_Taxable
,@I_vPurchase_Misc_Taxable = po.Purchase_Misc_Taxable
,@I_vFRTSCHID = po.FRTSCHID
,@I_vMSCSCHID = po.MSCSCHID
,@I_vFRTTXAMT = po.FRTTXAMT
,@I_vMSCTXAMT = po.MSCTXAMT
,@I_vBCKTXAMT = po.BCKTXAMT
,@I_vBackoutFreightTaxAmt = po.BackoutFreightTaxAmt
,@I_vBackoutMiscTaxAmt = po.BackoutMiscTaxAmt
,@I_vBackoutTradeDiscTax = po.BackoutTradeDiscTax
,@I_vUSINGHEADERLEVELTAXES = po.USINGHEADERLEVELTAXES
,@I_vCURNCYID = po.CURNCYID
,@I_vXCHGRATE = ISNULL(po.XCHGRATE,0)
,@I_vRATETPID = po.RATETPID
,@I_vEXPNDATE = po.EXPNDATE
,@I_vEXCHDATE = po.EXCHDATE
,@I_vEXGTBDSC = po.EXGTBDSC
,@I_vEXTBLSRC = po.EXTBLSRC
,@I_vRATEEXPR = po.RATEEXPR
,@I_vDYSTINCR = po.DYSTINCR
,@I_vRATEVARC = po.RATEVARC
,@I_vTRXDTDEF = po.TRXDTDEF
,@I_vRTCLCMTD = po.RTCLCMTD
,@I_vPRVDSLMT = po.PRVDSLMT
,@I_vDATELMTS = po.DATELMTS
,@I_vTIME1 = po.TIME1
,@I_vUSERID = po.USERID
,@I_vPOSTATUS = ISNULL(po.POSTATUS,1)
,@I_vCMMTTEXT = ISNULL(po.CMMTTEXT,'')
,@I_vPRMDATE = po.PRMDATE
,@I_vPRMSHPDTE = po.PRMSHPDTE
,@I_vREQDATE = po.REQDATE
,@I_vCONTENDDTE = isnull(po.CONTENDDTE,'1/1/1900')
,@I_vCNTRLBLKTBY = isnull(po.CNTRLBLKTBY,'')
,@I_vREQTNDT = po.REQTNDT
,@I_vUpdateIfExists = po.UpdateIfExists
,@I_vNOTETEXT = po.NOTETEXT
,@I_vRequesterTrx = po.RequesterTrx
,@I_vUSRDEFND1 = po.USRDEFND1
,@I_vUSRDEFND2 = po.USRDEFND2
,@I_vUSRDEFND3 = po.USRDEFND3
,@I_vUSRDEFND4 = po.USRDEFND4
,@I_vUSRDEFND5 = po.USRDEFND5
FROM DDtaPOHdr po
WHERE rowid = @HeaderID
EXECUTE @RC = [dbo].[taPoHdr]
@I_vPOTYPE
,@I_vPONUMBER
,@I_vVENDORID
,@I_vVENDNAME
,@I_vDOCDATE
,@I_vBUYERID
,@I_vALLOWSOCMTS
,@I_vTRDISAMT
,@I_vFRTAMNT
,@I_vMSCCHAMT
,@I_vTAXAMNT
,@I_vSUBTOTAL
,@I_vCUSTNMBR
,@I_vPRSTADCD
,@I_vCMPNYNAM
,@I_vCONTACT
,@I_vADDRESS1
,@I_vADDRESS2
,@I_vADDRESS3
,@I_vCITY
,@I_vSTATE
,@I_vZIPCODE
,@I_vCCode
,@I_vCOUNTRY
,@I_vPHONE1
,@I_vPHONE2
,@I_vPHONE3
,@I_vFAX
,@I_vPrint_Phone_NumberGB
,@I_vVADCDPAD
,@I_vPURCHCMPNYNAM
,@I_vPURCHCONTACT
,@I_vPURCHADDRESS1
,@I_vPURCHADDRESS2
,@I_vPURCHADDRESS3
,@I_vPURCHCITY
,@I_vPURCHSTATE
,@I_vPURCHZIPCODE
,@I_vPURCHCCode
,@I_vPURCHCOUNTRY
,@I_vPURCHPHONE1
,@I_vPURCHPHONE2
,@I_vPURCHPHONE3
,@I_vPURCHFAX
,@I_vPRBTADCD
,@I_vSHIPMTHD
,@I_vPYMTRMID
,@I_vDSCPCTAM
,@I_vDSCDLRAM
,@I_vDISAMTAV
,@I_vDUEDATE
,@I_vDISCDATE
,@I_vTXRGNNUM
,@I_vCONFIRM1
,@I_vCOMMNTID
,@I_vCOMMENT_1
,@I_vCOMMENT_2
,@I_vCOMMENT_3
,@I_vCOMMENT_4
,@I_vHOLD
,@I_vTAXSCHID
,@I_vPurchase_Freight_Taxable
,@I_vPurchase_Misc_Taxable
,@I_vFRTSCHID
,@I_vMSCSCHID
,@I_vFRTTXAMT
,@I_vMSCTXAMT
,@I_vBCKTXAMT
,@I_vBackoutFreightTaxAmt
,@I_vBackoutMiscTaxAmt
,@I_vBackoutTradeDiscTax
,@I_vUSINGHEADERLEVELTAXES
,@I_vCURNCYID
,@I_vXCHGRATE
,@I_vRATETPID
,@I_vEXPNDATE
,@I_vEXCHDATE
,@I_vEXGTBDSC
,@I_vEXTBLSRC
,@I_vRATEEXPR
,@I_vDYSTINCR
,@I_vRATEVARC
,@I_vTRXDTDEF
,@I_vRTCLCMTD
,@I_vPRVDSLMT
,@I_vDATELMTS
,@I_vTIME1
,@I_vUSERID
,@I_vPOSTATUS
,@I_vCMMTTEXT
,@I_vPRMDATE
,@I_vPRMSHPDTE
,@I_vREQDATE
,@I_vCONTENDDTE
,@I_vCNTRLBLKTBY
,@I_vREQTNDT
,@I_vUpdateIfExists
,@I_vNOTETEXT
,@I_vRequesterTrx
,@I_vUSRDEFND1
,@I_vUSRDEFND2
,@I_vUSRDEFND3
,@I_vUSRDEFND4
,@I_vUSRDEFND5
,@O_iErrorState OUTPUT
,@oErrString OUTPUT
IF @O_iErrorState > 0 BEGIN
PRINT 'fp_taPOHdrWrapper error'
--SELECT @I_vPOTYPE ,@I_vPONUMBER ,@I_vVENDORID ,@I_vDOCDATE ,@I_vBUYERID ,@I_vFRTAMNT ,@I_vMSCCHAMT ,@I_vCUSTNMBR ,@I_vTXRGNNUM ,@I_vCONFIRM1 ,@I_vCOMMNTID ,@I_vCOMMENT_1 ,@I_vCOMMENT_2 ,@I_vCOMMENT_3 ,@I_vCOMMENT_4 ,@I_vHOLD ,@I_vPOSTATUS ,@I_vCMMTTEXT ,@I_vCONTENDDTE ,@I_vCNTRLBLKTBY
SELECT @ErrorDesc = 'po hdr error ' + CONVERT(VARCHAR(10),@O_iErrorState) + ' ' + tec.ErrorDesc
FROM dynamics..taErrorCode tec
WHERE tec.ErrorCode = @O_iErrorState
raiserror(@ErrorDesc, 16,2)
END ELSE BEGIN
SELECT @ErrorDesc = ''
end
-- fp_taPOLineWrapper 3
GO
grant exec on fp_taPOHdrWrapper to public
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'fp_taPOLineWrapper'
AND type = 'P')
DROP PROCEDURE fp_taPOLineWrapper
GO
CREATE PROCEDURE fp_taPOLineWrapper
-- fp_taPOLineWrapper 3
@LineID int
AS
set transaction isolation level read uncommitted
DECLARE @RC int
DECLARE @I_vPOTYPE smallint
DECLARE @I_vPONUMBER char(17)
DECLARE @I_vDOCDATE datetime
DECLARE @I_vVENDORID char(15)
DECLARE @I_vLOCNCODE char(10)
DECLARE @I_vVNDITNUM char(30)
DECLARE @I_vITEMNMBR char(30)
DECLARE @I_vQUANTITY numeric(19,5)
DECLARE @I_vQTYCANCE numeric(19,5)
DECLARE @I_vFREEONBOARD smallint
DECLARE @I_vREQSTDBY char(20)
DECLARE @I_vCOMMNTID char(15)
DECLARE @I_vCOMMENT_1 char(50)
DECLARE @I_vCOMMENT_2 char(50)
DECLARE @I_vCOMMENT_3 char(50)
DECLARE @I_vCOMMENT_4 char(50)
DECLARE @I_vREQDATE datetime
DECLARE @I_vRELEASEBYDATE datetime
DECLARE @I_vPRMDATE datetime
DECLARE @I_vPRMSHPDTE datetime
DECLARE @I_vNONINVEN smallint
DECLARE @I_vIVIVINDX int
DECLARE @I_vInventoryAccount varchar(75)
DECLARE @I_vITEMDESC char(100)
DECLARE @I_vUNITCOST numeric(19,5)
DECLARE @I_vVNDITDSC char(100)
DECLARE @I_vUOFM char(8)
DECLARE @I_vPurchase_IV_Item_Taxable smallint
DECLARE @I_vPurchase_Item_Tax_Schedu char(15)
DECLARE @I_vPurchase_Site_Tax_Schedu char(15)
DECLARE @I_vBSIVCTTL smallint
DECLARE @I_vTAXAMNT numeric(19,5)
DECLARE @I_vBCKTXAMT numeric(19,5)
DECLARE @I_vLanded_Cost_Group_ID char(15)
DECLARE @I_vPLNNDSPPLID smallint
DECLARE @I_vSHIPMTHD char(15)
DECLARE @I_vBackoutTradeDiscTax numeric(19,5)
DECLARE @I_vPOLNESTA smallint
DECLARE @I_vCMMTTEXT varchar(500)
DECLARE @I_vORD int
DECLARE @I_vCUSTNMBR char(15)
DECLARE @I_vADRSCODE char(15)
DECLARE @I_vCMPNYNAM char(64)
DECLARE @I_vCONTACT char(60)
DECLARE @I_vADDRESS1 char(60)
DECLARE @I_vADDRESS2 char(60)
DECLARE @I_vADDRESS3 char(60)
DECLARE @I_vCITY char(35)
DECLARE @I_vSTATE char(29)
DECLARE @I_vZIPCODE char(10)
DECLARE @I_vCCode char(6)
DECLARE @I_vCOUNTRY char(60)
DECLARE @I_vPHONE1 char(21)
DECLARE @I_vPHONE2 char(21)
DECLARE @I_vPHONE3 char(21)
DECLARE @I_vFAX char(21)
DECLARE @I_vPrint_Phone_NumberGB smallint
DECLARE @I_vCURNCYID char(15)
DECLARE @I_vProjNum char(15)
DECLARE @I_vCostCatID char(15)
DECLARE @I_vLineNumber int
DECLARE @I_vUpdateIfExists smallint
DECLARE @I_vNOTETEXT varchar(8000)
DECLARE @I_vRequesterTrx smallint
DECLARE @I_vUSRDEFND1 char(50)
DECLARE @I_vUSRDEFND2 char(50)
DECLARE @I_vUSRDEFND3 char(50)
DECLARE @I_vUSRDEFND4 varchar(8000)
DECLARE @I_vUSRDEFND5 varchar(8000)
DECLARE @O_iErrorState int
DECLARE @oErrString varchar(255)
DECLARE @ErrorDesc VARCHAR(MAX)
SELECT
@I_vPOTYPE = pol.POTYPE
,@I_vPONUMBER = pol.PONUMBER
,@I_vDOCDATE = pol.DOCDATE
,@I_vVENDORID = pol.VENDORID
,@I_vLOCNCODE = pol.LOCNCODE
,@I_vVNDITNUM = ISNULL(pol.VNDITNUM,'')
,@I_vITEMNMBR = pol.ITEMNMBR
,@I_vQUANTITY = pol.QUANTITY
,@I_vQTYCANCE = pol.QTYCANCE
,@I_vFREEONBOARD = ISNULL(pol.FREEONBOARD,1)
,@I_vREQSTDBY = ISNULL(pol.REQSTDBY,'')
,@I_vCOMMNTID = ISNULL(pol.COMMNTID,'')
,@I_vCOMMENT_1 = isnull(pol.COMMENT_1,'')
,@I_vCOMMENT_2 = isnull(pol.COMMENT_2,'')
,@I_vCOMMENT_3 = isnull(pol.COMMENT_3,'')
,@I_vCOMMENT_4 = isnull(pol.COMMENT_4,'')
,@I_vREQDATE = isnull(pol.REQDATE ,'1/1/1900')
,@I_vRELEASEBYDATE = isnull(pol.RELEASEBYDATE,'1/1/1900')
,@I_vPRMDATE = isnull(pol.PRMDATE ,'1/1/1900')
,@I_vPRMSHPDTE = isnull(pol.PRMSHPDTE ,'1/1/1900')
,@I_vNONINVEN = isnull(pol.NONINVEN, 0)
,@I_vIVIVINDX = isnull(pol.IVIVINDX,0)
,@I_vInventoryAccount = isnull(pol.InventoryAccount,'')
,@I_vITEMDESC = isnull(pol.ITEMDESC,'')
,@I_vUNITCOST = pol.UNITCOST
,@I_vVNDITDSC = isnull(pol.VNDITDSC,'')
,@I_vUOFM = isnull(pol.UOFM,'')
,@I_vPurchase_IV_Item_Taxable = pol.Purchase_IV_Item_Taxable
,@I_vPurchase_Item_Tax_Schedu = pol.Purchase_Item_Tax_Schedu
,@I_vPurchase_Site_Tax_Schedu = pol.Purchase_Site_Tax_Schedu
,@I_vBSIVCTTL = pol.BSIVCTTL
,@I_vTAXAMNT = pol.TAXAMNT
,@I_vBCKTXAMT = pol.BCKTXAMT
,@I_vLanded_Cost_Group_ID = pol.Landed_Cost_Group_ID
,@I_vPLNNDSPPLID = pol.PLNNDSPPLID
,@I_vSHIPMTHD = pol.SHIPMTHD
,@I_vBackoutTradeDiscTax = pol.BackoutTradeDiscTax
,@I_vPOLNESTA = ISNULL(pol.POLNESTA,1)
,@I_vCMMTTEXT = ISNULL(pol.CMMTTEXT,'')
,@I_vORD = pol.ORD
,@I_vCUSTNMBR = pol.CUSTNMBR
,@I_vADRSCODE = pol.ADRSCODE
,@I_vCMPNYNAM = pol.CMPNYNAM
,@I_vCONTACT = pol.CONTACT
,@I_vADDRESS1 = pol.ADDRESS1
,@I_vADDRESS2 = pol.ADDRESS2
,@I_vADDRESS3 = pol.ADDRESS3
,@I_vCITY = pol.CITY
,@I_vSTATE = pol.STATE
,@I_vZIPCODE = pol.ZIPCODE
,@I_vCCode = pol.CCode
,@I_vCOUNTRY = pol.COUNTRY
,@I_vPHONE1 = pol.PHONE1
,@I_vPHONE2 = pol.PHONE2
,@I_vPHONE3 = pol.PHONE3
,@I_vFAX = pol.FAX
,@I_vPrint_Phone_NumberGB = pol.Print_Phone_NumberGB
,@I_vCURNCYID = ISNULL(pol.CURNCYID,'')
,@I_vProjNum = isnull(pol.ProjNum ,'')
,@I_vCostCatID = isnull(pol.CostCatID,'')
,@I_vLineNumber = pol.LineNumber
,@I_vUpdateIfExists = pol.UpdateIfExists
,@I_vNOTETEXT = pol.NOTETEXT
,@I_vRequesterTrx = pol.RequesterTrx
,@I_vUSRDEFND1 = pol.USRDEFND1
,@I_vUSRDEFND2 = pol.USRDEFND2
,@I_vUSRDEFND3 = pol.USRDEFND3
,@I_vUSRDEFND4 = pol.USRDEFND4
,@I_vUSRDEFND5 = pol.USRDEFND5
FROM DDtaPOLine pol
WHERE pol.RowID = @LineID
IF NOT EXISTS(SELECT 1 FROM iv00103 WHERE VENDORID = @I_vVENDORID AND VNDITNUM = @I_vITEMNMBR ) BEGIN
INSERT INTO iv00103 (vendorid , itmvndty, ITEMNMBR , VNDITNUM)
VALUES (@I_vVENDORID, 1 , @I_vITEMNMBR, @I_vITEMNMBR)
PRINT 'end insert'
end
-- fp_taPOLineWrapper 3
EXECUTE @RC = taPoLine
@I_vPOTYPE
,@I_vPONUMBER
,@I_vDOCDATE
,@I_vVENDORID
,@I_vLOCNCODE
,@I_vVNDITNUM
,@I_vITEMNMBR
,@I_vQUANTITY
,@I_vQTYCANCE
,@I_vFREEONBOARD
,@I_vREQSTDBY
,@I_vCOMMNTID
,@I_vCOMMENT_1
,@I_vCOMMENT_2
,@I_vCOMMENT_3
,@I_vCOMMENT_4
,@I_vREQDATE
,@I_vRELEASEBYDATE
,@I_vPRMDATE
,@I_vPRMSHPDTE
,@I_vNONINVEN
,@I_vIVIVINDX
,@I_vInventoryAccount
,@I_vITEMDESC
,@I_vUNITCOST
,@I_vVNDITDSC
,@I_vUOFM
,@I_vPurchase_IV_Item_Taxable
,@I_vPurchase_Item_Tax_Schedu
,@I_vPurchase_Site_Tax_Schedu
,@I_vBSIVCTTL
,@I_vTAXAMNT
,@I_vBCKTXAMT
,@I_vLanded_Cost_Group_ID
,@I_vPLNNDSPPLID
,@I_vSHIPMTHD
,@I_vBackoutTradeDiscTax
,@I_vPOLNESTA
,@I_vCMMTTEXT
,@I_vORD
,@I_vCUSTNMBR
,@I_vADRSCODE
,@I_vCMPNYNAM
,@I_vCONTACT
,@I_vADDRESS1
,@I_vADDRESS2
,@I_vADDRESS3
,@I_vCITY
,@I_vSTATE
,@I_vZIPCODE
,@I_vCCode
,@I_vCOUNTRY
,@I_vPHONE1
,@I_vPHONE2
,@I_vPHONE3
,@I_vFAX
,@I_vPrint_Phone_NumberGB
,@I_vCURNCYID
,@I_vProjNum
,@I_vCostCatID
,@I_vLineNumber
,@I_vUpdateIfExists
,@I_vNOTETEXT
,@I_vRequesterTrx
,@I_vUSRDEFND1
,@I_vUSRDEFND2
,@I_vUSRDEFND3
,@I_vUSRDEFND4
,@I_vUSRDEFND5
,@O_iErrorState OUTPUT
,@oErrString OUTPUT
IF @O_iErrorState > 0 BEGIN
SELECT @ErrorDesc = tec.ErrorDesc
FROM dynamics..taErrorCode tec
WHERE tec.ErrorCode = @O_iErrorState
raiserror(@ErrorDesc, 16,2)
END ELSE BEGIN
SELECT @ErrorDesc = ''
end
-- fp_taPOLineWrapper 3
GO
grant exec on fp_taPOLineWrapper to public