Beispiel #1
0
def generate_project_used_list(result):
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("project_used")
    report_title = str(result['year']) + '年消防在建工程材料表' 
    report_title_xf = ezxf('font: bold on, height 400; align: wrap on, vert centre, horiz center') 
    
    sheet.write_merge(0, 2, 0, 17, report_title, report_title_xf)
    
    write_two_lines(sheet, 3, 17)
    
    
    write_project_used_list(sheet, result, 4)
    
    rowx = 4 + len(result['lines']) + 1
    write_line(sheet, rowx, 17)
    
    report_subtitle = u'合计'
    report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz center')
    
    rowx = rowx+1
    sheet.write_merge(rowx, rowx+1, 0, 2, report_subtitle, report_subtitle_xf)
    
    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'    
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')
    
    #write 合计
    col = 3
    for data in result['sum_line']:
        sheet.write_merge(rowx, rowx+1, col, col, data, report_subtitle_xf)
        col += 1
        
    
    return book       
Beispiel #2
0
def generate_payment_summary(result, exportDetail):
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("payment_summary")
    report_title = str(result['year']) + '年' + str(result['month']) + '月付款金额汇总表'
    report_title_xf = ezxf('font: bold on, height 400; align: wrap on, vert centre, horiz center') 
    
    maxCol = 11
    if exportDetail:
        maxCol =  12
        
    
    sheet.write_merge(0, 2, 0, maxCol, report_title, report_title_xf)
    
    write_two_lines(sheet, 3, maxCol)
    
    
    line = write_payment_summary_list(sheet, result, 4, exportDetail)
    
    rowx = 4 + line
    write_line(sheet, rowx, maxCol)
    
    report_subtitle = u'合计'
    report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz center')
    
    rowx = rowx+1
    
    mergeCol = 2
    if exportDetail:
        mergeCol = 3
    sheet.write_merge(rowx, rowx+1, 0, mergeCol, report_subtitle, report_subtitle_xf)
    
    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'    
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')
    
    #write 合计
    col = 3
    if exportDetail:
        col = 4
        
    for data in result['lines_total']:
        sheet.write_merge(rowx, rowx+1, col, col, data, report_subtitle_xf)
        col += 1
        
    
    return book        
        
    
    
    
    
Beispiel #3
0
def generate_payment_summary(result, exportDetail):
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("payment_summary")
    report_title = str(result['year']) + '年' + str(
        result['month']) + '月付款金额汇总表'
    report_title_xf = ezxf(
        'font: bold on, height 400; align: wrap on, vert centre, horiz center')

    maxCol = 11
    if exportDetail:
        maxCol = 12

    sheet.write_merge(0, 2, 0, maxCol, report_title, report_title_xf)

    write_two_lines(sheet, 3, maxCol)

    line = write_payment_summary_list(sheet, result, 4, exportDetail)

    rowx = 4 + line
    write_line(sheet, rowx, maxCol)

    report_subtitle = u'合计'
    report_subtitle_xf = ezxf(
        'font: height 240; align: wrap on, vert centre, horiz center')

    rowx = rowx + 1

    mergeCol = 2
    if exportDetail:
        mergeCol = 3
    sheet.write_merge(rowx, rowx + 1, 0, mergeCol, report_subtitle,
                      report_subtitle_xf)

    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')

    #write 合计
    col = 3
    if exportDetail:
        col = 4

    for data in result['lines_total']:
        sheet.write_merge(rowx, rowx + 1, col, col, data, report_subtitle_xf)
        col += 1

    return book
Beispiel #4
0
def generate_project_receiving_list(result):
    column = 10
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("receiving_detail")
    report_title = u'到货单'
    report_title_xf = ezxf(
        'font: bold on, height 400; align: wrap on, vert centre, horiz center')
    sheet.write_merge(0, 2, 0, column, report_title, report_title_xf)

    write_two_lines(sheet, 3, column)
    data_format = 'font: height 240; align: wrap on, vert centre, horiz left'
    report_subtitle_xf = ezxf(data_format)

    report_subtitle = u'项目名称:' + result['project_name']
    sheet.write_merge(4, 5, 0, 6, report_subtitle, report_subtitle_xf)

    report_subtitle = u'日期:' + result['start_date'] + '  -  ' + result[
        'end_date']
    sheet.write_merge(4, 5, 7, column, report_subtitle, report_subtitle_xf)

    write_line(sheet, 6, column)

    write_receiving_list(sheet, result, 7)

    rowx = 7 + len(result['lines']) + 1
    write_line(sheet, rowx, column)

    report_subtitle = u'合计'
    report_subtitle_xf = ezxf(
        'font: height 240; align: wrap on, vert centre, horiz center')

    rowx = rowx + 1
    sheet.write_merge(rowx, rowx + 1, 0, 6, report_subtitle,
                      report_subtitle_xf)

    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')
    sheet.write_merge(rowx, rowx + 1, 7, 7, result['sum'], report_subtitle_xf)

    rowx = rowx + 2
    write_line(sheet, rowx, column)

    rowx = rowx + 1
    report_subtitle = u'项目经理确认:'
    data_format = 'font: height 240; align: wrap on, vert centre, horiz left'
    report_subtitle_xf = ezxf(data_format)
    sheet.write_merge(rowx, rowx + 1, 0, column, report_subtitle,
                      report_subtitle_xf)

    return book
