project QadFinancials > class BPaymentSelection > method ExportUNIFIPaymentInformation


Parameters


ihXMLDocinputhandle
ihXMLParentNodeinputhandle
ohXMLPmtInfoutputhandle
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPaymentSelection.ExportUNIFI


program code (program7/bpaymentselection.p)

/********************************************************************************************/
/* Prerequisite ; available records:                                                        */
/*  - tCCollectionPaySel                                                                    */
/*  - tPaySel                                                                               */
/********************************************************************************************/

assign oiReturnStatus = -98.

<M-1 run ExportUNIFIPreselectBank
   (input  {&BANKNUMBERPARENTTYPE-GL} (icBankNumberParentType), 
    input  tPaymentSelectionForUNIFI.GL_ID (iiBankNumberParentObjectID), 
    input  0 (iiBankNumberID), 
    output vcBankNumber (ocBankNumber), 
    output vcBankNumberValidation (ocBankNumberValidation), 
    output vcBankNumberExtension (ocBankNumberExtension), 
    output vcBankNumberSwiftCode (ocBankNumberSwiftCode), 
    output viFcReturnSuper (oiReturnStatus)) in BPaymentSelection>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = -98)
then do:
    assign oiReturnStatus = viFcReturnSuper.
    if oiReturnStatus < 0
    then return.
end.

if vcBankNumber             = ? then assign vcBankNumber = "":U.
if vcBankNumberValidation   = ? then assign vcBankNumberValidation = "":U.
if vcBankNumberExtension    = ? then assign vcBankNumberExtension = "":U.
if vcBankNumberSwiftCode    = ? then assign vcBankNumberSwiftCode = "":U.


create X-NODEREF  vhXMLElement in widget-pool "non-persistent".
create X-NODEREF  vhXMLText in widget-pool "non-persistent".
create X-NODEREF  vhXMLDbtrAcct in widget-pool "non-persistent".
create X-NODEREF  vhXMLDbtrAcctId in widget-pool "non-persistent".
create X-NODEREF  vhXMLDbtrAcctIdDmstAcct in widget-pool "non-persistent".
create X-NODEREF  vhXMLFrstAgt in widget-pool "non-persistent".
create X-NODEREF  vhXMLFinInstnId in widget-pool "non-persistent".

create X-NODEREF  ohXMLPmtInf in widget-pool "non-persistent".

/* <PmtInf> */
ihXMLDoc:CREATE-NODE(ohXMLPmtInf, "PmtInf":U, "ELEMENT":U). 
ihXMLParentNode:APPEND-CHILD(ohXMLPmtInf).

    /* <ReqdExctnDt> */
    ihXMLDoc:CREATE-NODE(vhXMLElement, "ReqdExctnDt":U, "ELEMENT":U). 
    ohXMLPmtInf:APPEND-CHILD(vhXMLElement).

    ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
    vhXMLText:NODE-VALUE = ISO-DATE(tPaymentSelectionForUNIFI.PaySelDate).
