openownership / lib-cove-bods

Check that your data complies with the Beneficial Ownership Data Standard (BODS) using our install our data review library to analyse files via your command line interface
https://datareview.openownership.org/
Other
1 stars 0 forks source link

Additional check: hasPublicListing is not false if securitiesListings contains objects #125

Closed kathryn-ods closed 1 month ago

kathryn-ods commented 3 months ago

Check: if securitiesListings contains objects then hasPublicListing is not false

On fail:

Error message: securitiesListings contains objects but hasPublicListing is false. hasPublicListing must be true if securitiesListings are present.

Info message: Securities listings (securitiesListings): [VALUES]

kathryn-ods commented 3 months ago

Valid data 1 - no securities listings

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false
        }
      }
    }
  }
]

Valid data 2 - securitiesListings is empty

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false,
          "securitiesListings": [
          ]
        }
      }
    }
  }
]

Valid data 3 - public listing true

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": true,
          "securitiesListings": [
            {
              "stockExchangeJurisdiction": "GB",
              "stockExchangeName": "London stock exchange",
              "security":{
                "ticker": "123"
              }
            }
          ]
        }
      }
    }
  }
]

Invalid data

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false,
          "securitiesListings": [
            {
              "stockExchangeJurisdiction": "GB",
              "stockExchangeName": "London stock exchange",
              "security":{
                "ticker": "123"
              }
            }
          ]
        }
      }
    }
  }
]
radix0000 commented 2 months ago

@kd-ods Noting that the pre-0.4 check looks for companyFilingsURLs as well and if either of those are present and hasPublicListing is false throws an error. Is companyFilingsURLs now to be ignored?

kd-ods commented 2 months ago

Thanks, @radix0000 - no, please keep the companyFilingsURLS check. I'll create some extra test data now and add it to this ticket.

kd-ods commented 2 months ago

Check:

That if hasPublicListing is false then companyFilingsURLs doesn't exist or is empty.

Error message: companyFilingsURLs contains items but hasPublicListing is false. hasPublicListing must be true if companyFilingsURLs are present.

Valid data A:

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": true,
          "companyFilingsURLs": [
            ""
          ]
        }
      }
    }
  }
]

Valid data B:

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false,
          "companyFilingsURLs": [
            ""
          ]
        }
      }
    }
  }
]

Valid data C:

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": true,
          "companyFilingsURLs": [
          ]
        }
      }
    }
  }
]

Valid data D:

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false,
          "companyFilingsURLs": [
          ]
        }
      }
    }
  }
]

Valid data E:

[
  {
    "statementId": "1dc0e987-5c57-4a1c-b3ad-61353b66a9b7",
    "declarationSubject": "c359f58d2977",
    "statementDate": "2020-03-04",
    "recordId": "c359f58d2977",
    "recordType": "entity",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity",
        "publicListing": {
          "hasPublicListing": false
        }
      }
    }
  }
]

Invalid data A


[
  {
    "statementId": "2f7bf9370f1254068e5e946df067d07d",
    "recordId": "ent-93c75c87ab28f889",
    "recordType": "entity",
    "declarationSubject": "ent-93c75c87ab28f889",
    "statementDate": "2017-11-18",
    "recordDetails": {
      "isComponent": false,
      "entityType": {
        "type": "registeredEntity"
      },
      "publicListing": {
        "hasPublicListing": false,
        "companyFilingsURLs": [
          "https://www.test.org"
        ]
      }
    }
  }
]```