project QadFinancials > class BPosting > method CalcCrossCompanyBusinessRelation

Description

Calculate cross company business relation code


Parameters


iiCrossCompanyIdinputinteger
icCrossCompanyCodeinputcharacterCrossCompanyCode: this paramater is only used in case parameter CrossCompanyID is zero.
ocBusinessRelationICCodeoutputcharacterBusinessRelationICCode
oiBusinessRelationIdoutputinteger
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPosting.PreSave
method BPosting.ValidateComponentPre
method BPosting.ValidateComponentPreAssignPostingLineCross


program code (program1/bposting.p)

/* =============================================================================== */
/* Method:     CalcCrossCompanyBusinessRelation                                    */
/* Descript:   This method calculates code of business relation for cross company  */
/*             posting                                                             */
/* Parameters -------------------------------------------------------------------- */
/* Input:      CrossCompanyId          Id of cross company where cross company     */
/*                                     posting points to                           */
/* Output:     BusinessRelationICCode  IC-Code of business relation  of cross cy   */
/*             BusinessRelationId      ID of business relation of cross company    */
/* =============================================================================== */

assign oiReturnStatus           = -98
       ocBusinessRelationiCCode = '':U
       oiBusinessRelationId     = ?.

/* ============================================================================ */
/* Validate input parameters                                                    */
/* ============================================================================ */
if (iiCrossCompanyId   = 0    or iiCrossCompanyId   = ?) and 
   (icCrossCompanyCode = "":U or icCrossCompanyCode = ?)
then do:
    assign oiReturnStatus = 0.
    return.
end.

/* =============================================== */
/* Convert the company-code into to the company-id */
/* =============================================== */
if iiCrossCompanyId = 0 or
   iiCrossCompanyId = ?
then do :
     <Q-4 run CompanyPrim (all) (Read) (NoCache)
        (input ?, (LookupCompanyId)
         input icCrossCompanyCode, (CompanyCode)
         output dataset tqCompanyPrim) in BCompany >
    find tqCompanyPrim where 
         tqCompanyPrim.tcCompanyCode = icCrossCompanyCode
         no-lock no-error.
    if not available tqCompanyPrim
    then do :
    
    
    
        assign vcMessageText     = trim(substitute(#T-6'Cannot convert the cross-company-code &1 into the associated company ID because  the associated company does not exist.':255(62229)T-6#,string(iiCrossCompanyId)))
                   oiReturnStatus       = -1
                   vcMsgExplanation = '':U.
                   
                   
                   
        if available tPosting then
            assign vcMsgExplanation =  <M-79 GetErrorExplanation
                                                     (input  tPosting.tc_Rowid (icPostingRowId), 
                                                      input  ? (icPostingLineRowId), 
                                                      output viFcReturnSuper (oiReturnStatus)) in BPosting>.
                                                                                   
        <M-5 run SetMessage
           (input  vcMessageText (icMessage), 
            input  '':U (icArguments), 
            input  '':U (icFieldName), 
            input  '':U (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  '':U (icRowid), 
            input  'QadFin-6344':U (icFcMsgNumber), 
            input  vcMsgExplanation (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BPosting>
        return.
    end. /* if not available tqCompanyPrim */
    assign iiCrossCompanyId = tqCompanyPrim.tiCompany_ID.
end. /* if iiCrossCompanyId = 0 or */

/* ============================================================================ */
/* Get business relation for company                                            */
/* ============================================================================ */
<Q-2 run CompanyBusinessRelation (all) (Read) (NoCache)
   (input iiCrossCompanyId, (CompanyId)
    output dataset tqCompanyBusinessRelation) in BCompany >
find first tqCompanyBusinessRelation no-error.
if not available tqCompanyBusinessRelation
then do:
    assign vcMessageText  = #T-1'Cannot retrieve the business relation code for cross-company &1.':255(59317)T-1#
           vcMessageText  = substitute(vcMessageText, string(iiCrossCompanyId))
           oiReturnStatus = -1
           vcMsgExplanation = '':U.

           
           
     if available tPosting then
            assign vcMsgExplanation =  <M-26 GetErrorExplanation
                                          (input  tPosting.tc_Rowid (icPostingRowId), 
                                           input  ? (icPostingLineRowId), 
                                           output viFcReturnSuper (oiReturnStatus)) in BPosting>.           
           
    <M-3 run SetMessage
       (input  vcMessageText (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-5972':U (icFcMsgNumber), 
        input  vcMsgExplanation (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BPosting>
    return.
end.

assign ocBusinessRelationICCode = tqCompanyBusinessRelation.tcBusinessRelationICCode
       oiBusinessRelationId     = tqCompanyBusinessRelation.tiBusinessRelation_ID.

if ocBusinessRelationICCode = ? or
   ocBusinessRelationICCode = "":U
then do:
    assign vcMessageText  = #T-8'The intercompany code of the business relation for company &1 was not defined. The system requires an intercompany code to process cross-company postings.':255(62385)T-8#
           vcMessageText  = substitute(vcMessageText, string(icCrossCompanyCode))
           oiReturnStatus = -1
           vcMsgExplanation = '':U.
           
     if available tPosting then
            assign vcMsgExplanation =  <M-68 GetErrorExplanation
                                          (input  tPosting.tc_Rowid (icPostingRowId), 
                                           input  ? (icPostingLineRowId), 
                                           output viFcReturnSuper (oiReturnStatus)) in BPosting>.           
           
    <M-7 run SetMessage
       (input  vcMessageText (icMessage), 
        input  '':U (icArguments), 
        input  '':U (icFieldName), 
        input  '':U (icFieldValue), 
        input  'E':U (icType), 
        input  3 (iiSeverity), 
        input  '':U (icRowid), 
        input  'QadFin-6353':U (icFcMsgNumber), 
        input  vcMsgExplanation (icFcExplanation), 
        input  '':U (icFcIdentification), 
        input  '':U (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BPosting>
    return.
end.

/* ============================================================================ */
/* Return                                                                       */
/* ============================================================================ */
if oiReturnStatus = -98 then assign oiReturnStatus = 0.