/*  vhXMLText:NODE-VALUE = ISO-DATE(tCCollectionPaySel.CCollectionRequestedDate). */
    vhXMLElement:APPEND-CHILD(vhXMLText).
    /* </ReqdExctnDt> */

    /* <PmtMtdByFrstAgt> */
    ihXMLDoc:CREATE-NODE(vhXMLElement, "PmtMtdByFrstAgt":U, "ELEMENT":U). 
    ohXMLPmtInf:APPEND-CHILD(vhXMLElement).

    ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
    if tPaymentSelectionForUNIFI.tcPayInstru = {&DOCUMENTTYPECREDITOR-CHEQUE}
    then vhXMLText:NODE-VALUE = "CHK":U.
    else vhXMLText:NODE-VALUE = "TRF":U.
    vhXMLElement:APPEND-CHILD(vhXMLText).
    /* </PmtMtdByFrstAgt> */

    /* <DbtrAcct> */
    ihXMLDoc:CREATE-NODE(vhXMLDbtrAcct, "DbtrAcct":U, "ELEMENT":U). 
    ohXMLPmtInf:APPEND-CHILD(vhXMLDbtrAcct).

        /* <Id> */
        ihXMLDoc:CREATE-NODE(vhXMLDbtrAcctId, "Id":U, "ELEMENT":U). 
        vhXMLDbtrAcct:APPEND-CHILD(vhXMLDbtrAcctId).

        case vcBankNumberValidation:
            /* <IBAN> */
            when {&BANKNUMBERVALIDATION-IBAN}
            then do:
                ihXMLDoc:CREATE-NODE(vhXMLElement, "IBAN":U, "ELEMENT":U). 
                vhXMLDbtrAcctId:APPEND-CHILD(vhXMLElement).
    
                ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
                vhXMLText:NODE-VALUE = vcBankNumber.
                vhXMLElement:APPEND-CHILD(vhXMLText).
            end.
            /* </IBAN> */

            /* <DmstAcct> */
            when {&BANKNUMBERVALIDATION-XX}
            then do:
                ihXMLDoc:CREATE-NODE(vhXMLDbtrAcctIdDmstAcct, "DmstAcct":U, "ELEMENT":U). 
                vhXMLDbtrAcctId:APPEND-CHILD(vhXMLDbtrAcctIdDmstAcct).

                /* <Id> */
                ihXMLDoc:CREATE-NODE(vhXMLElement, "Id":U, "ELEMENT":U). 
                vhXMLDbtrAcctIdDmstAcct:APPEND-CHILD(vhXMLElement).
    
                ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
                vhXMLText:NODE-VALUE = vcBankNumber.
                vhXMLElement:APPEND-CHILD(vhXMLText).
                /* </Id> */
            end.
            /* <DmstAcct> */

            /* <BBAN> */
            otherwise
            do:
                ihXMLDoc:CREATE-NODE(vhXMLElement, "BBAN":U, "ELEMENT":U). 
                vhXMLDbtrAcctId:APPEND-CHILD(vhXMLElement).
    
                ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
                vhXMLText:NODE-VALUE = vcBankNumber.
                vhXMLElement:APPEND-CHILD(vhXMLText).
            end.
            /* </BBAN> */
        end.

        /* </Id> */

    /* </DbtrAcct> */

    /* <FrstAgt> */
    ihXMLDoc:CREATE-NODE(vhXMLFrstAgt, "FrstAgt":U, "ELEMENT":U). 
    ohXMLPmtInf:APPEND-CHILD(vhXMLFrstAgt).

        /* <FinInstnId> */
        ihXMLDoc:CREATE-NODE(vhXMLFinInstnId, "FinInstnId":U, "ELEMENT":U). 
        vhXMLFrstAgt:APPEND-CHILD(vhXMLFinInstnId).

            /* <BIC> */
            if (vcBankNumberSwiftCode <> "":U)
            then do:
                ihXMLDoc:CREATE-NODE(vhXMLElement, "BIC":U, "ELEMENT":U). 
                vhXMLFinInstnId:APPEND-CHILD(vhXMLElement).
            
                ihXMLDoc:CREATE-NODE(vhXMLText, "":U, "TEXT":U). 
                vhXMLText:NODE-VALUE = vcBankNumberSwiftCode.
                vhXMLElement:APPEND-CHILD(vhXMLText).
            end.
            /* </BIC> */

        /* </FinInstnId> */
            
    /* </FrstAgt> */

/* </PmtInf> */


delete object  vhXMLFinInstnId.
delete object  vhXMLFrstAgt.
delete object  vhXMLDbtrAcctIdDmstAcct.
delete object  vhXMLDbtrAcctId.
delete object  vhXMLDbtrAcct.
delete object  vhXMLText.
delete object  vhXMLElement.

if oiReturnStatus = -98
then assign oiReturnStatus = 0.