Initial commit. Loads XLSX file from accounting into sqlite database. Sends HTML email. Started adding variable parts to body pulled from database.

This commit is contained in:
Dan Dembinski
2021-03-19 02:22:53 -04:00
commit 12c4722fe9
5 changed files with 281 additions and 0 deletions

97
InvoiceDatabase.py Normal file
View File

@@ -0,0 +1,97 @@
from openpyxl import load_workbook
from sqlalchemy import create_engine, Column, Integer, String, REAL
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///cffInvoice.db')
engine.connect()
Base = declarative_base()
class Invoice(Base):
__tablename__ = 'Invoice'
rowid = Column(Integer, primary_key=True, autoincrement=True)
OrderID = Column(String)
InvoiceNumber = Column(String)
DateCreated = Column(String)
ProductionCharges = Column(REAL)
ShippingCharges = Column(REAL)
AdjustmentsBalance = Column(REAL)
DuePayment = Column(REAL)
ChargeCode = Column(String)
UserLogon = Column(String)
UserProfileFirstName = Column(String)
UserProfileLastName = Column(String)
InvoiceEmailAddress = Column(String)
ShippingCompany = Column(String)
ShippingFirstName = Column(String)
ShippingLastName = Column(String)
ShippingAddress1 = Column(String)
ShippingAddress2 = Column(String)
ShippingCity = Column(String)
ShippingState = Column(String)
ShippingPostalCode = Column(String)
class ItemDetail(Base):
__tablename__ = 'ItemDetail'
rowid = Column(Integer, primary_key=True, autoincrement=True)
OrderID = Column(String)
DocumentID = Column(String)
GLIJobNumber = Column(String)
ProductName = Column(String)
Quantity = Column(String)
ItemPrice = Column(REAL)
Session = sessionmaker(bind=engine)
session = Session()
def load_sheet(invoiceNumber):
# starting invoice sub-number
count = 2
#open the xlsx file from accounting and name the two sheets required
wb = load_workbook('1.xlsx', data_only=True)
shtInvoice = wb.get_sheet_by_name('Invoice')
shtItemDetail = wb.get_sheet_by_name('Item Detail')
#loop through each row in the Invoice sheet except for the first and last
#write each row to the database
for row in shtInvoice.iter_rows(min_row=2, max_row=shtInvoice.max_row-1):
session.add(Invoice(OrderID=row[0].value, InvoiceNumber=invoiceNumber + '-' + str(count), DateCreated=row[2].value,
ProductionCharges=row[4].value, ShippingCharges=row[5].value, AdjustmentsBalance=row[6].value,
DuePayment=row[7].value, ChargeCode=row[8].value, UserLogon=row[9].value, UserProfileFirstName=row[10].value,
UserProfileLastName=row[11].value, InvoiceEmailAddress=row[12].value, ShippingCompany=row[13].value,
ShippingFirstName=row[14].value, ShippingLastName=row[15].value, ShippingAddress1=row[16].value,
ShippingAddress2=row[17].value, ShippingCity=row[18].value, ShippingState=row[19].value,
ShippingPostalCode=row[20].value))
count = count + 1
session.commit()
for row in shtItemDetail.iter_rows(min_row=2, max_row=shtItemDetail.max_row-1):
session.add(ItemDetail(OrderID=row[0].value, DocumentID=row[1].value, GLIJobNumber=row[4].value, ProductName=row[5].value, Quantity=row[6].value, ItemPrice=row[7].value))
session.commit()
def just_work():
orders = []
for order in session.query(Invoice).all():
orders.append(order.OrderID)
return orders
def record_lookup(record):
result = []
for lookup in session.query(Invoice).filter(Invoice.OrderID == record):
result.append(lookup.OrderID)
result.append(lookup.DateCreated)
result.append(lookup.UserLogon)
result.append(lookup.UserProfileFirstName)
result.append(lookup.UserProfileLastName)
result.append(lookup.ChargeCode)
result.append(lookup.InvoiceNumber)
result.append(lookup.InvoiceEmailAddress)
return result