project QadFinancials > class BDivision > method ApiSelectDivisionCOAMask
API query
Description
Query procedure to get Sub-accounts with respect of defined COA Masks
Parameters
Internal usage
unused
program code (program6/bdivision.p)
define buffer bDivisionForCOAMaskRangeSelect for tqDivisionForCOAMaskRangeSelect.
/* ====================================================================================== *
* Method: ApiSelectDivisionCOAMask *
* Desc: This method is used to retrieve all Sub-accounts which fits entered *
* filtering criteria and also there is valid COA Mask for this Sub-account *
* -------------------------------------------------------------------------------------- *
* Input parameters: Sub-account *
* Description *
* Active *
* BudgetGroup *
* Sub-Account COA Mask *
* ====================================================================================== */
assign oiReturnStatus = -98
viLocalReturn = 0.
QUERY_BLOCK:
do on error undo, return:
empty temp-table tqApiSelectDivisionCOAMask.
/* Get COA Mask definition from Domain */
assign vhFcComponent = vhCacher.
<M-2 run GetLogicalValueFromSession
(input viSessionID (iiSessionId),
input {&COAMASK-ISMASKDIV} (icDataItemName),
output vlCOAMaskDiv (olValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave QUERY_BLOCK.
assign vhFcComponent = vhCacher.
<M-3 run GetLogicalValueFromSession
(input viSessionID (iiSessionId),
input {&COAMASK-ISMASKDIVALL} (icDataItemName),
output vlCOAMaskDivAll (olValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave QUERY_BLOCK.
assign vhFcComponent = vhCacher.
<M-6 run GetIntegerValueFromSession
(input viSessionID (iiSessionId),
input 'SharedSetForSUBACCOUNTCOAMASK':U (icDataItemName),
output viCOAMaskDivSharedSetId (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave QUERY_BLOCK.
assign vhFcComponent = vhCacher.
<M-9 run GetIntegerValueFromSession
(input viSessionID (iiSessionId),
input 'SharedSetForGL':U (icDataItemName),
output viGLSharedSetId (oiValue),
output viFcReturnSuper (oiReturnStatus)) in Cacher>
if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave QUERY_BLOCK.
/* Get values of filtering parameters */
<M-1 run SelectDivisionCOAMaskFilter
(input-output vcDivisionEq (bcDivisionEq),
input-output vcDivisionNotEq (bcDivisionNotEq),
input-output vcDivisionFrom (bcDivisionFrom),
input-output vcDivisionTo (bcDivisionTo),
input-output vcDivisionMatches (bcDivisionContains),
input-output vcDivisionDescEq (bcDivisionDescEq),
input-output vcDivisionDescNotEq (bcDivisionDescNotEq),
input-output vcDivisionDescFrom (bcDivisionDescFrom),
input-output vcDivisionDescTo (bcDivisionDescTo),
input-output vcDivisionDescMatches (bcDivisionDescContains),
input-output vlActive (blActive),
input-output vcBudgetGroupEq (bcBudgetGroupEq),
input-output vcBudgetGroupNotEq (bcBudgetGroupNotEq),
input-output vcBudgetGroupFrom (bcBudgetGroupFrom),
input-output vcBudgetGroupTo (bcBudgetGroupTo),
input-output vcBudgetGroupMatches (bcBudgetGroupContains),
input-output vcGLCode (bcGLCode),
output viFcReturnSuper (oiReturnStatus)) in BDivision>
if viFcReturnSuper <> 0 then assign viLocalReturn = viFcReturnSuper.
if viFcReturnSuper < 0 then leave QUERY_BLOCK.
/* Start building of resulting data set */
assign viSeq = 1.
/* if COA Mask Sub-account is activated filter on COA mask */
if vlCOAMaskDiv and
vcGLCode <> ? and
vcGLCode <> "":U
then do:
/* Get those divisions which fist's entered GL account */
<Q-8 run DivisionForCOAMaskRangeSelect (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input vcDivisionEq, (DivisionCodeEqual)
input vcDivisionNotEq, (DivisionCodeNotEqual)
input vcDivisionTo, (DivisionCodeTo)
input vcDivisionFrom, (DivisionCodeFrom)
input vcDivisionMatches, (DivisionCodeMatches)
input viCOAMaskDivSharedSetId, (COAMaskDivSharedSetId)
input vcDivisionDescEq, (DivisionDescEq)
input vcDivisionDescNotEq, (DivisionDescNotEq)
input vcDivisionDescFrom, (DivisionDescFrom)
input vcDivisionDescTo, (DivisionDescTo)
input vcDivisionDescMatches, (DivisionDescMatches)
input vcBudgetGroupEq, (BudgetGroupEq)
input vcBudgetGroupNotEq, (BudgetGroupNotEq)
input vcBudgetGroupFrom, (BudgetGroupFrom)
input vcBudgetGroupTo, (BudgetGroupTo)
input vcBudgetGroupMatches, (BudgetGroupMatches)
input vcGLCode, (GLCode)
input viGLSharedSetId, (GLSharedSetId)
input vlActive, (DivisionIsActive)
output dataset tqDivisionForCOAMaskRangeSelect) in BDivision >
for each tqDivisionForCOAMaskRangeSelect
group by tqDivisionForCOAMaskRangeSelect.tcDivisionCode:
if first-of(tqDivisionForCOAMaskRangeSelect.tcDivisionCode) and
not can-find(first bDivisionForCOAMaskRangeSelect where
bDivisionForCOAMaskRangeSelect.tiDivision_ID = tqDivisionForCOAMaskRangeSelect.tiDivision_ID and
bDivisionForCOAMaskRangeSelect.tlCOAMaskDivGLIsNeg = true)
then do:
create tqApiSelectDivisionCOAMask.
assign tqApiSelectDivisionCOAMask.tiDivision_ID = tqDivisionForCOAMaskRangeSelect.tiDivision_ID
tqApiSelectDivisionCOAMask.tcDivisionCode = tqDivisionForCOAMaskRangeSelect.tcDivisionCode
tqApiSelectDivisionCOAMask.tcDivisionDescription = tqDivisionForCOAMaskRangeSelect.tcDivisionDescription
tqApiSelectDivisionCOAMask.tlDivisionIsActive = tqDivisionForCOAMaskRangeSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMask.tcBudgetGroupCode = tqDivisionForCOAMaskRangeSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMask.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMask.ti_Sequence = viSeq
viSeq = viSeq + 1.
end.
end. /* for each tqDivisionForCOAMaskRangeSelect */
/* If empty COA Mask on Sub-acconts means Sllow all, then take also these sub-accounts */
if vlCOAMaskDivAll
then do:
<Q-5 run DivisionForCOAMaskSelect (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input vcDivisionEq, (DivisionCodeEqual)
input vcDivisionNotEq, (DivisionCodeNotEqual)
input vcDivisionTo, (DivisionCodeTo)
input vcDivisionFrom, (DivisionCodeFrom)
input vcDivisionMatches, (DivisionCodeMatches)
input viCOAMaskDivSharedSetId, (COAMaskDivSharedSetId)
input vcDivisionDescEq, (DivisionDescEq)
input vcDivisionDescNotEq, (DivisionDescNotEq)
input vcDivisionDescFrom, (DivisionDescFrom)
input vcDivisionDescTo, (DivisionDescTo)
input vcDivisionDescMatches, (DivisionDescMatches)
input vcBudgetGroupEq, (BudgetGroupEq)
input vcBudgetGroupNotEq, (BudgetGroupNotEq)
input vcBudgetGroupFrom, (BudgetGroupFrom)
input vcBudgetGroupTo, (BudgetGroupTo)
input vcBudgetGroupMatches, (BudgetGroupMatches)
input vlActive, (DivisionIsActive)
output dataset tqDivisionForCOAMaskSelect) in BDivision >
for each tqDivisionForCOAMaskSelect:
/* Take only those divisions, which does not have linked COA Mask in the domain */
if tqDivisionForCOAMaskSelect.tiProfileLink_ID <> 0 and
tqDivisionForCOAMaskSelect.tiProfileLink_ID <> ?
then next.
create tqApiSelectDivisionCOAMask.
assign tqApiSelectDivisionCOAMask.tiDivision_ID = tqDivisionForCOAMaskSelect.tiDivision_ID
tqApiSelectDivisionCOAMask.tcDivisionCode = tqDivisionForCOAMaskSelect.tcDivisionCode
tqApiSelectDivisionCOAMask.tcDivisionDescription = tqDivisionForCOAMaskSelect.tcDivisionDescription
tqApiSelectDivisionCOAMask.tlDivisionIsActive = tqDivisionForCOAMaskSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMask.tcBudgetGroupCode = tqDivisionForCOAMaskSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMask.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMask.ti_Sequence = viSeq
viSeq = viSeq + 1.
end. /* for each tqDivisionForCOAMaskSelect: */
end. /* if vlCOAMaskDivAll */
end. /* if vlCOAMaskDiv */
/* COA Mask on Sub-account is not activated */
else do:
<Q-7 run DivisionForCOAMaskSelect (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input vcDivisionEq, (DivisionCodeEqual)
input vcDivisionNotEq, (DivisionCodeNotEqual)
input vcDivisionTo, (DivisionCodeTo)
input vcDivisionFrom, (DivisionCodeFrom)
input vcDivisionMatches, (DivisionCodeMatches)
input viCOAMaskDivSharedSetId, (COAMaskDivSharedSetId)
input vcDivisionDescEq, (DivisionDescEq)
input vcDivisionDescNotEq, (DivisionDescNotEq)
input vcDivisionDescFrom, (DivisionDescFrom)
input vcDivisionDescTo, (DivisionDescTo)
input vcDivisionDescMatches, (DivisionDescMatches)
input vcBudgetGroupEq, (BudgetGroupEq)
input vcBudgetGroupNotEq, (BudgetGroupNotEq)
input vcBudgetGroupFrom, (BudgetGroupFrom)
input vcBudgetGroupTo, (BudgetGroupTo)
input vcBudgetGroupMatches, (BudgetGroupMatches)
input vlActive, (DivisionIsActive)
output dataset tqDivisionForCOAMaskSelect) in BDivision >
for each tqDivisionForCOAMaskSelect:
create tqApiSelectDivisionCOAMask.
assign tqApiSelectDivisionCOAMask.tiDivision_ID = tqDivisionForCOAMaskSelect.tiDivision_ID
tqApiSelectDivisionCOAMask.tcDivisionCode = tqDivisionForCOAMaskSelect.tcDivisionCode
tqApiSelectDivisionCOAMask.tcDivisionDescription = tqDivisionForCOAMaskSelect.tcDivisionDescription
tqApiSelectDivisionCOAMask.tlDivisionIsActive = tqDivisionForCOAMaskSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMask.tcBudgetGroupCode = tqDivisionForCOAMaskSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMask.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMask.ti_Sequence = viSeq
viSeq = viSeq + 1.
end.
end. /* COA Mask on Sub-account is not activated */
end. /* QUERY_BLOCK */
assign oiReturnStatus = viLocalReturn.
Sample code: how to call this method through RPCRequestService (QXtend Inbound)
define temp-table ttContext no-undo
field propertyQualifier as character
field propertyName as character
field propertyValue as character
index entityContext is primary unique
propertyQualifier
propertyName
index propertyQualifier
propertyQualifier.
define dataset dsContext for ttContext.
define variable vhContextDS as handle no-undo.
define variable vhExceptionDS as handle no-undo.
define variable vhServer as handle no-undo.
define variable vhInputDS as handle no-undo.
define variable vhInputOutputDS as handle no-undo.
define variable vhOutputDS as handle no-undo.
define variable vhParameter as handle no-undo.
/* Create context */
create ttContext.
assign ttContext.propertyName = "programName"
ttContext.propertyValue = "BDivision".
create ttContext.
assign ttContext.propertyName = "methodName"
ttContext.propertyValue = "ApiSelectDivisionCOAMask".
create ttContext.
assign ttContext.propertyName = "applicationId"
ttContext.propertyValue = "fin".
create ttContext.
assign ttContext.propertyName = "entity"
ttContext.propertyValue = "1000".
create ttContext.
assign ttContext.propertyName = "userName"
ttContext.propertyValue = "mfg".
create ttContext.
assign ttContext.propertyName = "password"
ttContext.propertyValue = "".
/* Create input dataset */
create dataset vhInputDS.
vhInputDS:read-xmlschema("file", "xml/bdivision.apiselectdivisioncoamask.i.xsd", ?).
vhParameter = vhInputDS:get-buffer-handle("tFilter").
vhParameter:buffer-create().
assign vhParameter::<field-name-1> = <field-value-1>
vhParameter::<field-name-2> = <field-value-2>
...
/* Connect the AppServer */
create server vhServer.
vhServer:connect("-URL <appserver-url>").
if not vhServer:connected()
then do:
message "Could not connect AppServer" view-as alert-box error title "Error".
return.
end.
/* Run */
assign vhContextDS = dataset dsContext:handle.
run program/rpcrequestservice.p on vhServer
(input-output dataset-handle vhContextDS by-reference,
output dataset-handle vhExceptionDS,
input dataset-handle vhInputDS by-reference,
input-output dataset-handle vhInputOutputDS by-reference,
output dataset-handle vhOutputDS).
/* Handle output however you want, in this example, we dump it to xml */
if valid-handle(vhExceptionDS)
then vhExceptionDS:write-xml("file", "Exceptions.xml", true).
if valid-handle(vhOutputDS)
then vhOutputDS:write-xml("file", "Output.xml", true).
/* Cleanup */
vhServer:disconnect().
assign vhServer = ?.
if valid-handle(vhInputDS)
then delete object vhInputDS.
if valid-handle(vhOutputDS)
then delete object vhOutputDS.
if valid-handle(vhExceptionDS)
then delete object vhExceptionDS.