# -*- coding: utf-8 -*-

"""
shelldatareportingapis

This file was automatically generated by APIMATIC v3.0 (
 https://www.apimatic.io ).
"""
import dateutil.parser

from shelldatareportingapis.api_helper import APIHelper


class RecentTransactions(object):

    """Implementation of the 'RecentTransactions' model.

    TODO: type model description here.

    Attributes:
        col_co_code (int): ColCoCode
        payer_number (str): PayerNumber
        account_number (str): Account Number
        card_issue_number (str): Card Issue Number
        collecting_company_currency_code (str): Collecting Company Currency
            IsoCode
        cust_data_customer_entered (str): Customer entered data for reference.
        cust_data_driver_id (str): Customer Data DriverId
        cust_data_fleet_description (str): Cust Data Fleet Description
        fleet_id_input (str): Fleet Id Input
        amount (float): Amount
        euroshell_site_number (str): EuroshellSiteNumber
        incoming_product_code (str): IncomingProductCode
        product_code (str): ProductCode
        product_name (str): ProductName
        site_code (int): SiteCode
        hosting_collecting_company_name (str): HostingCollectingCompanyName
        hosting_collecting_company_number (str): HostingCollectingCompanyNumber
        iccdata_tran_type_code (str): Transaction type code
        transaction_type (str): Transaction type description.
        latitude (str): Latitude of the Coordinate 3.11573
        longitude (str): Longitude of the Coordinate
        merchant_category (str): Merchant category
        merchant_category_description (str): Merchant category description
        purchased_in_country (str): Purchased in country
        merchant_id (str): Merchant Id
        site_name (str): Site name
        network (str): Network
        delco_code (str): Three character DelcoCode
        odometer_input (str): Odometer input
        odometer_reading_km (str): Odometer reading in Kms
        odometer_reading_miles (str): Odometer reading in miles
        card_pan (str): Masked Card PAN
        pin_indicator (str): PIN indicator
        poi_receipt_number (str): POIReceiptNumber
        products_code_additional (str): Additinal Products Code
        products_tax_code (str): Products tax code
        fuel_volume (float): Fuel volume
        sfgw_card_date_of_expiry (str): SfgwCard expiry date
        site_currency_iso_code (str): Three character Site currency ISO code
        card_id (str): Card ID
        transaction_date (date): ISO8601-compliant UTC datetime of the last
            update of the EVSE
        transaction_date_time (str): ISO8601-compliant UTC datetime of the
            last update of the EVSE
        transaction_id (str): TransactionId
        transaction_status (str): Type of the connector in the EVSE unit.
        unit_of_measure (str): Unit of measure
        vehicle_registration_number (str): VehicleRegistrationNumber
        network_delco_name (str): Network Delco name
        product_group_name (str): ProductGroupName
        fuel_product (str): FuelProduct
        account_customer_name (str): AccountCustomerName
        payer_name (str): PayerName
        transaction_time (str): ISO8601-compliant UTC datetime of the last
            update of the EVSE
        transaction_currency (str): TransactionCurrencySymbol
        unit_price (float): UnitPrice
        authorised_flag (str): AuthorisedFlag
        transaction_time_gmt (str): TransactionTimeGMT update of the EVSE
        reason_code (str): ReasonCode
        issuer_action_code (str): IssuerActionCode
        issuer_action_code_description (str): IssuerActionCodeDescription.
        declined_reason (str): DeclinedReason.
        card_status_reason_description (str): CardStatusReasonDescription.
        transaction_country (str): TransactionCountry
        issuing_collecting_company_name (str): IssuingCollectingCompanyName.
        card_issuer_name (str): CardIssuerName.
        driver_name (str): DriverName.
        bearer_description (str): BearerDescription.
        card_category_description (str): CardCategoryDescription.
        card_type_description (str): CardTypeDescription.
        card_token_type_description (str): CardTokenTypeDescription.
        emboss_type (str): EmbossType.
        ev_printed_number (str): The EVPrintedNumber which can be found on the
            Shell EV Card
        is_rfid (bool): Whether the card type is enabled for RFID (Radio
            Frequency Identification)

    """

    # Create a mapping from Model property names to API property names
    _names = {
        "col_co_code": 'ColCoCode',
        "payer_number": 'PayerNumber',
        "account_number": 'AccountNumber',
        "card_issue_number": 'CardIssueNumber',
        "collecting_company_currency_code": 'CollectingCompanyCurrencyCode',
        "cust_data_customer_entered": 'CustDataCustomerEntered',
        "cust_data_driver_id": 'CustDataDriverId',
        "cust_data_fleet_description": 'CustDataFleetDescription',
        "fleet_id_input": 'FleetIdInput',
        "amount": 'Amount',
        "euroshell_site_number": 'EuroshellSiteNumber',
        "incoming_product_code": 'IncomingProductCode',
        "product_code": 'ProductCode',
        "product_name": 'ProductName',
        "site_code": 'SiteCode',
        "hosting_collecting_company_name": 'HostingCollectingCompanyName',
        "hosting_collecting_company_number": 'HostingCollectingCompanyNumber',
        "iccdata_tran_type_code": 'IccdataTranTypeCode',
        "transaction_type": 'TransactionType',
        "latitude": 'Latitude',
        "longitude": 'Longitude',
        "merchant_category": 'MerchantCategory',
        "merchant_category_description": 'MerchantCategoryDescription',
        "purchased_in_country": 'PurchasedInCountry',
        "merchant_id": 'MerchantId',
        "site_name": 'SiteName',
        "network": 'Network',
        "delco_code": 'DelcoCode',
        "odometer_input": 'OdometerInput',
        "odometer_reading_km": 'OdometerReadingKm',
        "odometer_reading_miles": 'OdometerReadingMiles',
        "card_pan": 'CardPAN',
        "pin_indicator": 'PINIndicator',
        "poi_receipt_number": 'POIReceiptNumber',
        "products_code_additional": 'ProductsCodeAdditional',
        "products_tax_code": 'ProductsTaxCode',
        "fuel_volume": 'FuelVolume',
        "sfgw_card_date_of_expiry": 'SfgwCardDateOfExpiry',
        "site_currency_iso_code": 'SiteCurrencyISOCode',
        "card_id": 'CardId',
        "transaction_date": 'TransactionDate',
        "transaction_date_time": 'TransactionDateTime',
        "transaction_id": 'TransactionId',
        "transaction_status": 'TransactionStatus',
        "unit_of_measure": 'UnitOfMeasure',
        "vehicle_registration_number": 'VehicleRegistrationNumber',
        "network_delco_name": 'NetworkDelcoName',
        "product_group_name": 'ProductGroupName',
        "fuel_product": 'FuelProduct',
        "account_customer_name": 'AccountCustomerName',
        "payer_name": 'PayerName',
        "transaction_time": 'TransactionTime',
        "transaction_currency": 'TransactionCurrency',
        "unit_price": 'UnitPrice',
        "authorised_flag": 'AuthorisedFlag',
        "transaction_time_gmt": 'TransactionTimeGMT',
        "reason_code": 'ReasonCode',
        "issuer_action_code": 'IssuerActionCode',
        "issuer_action_code_description": 'IssuerActionCodeDescription',
        "declined_reason": 'DeclinedReason',
        "card_status_reason_description": 'CardStatusReasonDescription',
        "transaction_country": 'TransactionCountry',
        "issuing_collecting_company_name": 'IssuingCollectingCompanyName',
        "card_issuer_name": 'CardIssuerName',
        "driver_name": 'DriverName',
        "bearer_description": 'BearerDescription',
        "card_category_description": 'CardCategoryDescription',
        "card_type_description": 'CardTypeDescription',
        "card_token_type_description": 'CardTokenTypeDescription',
        "emboss_type": 'EmbossType',
        "ev_printed_number": 'EVPrintedNumber',
        "is_rfid": 'IsRFID'
    }

    _optionals = [
        'col_co_code',
        'payer_number',
        'account_number',
        'card_issue_number',
        'collecting_company_currency_code',
        'cust_data_customer_entered',
        'cust_data_driver_id',
        'cust_data_fleet_description',
        'fleet_id_input',
        'amount',
        'euroshell_site_number',
        'incoming_product_code',
        'product_code',
        'product_name',
        'site_code',
        'hosting_collecting_company_name',
        'hosting_collecting_company_number',
        'iccdata_tran_type_code',
        'transaction_type',
        'latitude',
        'longitude',
        'merchant_category',
        'merchant_category_description',
        'purchased_in_country',
        'merchant_id',
        'site_name',
        'network',
        'delco_code',
        'odometer_input',
        'odometer_reading_km',
        'odometer_reading_miles',
        'card_pan',
        'pin_indicator',
        'poi_receipt_number',
        'products_code_additional',
        'products_tax_code',
        'fuel_volume',
        'sfgw_card_date_of_expiry',
        'site_currency_iso_code',
        'card_id',
        'transaction_date',
        'transaction_date_time',
        'transaction_id',
        'transaction_status',
        'unit_of_measure',
        'vehicle_registration_number',
        'network_delco_name',
        'product_group_name',
        'fuel_product',
        'account_customer_name',
        'payer_name',
        'transaction_time',
        'transaction_currency',
        'unit_price',
        'authorised_flag',
        'transaction_time_gmt',
        'reason_code',
        'issuer_action_code',
        'issuer_action_code_description',
        'declined_reason',
        'card_status_reason_description',
        'transaction_country',
        'issuing_collecting_company_name',
        'card_issuer_name',
        'driver_name',
        'bearer_description',
        'card_category_description',
        'card_type_description',
        'card_token_type_description',
        'emboss_type',
        'ev_printed_number',
        'is_rfid',
    ]

    _nullables = [
        'col_co_code',
        'payer_number',
        'account_number',
        'card_issue_number',
        'collecting_company_currency_code',
        'cust_data_customer_entered',
        'cust_data_driver_id',
        'cust_data_fleet_description',
        'fleet_id_input',
        'amount',
        'euroshell_site_number',
        'incoming_product_code',
        'product_code',
        'product_name',
        'site_code',
        'hosting_collecting_company_name',
        'hosting_collecting_company_number',
        'iccdata_tran_type_code',
        'transaction_type',
        'latitude',
        'longitude',
        'merchant_category',
        'merchant_category_description',
        'purchased_in_country',
        'merchant_id',
        'site_name',
        'network',
        'delco_code',
        'odometer_input',
        'odometer_reading_km',
        'odometer_reading_miles',
        'card_pan',
        'pin_indicator',
        'poi_receipt_number',
        'products_code_additional',
        'products_tax_code',
        'fuel_volume',
        'sfgw_card_date_of_expiry',
        'site_currency_iso_code',
        'card_id',
        'transaction_date',
        'transaction_date_time',
        'transaction_id',
        'transaction_status',
        'unit_of_measure',
        'vehicle_registration_number',
        'network_delco_name',
        'product_group_name',
        'fuel_product',
        'account_customer_name',
        'payer_name',
        'transaction_time',
        'transaction_currency',
        'unit_price',
        'authorised_flag',
        'transaction_time_gmt',
        'reason_code',
        'issuer_action_code',
        'issuer_action_code_description',
        'declined_reason',
        'card_status_reason_description',
        'transaction_country',
        'issuing_collecting_company_name',
        'card_issuer_name',
        'driver_name',
        'bearer_description',
        'card_category_description',
        'card_type_description',
        'card_token_type_description',
        'emboss_type',
        'ev_printed_number',
        'is_rfid',
    ]

    def __init__(self,
                 col_co_code=APIHelper.SKIP,
                 payer_number=APIHelper.SKIP,
                 account_number=APIHelper.SKIP,
                 card_issue_number=APIHelper.SKIP,
                 collecting_company_currency_code=APIHelper.SKIP,
                 cust_data_customer_entered=APIHelper.SKIP,
                 cust_data_driver_id=APIHelper.SKIP,
                 cust_data_fleet_description=APIHelper.SKIP,
                 fleet_id_input=APIHelper.SKIP,
                 amount=APIHelper.SKIP,
                 euroshell_site_number=APIHelper.SKIP,
                 incoming_product_code=APIHelper.SKIP,
                 product_code=APIHelper.SKIP,
                 product_name=APIHelper.SKIP,
                 site_code=APIHelper.SKIP,
                 hosting_collecting_company_name=APIHelper.SKIP,
                 hosting_collecting_company_number=APIHelper.SKIP,
                 iccdata_tran_type_code=APIHelper.SKIP,
                 transaction_type=APIHelper.SKIP,
                 latitude=APIHelper.SKIP,
                 longitude=APIHelper.SKIP,
                 merchant_category=APIHelper.SKIP,
                 merchant_category_description=APIHelper.SKIP,
                 purchased_in_country=APIHelper.SKIP,
                 merchant_id=APIHelper.SKIP,
                 site_name=APIHelper.SKIP,
                 network=APIHelper.SKIP,
                 delco_code=APIHelper.SKIP,
                 odometer_input=APIHelper.SKIP,
                 odometer_reading_km=APIHelper.SKIP,
                 odometer_reading_miles=APIHelper.SKIP,
                 card_pan=APIHelper.SKIP,
                 pin_indicator=APIHelper.SKIP,
                 poi_receipt_number=APIHelper.SKIP,
                 products_code_additional=APIHelper.SKIP,
                 products_tax_code=APIHelper.SKIP,
                 fuel_volume=APIHelper.SKIP,
                 sfgw_card_date_of_expiry=APIHelper.SKIP,
                 site_currency_iso_code=APIHelper.SKIP,
                 card_id=APIHelper.SKIP,
                 transaction_date=APIHelper.SKIP,
                 transaction_date_time=APIHelper.SKIP,
                 transaction_id=APIHelper.SKIP,
                 transaction_status=APIHelper.SKIP,
                 unit_of_measure=APIHelper.SKIP,
                 vehicle_registration_number=APIHelper.SKIP,
                 network_delco_name=APIHelper.SKIP,
                 product_group_name=APIHelper.SKIP,
                 fuel_product=APIHelper.SKIP,
                 account_customer_name=APIHelper.SKIP,
                 payer_name=APIHelper.SKIP,
                 transaction_time=APIHelper.SKIP,
                 transaction_currency=APIHelper.SKIP,
                 unit_price=APIHelper.SKIP,
                 authorised_flag=APIHelper.SKIP,
                 transaction_time_gmt=APIHelper.SKIP,
                 reason_code=APIHelper.SKIP,
                 issuer_action_code=APIHelper.SKIP,
                 issuer_action_code_description=APIHelper.SKIP,
                 declined_reason=APIHelper.SKIP,
                 card_status_reason_description=APIHelper.SKIP,
                 transaction_country=APIHelper.SKIP,
                 issuing_collecting_company_name=APIHelper.SKIP,
                 card_issuer_name=APIHelper.SKIP,
                 driver_name=APIHelper.SKIP,
                 bearer_description=APIHelper.SKIP,
                 card_category_description=APIHelper.SKIP,
                 card_type_description=APIHelper.SKIP,
                 card_token_type_description=APIHelper.SKIP,
                 emboss_type=APIHelper.SKIP,
                 ev_printed_number=APIHelper.SKIP,
                 is_rfid=APIHelper.SKIP):
        """Constructor for the RecentTransactions class"""

        # Initialize members of the class
        if col_co_code is not APIHelper.SKIP:
            self.col_co_code = col_co_code 
        if payer_number is not APIHelper.SKIP:
            self.payer_number = payer_number 
        if account_number is not APIHelper.SKIP:
            self.account_number = account_number 
        if card_issue_number is not APIHelper.SKIP:
            self.card_issue_number = card_issue_number 
        if collecting_company_currency_code is not APIHelper.SKIP:
            self.collecting_company_currency_code = collecting_company_currency_code 
        if cust_data_customer_entered is not APIHelper.SKIP:
            self.cust_data_customer_entered = cust_data_customer_entered 
        if cust_data_driver_id is not APIHelper.SKIP:
            self.cust_data_driver_id = cust_data_driver_id 
        if cust_data_fleet_description is not APIHelper.SKIP:
            self.cust_data_fleet_description = cust_data_fleet_description 
        if fleet_id_input is not APIHelper.SKIP:
            self.fleet_id_input = fleet_id_input 
        if amount is not APIHelper.SKIP:
            self.amount = amount 
        if euroshell_site_number is not APIHelper.SKIP:
            self.euroshell_site_number = euroshell_site_number 
        if incoming_product_code is not APIHelper.SKIP:
            self.incoming_product_code = incoming_product_code 
        if product_code is not APIHelper.SKIP:
            self.product_code = product_code 
        if product_name is not APIHelper.SKIP:
            self.product_name = product_name 
        if site_code is not APIHelper.SKIP:
            self.site_code = site_code 
        if hosting_collecting_company_name is not APIHelper.SKIP:
            self.hosting_collecting_company_name = hosting_collecting_company_name 
        if hosting_collecting_company_number is not APIHelper.SKIP:
            self.hosting_collecting_company_number = hosting_collecting_company_number 
        if iccdata_tran_type_code is not APIHelper.SKIP:
            self.iccdata_tran_type_code = iccdata_tran_type_code 
        if transaction_type is not APIHelper.SKIP:
            self.transaction_type = transaction_type 
        if latitude is not APIHelper.SKIP:
            self.latitude = latitude 
        if longitude is not APIHelper.SKIP:
            self.longitude = longitude 
        if merchant_category is not APIHelper.SKIP:
            self.merchant_category = merchant_category 
        if merchant_category_description is not APIHelper.SKIP:
            self.merchant_category_description = merchant_category_description 
        if purchased_in_country is not APIHelper.SKIP:
            self.purchased_in_country = purchased_in_country 
        if merchant_id is not APIHelper.SKIP:
            self.merchant_id = merchant_id 
        if site_name is not APIHelper.SKIP:
            self.site_name = site_name 
        if network is not APIHelper.SKIP:
            self.network = network 
        if delco_code is not APIHelper.SKIP:
            self.delco_code = delco_code 
        if odometer_input is not APIHelper.SKIP:
            self.odometer_input = odometer_input 
        if odometer_reading_km is not APIHelper.SKIP:
            self.odometer_reading_km = odometer_reading_km 
        if odometer_reading_miles is not APIHelper.SKIP:
            self.odometer_reading_miles = odometer_reading_miles 
        if card_pan is not APIHelper.SKIP:
            self.card_pan = card_pan 
        if pin_indicator is not APIHelper.SKIP:
            self.pin_indicator = pin_indicator 
        if poi_receipt_number is not APIHelper.SKIP:
            self.poi_receipt_number = poi_receipt_number 
        if products_code_additional is not APIHelper.SKIP:
            self.products_code_additional = products_code_additional 
        if products_tax_code is not APIHelper.SKIP:
            self.products_tax_code = products_tax_code 
        if fuel_volume is not APIHelper.SKIP:
            self.fuel_volume = fuel_volume 
        if sfgw_card_date_of_expiry is not APIHelper.SKIP:
            self.sfgw_card_date_of_expiry = sfgw_card_date_of_expiry 
        if site_currency_iso_code is not APIHelper.SKIP:
            self.site_currency_iso_code = site_currency_iso_code 
        if card_id is not APIHelper.SKIP:
            self.card_id = card_id 
        if transaction_date is not APIHelper.SKIP:
            self.transaction_date = transaction_date 
        if transaction_date_time is not APIHelper.SKIP:
            self.transaction_date_time = transaction_date_time 
        if transaction_id is not APIHelper.SKIP:
            self.transaction_id = transaction_id 
        if transaction_status is not APIHelper.SKIP:
            self.transaction_status = transaction_status 
        if unit_of_measure is not APIHelper.SKIP:
            self.unit_of_measure = unit_of_measure 
        if vehicle_registration_number is not APIHelper.SKIP:
            self.vehicle_registration_number = vehicle_registration_number 
        if network_delco_name is not APIHelper.SKIP:
            self.network_delco_name = network_delco_name 
        if product_group_name is not APIHelper.SKIP:
            self.product_group_name = product_group_name 
        if fuel_product is not APIHelper.SKIP:
            self.fuel_product = fuel_product 
        if account_customer_name is not APIHelper.SKIP:
            self.account_customer_name = account_customer_name 
        if payer_name is not APIHelper.SKIP:
            self.payer_name = payer_name 
        if transaction_time is not APIHelper.SKIP:
            self.transaction_time = transaction_time 
        if transaction_currency is not APIHelper.SKIP:
            self.transaction_currency = transaction_currency 
        if unit_price is not APIHelper.SKIP:
            self.unit_price = unit_price 
        if authorised_flag is not APIHelper.SKIP:
            self.authorised_flag = authorised_flag 
        if transaction_time_gmt is not APIHelper.SKIP:
            self.transaction_time_gmt = transaction_time_gmt 
        if reason_code is not APIHelper.SKIP:
            self.reason_code = reason_code 
        if issuer_action_code is not APIHelper.SKIP:
            self.issuer_action_code = issuer_action_code 
        if issuer_action_code_description is not APIHelper.SKIP:
            self.issuer_action_code_description = issuer_action_code_description 
        if declined_reason is not APIHelper.SKIP:
            self.declined_reason = declined_reason 
        if card_status_reason_description is not APIHelper.SKIP:
            self.card_status_reason_description = card_status_reason_description 
        if transaction_country is not APIHelper.SKIP:
            self.transaction_country = transaction_country 
        if issuing_collecting_company_name is not APIHelper.SKIP:
            self.issuing_collecting_company_name = issuing_collecting_company_name 
        if card_issuer_name is not APIHelper.SKIP:
            self.card_issuer_name = card_issuer_name 
        if driver_name is not APIHelper.SKIP:
            self.driver_name = driver_name 
        if bearer_description is not APIHelper.SKIP:
            self.bearer_description = bearer_description 
        if card_category_description is not APIHelper.SKIP:
            self.card_category_description = card_category_description 
        if card_type_description is not APIHelper.SKIP:
            self.card_type_description = card_type_description 
        if card_token_type_description is not APIHelper.SKIP:
            self.card_token_type_description = card_token_type_description 
        if emboss_type is not APIHelper.SKIP:
            self.emboss_type = emboss_type 
        if ev_printed_number is not APIHelper.SKIP:
            self.ev_printed_number = ev_printed_number 
        if is_rfid is not APIHelper.SKIP:
            self.is_rfid = is_rfid 

    @classmethod
    def from_dictionary(cls,
                        dictionary):
        """Creates an instance of this model from a dictionary

        Args:
            dictionary (dictionary): A dictionary representation of the object
            as obtained from the deserialization of the server's response. The
            keys MUST match property names in the API description.

        Returns:
            object: An instance of this structure class.

        """

        if not isinstance(dictionary, dict) or dictionary is None:
            return None

        # Extract variables from the dictionary
        col_co_code = dictionary.get("ColCoCode") if "ColCoCode" in dictionary.keys() else APIHelper.SKIP
        payer_number = dictionary.get("PayerNumber") if "PayerNumber" in dictionary.keys() else APIHelper.SKIP
        account_number = dictionary.get("AccountNumber") if "AccountNumber" in dictionary.keys() else APIHelper.SKIP
        card_issue_number = dictionary.get("CardIssueNumber") if "CardIssueNumber" in dictionary.keys() else APIHelper.SKIP
        collecting_company_currency_code = dictionary.get("CollectingCompanyCurrencyCode") if "CollectingCompanyCurrencyCode" in dictionary.keys() else APIHelper.SKIP
        cust_data_customer_entered = dictionary.get("CustDataCustomerEntered") if "CustDataCustomerEntered" in dictionary.keys() else APIHelper.SKIP
        cust_data_driver_id = dictionary.get("CustDataDriverId") if "CustDataDriverId" in dictionary.keys() else APIHelper.SKIP
        cust_data_fleet_description = dictionary.get("CustDataFleetDescription") if "CustDataFleetDescription" in dictionary.keys() else APIHelper.SKIP
        fleet_id_input = dictionary.get("FleetIdInput") if "FleetIdInput" in dictionary.keys() else APIHelper.SKIP
        amount = dictionary.get("Amount") if "Amount" in dictionary.keys() else APIHelper.SKIP
        euroshell_site_number = dictionary.get("EuroshellSiteNumber") if "EuroshellSiteNumber" in dictionary.keys() else APIHelper.SKIP
        incoming_product_code = dictionary.get("IncomingProductCode") if "IncomingProductCode" in dictionary.keys() else APIHelper.SKIP
        product_code = dictionary.get("ProductCode") if "ProductCode" in dictionary.keys() else APIHelper.SKIP
        product_name = dictionary.get("ProductName") if "ProductName" in dictionary.keys() else APIHelper.SKIP
        site_code = dictionary.get("SiteCode") if "SiteCode" in dictionary.keys() else APIHelper.SKIP
        hosting_collecting_company_name = dictionary.get("HostingCollectingCompanyName") if "HostingCollectingCompanyName" in dictionary.keys() else APIHelper.SKIP
        hosting_collecting_company_number = dictionary.get("HostingCollectingCompanyNumber") if "HostingCollectingCompanyNumber" in dictionary.keys() else APIHelper.SKIP
        iccdata_tran_type_code = dictionary.get("IccdataTranTypeCode") if "IccdataTranTypeCode" in dictionary.keys() else APIHelper.SKIP
        transaction_type = dictionary.get("TransactionType") if "TransactionType" in dictionary.keys() else APIHelper.SKIP
        latitude = dictionary.get("Latitude") if "Latitude" in dictionary.keys() else APIHelper.SKIP
        longitude = dictionary.get("Longitude") if "Longitude" in dictionary.keys() else APIHelper.SKIP
        merchant_category = dictionary.get("MerchantCategory") if "MerchantCategory" in dictionary.keys() else APIHelper.SKIP
        merchant_category_description = dictionary.get("MerchantCategoryDescription") if "MerchantCategoryDescription" in dictionary.keys() else APIHelper.SKIP
        purchased_in_country = dictionary.get("PurchasedInCountry") if "PurchasedInCountry" in dictionary.keys() else APIHelper.SKIP
        merchant_id = dictionary.get("MerchantId") if "MerchantId" in dictionary.keys() else APIHelper.SKIP
        site_name = dictionary.get("SiteName") if "SiteName" in dictionary.keys() else APIHelper.SKIP
        network = dictionary.get("Network") if "Network" in dictionary.keys() else APIHelper.SKIP
        delco_code = dictionary.get("DelcoCode") if "DelcoCode" in dictionary.keys() else APIHelper.SKIP
        odometer_input = dictionary.get("OdometerInput") if "OdometerInput" in dictionary.keys() else APIHelper.SKIP
        odometer_reading_km = dictionary.get("OdometerReadingKm") if "OdometerReadingKm" in dictionary.keys() else APIHelper.SKIP
        odometer_reading_miles = dictionary.get("OdometerReadingMiles") if "OdometerReadingMiles" in dictionary.keys() else APIHelper.SKIP
        card_pan = dictionary.get("CardPAN") if "CardPAN" in dictionary.keys() else APIHelper.SKIP
        pin_indicator = dictionary.get("PINIndicator") if "PINIndicator" in dictionary.keys() else APIHelper.SKIP
        poi_receipt_number = dictionary.get("POIReceiptNumber") if "POIReceiptNumber" in dictionary.keys() else APIHelper.SKIP
        products_code_additional = dictionary.get("ProductsCodeAdditional") if "ProductsCodeAdditional" in dictionary.keys() else APIHelper.SKIP
        products_tax_code = dictionary.get("ProductsTaxCode") if "ProductsTaxCode" in dictionary.keys() else APIHelper.SKIP
        fuel_volume = dictionary.get("FuelVolume") if "FuelVolume" in dictionary.keys() else APIHelper.SKIP
        sfgw_card_date_of_expiry = dictionary.get("SfgwCardDateOfExpiry") if "SfgwCardDateOfExpiry" in dictionary.keys() else APIHelper.SKIP
        site_currency_iso_code = dictionary.get("SiteCurrencyISOCode") if "SiteCurrencyISOCode" in dictionary.keys() else APIHelper.SKIP
        card_id = dictionary.get("CardId") if "CardId" in dictionary.keys() else APIHelper.SKIP
        if 'TransactionDate' in dictionary.keys():
            transaction_date = dateutil.parser.parse(dictionary.get('TransactionDate')).date() if dictionary.get('TransactionDate') else None
        else:
            transaction_date = APIHelper.SKIP
        transaction_date_time = dictionary.get("TransactionDateTime") if "TransactionDateTime" in dictionary.keys() else APIHelper.SKIP
        transaction_id = dictionary.get("TransactionId") if "TransactionId" in dictionary.keys() else APIHelper.SKIP
        transaction_status = dictionary.get("TransactionStatus") if "TransactionStatus" in dictionary.keys() else APIHelper.SKIP
        unit_of_measure = dictionary.get("UnitOfMeasure") if "UnitOfMeasure" in dictionary.keys() else APIHelper.SKIP
        vehicle_registration_number = dictionary.get("VehicleRegistrationNumber") if "VehicleRegistrationNumber" in dictionary.keys() else APIHelper.SKIP
        network_delco_name = dictionary.get("NetworkDelcoName") if "NetworkDelcoName" in dictionary.keys() else APIHelper.SKIP
        product_group_name = dictionary.get("ProductGroupName") if "ProductGroupName" in dictionary.keys() else APIHelper.SKIP
        fuel_product = dictionary.get("FuelProduct") if "FuelProduct" in dictionary.keys() else APIHelper.SKIP
        account_customer_name = dictionary.get("AccountCustomerName") if "AccountCustomerName" in dictionary.keys() else APIHelper.SKIP
        payer_name = dictionary.get("PayerName") if "PayerName" in dictionary.keys() else APIHelper.SKIP
        transaction_time = dictionary.get("TransactionTime") if "TransactionTime" in dictionary.keys() else APIHelper.SKIP
        transaction_currency = dictionary.get("TransactionCurrency") if "TransactionCurrency" in dictionary.keys() else APIHelper.SKIP
        unit_price = dictionary.get("UnitPrice") if "UnitPrice" in dictionary.keys() else APIHelper.SKIP
        authorised_flag = dictionary.get("AuthorisedFlag") if "AuthorisedFlag" in dictionary.keys() else APIHelper.SKIP
        transaction_time_gmt = dictionary.get("TransactionTimeGMT") if "TransactionTimeGMT" in dictionary.keys() else APIHelper.SKIP
        reason_code = dictionary.get("ReasonCode") if "ReasonCode" in dictionary.keys() else APIHelper.SKIP
        issuer_action_code = dictionary.get("IssuerActionCode") if "IssuerActionCode" in dictionary.keys() else APIHelper.SKIP
        issuer_action_code_description = dictionary.get("IssuerActionCodeDescription") if "IssuerActionCodeDescription" in dictionary.keys() else APIHelper.SKIP
        declined_reason = dictionary.get("DeclinedReason") if "DeclinedReason" in dictionary.keys() else APIHelper.SKIP
        card_status_reason_description = dictionary.get("CardStatusReasonDescription") if "CardStatusReasonDescription" in dictionary.keys() else APIHelper.SKIP
        transaction_country = dictionary.get("TransactionCountry") if "TransactionCountry" in dictionary.keys() else APIHelper.SKIP
        issuing_collecting_company_name = dictionary.get("IssuingCollectingCompanyName") if "IssuingCollectingCompanyName" in dictionary.keys() else APIHelper.SKIP
        card_issuer_name = dictionary.get("CardIssuerName") if "CardIssuerName" in dictionary.keys() else APIHelper.SKIP
        driver_name = dictionary.get("DriverName") if "DriverName" in dictionary.keys() else APIHelper.SKIP
        bearer_description = dictionary.get("BearerDescription") if "BearerDescription" in dictionary.keys() else APIHelper.SKIP
        card_category_description = dictionary.get("CardCategoryDescription") if "CardCategoryDescription" in dictionary.keys() else APIHelper.SKIP
        card_type_description = dictionary.get("CardTypeDescription") if "CardTypeDescription" in dictionary.keys() else APIHelper.SKIP
        card_token_type_description = dictionary.get("CardTokenTypeDescription") if "CardTokenTypeDescription" in dictionary.keys() else APIHelper.SKIP
        emboss_type = dictionary.get("EmbossType") if "EmbossType" in dictionary.keys() else APIHelper.SKIP
        ev_printed_number = dictionary.get("EVPrintedNumber") if "EVPrintedNumber" in dictionary.keys() else APIHelper.SKIP
        is_rfid = dictionary.get("IsRFID") if "IsRFID" in dictionary.keys() else APIHelper.SKIP
        # Return an object of this model
        return cls(col_co_code,
                   payer_number,
                   account_number,
                   card_issue_number,
                   collecting_company_currency_code,
                   cust_data_customer_entered,
                   cust_data_driver_id,
                   cust_data_fleet_description,
                   fleet_id_input,
                   amount,
                   euroshell_site_number,
                   incoming_product_code,
                   product_code,
                   product_name,
                   site_code,
                   hosting_collecting_company_name,
                   hosting_collecting_company_number,
                   iccdata_tran_type_code,
                   transaction_type,
                   latitude,
                   longitude,
                   merchant_category,
                   merchant_category_description,
                   purchased_in_country,
                   merchant_id,
                   site_name,
                   network,
                   delco_code,
                   odometer_input,
                   odometer_reading_km,
                   odometer_reading_miles,
                   card_pan,
                   pin_indicator,
                   poi_receipt_number,
                   products_code_additional,
                   products_tax_code,
                   fuel_volume,
                   sfgw_card_date_of_expiry,
                   site_currency_iso_code,
                   card_id,
                   transaction_date,
                   transaction_date_time,
                   transaction_id,
                   transaction_status,
                   unit_of_measure,
                   vehicle_registration_number,
                   network_delco_name,
                   product_group_name,
                   fuel_product,
                   account_customer_name,
                   payer_name,
                   transaction_time,
                   transaction_currency,
                   unit_price,
                   authorised_flag,
                   transaction_time_gmt,
                   reason_code,
                   issuer_action_code,
                   issuer_action_code_description,
                   declined_reason,
                   card_status_reason_description,
                   transaction_country,
                   issuing_collecting_company_name,
                   card_issuer_name,
                   driver_name,
                   bearer_description,
                   card_category_description,
                   card_type_description,
                   card_token_type_description,
                   emboss_type,
                   ev_printed_number,
                   is_rfid)
