def _create_invoice(invoice_buffer, invoice, proposal): global DPAW_HEADER_LOGO # if cols_var["TEMPLATE_GROUP"] == 'rottnest': # DPAW_HEADER_LOGO = os.path.join(settings.BASE_DIR, 'mooring', 'static', 'mooring', 'img','logo-rottnest-island-sm.png') # else: # DPAW_HEADER_LOGO = os.path.join(settings.BASE_DIR, 'ledger', 'payments','static', 'payments', 'img','dbca_logo.jpg') DPAW_HEADER_LOGO = os.path.join(settings.PROJECT_DIR, 'payments', 'static', 'payments', 'img', 'dbca_logo.jpg') every_page_frame = Frame(PAGE_MARGIN, PAGE_MARGIN + 250, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 450, id='EveryPagesFrame', showBoundary=0) remit_frame = Frame(PAGE_MARGIN, PAGE_MARGIN, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 600, id='RemitFrame', showBoundary=0) every_page_template = PageTemplate(id='EveryPages', frames=[every_page_frame, remit_frame], onPage=_create_header) doc = BaseDocTemplate(invoice_buffer, pageTemplates=[every_page_template], pagesize=A4) # this is the only way to get data into the onPage callback function doc.invoice = invoice doc.proposal = proposal owner = invoice.owner elements = [] #elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 5)) # Draw Products Table invoice_table_style = TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP'), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('ALIGN', (0, 0), (-1, -1), 'LEFT')]) items = invoice.order.lines.all() discounts = invoice.order.basket_discounts if invoice.text: elements.append(Paragraph(invoice.text, styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) data = [['Item', 'Product', 'Quantity', 'Unit Price', 'Total']] val = 1 s = styles["BodyText"] s.wordWrap = 'CJK' for item in items: data.append([ val, Paragraph(item.description, s), item.quantity, currency(item.unit_price_incl_tax), currency(item.line_price_before_discounts_incl_tax) ]) val += 1 # Discounts data.append(['', '', '', '']) for discount in discounts: data.append( ['', discount.offer, '', '', '-${}'.format(discount.amount)]) val += 1 t = Table(data, style=invoice_table_style, hAlign='LEFT', colWidths=( 0.7 * inch, None, 0.7 * inch, 1.0 * inch, 1.0 * inch, )) elements.append(t) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) # /Products Table if invoice.payment_status != 'paid' and invoice.payment_status != 'over_paid': elements.append( Paragraph(settings.INVOICE_UNPAID_WARNING, styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 6)) # Remitttance Frame elements.append(FrameBreak()) boundary = BrokenLine(PAGE_WIDTH - 2 * (PAGE_MARGIN * 1.1)) elements.append(boundary) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT)) remittance = Remittance(HEADER_MARGIN, HEADER_MARGIN - 10, proposal, invoice) elements.append(remittance) #_create_remittance(invoice_buffer,doc) doc.build(elements) return invoice_buffer
def _create_invoice(invoice_buffer, invoice): every_page_frame = Frame(PAGE_MARGIN, PAGE_MARGIN + 250, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT -450 , id='EveryPagesFrame',showBoundary=0) remit_frame = Frame(PAGE_MARGIN, PAGE_MARGIN, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 600, id='RemitFrame',showBoundary=0) every_page_template = PageTemplate(id='EveryPages', frames=[every_page_frame,remit_frame], onPage=_create_header) doc = BaseDocTemplate(invoice_buffer, pageTemplates=[every_page_template], pagesize=A4) # this is the only way to get data into the onPage callback function doc.invoice = invoice owner = invoice.owner elements = [] #elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 5)) # Draw Products Table invoice_table_style = TableStyle([ ('VALIGN', (0, 0), (-1, -1), 'TOP'), ('GRID',(0, 0), (-1, -1),1, colors.black), ('ALIGN', (0, 0), (-1, -1), 'LEFT') ]) items = invoice.order.lines.all() discounts = invoice.order.basket_discounts if invoice.text: elements.append(Paragraph(invoice.text, styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) data = [ ['Item','Product', 'Quantity','Unit Price', 'Total'] ] val = 1 s = styles["BodyText"] s.wordWrap = 'CJK' for item in items: data.append( [ val, Paragraph(item.description, s), item.quantity, currency(item.unit_price_incl_tax), currency(item.line_price_before_discounts_incl_tax) ] ) val += 1 # Discounts data.append( [ '', '', '', '' ] ) for discount in discounts: data.append( [ '', discount.offer, '', '', '-${}'.format(discount.amount) ] ) val += 1 t= Table( data, style=invoice_table_style, hAlign='LEFT', colWidths=( 0.7 * inch, None, 0.7 * inch, 1.0 * inch, 1.0 * inch, ) ) elements.append(t) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) # /Products Table if invoice.payment_status != 'paid' and invoice.payment_status != 'over_paid': elements.append(Paragraph(settings.INVOICE_UNPAID_WARNING, styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 6)) # Remitttance Frame elements.append(FrameBreak()) boundary = BrokenLine(PAGE_WIDTH - 2 * (PAGE_MARGIN *1.1)) elements.append(boundary) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT)) remittance = Remittance(HEADER_MARGIN,HEADER_MARGIN - 10,invoice) elements.append(remittance) #_create_remittance(invoice_buffer,doc) doc.build(elements) return invoice_buffer
def _create_invoice(invoice_buffer, invoice): every_page_frame = Frame(PAGE_MARGIN, PAGE_MARGIN + 250, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 430, id='EveryPagesFrame', showBoundary=0) remit_frame = Frame(PAGE_MARGIN, PAGE_MARGIN, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 600, id='RemitFrame', showBoundary=0) every_page_template = PageTemplate(id='EveryPages', frames=[every_page_frame, remit_frame], onPage=_create_header) doc = BaseDocTemplate(invoice_buffer, pageTemplates=[every_page_template], pagesize=A4) # this is the only way to get data into the onPage callback function doc.invoice = invoice owner = invoice.owner elements = [] #elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 5)) # Draw Products Table invoice_table_style = TableStyle([('VALIGN', (0, 0), (-1, -1), 'TOP'), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('ALIGN', (0, 0), (-1, -1), 'LEFT')]) items = invoice.order.lines.all() discounts = invoice.order.basket_discounts data = [['Item', 'Product', 'Quantity', 'Unit Price', 'GST', 'Amount']] val = 1 for item in items: data.append([ val, Paragraph(item.description, styles['Normal']), item.quantity, '${}'.format(item.line_price_before_discounts_excl_tax), '${}'.format(item.line_price_before_discounts_incl_tax - item.line_price_before_discounts_excl_tax), '${}'.format(item.line_price_before_discounts_incl_tax) ]) val += 1 # Discounts data.append(['', '', '', '', '', '']) for discount in discounts: data.append( ['', discount.offer, '', '', '', '-${}'.format(discount.amount)]) val += 1 t = Table(data, style=invoice_table_style, hAlign='LEFT') t._argW[1] = 3.4 * inch t._argW[2] = 0.7 * inch for x in range(3, 6): t._argW[x] = 1.0 * inch elements.append(t) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) # /Products Table elements.append( Paragraph( 'Your application cannot be processed until payment is received.', styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 6)) # Remitttance Frame elements.append(FrameBreak()) boundary = BrokenLine(PAGE_WIDTH - 2 * (PAGE_MARGIN * 1.1)) elements.append(boundary) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT)) remittance = Remittance(HEADER_MARGIN, HEADER_MARGIN - 10, invoice) elements.append(remittance) #_create_remittance(invoice_buffer,doc) doc.build(elements) return invoice_buffer
def _create_invoice(invoice_buffer, invoice): every_page_frame = Frame(PAGE_MARGIN, PAGE_MARGIN + 250, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT -430 , id='EveryPagesFrame',showBoundary=0) remit_frame = Frame(PAGE_MARGIN, PAGE_MARGIN, PAGE_WIDTH - 2 * PAGE_MARGIN, PAGE_HEIGHT - 600, id='RemitFrame',showBoundary=0) every_page_template = PageTemplate(id='EveryPages', frames=[every_page_frame,remit_frame], onPage=_create_header) doc = BaseDocTemplate(invoice_buffer, pageTemplates=[every_page_template], pagesize=A4) # this is the only way to get data into the onPage callback function doc.invoice = invoice owner = invoice.owner elements = [] #elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 5)) # Draw Products Table invoice_table_style = TableStyle([ ('VALIGN', (0, 0), (-1, -1), 'TOP'), ('GRID',(0, 0), (-1, -1),1, colors.black), ('ALIGN', (0, 0), (-1, -1), 'LEFT') ]) items = invoice.order.lines.all() discounts = invoice.order.basket_discounts data = [ ['Item','Product', 'Quantity','Unit Price','GST', 'Amount'] ] val = 1 for item in items: data.append( [ val, item.description, item.quantity, '${}'.format(item.line_price_before_discounts_excl_tax), '${}'.format(item.line_price_before_discounts_incl_tax-item.line_price_before_discounts_excl_tax), '${}'.format(item.line_price_before_discounts_incl_tax) ] ) val += 1 # Discounts data.append( [ '', '', '', '', '', '' ] ) for discount in discounts: data.append( [ '', discount.offer, '', '', '', '-${}'.format(discount.amount) ] ) val += 1 t= Table( data, style=invoice_table_style, hAlign='LEFT' ) t._argW[1] = 2.3 * inch for x in range (2,6): t._argW[x] = 1.2 * inch elements.append(t) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 2)) # /Products Table elements.append(Paragraph('Your application cannot be processed until payment is received.', styles['Left'])) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT * 6)) # Remitttance Frame elements.append(FrameBreak()) boundary = BrokenLine(PAGE_WIDTH - 2 * (PAGE_MARGIN *1.1)) elements.append(boundary) elements.append(Spacer(1, SECTION_BUFFER_HEIGHT)) remittance = Remittance(HEADER_MARGIN,HEADER_MARGIN - 10,invoice) elements.append(remittance) #_create_remittance(invoice_buffer,doc) doc.build(elements) return invoice_buffer