project QadFinancials > class BDivision > method ApiSelectDivisionCOAMaskEnt
API query
Description
Query procedure to get Sub-accounts with respect of defined COA Masks per entity
Parameters
Internal usage
unused
program code (program6/bdivision.p)
define buffer bDivisionForCOAMaskRangeSelect for tqDivisionForCOAMaskRangeSelect.
/* ====================================================================================== *
* Method: ApiSelectDivisionCOAMaskEnt *
* 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 *
* Company ID *
* ====================================================================================== */
assign oiReturnStatus = -98
viLocalReturn = 0.
QUERY_BLOCK:
do on error undo, return:
empty temp-table tqApiSelectDivisionCOAMaskEnt.
find first tFilter where tFilter.tcBusinessFieldName = "iiCompanyId":U
no-error.
if available tFilter
then assign viFilterCompanyID = integer(tFilter.tcParameterValue).
if viFilterCompanyID = ? or viFilterCompanyID = 0
then assign viFilterCompanyID = viCompanyID.
/* Get the domain id for company */
<Q-85 run SelectCompany (all) (Read) (NoCache)
(input viFilterCompanyID, (CompanyId)
output dataset tqSelectCompany) in BCompany >
find first tqSelectCompany where
tqSelectCompany.tiCompany_ID = viFilterCompanyID
no-error.
if not available tqSelectCompany then do:
/* throw an error set message */
assign vcMessage = trim(substitute(#T-14'Entity with ID:$1 cannot be found.':100(49148)T-14#,viFilterCompanyID)).
viFcReturnSuper = -1.
<M-53 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input '':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-737175':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output oiReturnStatus (oiReturnStatus)) in BDivision>
leave QUERY_BLOCK.
end.
/*COA Mask definition from Domain */
<Q-90 run DomainPropertyByDomain (all) (Read) (NoCache)
(input tqSelectCompany.tiDomain_ID, (DomainID)
output dataset tqDomainPropertyByDomain) in BDomainProperty >
find first tqDomainPropertyByDomain where
tqDomainPropertyByDomain.tiDomain_ID = tqSelectCompany.tiDomain_ID
no-error.
/* Fill in tiCOAMaskCC_ID and tcCOAMaskCCCode */
if available tqDomainPropertyByDomain
then assign vlCOAMaskCC = tqDomainPropertyByDomain.tlDomainPropertyIsMaskCC
vlCOAMaskCCAll = tqDomainPropertyByDomain.tlDomainPropertyIsMaskCCAll.
<Q-15 run DomainByDomainSharedSet (all) (Read) (NoCache)
(input tqDomainPropertyByDomain.tiDomain_ID, (DomainID)
input ?, (SharedSetID)
input ?, (SharedSetCode)
input ?, (SharedSetType)
output dataset tqDomainByDomainSharedSet) in BDomain >
/* Get COAMaskCC shared set id */
find first tqDomainByDomainSharedSet where tqDomainByDomainSharedSet.tcSharedSetTypeCode = {&SHAREDSETTYPECODE-COSTCENTRE-COAMASK}
no-error.
if not available tqDomainByDomainSharedSet
then do:
assign
vcMessage = #T-13'There is missing definition of Shared set of Cost Centre COA Mask.':255(999890796)T-13#
vcContext = "Domain=&1|SharedSetType=&2":U
vcContext = replace(vcContext, "|":U, chr(10))
vcContext = substitute(vcContext, tqDomainPropertyByDomain.tiDomain_ID, {&SHAREDSETTYPECODE-COSTCENTRE-COAMASK}).
<M-80 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-696124':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input vcContext (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDivision>
assign oiReturnStatus = -1.
leave QUERY_BLOCK.
end.
assign viCOAMaskCCSharedSetId = tqDomainByDomainSharedSet.tiSharedSet_ID.
/* Get GL shared set id */
find first tqDomainByDomainSharedSet where tqDomainByDomainSharedSet.tcSharedSetTypeCode = {&SHAREDSETTYPECODE-GL}
no-error.
if not available tqDomainByDomainSharedSet
then do:
assign
vcMessage = #T-60'There is missing definition of Shared set of Cost Centre COA Mask.':255(999890796)T-60#
vcContext = "Domain=&1|SharedSetType=&2":U
vcContext = replace(vcContext, "|":U, chr(10))
vcContext = substitute(vcContext, tqDomainPropertyByDomain.tiDomain_ID, {&SHAREDSETTYPECODE-GL}).
<M-76 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-178570':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input vcContext (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDivision>
assign oiReturnStatus = -1.
leave QUERY_BLOCK.
end.
assign viGLSharedSetID = tqDomainByDomainSharedSet.tiSharedSet_ID.
/* Get Division shared set id */
find first tqDomainByDomainSharedSet where tqDomainByDomainSharedSet.tcSharedSetTypeCode = {&SHAREDSETTYPECODE-DIVISION}
no-error.
if not available tqDomainByDomainSharedSet
then do:
assign
vcMessage = #T-54'There is missing definition of Shared set of Cost Centre COA Mask.':255(999890796)T-54#
vcContext = "Domain=&1|SharedSetType=&2":U
vcContext = replace(vcContext, "|":U, chr(10))
vcContext = substitute(vcContext, tqDomainPropertyByDomain.tiDomain_ID, {&SHAREDSETTYPECODE-DIVISION}).
<M-7 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'qadfin-46100':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input vcContext (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BDivision>
assign oiReturnStatus = -1.
leave QUERY_BLOCK.
end.
assign viDivisionSharedSetId = tqDomainByDomainSharedSet.tiSharedSet_ID.
/* Get values of filtering parameters */
<M-97 run SelectDivisionCOAMaskFilter
(input-output vcDivisionEq (bcDivisionEq),
input-output vcDivisionNotEq (bcDivisionNotEq),
input-output vcDivisionFrom (bcDivisionFrom),
input-output vcDivisionTo (bcDivisionTo),
input-output vcDivisionMatches (bcDivisionMatches),
input-output vcDivisionDescEq (bcDivisionDescEq),
input-output vcDivisionDescNotEq (bcDivisionDescNotEq),
input-output vcDivisionDescFrom (bcDivisionDescFrom),
input-output vcDivisionDescTo (bcDivisionDescTo),
input-output vcDivisionDescMatches (bcDivisionDescMatches),
input-output vlActive (blActive),
input-output vcBudgetGroupEq (bcBudgetGroupEq),
input-output vcBudgetGroupNotEq (bcBudgetGroupNotEq),
input-output vcBudgetGroupFrom (bcBudgetGroupFrom),
input-output vcBudgetGroupTo (bcBudgetGroupTo),
input-output vcBudgetGroupMatches (bcBudgetGroupMatches),
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-95 run DivisionForCOAMaskRangeSelect (all) (Read) (NoCache)
(input viFilterCompanyId, (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 tqApiSelectDivisionCOAMaskEnt.
assign tqApiSelectDivisionCOAMaskEnt.tiDivision_ID = tqDivisionForCOAMaskRangeSelect.tiDivision_ID
tqApiSelectDivisionCOAMaskEnt.tcDivisionCode = tqDivisionForCOAMaskRangeSelect.tcDivisionCode
tqApiSelectDivisionCOAMaskEnt.tcDivisionDescription = tqDivisionForCOAMaskRangeSelect.tcDivisionDescription
tqApiSelectDivisionCOAMaskEnt.tlDivisionIsActive = tqDivisionForCOAMaskRangeSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMaskEnt.tcBudgetGroupCode = tqDivisionForCOAMaskRangeSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMaskEnt.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMaskEnt.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-84 run DivisionForCOAMaskSelect (all) (Read) (NoCache)
(input viFilterCompanyId, (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 tqApiSelectDivisionCOAMaskEnt.
assign tqApiSelectDivisionCOAMaskEnt.tiDivision_ID = tqDivisionForCOAMaskSelect.tiDivision_ID
tqApiSelectDivisionCOAMaskEnt.tcDivisionCode = tqDivisionForCOAMaskSelect.tcDivisionCode
tqApiSelectDivisionCOAMaskEnt.tcDivisionDescription = tqDivisionForCOAMaskSelect.tcDivisionDescription
tqApiSelectDivisionCOAMaskEnt.tlDivisionIsActive = tqDivisionForCOAMaskSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMaskEnt.tcBudgetGroupCode = tqDivisionForCOAMaskSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMaskEnt.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMaskEnt.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-73 run DivisionForCOAMaskSelect (all) (Read) (NoCache)
(input viFilterCompanyId, (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 tqApiSelectDivisionCOAMaskEnt.
assign tqApiSelectDivisionCOAMaskEnt.tiDivision_ID = tqDivisionForCOAMaskSelect.tiDivision_ID
tqApiSelectDivisionCOAMaskEnt.tcDivisionCode = tqDivisionForCOAMaskSelect.tcDivisionCode
tqApiSelectDivisionCOAMaskEnt.tcDivisionDescription = tqDivisionForCOAMaskSelect.tcDivisionDescription
tqApiSelectDivisionCOAMaskEnt.tlDivisionIsActive = tqDivisionForCOAMaskSelect.tlDivisionIsActive
tqApiSelectDivisionCOAMaskEnt.tcBudgetGroupCode = tqDivisionForCOAMaskSelect.tcBudgetGroupCode
tqApiSelectDivisionCOAMaskEnt.tc_Rowid = string(viSeq)
tqApiSelectDivisionCOAMaskEnt.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 = "ApiSelectDivisionCOAMaskEnt".
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.apiselectdivisioncoamaskent.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.