Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

Check our main [developer changelog](https://developer.paddle.com/?utm_source=dx&utm_medium=paddle-python-sdk) for information about changes to the Paddle Billing platform, the Paddle API, and other developer tools.

## [Unreleased]

### Added

- Added `transactions.revise` operation to revise a transaction and added `revised_at` to `Transaction` entity, see [related changelog](https://developer.paddle.com/changelog/2024/revise-transaction-customer-information?utm_source=dx&utm_medium=paddle-python-sdk).
- Added support for `transaction.revised` notification, see [related changelog](https://developer.paddle.com/changelog/2024/revise-transaction-customer-information?utm_source=dx&utm_medium=paddle-python-sdk).

## 1.4.0 - 2024-12-19

### Added
Expand Down
1 change: 1 addition & 0 deletions paddle_billing/Entities/Events/EventTypeName.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class EventTypeName(PaddleStrEnum, metaclass=PaddleStrEnumMeta):
TransactionPastDue: "EventTypeName" = "transaction.past_due"
TransactionPaymentFailed: "EventTypeName" = "transaction.payment_failed"
TransactionReady: "EventTypeName" = "transaction.ready"
TransactionRevised: "EventTypeName" = "transaction.revised"
TransactionUpdated: "EventTypeName" = "transaction.updated"
ReportCreated: "EventTypeName" = "report.created"
ReportUpdated: "EventTypeName" = "report.updated"
2 changes: 2 additions & 0 deletions paddle_billing/Entities/Transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class Transaction(Entity):
customer: Customer | None = None
discount: Discount | None = None
available_payment_methods: list[PaymentMethodType] | None = None
revised_at: datetime | None = None

@staticmethod
def from_dict(data: dict) -> Transaction:
Expand Down Expand Up @@ -95,4 +96,5 @@ def from_dict(data: dict) -> Transaction:
if data.get("adjustment_totals")
else None
),
revised_at=datetime.fromisoformat(data["revised_at"]) if data.get("revised_at") else None,
)
2 changes: 2 additions & 0 deletions paddle_billing/Notifications/Entities/Transaction.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class Transaction(Entity):
created_at: datetime
updated_at: datetime
billed_at: datetime | None
revised_at: datetime | None = None

@staticmethod
def from_dict(data: dict) -> Transaction:
Expand All @@ -69,4 +70,5 @@ def from_dict(data: dict) -> Transaction:
billing_period=TimePeriod.from_dict(data["billing_period"]) if data.get("billing_period") else None,
custom_data=CustomData(data["custom_data"]) if data.get("custom_data") else None,
checkout=Checkout.from_dict(data["checkout"]) if data.get("checkout") else None,
revised_at=datetime.fromisoformat(data["revised_at"]) if data.get("revised_at") else None,
)
17 changes: 17 additions & 0 deletions paddle_billing/Notifications/Events/TransactionRevised.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from datetime import datetime

from paddle_billing.Entities.Event import Event
from paddle_billing.Entities.Events import EventTypeName

from paddle_billing.Notifications.Entities.Transaction import Transaction


class TransactionRevised(Event):
def __init__(
self,
event_id: str,
event_type: EventTypeName,
occurred_at: datetime,
data: Transaction,
):
super().__init__(event_id, event_type, occurred_at, data)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from dataclasses import dataclass

from paddle_billing.Operation import Operation
from paddle_billing.Undefined import Undefined


@dataclass
class ReviseAddress(Operation):
first_line: str | Undefined = Undefined()
second_line: str | None | Undefined = Undefined()
city: str | Undefined = Undefined()
region: str | Undefined = Undefined()
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from dataclasses import dataclass

from paddle_billing.Operation import Operation
from paddle_billing.Undefined import Undefined


@dataclass
class ReviseBusiness(Operation):
name: str | Undefined = Undefined()
tax_identifier: str | Undefined = Undefined()
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from dataclasses import dataclass

from paddle_billing.Operation import Operation
from paddle_billing.Undefined import Undefined


@dataclass
class ReviseCustomer(Operation):
name: str | Undefined = Undefined()
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from paddle_billing.Resources.Transactions.Operations.Revise.ReviseAddress import ReviseAddress
from paddle_billing.Resources.Transactions.Operations.Revise.ReviseBusiness import ReviseBusiness
from paddle_billing.Resources.Transactions.Operations.Revise.ReviseCustomer import ReviseCustomer
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from dataclasses import dataclass

from paddle_billing.Operation import Operation
from paddle_billing.Undefined import Undefined
from paddle_billing.Resources.Transactions.Operations.Revise import (
ReviseAddress,
ReviseBusiness,
ReviseCustomer,
)


@dataclass
class ReviseTransaction(Operation):
address: ReviseAddress | Undefined = Undefined()
business: ReviseBusiness | Undefined = Undefined()
customer: ReviseCustomer | Undefined = Undefined()
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@
from paddle_billing.Resources.Transactions.Operations.PreviewTransactionByIP import PreviewTransactionByIP
from paddle_billing.Resources.Transactions.Operations.UpdateTransaction import UpdateTransaction
from paddle_billing.Resources.Transactions.Operations.GetTransactionInvoice import GetTransactionInvoice
from paddle_billing.Resources.Transactions.Operations.ReviseTransaction import ReviseTransaction
7 changes: 7 additions & 0 deletions paddle_billing/Resources/Transactions/TransactionsClient.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
PreviewTransactionByIP,
TransactionIncludes,
GetTransactionInvoice,
ReviseTransaction,
)

from typing import TYPE_CHECKING
Expand Down Expand Up @@ -91,3 +92,9 @@ def get_invoice_pdf(self, transaction_id: str, operation: GetTransactionInvoice
parser = ResponseParser(self.response)

return TransactionData.from_dict(parser.get_data())

def revise(self, transaction_id: str, operation: ReviseTransaction) -> Transaction:
self.response = self.client.post_raw(f"/transactions/{transaction_id}/revise", operation)
parser = ResponseParser(self.response)

return Transaction.from_dict(parser.get_data())
Loading
Loading