Since there was some varience between clients on the order of the headers, I reworked some sections to work off header names instead of hardcoded column letter/numbers
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
from openpyxl.styles import Font
|
||||
from openpyxl.styles import PatternFill
|
||||
# from openpyxl.styles import numbers
|
||||
|
||||
from openpyxl.utils import get_column_letter
|
||||
bold = Font(bold=True)
|
||||
|
||||
|
||||
@@ -65,13 +65,32 @@ def Format_Report(sheet, SSheader, columnFormat):
|
||||
count += 1
|
||||
rowcount = 1
|
||||
|
||||
def Save_Report(wb, sheet, sheet2, sheet3, SSheader, columnFormat):
|
||||
def Save_Report(wb, sheet, sheet2, sheet3, SSheader, detail_header, columnFormat):
|
||||
|
||||
# adds total fields at bottom of report
|
||||
summarylength = sheet.max_row
|
||||
itemlength = sheet2.max_row
|
||||
productlength = sheet3.max_row
|
||||
|
||||
PrintQuantity = 0
|
||||
for x in detail_header:
|
||||
if x != "Printing Option: PrintingQuantity":
|
||||
PrintQuantity += 1
|
||||
else:
|
||||
break
|
||||
PrintQuantity += 1
|
||||
|
||||
ItemPrice = 0
|
||||
for x in detail_header:
|
||||
if x != "Item Price":
|
||||
ItemPrice += 1
|
||||
else:
|
||||
break
|
||||
ItemPrice += 1
|
||||
|
||||
PrintQuantityColumn = get_column_letter(PrintQuantity)
|
||||
ItemPriceColumn = get_column_letter(ItemPrice)
|
||||
|
||||
lightGreen = 'ADFF2F'
|
||||
darkGreen = '006400'
|
||||
|
||||
@@ -82,8 +101,15 @@ def Save_Report(wb, sheet, sheet2, sheet3, SSheader, columnFormat):
|
||||
sheet.cell(column = 8, row = summarylength+1).fill = PatternFill(start_color=lightGreen, end_color=darkGreen, fill_type='solid')
|
||||
sheet.cell(column = 8, row= summarylength+1).font = Font(color=darkGreen)
|
||||
|
||||
sheet2.cell(column=7, row=itemlength + 1, value="=SUM(G2:G" + str(itemlength)+")")
|
||||
sheet2.cell(column=8, row=itemlength + 1, value="=SUM(H2:H" + str(itemlength)+")")
|
||||
sheet2.cell(column=PrintQuantity, row=itemlength + 1, value="=SUM(" + PrintQuantityColumn + "2:" + PrintQuantityColumn + str(itemlength) + ")")
|
||||
sheet2.cell(column=ItemPrice, row=itemlength + 1, value="=SUM(" + ItemPriceColumn + "2:" + ItemPriceColumn + str(itemlength) + ")")
|
||||
|
||||
|
||||
|
||||
|
||||
# sheet2.cell(column=PrintQuantity, row=itemlength + 1, value="=SUM(G2:G" + str(itemlength)+")")
|
||||
# sheet2.cell(column=ItemPrice, row=itemlength + 1, value="=SUM(H2:H" + str(itemlength)+")")
|
||||
|
||||
# Format_Report misses this one. Whoops
|
||||
sheet2.cell(column=8, row=itemlength + 1).number_format = '$#,##0.00_);($#,##0.00)'
|
||||
|
||||
@@ -109,6 +135,7 @@ def Save_Report(wb, sheet, sheet2, sheet3, SSheader, columnFormat):
|
||||
sheet.cell(column=5, row=rowcount).number_format = '$#,##0.00_);($#,##0.00)'
|
||||
sheet.cell(column=6, row=rowcount).number_format = '$#,##0.00_);($#,##0.00)'
|
||||
sheet.cell(column=7, row=rowcount).number_format = '$#,##0.00_);($#,##0.00)'
|
||||
sheet.cell(column=8, row=rowcount).number_format = '$#,##0.00_);($#,##0.00)'
|
||||
if rowcount < sheet.max_row:
|
||||
rowcount += 1
|
||||
count += 1
|
||||
|
||||
24
main.py
24
main.py
@@ -1,7 +1,7 @@
|
||||
import requests
|
||||
from bs4 import BeautifulSoup as bs
|
||||
from openpyxl import workbook
|
||||
|
||||
from openpyxl.utils import get_column_letter
|
||||
from WriteReport import *
|
||||
from ClientSpecific import *
|
||||
|
||||
@@ -140,8 +140,6 @@ def Run_Report(ticket, URL, HOST, REPORT_FIELDS, wb, ws, ws2, DETAIL_REPORT_FIEL
|
||||
for w in y.find_all('fval'):
|
||||
shippingcost.append(float(w.text))
|
||||
|
||||
|
||||
### THIS IS WHERE THE EXTRA SUMMARY TAB SECTION WAS ###
|
||||
# Add columns to Summary Tab
|
||||
|
||||
ws.insert_cols(2)
|
||||
@@ -160,12 +158,21 @@ def Run_Report(ticket, URL, HOST, REPORT_FIELDS, wb, ws, ws2, DETAIL_REPORT_FIEL
|
||||
count = count + 1
|
||||
|
||||
# Production and Adjustment Charges
|
||||
|
||||
ItemPrice = 0
|
||||
for x in detail_SSheader:
|
||||
if x != "Item Price":
|
||||
ItemPrice += 1
|
||||
else:
|
||||
break
|
||||
ItemPrice += 1
|
||||
ItemPriceColumn = get_column_letter(ItemPrice)
|
||||
|
||||
count = 1
|
||||
for row in ws:
|
||||
if count != 1:
|
||||
|
||||
# value = "=SUMIF(A:A,'Item Detail'!A:A,'Item Detail'!H:H)"
|
||||
value = "=SUMIF('item Detail'!A:A,A" + str(count) + ",'Item Detail'!H:H)"
|
||||
value = "=SUMIF('item Detail'!A:A,A" + str(count) + ",'Item Detail'!" + ItemPriceColumn + ":" + ItemPriceColumn + ")"
|
||||
ws.cell(column=5, row=count, value=value)
|
||||
value = "=H" + str(count) + "-E" + str(count) + "-F" + str(count)
|
||||
ws.cell(column=7, row=count, value = value)
|
||||
@@ -178,7 +185,9 @@ def Run_Report(ticket, URL, HOST, REPORT_FIELDS, wb, ws, ws2, DETAIL_REPORT_FIEL
|
||||
print("Getting Item Detail")
|
||||
|
||||
for z in ExternalID:
|
||||
report_filter = """<filterNameOrXml><?xml version="1.0"?> <PFWebFilter:UserFilter xmlns:PFWebFilter="http://www.pageflex.com/schemas/2004/Storefront/UserFilters/20040817" filterClass="Items"> <PFWebFilter:Step publicFieldName="Order ID" query="ExactEquals" minValue=\"""" + z + """\" maxValue="" /> </PFWebFilter:UserFilter></filterNameOrXml>"""
|
||||
# report_filter = """<filterNameOrXml><?xml version="1.0"?> <PFWebFilter:UserFilter xmlns:PFWebFilter="http://www.pageflex.com/schemas/2004/Storefront/UserFilters/20040817" filterClass="Items"> <PFWebFilter:Step publicFieldName="Order ID" query="ExactEquals" minValue=\"""" + z + """\" maxValue="" /> </PFWebFilter:UserFilter></filterNameOrXml>"""
|
||||
report_filter = """<filterNameOrXml><?xml version="1.0"?> <PFWebFilter:UserFilter xmlns:PFWebFilter="http://www.pageflex.com/schemas/2004/Storefront/UserFilters/20040817" filterClass="Items"> <PFWebFilter:Step publicFieldName="Order ID" query="ExactEquals" minValue=\"""" + z + """\" maxValue="" /> <PFWebFilter:Step publicFieldName="Item Status" query="ExactEquals" minValue=\"Shipped" maxValue="" /> </PFWebFilter:UserFilter></filterNameOrXml>"""
|
||||
|
||||
send = """<?xml version="1.0" encoding="utf-8"?>
|
||||
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
|
||||
@@ -223,6 +232,7 @@ def Run_Report(ticket, URL, HOST, REPORT_FIELDS, wb, ws, ws2, DETAIL_REPORT_FIEL
|
||||
count += 1
|
||||
|
||||
# Add Quantity and Item Price columns. Populate both based using SUMIF off of the Item Detail Tab
|
||||
|
||||
ws3['A1'] = "Product Name"
|
||||
ws3['B1'] = "Quantity"
|
||||
ws3['C1'] = "Item Price"
|
||||
@@ -244,7 +254,7 @@ def Run_Report(ticket, URL, HOST, REPORT_FIELDS, wb, ws, ws2, DETAIL_REPORT_FIEL
|
||||
# Finalize Spreadsheet and save
|
||||
Format_Report(ws, summary_SSheader, summary_columnFormat)
|
||||
Format_Report(ws2, detail_SSheader, detail_columnFormat)
|
||||
Save_Report(wb, ws, ws2, ws3, summary_SSheader, summary_columnFormat)
|
||||
Save_Report(wb, ws, ws2, ws3, summary_SSheader, detail_SSheader, summary_columnFormat)
|
||||
|
||||
def loadMenu():
|
||||
|
||||
|
||||
Reference in New Issue
Block a user