project BLF > class Transaction > method SetPriority

Description

Change the sequence (or priority) in which component instances of a single transaction are written to the database.


Parameters


iiInstanceNrinputintegerInstance number
icPriorityinputcharacterPriority to set :
'FIRST' = commit before all other business instances
'LAST' = commit after all other business instances
'+<ID>' = commit after instance with this ID
'-<ID>' = commit before instance with this ID
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.ValidateComponent
method BDInvoiceJournalEntry.ApiStdMaintainTT


program code (program1/transaction.p)

assign oiReturnStatus = -98.

find first tInstances where
           tInstances.tiInstanceNr = iiInstanceNr no-error.
if not available tInstances
then return.

if icPriority = "FIRST":U
then do:
    assign tInstances.tiPriority = -9999
           oiReturnStatus        = 0.
    return.
end.

if icPriority = "LAST":U
then do:
    assign tInstances.tiPriority = +9999
           oiReturnStatus        = 0.
    return.
end.

if icPriority begins "+":U
then do:
    find first bInstances where
               bInstances.tiInstanceNr = integer(substring(icPriority,2,-1,"CHARACTER":U)) no-error.
    if not available bInstances
    then return.
    
    assign tInstances.tiPriority = bInstances.tiPriority.
    
    if bInstances.tiPriority = +9999
    then assign bInstances.tiPriority = +9900.

    for each bInstances:
        if  bInstances.tiPriority > tInstances.tiPriority
        and bInstances.tiPriority < +9999
        then assign bInstances.tiPriority = bInstances.tiPriority + 1.
    end.

    
    assign tInstances.tiPriority = tInstances.tiPriority + 1
           oiReturnStatus        = 0.
end.

if icPriority begins "-":U
then do:
    find first bInstances where
               bInstances.tiInstanceNr = integer(substring(icPriority,2,-1,"CHARACTER":U)) no-error.
    if not available bInstances
    then return.
    
    assign tInstances.tiPriority = bInstances.tiPriority.

    if bInstances.tiPriority = -9999
    then assign bInstances.tiPriority = -9900.

    for each bInstances:
        if  bInstances.tiPriority < tInstances.tiPriority
        and bInstances.tiPriority > -9999
        then assign bInstances.tiPriority = bInstances.tiPriority - 1.
    end.
    
    assign tInstances.tiPriority = tInstances.tiPriority - 1
           oiReturnStatus        = 0.
end.