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 Font
|
||||||
from openpyxl.styles import PatternFill
|
from openpyxl.styles import PatternFill
|
||||||
# from openpyxl.styles import numbers
|
# from openpyxl.styles import numbers
|
||||||
|
from openpyxl.utils import get_column_letter
|
||||||
bold = Font(bold=True)
|
bold = Font(bold=True)
|
||||||
|
|
||||||
|
|
||||||
@@ -65,13 +65,32 @@ def Format_Report(sheet, SSheader, columnFormat):
|
|||||||
count += 1
|
count += 1
|
||||||
rowcount = 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
|
# adds total fields at bottom of report
|
||||||
summarylength = sheet.max_row
|
summarylength = sheet.max_row
|
||||||
itemlength = sheet2.max_row
|
itemlength = sheet2.max_row
|
||||||
productlength = sheet3.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'
|
lightGreen = 'ADFF2F'
|
||||||
darkGreen = '006400'
|
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).fill = PatternFill(start_color=lightGreen, end_color=darkGreen, fill_type='solid')
|
||||||
sheet.cell(column = 8, row= summarylength+1).font = Font(color=darkGreen)
|
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=PrintQuantity, row=itemlength + 1, value="=SUM(" + PrintQuantityColumn + "2:" + PrintQuantityColumn + str(itemlength) + ")")
|
||||||
sheet2.cell(column=8, row=itemlength + 1, value="=SUM(H2:H" + 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
|
# Format_Report misses this one. Whoops
|
||||||
sheet2.cell(column=8, row=itemlength + 1).number_format = '$#,##0.00_);($#,##0.00)'
|
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=5, row=rowcount).number_format = '$#,##0.00_);($#,##0.00)'
|
||||||
sheet.cell(column=6, 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=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:
|
if rowcount < sheet.max_row:
|
||||||
rowcount += 1
|
rowcount += 1
|
||||||
count += 1
|
count += 1
|
||||||
|
|||||||
24
main.py
24
main.py
@@ -1,7 +1,7 @@
|
|||||||
import requests
|
import requests
|
||||||
from bs4 import BeautifulSoup as bs
|
from bs4 import BeautifulSoup as bs
|
||||||
from openpyxl import workbook
|
from openpyxl import workbook
|
||||||
|
from openpyxl.utils import get_column_letter
|
||||||
from WriteReport import *
|
from WriteReport import *
|
||||||
from ClientSpecific 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'):
|
for w in y.find_all('fval'):
|
||||||
shippingcost.append(float(w.text))
|
shippingcost.append(float(w.text))
|
||||||
|
|
||||||
|
|
||||||
### THIS IS WHERE THE EXTRA SUMMARY TAB SECTION WAS ###
|
|
||||||
# Add columns to Summary Tab
|
# Add columns to Summary Tab
|
||||||
|
|
||||||
ws.insert_cols(2)
|
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
|
count = count + 1
|
||||||
|
|
||||||
# Production and Adjustment Charges
|
# 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
|
count = 1
|
||||||
for row in ws:
|
for row in ws:
|
||||||
if count != 1:
|
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'!" + ItemPriceColumn + ":" + ItemPriceColumn + ")"
|
||||||
value = "=SUMIF('item Detail'!A:A,A" + str(count) + ",'Item Detail'!H:H)"
|
|
||||||
ws.cell(column=5, row=count, value=value)
|
ws.cell(column=5, row=count, value=value)
|
||||||
value = "=H" + str(count) + "-E" + str(count) + "-F" + str(count)
|
value = "=H" + str(count) + "-E" + str(count) + "-F" + str(count)
|
||||||
ws.cell(column=7, row=count, value = value)
|
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")
|
print("Getting Item Detail")
|
||||||
|
|
||||||
for z in ExternalID:
|
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"?>
|
send = """<?xml version="1.0" encoding="utf-8"?>
|
||||||
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
<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">
|
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
|
count += 1
|
||||||
|
|
||||||
# Add Quantity and Item Price columns. Populate both based using SUMIF off of the Item Detail Tab
|
# Add Quantity and Item Price columns. Populate both based using SUMIF off of the Item Detail Tab
|
||||||
|
|
||||||
ws3['A1'] = "Product Name"
|
ws3['A1'] = "Product Name"
|
||||||
ws3['B1'] = "Quantity"
|
ws3['B1'] = "Quantity"
|
||||||
ws3['C1'] = "Item Price"
|
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
|
# Finalize Spreadsheet and save
|
||||||
Format_Report(ws, summary_SSheader, summary_columnFormat)
|
Format_Report(ws, summary_SSheader, summary_columnFormat)
|
||||||
Format_Report(ws2, detail_SSheader, detail_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():
|
def loadMenu():
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user