'Accepts the following positional arguments
items_data - A list having the following items for each row.
item_description - String
quantity - Integer
list_price - float
discount - float
item_total - float
id - String
date - datetime
is_invoice - boolean - True (for invoice) or False (for Receipt)
total_cost - float
payment_received - float
balance - float'

def __init__(self, items_data, item_id, date, is_invoice, total_cost, payment_received, balance):

    self.currency = settings.PAID_COURSE_REGISTRATION_CURRENCY[1]
    self.logo_path = configuration_helpers.get_value('PDF_RECEIPT_LOGO_PATH', settings.PDF_RECEIPT_LOGO_PATH)
    self.cobrand_logo_path = configuration_helpers.get_value('PDF_RECEIPT_COBRAND_LOGO_PATH', settings.PDF_RECEIPT_COBRAND_LOGO_PATH)
    self.tax_label = configuration_helpers.get_value('PDF_RECEIPT_TAX_ID_LABEL', settings.PDF_RECEIPT_TAX_ID_LABEL)
    self.tax_id = configuration_helpers.get_value('PDF_RECEIPT_TAX_ID', settings.PDF_RECEIPT_TAX_ID)
    self.footer_text = configuration_helpers.get_value('PDF_RECEIPT_FOOTER_TEXT', settings.PDF_RECEIPT_FOOTER_TEXT)
    self.disclaimer_text = configuration_helpers.get_value('PDF_RECEIPT_DISCLAIMER_TEXT', settings.PDF_RECEIPT_DISCLAIMER_TEXT)
    self.billing_address_text = configuration_helpers.get_value('PDF_RECEIPT_BILLING_ADDRESS', settings.PDF_RECEIPT_BILLING_ADDRESS)
    self.terms_conditions_text = configuration_helpers.get_value('PDF_RECEIPT_TERMS_AND_CONDITIONS', settings.PDF_RECEIPT_TERMS_AND_CONDITIONS)
    self.brand_logo_height = (configuration_helpers.get_value('PDF_RECEIPT_LOGO_HEIGHT_MM', settings.PDF_RECEIPT_LOGO_HEIGHT_MM) * mm)
    self.cobrand_logo_height = (configuration_helpers.get_value('PDF_RECEIPT_COBRAND_LOGO_HEIGHT_MM', settings.PDF_RECEIPT_COBRAND_LOGO_HEIGHT_MM) * mm)
    self.items_data = items_data
    self.item_id = item_id
    self.date = ModuleI18nService().strftime(date, 'SHORT_DATE')
    self.is_invoice = is_invoice
    self.total_cost = '{currency}{amount:.2f}'.format(currency=self.currency, amount=total_cost)
    self.payment_received = '{currency}{amount:.2f}'.format(currency=self.currency, amount=payment_received)
    self.balance = '{currency}{amount:.2f}'.format(currency=self.currency, amount=balance)
    self.margin = (15 * mm)
    self.page_width = letter[0]
    self.page_height = letter[1]
    self.min_clearance = (3 * mm)
    self.second_page_available_height = ''
    self.second_page_start_y_pos = ''
    self.first_page_available_height = ''
    self.pdf = None
