Sample code for 30+ languages & platforms
DataFlex

MyInvois Malaysia Get Document Types

See more Malaysia MyInvois Examples

There are multiple types of documents supported by MyInvois, and this API retrieves their definitions through API call.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Variant vSb
    Handle hoSb
    Integer iStatusCode
    Handle hoJson
    Integer iId
    Integer iInvoiceTypeCode
    String sDescription
    String sActiveFrom
    String sActiveTo
    Integer j
    Integer iCount_j
    String sName
    String sVersionNumber
    String sStatus
    Integer i
    Integer iCount_i
    String sTemp1

    Move False To iSuccess

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    // Adds the "Authorization: Bearer <access_token>" header.
    Set ComAuthToken Of hoHttp To "<access_token>"

    // Note: The access token is valid for a short amount of time.  Perhaps 1 hour.
    // The access token is used in the "Authorization: Bearer <access_token>" header in subsequent requests until it expires.
    // Your application would then need to get a new access token, and so on..
    // To get an access token, see How to Get a MyInvois Access Token

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
    If (Not(IsComObjectCreated(hoSb))) Begin
        Send CreateComObject of hoSb
    End
    Get pvComObject of hoSb to vSb
    Get ComQuickGetSb Of hoHttp "https://preprod-api.myinvois.hasil.gov.my/api/v1.0/documenttypes" vSb To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get ComLastStatus Of hoHttp To iStatusCode
    Showln "response status code = " iStatusCode

    If (iStatusCode <> 200) Begin
        // Failed.
        Get ComGetAsString Of hoSb To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Sample response:

    // {"result":
    //       [
    //          {"id":45,
    //             "invoiceTypeCode":4,
    //             "description":"Invoice",
    //             "activeFrom":"2015-02-13T13:15:00Z",
    //             "activeTo":"2027-03-01T00:00:00Z",
    //             "documentTypeVersions":
    //             [
    //                {"id":454,
    //                 "name":"1.0",
    //                 "description":"Invoice version 1.1",
    //                 "activeFrom":"2015-02-13T13:15:00Z",
    //                 "activeTo":"2027-03-01T00:00:00Z",
    //                 "versionNumber":1.1,
    //                 "status":"published"
    //                }
    //             ]
    //           }
    //       ]
    // }

    // Use this online tool to generate parsing code from sample JSON: 
    // Generate Parsing Code from JSON

    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get pvComObject of hoSb to vSb
    Get ComLoadSb Of hoJson vSb To iSuccess

    Move 0 To i
    Get ComSizeOfArray Of hoJson "result" To iCount_i
    While (i < iCount_i)
        Set ComI Of hoJson To i
        Get ComIntOf Of hoJson "result[i].id" To iId
        Get ComIntOf Of hoJson "result[i].invoiceTypeCode" To iInvoiceTypeCode
        Get ComStringOf Of hoJson "result[i].description" To sDescription
        Get ComStringOf Of hoJson "result[i].activeFrom" To sActiveFrom
        Get ComStringOf Of hoJson "result[i].activeTo" To sActiveTo
        Move 0 To j
        Get ComSizeOfArray Of hoJson "result[i].documentTypeVersions" To iCount_j
        While (j < iCount_j)
            Set ComJ Of hoJson To j
            Get ComIntOf Of hoJson "result[i].documentTypeVersions[j].id" To iId
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].name" To sName
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].description" To sDescription
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].activeFrom" To sActiveFrom
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].activeTo" To sActiveTo
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].versionNumber" To sVersionNumber
            Get ComStringOf Of hoJson "result[i].documentTypeVersions[j].status" To sStatus
            Move (j + 1) To j
        Loop

        Move (i + 1) To i
    Loop



End_Procedure