Beispiel #5
0
def generate_project_receiving_list(result):
    column = 10
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("receiving_detail")
    report_title = u'到货单'
    report_title_xf = ezxf('font: bold on, height 400; align: wrap on, vert centre, horiz center') 
    sheet.write_merge(0, 2, 0, column, report_title, report_title_xf)
    
    write_two_lines(sheet, 3, column)
    data_format = 'font: height 240; align: wrap on, vert centre, horiz left'
    report_subtitle_xf = ezxf(data_format)
    
    report_subtitle = u'项目名称:' + result['project_name']
    sheet.write_merge(4, 5, 0, 6, report_subtitle, report_subtitle_xf)
    
    report_subtitle = u'日期:' + result['start_date'] + '  -  ' + result['end_date']
    sheet.write_merge(4, 5, 7, column, report_subtitle, report_subtitle_xf)
    
    write_line(sheet, 6, column)
    
    write_receiving_list(sheet, result, 7)
    
    rowx = 7 + len(result['lines']) + 1
    write_line(sheet, rowx, column)
    
    report_subtitle = u'合计'
    report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz center')
    
    rowx = rowx+1
    sheet.write_merge(rowx, rowx+1, 0, 6, report_subtitle, report_subtitle_xf)
    
    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')
    sheet.write_merge(rowx, rowx+1, 7, 7, result['sum'], report_subtitle_xf)
    
    rowx = rowx+2
    write_line(sheet, rowx, column)
    
    rowx = rowx+1
    report_subtitle = u'项目经理确认:'
    data_format = 'font: height 240; align: wrap on, vert centre, horiz left'
    report_subtitle_xf = ezxf(data_format)
    sheet.write_merge(rowx, rowx + 1, 0, column, report_subtitle, report_subtitle_xf)
    
    return book
    
