From 56722752acb85d95361bea872814013c44319e66 Mon Sep 17 00:00:00 2001 From: Dan Dembinski Date: Sat, 20 Mar 2021 00:25:58 -0400 Subject: [PATCH] Added shipping information. Pulls list of all documentIDs per Order. Looks up individual DocumentID information. Added Address Block and Item Detail Block to Invoice HTML. Added BCC and CC testing addresses. --- InvoiceDatabase.py | 27 +++++++++++++++ sendEmail.py | 85 +++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 103 insertions(+), 9 deletions(-) diff --git a/InvoiceDatabase.py b/InvoiceDatabase.py index 0527cde..685c50f 100644 --- a/InvoiceDatabase.py +++ b/InvoiceDatabase.py @@ -98,4 +98,31 @@ def record_lookup(record): result.append(lookup.ChargeCode) result.append(lookup.InvoiceNumber) result.append(lookup.InvoiceEmailAddress) + result.append(lookup.ShippingCompany) + result.append(lookup.ShippingFirstName) + result.append(lookup.ShippingLastName) + result.append(lookup.ShippingAddress1) + result.append(lookup.ShippingAddress2) + result.append(lookup.ShippingCity) + result.append(lookup.ShippingState) + result.append(lookup.ShippingPostalCode) + result.append(lookup.ShippingCharges) + result.append(lookup.DuePayment) + return result + + +def all_items(orderId): + all = [] + for items in session.query(ItemDetail).filter(ItemDetail.OrderID == orderId): + all.append(items.DocumentID) + return all + + +def item_lookup(item): + result = [] + for lookup in session.query(ItemDetail).filter(ItemDetail.DocumentID == item): + result.append(lookup.Quantity) + result.append(lookup.DocumentID) + result.append(lookup.ProductName) + result.append(lookup.ItemPrice) return result diff --git a/sendEmail.py b/sendEmail.py index e708ef9..e819a5c 100644 --- a/sendEmail.py +++ b/sendEmail.py @@ -14,16 +14,78 @@ def send_email(test, record): orders = InvoiceDatabase.just_work() for each in orders: info = InvoiceDatabase.record_lookup(each) - print(info) + OrderNumber = info[0] OrderDate = info[1] UserLogon = info[2] - Name = info[3] + ' ' + info[4] + Name = info[3] + ' ' + info[4] ChargeCode = info[5] InvoiceNumber = info[6] InvoiceEmailAddress = info[7] + ShippingCharges = info[16] + BalanceDue = info[17] InvoiceDate = datetime.today().strftime('%m/%d/%Y') + #shipping information + ShippingCompany = info[8] + ShippingFirstName = info[9] + ShippingLastName = info[10] + ShippingAddress1 = info[11] + ShippingAddress2 = info[12] + ShippingCity = info[13] + ShippingState = info[14] + ShippingPostalCode = info[15] + + + # if ShippingCompany != 'None' and ShippingAddress2 == 'None': + block = ''' +
{name} +
{ShippingAddress1} +
{ShippingCity}, {ShippingState} {ShippingZip} +
+

+ + ''' + addressBlock = block.format(name=Name, ShippingAddress1=ShippingAddress1, ShippingCity=ShippingCity, + ShippingState=ShippingState, ShippingZip=ShippingPostalCode) + + + itemDetailBlock = ''' + + + + ''' + + items = InvoiceDatabase.all_items(OrderNumber) + for eachItem in items: + info = InvoiceDatabase.item_lookup(eachItem) + Quantity = info[0] + DocumentID = info[1] + ProductName = info[2] + ItemPrice = info[3] + + addItem = ''' + + + + + + + ''' + + itemDetailBlock = itemDetailBlock + addItem.format(Quantity=Quantity, DocumentID=DocumentID, + ProductName=ProductName, ItemPrice=ItemPrice) + addItem = ''' +
QuantityDocument IDProduct NameSales
{Quantity} {DocumentID}{ProductName} + ${ItemPrice:,.2f}
Shipping:  + ${ShippingCharges:,.2f}
Invoice Total + ${BalanceDue:,.2f} +
+ ''' + itemDetailBlock = itemDetailBlock + addItem.format(ShippingCharges=ShippingCharges, BalanceDue=BalanceDue) body = ''' @@ -61,11 +123,14 @@ def send_email(test, record): - - Address Block +

Shipment Address
+ {addressBlock} +  

Make Checks Payable To:
Great Lakes Integrated
4246 Hudson Dr.
Stow, Ohio 44224
 

- + +
+

@@ -90,6 +155,7 @@ def send_email(test, record):

The order consists of the following items:

+ {itemDetailBlock} @@ -97,8 +163,8 @@ def send_email(test, record): ''' - HTMLpart = body.format(OrderNumber=OrderNumber, OrderDate=OrderDate, UserLogon=UserLogon, Name=Name, - ChargeCode=ChargeCode, InvoiceDate=InvoiceDate, InvoiceNumber=InvoiceNumber) + HTMLpart = body.format(addressBlock=addressBlock, OrderNumber=OrderNumber, OrderDate=OrderDate, UserLogon=UserLogon, Name=Name, + ChargeCode=ChargeCode, InvoiceDate=InvoiceDate, InvoiceNumber=InvoiceNumber, itemDetailBlock=itemDetailBlock) bodyHTML = MIMEText(HTMLpart, "html") @@ -111,9 +177,10 @@ def send_email(test, record): msg['Subject'] = 'INVOICE ' + InvoiceNumber if test is True: msg['To'] = 'ddembinski@gll.com' + msg['Cc'] = 'ddembinski@gll.com' + msg['Bcc'] = 'ddembinski@gll.com' else: - # msg['To'] = InvoiceEmailAddress - msg['To'] = 'ddembinski@gll.com' + msg['To'] = InvoiceEmailAddress msg['From'] = 'ddembinski@gll.com' msg.add_header('Content-Type', 'text/html') msg.attach(bodyHTML)