Skip to content

Include Gift event in transaction #183

Open
@NiklasRosenstein

Description

@NiklasRosenstein

End of last year, TR introduced a feature to send gifts (e.g. some amount of stock) via email to be accepted by the recipient into their TR portfolio. This event is currently being ignored due to #161 (instead of causing an error), but it also means the event remains entirely unprocessed.

From what I can tell, there is no document related to the particular gifting event. (There are events for accepting the Terms & Conditions related to gifting, which are separate and already handled)

However, this is still a transaction that is missing from pytr export_transactions. This is because the event is not saved into the all_events.json which is used as input to the command.

Research notes

#161 skips the timelineDetailV2 for which there is not corresponding timeline event.

pytr/pytr/timeline.py

Lines 128 to 130 in f830c55

event = self.timeline_events.get(response["id"], None)
if event is None:
raise UnsupportedEventError(response["id"])

However, it appears there is a corresponding timeline event, only the mapping we currently do based on the id does not match (at least in my case).

(Pdb) [ev for k, ev in self.timeline_events.items() if "Geschenk" in str(ev)]
[
    {
        "id": "316dbb9c-c94b-44f8-b3ea-3a90d27021b5",
        "timestamp": "2024-12-14T17:55:19.707+0000",
        "title": "ETF-Geschenk",
        "icon": "logos/contacts-B-Orange/v2",
        "badge": None,
        "subtitle": "Angenommen",
        "amount": {
            "currency": "EUR",
            "value": -26.0,
            "fractionDigits": 2
        },
        "subAmount": None,
        "status": "EXECUTED",
        "action": {
            "type": "timelineDetail",
            "payload": "316dbb9c-c94b-44f8-b3ea-3a90d27021b5"
        },
        "eventType": "GIFTER_TRANSACTION",
        "cashAccountNumber": None,
        "hidden": False,
        "deleted": False,
        "source": "timelineTransaction"
    }
]
Corresponding timelineDetailV2
{
    "id": "882bb1e7-8a14-42a3-b026-42a1d61d699a",
    "sections": [
        {
            "title": "Du hast 25,00\xa0€ geschenkt",
            "data": {
                "icon": "logos/contacts-B-Orange/v2",
                "timestamp": "2024-12-14T17:55:19.707+0000",
                "status": "executed"
            },
            "type": "header"
        },
        {
            "title": "Übersicht",
            "data": [
                {
                    "title": "Status",
                    "detail": {
                        "text": "Angenommen",
                        "functionalStyle": "EXECUTED",
                        "type": "status"
                    },
                    "style": "plain"
                },
                {
                    "title": "Asset",
                    "detail": {
                        "text": "FTSE All-World USD (Acc)",
                        "type": "text"
                    },
                    "style": "plain"
                },
                {
                    "title": "Lieferdatum",
                    "detail": {
                        "text": "14 Dec",
                        "type": "text"
                    },
                    "style": "plain"
                }
            ],
            "type": "table"
        },
        {
            "title": "Status",
            "steps": [
                {
                    "leading": {
                        "avatar": {
                            "status": "completed",
                            "type": "bullet"
                        },
                        "connection": {
                            "order": "first"
                        }
                    },
                    "content": {
                        "title": "Geschenk geliefert",
                        "timestamp": "2024-12-14T17:55:19.799+0000"
                    }
                },
                {
                    "leading": {
                        "avatar": {
                            "status": "completed",
                            "type": "bullet"
                        },
                        "connection": {
                            "order": "last"
                        }
                    },
                    "content": {
                        "title": "Geschenk angenommen",
                        "timestamp": "2024-12-14T18:18:38.235+0000"
                    }
                }
            ],
            "type": "steps"
        },
        {
            "title": "Transaktion",
            "data": [
                {
                    "title": "Geschenkbetrag",
                    "detail": {
                        "text": "25,00\xa0€",
                        "type": "text"
                    },
                    "style": "plain"
                },
                {
                    "title": "Gebühr",
                    "detail": {
                        "text": "1,00\xa0€",
                        "type": "text"
                    },
                    "style": "plain"
                },
                {
                    "title": "Summe",
                    "detail": {
                        "text": "26,00\xa0€",
                        "type": "text"
                    },
                    "style": "highlighted"
                }
            ],
            "type": "table"
        },
        {
            "title": "Empfänger",
            "data": [
                {
                    "title": "REDACTED",
                    "detail": {
                        "icon": "logos/contacts-B-Orange/v2",
                        "style": "highlighted",
                        "type": "listItemAvatarDefault"
                    },
                    "style": "highlighted"
                }
            ],
            "type": "table"
        },
        {
            "title": "Mehr",
            "data": [
                {
                    "title": "Brauchst du Hilfe?",
                    "detail": {
                        "icon": "logos/timeline_document/v2",
                        "action": {
                            "type": "deeplink",
                            "payload": {
                                "link": "traderepublic://help-center/node/016e1408-0073-4d01-928b-47db6993eb16?singleOnTop=false"
                            }
                        },
                        "style": "highlighted",
                        "type": "listItemAvatarDefault"
                    },
                    "style": "plain"
                }
            ],
            "type": "table"
        },
        {
            "title": "",
            "data": [
                {
                    "title": "",
                    "detail": {
                        "icon": "",
                        "action": {
                            "type": "customerSupportChat",
                            "payload": {
                                "contextParams": {
                                    "chat_flow_key": "NHC_0035_gifting_sent_a_gift",
                                    "timelineEventId": "316dbb9c-c94b-44f8-b3ea-3a90d27021b5",
                                    "giftId": "ffc93cd1-53ab-4492-881c-e27dcb8d9b38"
                                },
                                "contextCategory": "NHC"
                            }
                        },
                        "style": "highlighted",
                        "type": "listItemAvatarDefault"
                    },
                    "style": "plain"
                }
            ],
            "type": "table"
        }
    ]
}

Note how here the id of the detail and the timeline event do not match. Deeper in the detail, in the help section's payload.contextParams we can find the corresponding timelineEventId.

                                "contextParams": {
                                    "chat_flow_key": "NHC_0035_gifting_sent_a_gift",
                                    "timelineEventId": "316dbb9c-c94b-44f8-b3ea-3a90d27021b5",
                                    "giftId": "ffc93cd1-53ab-4492-881c-e27dcb8d9b38"
                                },

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions