Description
Check if this BusinessRelation needs to be system wide or Domain specific
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program5/bbusinessrelation.p)
/* ================== */
/* Exception Handling */
/* ================== */
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
SYSTEMORDOMAINBLOCK:
do:
/* ========================================================================================================================== */
/* Check if the business relation already exist. (the test is also in the ancestor code, but the message is not clear enough) */
/* ========================================================================================================================== */
assign vcMessage = '':U.
find bBusinessRelation where
bBusinessRelation.BusinessRelationCode = t_sBusinessRelation.BusinessRelationCode and
bBusinessRelation.BusinessRelationCode <> "":U and
bBusinessRelation.tc_Rowid <> t_sBusinessRelation.tc_Rowid
no-lock no-error.
<Q-16 run BusinessRelationPrim (all) (Read) (NoCache)
(input 0, (BusinessRelationId)
input t_sBusinessRelation.BusinessRelationCode, (BusinessRelationCode)
output dataset tqBusinessRelationPrim) in BBusinessRelation >
find tqBusinessRelationPrim where
tqBusinessRelationPrim.tcBusinessRelationCode = t_sBusinessRelation.BusinessRelationCode and
tqBusinessRelationPrim.tiBusinessRelation_ID <> t_sBusinessRelation.BusinessRelation_ID
no-lock no-error.
if available bBusinessRelation or
available tqBusinessRelationPrim
then do:
assign vcMessage = trim(#T-17'A business relation with the same code already exists in another domain.':255(69711)t-17#) + chr(10) +
trim(#T-18'You can only view domain-specific business relations in the domain in which they were created.':255(69712)t-18#)
viLocalReturnStatus = -1.
<M-19 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tBusinessRelation.BusinessRelationCode':U (icFieldName),
input t_sBusinessRelation.BusinessRelationCode (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sBusinessRelation.tc_Rowid (icRowid),
input 'QadFin-8265':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBusinessRelation>
end.
/* ======================================================================================= */
/* Not allowed to update a domain specific business relation from within another company */
/* ======================================================================================= */
if t_sBusinessRelation.tc_Status = "C":U and
available t_iBusinessRelation and
t_iBusinessRelation.BusinessRelationIsDomRestr = true and
t_iBusinessRelation.Domain_ID <> viDomainID
then do:
<Q-4 run DomainsPrim (all) (Read) (NoCache)
(input t_iBusinessRelation.Domain_ID, (DomainID)
input '':U, (DomainCode)
output dataset tqDomainsPrim) in BDomain >
find tqDomainsPrim where
tqDomainsPrim.tiDomain_ID = t_iBusinessRelation.Domain_ID
no-lock no-error.
if not available tqDomainsPrim
then assign t_sBusinessRelation.Domain_ID = viDomainID. /* Auto-correct in case domain ID does not exist (Normally, should not occur) */
else do:
assign vcMessage = trim(substitute(#T-6'This business relation is domain specific. Please update it from within domain $1.':255(69672)t-6#, tqDomainsPrim.tcDomainCode ))
viLocalReturnStatus = -1.
<M-5 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tBusinessRelation.Domain_ID':U (icFieldName),
input t_sBusinessRelation.Domain_ID (icFieldValue),
input 'E':U (icType),
input 1 (iiSeverity),
input t_sBusinessRelation.tc_Rowid (icRowid),
input 'QadFin-8250':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBusinessRelation>
leave SYSTEMORDOMAINBLOCK.
end. /* else do */
end. /* if t_sBusinessRelation.tc_Status = "C":U and */
/* ===================================================================================== */
/* Assign the Domain_ID (link to domain) with 0 when BusinessRelationIsDomRestr <> true. */
/* ===================================================================================== */
if t_sBusinessRelation.BusinessRelationIsDomRestr <> true
then do:
assign t_sBusinessRelation.Domain_ID = 0.
leave SYSTEMORDOMAINBLOCK.
end.
/* ================================================================================================= */
/* Assign the Domain_ID (link to domain) with the ID of the current domain when */
/* BusinessRelationIsDomRestr = true (Business Relation is Domain specific, false means system wide) */
/* ================================================================================================= */
if (t_sBusinessRelation.tc_Status = "N":U and
t_sBusinessRelation.BusinessRelationIsDomRestr = true) or
(t_sBusinessRelation.tc_Status = "C":U and
available t_iBusinessRelation and
t_iBusinessRelation.BusinessRelationIsDomRestr = false and
t_sBusinessRelation.BusinessRelationIsDomRestr = true)
then assign t_sBusinessRelation.Domain_ID = viDomainID.
/* ======================================================================================= */
/* If the business relation is already used for debtor/creditor, then check if the */
/* Shared sets for this are only used in this domain. Otherwise we might have a debtor */
/* That is used in two domains, but it's business relation can only be used in one. */
/* ======================================================================================= */
/* CREDITOR */
<Q-8 assign vlFcQueryRecordsAvailable = CreditorForBusinessRelationChk (NoCache)
(input 0, (CompanyId)
input t_sBusinessRelation.BusinessRelation_ID, (BusinessRelationID)
input t_sBusinessRelation.Domain_ID, (NotDomainID)) in BCreditor >
if vlFcQueryRecordsAvailable <> false
then do:
assign vcMessage = trim(#T-9'At least one supplier was found for this business relation that was used in a different domain.':255(69673)T-9#) + chr(10) +
trim(#T-10'This business relation cannot be made domain specific for this domain.':255(69674)t-10#)
viLocalReturnStatus = -1.
<M-11 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tBusinessRelation.BusinessRelationIsDomRestr':U (icFieldName),
input string(t_sBusinessRelation.BusinessRelationIsDomRestr) (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sBusinessRelation.tc_Rowid (icRowid),
input 'QadFin-8251':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBusinessRelation>
end. /* if vlFcQueryRecordsAvailable <> false */
/* DEBTOR */
<Q-15 assign vlFcQueryRecordsAvailable = DebtorForBusinessRelationCheck (NoCache)
(input 0, (CompanyId)
input t_sBusinessRelation.BusinessRelation_ID, (BusinessRelationID)
input t_sBusinessRelation.Domain_ID, (NotDomainID)) in BDebtor >
if vlFcQueryRecordsAvailable <> false
then do:
assign vcMessage = trim(#T-13'At least one customer found for this business relation is used in a different domain.':255(69675)t-13#) + chr(10) +
trim(#T-14'This business relation cannot be made domain specific for this domain.':255(69674)t-14#)
viLocalReturnStatus = -1.
<M-12 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input 'tBusinessRelation.BusinessRelationIsDomRestr':U (icFieldName),
input string(t_sBusinessRelation.BusinessRelationIsDomRestr) (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input t_sBusinessRelation.tc_Rowid (icRowid),
input 'QadFin-8252':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BBusinessRelation>
end. /* if vlFcQueryRecordsAvailable <> false */
end. /* SYSTEMORDOMAINBLOCK */
/* ================== */
/* Exception Handling */
/* ================== */
assign oiReturnStatus = viLocalReturnStatus.