Repository URL to install this package:
|
Version:
0.4.200 ▾
|
lib-py-b2b
/
refund.py
|
|---|
from datetime import datetime
from decimal import Decimal
from lib_b2b.base import BaseClass
from lib_b2b.order_line import OrderLineCancellation
class RefundLine(BaseClass):
def __init__(self, line_id, quantity: int, line_item_id, product_id: str, amount: Decimal):
self.amount = amount
self.product_id = product_id
self.line_item_id = line_item_id
self.quantity = quantity
self.line_id = line_id
class Refund(BaseClass):
def __init__(self, refund_id, order_id: str, created_at: datetime, note: str, lines: [RefundLine]):
self.order_id = order_id
self.lines = lines
self.note = note
self.created_at = created_at
self.refund_id = refund_id
@property
def amount(self):
return sum(r.amount for r in self.lines)
def as_cancellations(self) -> [OrderLineCancellation]:
_cancellations = []
if not self.lines:
return _cancellations
else:
for line in self.lines:
_cancellations.append(
OrderLineCancellation(
cancellation_id=f"{self.refund_id}-{line.line_id}",
cancellation_reason=self.note or 'Refunded by Shopify',
cancelled_at=self.created_at,
cancel_qty=line.quantity,
order_id=self.order_id,
channel_line_id=line.line_item_id
)
)
return _cancellations