taPMTransactionInsert Wrapper, including distributions

 

DECLARE @RC int
DECLARE @O_iErrorState int
DECLARE @oErrString varchar(255)
DECLARE @I_sCNTRLTYP SMALLINT,
    @DocType INT,
            --0 - Next Voucher Number
            --1 - Next Payment Number
            --2 - Next Alignment Number
    @I_vVCHNUMWK char(17) ,
    @dt as date = FORMAT(GETDATE(),'MM/dd/yyyy'),
    @Sequence int = 16384
  
SELECT
        @I_vVCHNUMWK = '',
        @I_sCNTRLTYP = 0,
        @O_iErrorState = '',
        @O_iErrorState = 0,
        @oErrString = ''
         
  
EXECUTE @RC = taGetPMNextVoucherNumber
  @I_vVCHNUMWK OUTPUT,
  @I_sCNTRLTYP,
  @O_iErrorState OUTPUT
  
SELECT @I_vVCHNUMWK AS VCHRNMBR,  @oErrString AS ErrorString
 
select
        @O_iErrorState = '',
        @O_iErrorState = 0
 
BEGIN TRY
    BEGIN TRAN
        -- be carefull not to exit this or the transaction will not get committed, you'll lock the table up
          
        exec taPMDistribution
            @I_vDOCTYPE = 1,
            @I_vVCHRNMBR = @I_vVCHNUMWK,
            @I_vVENDORID = 'ACETRAVE0001   ',
            @I_vDSTSQNUM = @Sequence,
            @I_vDISTTYPE = 6,   --1=Cash;
                                --2=Pay;
                                --3=Avail;
                                --4=Taken;
                                --5=Fnchg;
                                --6=Purch;
                                --7=Trade;
                                --8=Misc;
                                --9=Freight;
                                --10=Taxes;
                                --11=Write;
                                --12=Other;
                                --13=Gst;
                                --14=Wh;
                                --15=Unit;
                                --16=Round
            --@I_vACTNUMST = 0,
            @I_vACTINDX = 270, --Use one or the other
            @I_vDEBITAMT = 50,
            @I_vCRDTAMNT = 0,
            @O_iErrorState = @O_iErrorState OUT,
            @oErrString = @oErrString OUT
         
        SELECT @Sequence = @Sequence + 16384
        exec taPMDistribution
            @I_vDOCTYPE = 1,
            @I_vVCHRNMBR = @I_vVCHNUMWK,
            @I_vVENDORID = 'ACETRAVE0001   ',
            @I_vDSTSQNUM = @Sequence,
            @I_vDISTTYPE = 10, 
            --@I_vACTNUMST = 0,
            @I_vACTINDX = 167, --Use one or the other
            @I_vDEBITAMT = 50,
            @I_vCRDTAMNT = 0,
            @O_iErrorState = @O_iErrorState OUT,
            @oErrString = @oErrString OUT
         
        SELECT @Sequence = @Sequence + 16384
        exec taPMDistribution
            @I_vDOCTYPE = 1,
            @I_vVCHRNMBR = @I_vVCHNUMWK,
            @I_vVENDORID = 'ACETRAVE0001   ',
            @I_vDSTSQNUM = @Sequence,
            @I_vDISTTYPE = 2,  
            --@I_vACTNUMST = 0,
            @I_vACTINDX = 35, --Use one or the other
            @I_vDEBITAMT = 0,
            @I_vCRDTAMNT = 50,
            @O_iErrorState = @O_iErrorState OUT,
            @oErrString = @oErrString OUT
 
        if @O_iErrorState = 0 begin
            exec taPMTransactionInsert
                @I_vVCHNUMWK = @I_vVCHNUMWK,
                @I_vDOCNUMBR = @I_vVCHNUMWK, --this is the vendor's invoice number, it has to be unique. We'll use the voucher number to ensure that... but normally it would be different
                @I_vDOCTYPE = '1',
                @I_vDOCAMNT = 50,
                @I_vCHRGAMNT = 50,
                @I_vPRCHAMNT = 50,
                @I_vDOCDATE = @dt,
                @I_vCREATEDIST = 0, --0 = MANUAL, 1 = AUTOMATIC
                @i_vBACHNUMB = 'PAYABLES BATCH ',
                @I_vVENDORID = 'ACETRAVE0001   ',
                @O_iErrorState = @O_iErrorState OUT,
                @oErrString = @oErrString OUT
        end
  
        SELECT @oErrString, @O_iErrorState
        SELECT * FROM DYNAMICS..TAERRORCODE where errorcode = @O_iErrorState
 
        select * from pm10000 where VCHRNMBR = @I_vVCHNUMWK
        select * from pm10100 where VCHRNMBR = @I_vVCHNUMWK
 
 
    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

 

 


RealWorldCode gives developers practical, real‑world solutions with clean, working code — no fluff, no theory, just answers.
Links
Home
Knowledge Areas
Sitemap
Contact
Et cetera
Privacy Policy
Terms and Conditions
Cookie Preferences