Beispiel #6
0
def generate_order(order_id):

    order = Order.objects.filter(order_id=order_id)[0]
    lines = OrderLine.objects.filter(order__order_id=order_id).order_by("id")
    index = 1
    data = []
    total = 0
    has_brand_name = False
    has_comments = False
    for line in lines:
        row = []
        row.append(index)

        name = line.documentLineItem.getMaterial()
        row.append(name)

        brand = line.brand.name if line.brand else ""
        if len(brand) > 0:
            has_brand_name = True
        row.append(brand)

        name = line.documentLineItem.getSpecification()
        row.append(name)

        name = line.documentLineItem.getUnit()

        row.append(name)
        quantity = line.purchase_quantity or 0
        price = line.price or 0
        row.append(quantity)
        row.append(price)
        row.append(price * quantity)
        total = total + price * quantity
        row.append(line.expected_date)
        comments = line.documentLineItem.comments or ""
        if len(comments) > 0:
            has_comments = True
            comments += "    " + (line.documentLineItem.approval_comments or "")
        elif len(line.documentLineItem.approval_comments or "") > 0:
            has_comments = True
            comments += line.documentLineItem.approval_comments or ""

        row.append(comments)
        data.append(row)
        index = index + 1

    book = xlwt.Workbook(encoding="utf-8")
    sheet = book.add_sheet("order")
    max_column = 8

    if has_brand_name and has_comments:
        max_column = 9

    report_title = order.company.name
    report_title_xf = ezxf("font: bold on, height 500; align: wrap on, vert centre, horiz center")
    sheet.write_merge(0, 2, 0, max_column, report_title, report_title_xf)

    report_subtitle_xf = ezxf("font: height 240; align: wrap on, vert centre, horiz left")

    report_subtitle = u"地址:" + order.company.address
    sheet.write_merge(3, 4, 0, 5, report_subtitle, report_subtitle_xf)

    report_subtitle = u"邮编: " + order.company.zip
    sheet.write_merge(3, 4, 6, max_column, report_subtitle, report_subtitle_xf)

    report_subtitle = u"电话: " + order.company.phone
    sheet.write_merge(5, 6, 0, 5, report_subtitle, report_subtitle_xf)

    if bool(order.company.fax):
        report_subtitle = u"传真: " + order.company.fax
        sheet.write_merge(5, 6, 6, max_column, report_subtitle, report_subtitle_xf)

    write_two_lines(sheet, 7, max_column)

    report_subtitle = u"采购单"
    report_title_xf = ezxf("font: bold on, height 400; align: wrap on, vert centre, horiz center")
    sheet.write_merge(8, 9, 0, max_column, report_subtitle, report_title_xf)

    report_subtitle = u"采购单号: " + order_id
    sheet.write_merge(10, 11, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u"内部编号: " + order.document.document_id
    sheet.write_merge(10, 11, 3, 5, report_subtitle, report_subtitle_xf)

    report_subtitle = u"订购日期: " + str(order.create_time)
    sheet.write_merge(10, 11, 6, max_column, report_subtitle, report_subtitle_xf)

    write_line(sheet, 12, max_column)

    report_subtitle = u"供应商:" + order.vendor.name if order.vendor is not None else ""
    sheet.write_merge(13, 14, 0, max_column, report_subtitle, report_subtitle_xf)

    report_subtitle = u"联系人:" + order.vendor.contact if order.vendor is not None else ""
    sheet.write_merge(15, 16, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u"电话:" + order.vendor.telephone if order.vendor is not None else ""
    sheet.write_merge(15, 16, 3, 5, report_subtitle, report_subtitle_xf)

    if bool(order.vendor.fax):
        report_subtitle = u"传真: " + order.vendor.fax
        sheet.write_merge(15, 16, 6, max_column, report_subtitle, report_subtitle_xf)

    write_line(sheet, 17, max_column)

    report_subtitle = u"送货地点:" + order.project.name
    sheet.write_merge(18, 19, 0, max_column, report_subtitle, report_subtitle_xf)

    report_subtitle = u"联系人:" + str(order.project.users.all()[0])
    sheet.write_merge(20, 21, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u"电话:" + order.project.users.all()[0].phone
    sheet.write_merge(20, 21, 3, max_column, report_subtitle, report_subtitle_xf)

    write_line(sheet, 22, max_column)

    rowx = 23
    write_order_lines(sheet, data, rowx, has_brand_name, has_comments)

    rowx = rowx + len(data) + 1
    write_line(sheet, rowx, max_column)

    report_subtitle = u"合计"
    report_subtitle_xf = ezxf("font: height 240; align: wrap on, vert centre, horiz centre")

    rowx = rowx + 1
    if has_brand_name:
        sheet.write_merge(rowx, rowx + 1, 0, 6, report_subtitle, report_subtitle_xf)
    else:
        sheet.write_merge(rowx, rowx + 1, 0, 5, report_subtitle, report_subtitle_xf)

    data_format = "font: height 240; align: wrap on, vert centre, horiz right"
    report_subtitle_xf = ezxf(data_format, num_format_str="#,##0.00")

    if has_brand_name:
        sheet.write_merge(rowx, rowx + 1, 7, 7, total, report_subtitle_xf)
    else:
        sheet.write_merge(rowx, rowx + 1, 6, 6, total, report_subtitle_xf)

    report_subtitle_xf = ezxf("font: height 240; align: wrap on, vert centre, horiz left")
    rowx = rowx + 2
    report_subtitle = u"合同总价:  "
    if total > 0:
        report_subtitle += to_rmb_upper(total)
    else:
        report_subtitle += "负" + to_rmb_upper(total * -1)
    sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle, report_subtitle_xf)

    note = ""
    if order.note:
        note = order.note.note

    #     note = u"""注意事项:
    #                1. 签单回传: 供方应于二日内就本合同签章确认回传,逾期未签回视同本合同作废。
    #                2. 交货事宜: 请供方务必遵守本合同交货日期、数量,如有变动应事先以书面传真
    #                                         调整交货期。供方延迟交货对本公司造成重大损失的,其损失供方应付全责。
    #                3. 质量要求: 符合国家标准及我方订货要求,如出现质量与订单不符现象同供方负责
    #                                         退换,另扣除本合同总价的10%作为违约金。
    #                4. 请款手续: 凭现场验收合格签收的送货单在每月的25日前至我司进行对账,次月
    #                                         中旬付款。如当有不前来对账的将延至下个月,付款也如此。
    #                5. 其它约定: 送货时请附产品检验报告及合格证原件。"""

    rowx = rowx + 2
    sheet.write_merge(rowx, rowx + 11, 0, max_column, note, getNewBorder(Alignment.HORZ_LEFT))

    rowx = rowx + 12
    report_subtitle = u"采购"
    sheet.write_merge(rowx, rowx + 1, 0, 3, report_subtitle, getNewBorder(Alignment.HORZ_CENTER))

    report_subtitle = u"供应商签章"
    sheet.write_merge(rowx, rowx + 1, 4, max_column, report_subtitle, getNewBorder(Alignment.HORZ_CENTER))

    rowx = rowx + 2
    sheet.write_merge(rowx, rowx + 3, 0, 3, "", getNewBorder(Alignment.HORZ_CENTER))

    sheet.write_merge(rowx, rowx + 3, 4, max_column, "", getNewBorder(Alignment.HORZ_CENTER))

    return book
Beispiel #7
0
 def generate_payment(self, payment_id):
     payment = Payment.objects.get(id = payment_id)
     
     
     if payment:
         book = xlwt.Workbook(encoding='utf-8')
         sheet = book.add_sheet("payment")
         max_column = 3
         
         rowx = 0
         report_subtitle = u'付款单'
         report_title_xf = ezxf('font: bold on, height 400; align: wrap on, vert centre, horiz center') 
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_title_xf) 
         
         rowx += 2
         write_two_lines(sheet, rowx, max_column)
         
         rowx += 1
         
         report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz left')
         
         report_subtitle = u'公司: ' + payment.company.name
         sheet.write_merge(rowx, rowx+1, 0, 1, report_subtitle, report_subtitle_xf)
         
         report_subtitle = u'付款单号: ' + payment.payment_id
         sheet.write_merge(rowx, rowx+1, 2, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         report_subtitle = u'供应商: ' + payment.vendor.name
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         
         applied_amount = payment.applied_amount
         report_subtitle = u'本次付款金额: ' + str(applied_amount) + "    "
         
         # 加上 大写金额
         if applied_amount > 0:
             report_subtitle += "( " + to_rmb_upper(applied_amount) + " )"
         else:
             report_subtitle += "( " + '负' + to_rmb_upper(applied_amount * -1) + " )"
             
         sheet.write_merge(rowx, rowx+1, 0, 1, report_subtitle, report_subtitle_xf)
         
         report_subtitle = u'采购物资内容: ' + payment.content
         sheet.write_merge(rowx, rowx+1, 2, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         
         report_subtitle = u'付款方式: ' + payment.paymentType.name
         sheet.write_merge(rowx, rowx+1, 0, 1, report_subtitle, report_subtitle_xf)
         
         report_subtitle = u'付款经办人: ' + str(payment.payment_user)
         sheet.write_merge(rowx, rowx+1, 2, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         
         report_subtitle_xf = ezxf('font: bold on, height 240; align: wrap on, vert centre, horiz left')
         report_subtitle = u'本产品采取月结采购方式' 
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz left')
         report_subtitle = u'现欠款额: ' + str(payment.owed_amount)
         sheet.write_merge(rowx, rowx+1, 0, 1, report_subtitle, report_subtitle_xf)
         
         report_subtitle = u'本期支付后欠款额: ' + str(payment.owed_amount_after_payment)
         sheet.write_merge(rowx, rowx+1, 2, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         report_subtitle = u'款项属性: ' + payment.paymentProperty.name
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         report_subtitle_xf = ezxf('font: bold on, height 240; align: wrap on, vert centre, horiz left')
         report_subtitle = u'本产品采取临时采购方式' 
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         report_subtitle_xf = ezxf('font: height 240; align: wrap on, vert centre, horiz left')
         report_subtitle = u'采购金额: ' + (str(payment.purchase_amount) if payment.purchase_amount else '')
         sheet.write_merge(rowx, rowx+1, 0,1, report_subtitle, report_subtitle_xf)
         
         report_subtitle = u'采购经手人: ' + (str(payment.purchase_user) if payment.purchase_user else '')
         sheet.write_merge(rowx, rowx+1, 2, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         
         report_subtitle = u'备注:     ' + (payment.comments if payment.comments else '')
         sheet.write_merge(rowx, rowx+2, 0, max_column, report_subtitle, report_subtitle_xf)
         rowx += 3
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         report_subtitle_xf = ezxf('font: bold on, height 240; align: wrap on, vert centre, horiz left')
         report_subtitle = u'审批流程' 
         sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
         
         rowx += 2
         write_line(sheet, rowx, max_column)
         
         rowx += 1
         
         
         data = []
         histories = TaskHistory.objects.filter(item__document__document_id=payment.payment_id)
         for history in histories:
             row = []
             row.append(history.actor.actor_name if history.actor else '')
             row.append(AUDIT_HISTORY_STATUS[history.status][1])
             row.append(str(history.user))
             row.append(history.create_date.strftime("%Y-%m-%d %H:%M:%S"))
             data.append(row)
             
         write_histories(sheet, data, rowx)
         
         
         return book
Beispiel #8
0
def generate_order(order_id):

    order = Order.objects.filter(order_id=order_id)[0]
    lines = OrderLine.objects.filter(order__order_id=order_id).order_by('id')
    index = 1
    data = []
    total = 0
    has_brand_name = False
    has_comments = False
    for line in lines:
        row = []
        row.append(index)

        name = line.documentLineItem.getMaterial()
        row.append(name)

        brand = line.brand.name if line.brand else ''
        if len(brand) > 0:
            has_brand_name = True
        row.append(brand)

        name = line.documentLineItem.getSpecification()
        row.append(name)

        name = line.documentLineItem.getUnit()

        row.append(name)
        quantity = line.purchase_quantity or 0
        price = line.price or 0
        row.append(quantity)
        row.append(price)
        row.append(price * quantity)
        total = total + price * quantity
        row.append(line.expected_date)
        comments = line.documentLineItem.comments or ''
        if len(comments) > 0:
            has_comments = True
            comments += '    ' + (line.documentLineItem.approval_comments
                                  or '')
        elif len(line.documentLineItem.approval_comments or '') > 0:
            has_comments = True
            comments += (line.documentLineItem.approval_comments or '')

        row.append(comments)
        data.append(row)
        index = index + 1

    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("order")
    max_column = 8

    if has_brand_name and has_comments:
        max_column = 9

    report_title = order.company.name
    report_title_xf = ezxf(
        'font: bold on, height 500; align: wrap on, vert centre, horiz center')
    sheet.write_merge(0, 2, 0, max_column, report_title, report_title_xf)

    report_subtitle_xf = ezxf(
        'font: height 240; align: wrap on, vert centre, horiz left')

    report_subtitle = u'地址:' + order.company.address
    sheet.write_merge(3, 4, 0, 5, report_subtitle, report_subtitle_xf)

    report_subtitle = u'邮编: ' + order.company.zip
    sheet.write_merge(3, 4, 6, max_column, report_subtitle, report_subtitle_xf)

    report_subtitle = u'电话: ' + order.company.phone
    sheet.write_merge(5, 6, 0, 5, report_subtitle, report_subtitle_xf)

    if bool(order.company.fax):
        report_subtitle = u'传真: ' + order.company.fax
        sheet.write_merge(5, 6, 6, max_column, report_subtitle,
                          report_subtitle_xf)

    write_two_lines(sheet, 7, max_column)

    report_subtitle = u'采购单'
    report_title_xf = ezxf(
        'font: bold on, height 400; align: wrap on, vert centre, horiz center')
    sheet.write_merge(8, 9, 0, max_column, report_subtitle, report_title_xf)

    report_subtitle = u'采购单号: ' + order_id
    sheet.write_merge(10, 11, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u'内部编号: ' + order.document.document_id
    sheet.write_merge(10, 11, 3, 5, report_subtitle, report_subtitle_xf)

    report_subtitle = u'订购日期: ' + str(order.create_time)
    sheet.write_merge(10, 11, 6, max_column, report_subtitle,
                      report_subtitle_xf)

    write_line(sheet, 12, max_column)

    report_subtitle = u'供应商:' + order.vendor.name if order.vendor is not None else ""
    sheet.write_merge(13, 14, 0, max_column, report_subtitle,
                      report_subtitle_xf)

    report_subtitle = u'联系人:' + order.vendor.contact if order.vendor is not None else ""
    sheet.write_merge(15, 16, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u'电话:' + order.vendor.telephone if order.vendor is not None else ""
    sheet.write_merge(15, 16, 3, 5, report_subtitle, report_subtitle_xf)

    if bool(order.vendor.fax):
        report_subtitle = u'传真: ' + order.vendor.fax
        sheet.write_merge(15, 16, 6, max_column, report_subtitle,
                          report_subtitle_xf)

    write_line(sheet, 17, max_column)

    report_subtitle = u'送货地点:' + order.project.name
    sheet.write_merge(18, 19, 0, max_column, report_subtitle,
                      report_subtitle_xf)

    report_subtitle = u'联系人:' + str(order.project.users.all()[0])
    sheet.write_merge(20, 21, 0, 2, report_subtitle, report_subtitle_xf)

    report_subtitle = u'电话:' + order.project.users.all()[0].phone
    sheet.write_merge(20, 21, 3, max_column, report_subtitle,
                      report_subtitle_xf)

    write_line(sheet, 22, max_column)

    rowx = 23
    write_order_lines(sheet, data, rowx, has_brand_name, has_comments)

    rowx = rowx + len(data) + 1
    write_line(sheet, rowx, max_column)

    report_subtitle = u'合计'
    report_subtitle_xf = ezxf(
        'font: height 240; align: wrap on, vert centre, horiz centre')

    rowx = rowx + 1
    if has_brand_name:
        sheet.write_merge(rowx, rowx + 1, 0, 6, report_subtitle,
                          report_subtitle_xf)
    else:
        sheet.write_merge(rowx, rowx + 1, 0, 5, report_subtitle,
                          report_subtitle_xf)

    data_format = 'font: height 240; align: wrap on, vert centre, horiz right'
    report_subtitle_xf = ezxf(data_format, num_format_str='#,##0.00')

    if has_brand_name:
        sheet.write_merge(rowx, rowx + 1, 7, 7, total, report_subtitle_xf)
    else:
        sheet.write_merge(rowx, rowx + 1, 6, 6, total, report_subtitle_xf)

    report_subtitle_xf = ezxf(
        'font: height 240; align: wrap on, vert centre, horiz left')
    rowx = rowx + 2
    report_subtitle = u'合同总价:  '
    if total > 0:
        report_subtitle += to_rmb_upper(total)
    else:
        report_subtitle += '负' + to_rmb_upper(total * -1)
    sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                      report_subtitle_xf)

    note = ''
    if order.note:
        note = order.note.note

#     note = u"""注意事项:
#                1. 签单回传: 供方应于二日内就本合同签章确认回传,逾期未签回视同本合同作废。
#                2. 交货事宜: 请供方务必遵守本合同交货日期、数量,如有变动应事先以书面传真
#                                         调整交货期。供方延迟交货对本公司造成重大损失的,其损失供方应付全责。
#                3. 质量要求: 符合国家标准及我方订货要求,如出现质量与订单不符现象同供方负责
#                                         退换,另扣除本合同总价的10%作为违约金。
#                4. 请款手续: 凭现场验收合格签收的送货单在每月的25日前至我司进行对账,次月
#                                         中旬付款。如当有不前来对账的将延至下个月,付款也如此。
#                5. 其它约定: 送货时请附产品检验报告及合格证原件。"""

    rowx = rowx + 2
    sheet.write_merge(rowx, rowx + 11, 0, max_column, note,
                      getNewBorder(Alignment.HORZ_LEFT))

    rowx = rowx + 12
    report_subtitle = u'采购'
    sheet.write_merge(rowx, rowx + 1, 0, 3, report_subtitle,
                      getNewBorder(Alignment.HORZ_CENTER))

    report_subtitle = u'供应商签章'
    sheet.write_merge(rowx, rowx + 1, 4, max_column, report_subtitle,
                      getNewBorder(Alignment.HORZ_CENTER))

    rowx = rowx + 2
    sheet.write_merge(rowx, rowx + 3, 0, 3, '',
                      getNewBorder(Alignment.HORZ_CENTER))

    sheet.write_merge(rowx, rowx + 3, 4, max_column, '',
                      getNewBorder(Alignment.HORZ_CENTER))

    return book
Beispiel #9
0
    def generate_payment(self, payment_id):
        payment = Payment.objects.get(id=payment_id)

        if payment:
            book = xlwt.Workbook(encoding='utf-8')
            sheet = book.add_sheet("payment")
            max_column = 3

            rowx = 0
            report_subtitle = u'付款单'
            report_title_xf = ezxf(
                'font: bold on, height 400; align: wrap on, vert centre, horiz center'
            )
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_title_xf)

            rowx += 2
            write_two_lines(sheet, rowx, max_column)

            rowx += 1

            report_subtitle_xf = ezxf(
                'font: height 240; align: wrap on, vert centre, horiz left')

            report_subtitle = u'公司: ' + payment.company.name
            sheet.write_merge(rowx, rowx + 1, 0, 1, report_subtitle,
                              report_subtitle_xf)

            report_subtitle = u'付款单号: ' + payment.payment_id
            sheet.write_merge(rowx, rowx + 1, 2, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1
            report_subtitle = u'供应商: ' + payment.vendor.name
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2

            applied_amount = payment.applied_amount
            report_subtitle = u'本次付款金额: ' + str(applied_amount) + "    "

            # 加上 大写金额
            if applied_amount > 0:
                report_subtitle += "( " + to_rmb_upper(applied_amount) + " )"
            else:
                report_subtitle += "( " + '负' + to_rmb_upper(
                    applied_amount * -1) + " )"

            sheet.write_merge(rowx, rowx + 1, 0, 1, report_subtitle,
                              report_subtitle_xf)

            report_subtitle = u'采购物资内容: ' + payment.content
            sheet.write_merge(rowx, rowx + 1, 2, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2

            report_subtitle = u'付款方式: ' + payment.paymentType.name
            sheet.write_merge(rowx, rowx + 1, 0, 1, report_subtitle,
                              report_subtitle_xf)

            report_subtitle = u'付款经办人: ' + str(payment.payment_user)
            sheet.write_merge(rowx, rowx + 1, 2, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1

            report_subtitle_xf = ezxf(
                'font: bold on, height 240; align: wrap on, vert centre, horiz left'
            )
            report_subtitle = u'本产品采取月结采购方式'
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1
            report_subtitle_xf = ezxf(
                'font: height 240; align: wrap on, vert centre, horiz left')
            report_subtitle = u'现欠款额: ' + str(payment.owed_amount)
            sheet.write_merge(rowx, rowx + 1, 0, 1, report_subtitle,
                              report_subtitle_xf)

            report_subtitle = u'本期支付后欠款额: ' + str(
                payment.owed_amount_after_payment)
            sheet.write_merge(rowx, rowx + 1, 2, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            report_subtitle = u'款项属性: ' + payment.paymentProperty.name
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1
            report_subtitle_xf = ezxf(
                'font: bold on, height 240; align: wrap on, vert centre, horiz left'
            )
            report_subtitle = u'本产品采取临时采购方式'
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1
            report_subtitle_xf = ezxf(
                'font: height 240; align: wrap on, vert centre, horiz left')
            report_subtitle = u'采购金额: ' + (str(payment.purchase_amount)
                                           if payment.purchase_amount else '')
            sheet.write_merge(rowx, rowx + 1, 0, 1, report_subtitle,
                              report_subtitle_xf)

            report_subtitle = u'采购经手人: ' + (str(payment.purchase_user)
                                            if payment.purchase_user else '')
            sheet.write_merge(rowx, rowx + 1, 2, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1

            report_subtitle = u'备注:     ' + (payment.comments
                                             if payment.comments else '')
            sheet.write_merge(rowx, rowx + 2, 0, max_column, report_subtitle,
                              report_subtitle_xf)
            rowx += 3
            write_line(sheet, rowx, max_column)

            rowx += 1
            report_subtitle_xf = ezxf(
                'font: bold on, height 240; align: wrap on, vert centre, horiz left'
            )
            report_subtitle = u'审批流程'
            sheet.write_merge(rowx, rowx + 1, 0, max_column, report_subtitle,
                              report_subtitle_xf)

            rowx += 2
            write_line(sheet, rowx, max_column)

            rowx += 1

            data = []
            histories = TaskHistory.objects.filter(
                item__document__document_id=payment.payment_id)
            for history in histories:
                row = []
                row.append(history.actor.actor_name if history.actor else '')
                row.append(AUDIT_HISTORY_STATUS[history.status][1])
                row.append(str(history.user))
                row.append(history.create_date.strftime("%Y-%m-%d %H:%M:%S"))
                data.append(row)

            write_histories(sheet, data, rowx)

            return book
Beispiel #10
0
def generate_account_details(result):
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet("account_detail")
    hasBrandName = has_brand_name(result)
    max_column = 9
    if hasBrandName:
        max_column = 10
    
    
    
    company_name = result['company'].name if result['company'] else '' 
    
    rowx = 0
    report_title = company_name
    report_title_xf = ezxf('font: bold on, height 300; align: wrap on, vert centre, horiz left')
    sheet.write_merge(rowx, rowx+1, 0, max_column, report_title, report_title_xf)
    
#     rowx += 2    
#     report_title = nanxiao_company.name
#     sheet.write_merge(rowx, rowx+1, 0, max_column, report_title, report_title_xf)
    
    rowx += 2    
    report_title = u'对帐单'
    report_title_xf = ezxf('font: bold on, height 400; align: wrap on, vert centre, horiz center') 
    sheet.write_merge(rowx, rowx+2, 0, max_column, report_title, report_title_xf)
    
    rowx += 3    
    write_two_lines(sheet, rowx, max_column)
    
    report_subtitle_style = 'font: height 240; align: wrap on, vert centre, horiz left'
    report_subtitle_xf = ezxf(report_subtitle_style)
    
    rowx += 1    
    report_subtitle = u'供应商名称:' 
    sheet.write_merge(rowx, rowx+len(result['vendors'])*2 -1, 0, 1, report_subtitle, report_subtitle_xf) 
    
    report_subtitle = u'传真:'  + result['vendors'][0].fax
    sheet.write_merge(rowx, rowx+len(result['vendors'])*2 -1, 7, max_column, report_subtitle, report_subtitle_xf)
    
    for vendor in result['vendors']:
        sheet.write_merge(rowx, rowx+1, 2, 6, vendor.name, report_subtitle_xf) 
        rowx +=2
    
    report_subtitle = u'对帐日期:' + str(result['start_date']) + ' - ' + str(result['end_date'])
    sheet.write_merge(rowx, rowx+1, 0, 6, report_subtitle, report_subtitle_xf)
    
    report_subtitle = u'对帐编号:' + result['check_account_id'] 
    sheet.write_merge(rowx, rowx+1, 7, max_column, report_subtitle, report_subtitle_xf)
    
    rowx += 2
    write_line(sheet, rowx, max_column)
    
    rowx += 1
    write_total_amounts(sheet, result, rowx, hasBrandName)
    
    rowx += 2 
    write_line(sheet, rowx, max_column)
    
    rowx += 1
    report_subtitle = u'送货清单' 
    sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
     
    rowx += 2
    write_line(sheet, rowx, max_column)
     
    rowx += 1
    write_receiving_list(sheet, result, rowx, hasBrandName)
     
    rowx = rowx + len(result['receiving_list']) + 1
      
    write_line(sheet, rowx, max_column)
      
    rowx += 1
    report_subtitle = u'合计'
    data_format = ezxf('font: height 240; align: wrap on, vert centre, horiz centre') 
    sheet.write_merge(rowx, rowx, 0, max_column-2, report_subtitle, data_format)
     
    col = max_column-1
    report_subtitle_style = 'font: height 240; align: wrap on, vert centre, horiz right'
    sheet.write_merge(rowx, rowx, col, col, result['receiving_sum'], ezxf(report_subtitle_style , num_format_str='#,##0.00'))
      
    rowx += 1
    write_line(sheet, rowx, max_column)
       
       
    rowx += 1
    report_subtitle = u'统计分类' 
    sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
       
    rowx += 2
    write_line(sheet, rowx, max_column)
       
    rowx +=1
    #统计分类
    write_totals_by_project(sheet, result, rowx)
        
    rowx += len(result['totals_by_project']['rows']) + 1
        
    write_line(sheet, rowx, max_column)
     
    if len(result['invoices']) > 0:  
        rowx += 1
          
        report_subtitle = u'发票清单' 
        sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
             
        rowx += 2
        write_line(sheet, rowx, max_column)
             
        rowx += 1
        write_invoices_list(sheet, result, rowx)
              
        rowx = rowx + len(result['invoices']) + 1
        write_line(sheet, rowx, max_column)
              
        rowx += 1
              
        report_subtitle = u'合计'
        sheet.write_merge(rowx, rowx, 0, 7, report_subtitle, data_format)
        sheet.write_merge(rowx, rowx, 8, 8, result['invoices_sum'], ezxf(report_subtitle_style , num_format_str='#,##0.00'))
        
        rowx += 1
        write_line(sheet, rowx, max_column) 
     
    if len(result['payments']) > 0: 
            
        rowx += 1
        report_subtitle = u'付款明细' 
        sheet.write_merge(rowx, rowx+1, 0, max_column, report_subtitle, report_subtitle_xf)
            
        rowx += 2
        write_line(sheet, rowx, max_column)
            
        rowx += 1
        write_payments_list(sheet, result, rowx)
            
        rowx = rowx + len(result['payments']) + 1
        write_line(sheet, rowx, max_column)
            
        rowx += 1
        report_subtitle = u'合计'
        sheet.write_merge(rowx, rowx, 0, 8, report_subtitle, data_format)
        sheet.write_merge(rowx, rowx, 9, 9, result['payments_sum'], ezxf(report_subtitle_style , num_format_str='#,##0.00')) 
            
        rowx += 1
        write_line(sheet, rowx, max_column)
         
       
    
    col = 6
    if hasBrandName:
        col = 7
        
    data_format = ezxf('font: height 240; align: wrap on, vert centre, horiz left') 
    rowx += 1
    report_subtitle = u'供应商签章'
    sheet.write_merge(rowx, rowx+1, 0, col, report_subtitle, data_format)
         
    hehe_company = Company.objects.filter(short_name = '合和')[0]
         
    report_subtitle = u'请确认后回传至:' + hehe_company.fax
    sheet.write_merge(rowx, rowx+1, col+1, max_column, report_subtitle, data_format)
    return book