Você está na página 1de 3

import pandas as pd

from fpdf import FPDF


import locale
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')

# Ler a planilha com a lista de pacotes


df = pd.read_excel('./base.xlsx')

# Obter a lista de lojas únicas


lojas = df['loja'].unique()

# Configurações do servidor SMTP


smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'vitor.silva@shopee.com'
password = 'pucurihycemzjnff'

# Para cada loja, criar um arquivo PDF


for loja in lojas:
# Filtrar os pacotes da loja atual
pacotes_loja = df[df['loja'] == loja]

# Calcular o total do valor para a loja atual


total_valor = pacotes_loja['valor'].sum()

# Criar o arquivo PDF


pdf = FPDF()
pdf.add_page()

#Adicionar imagem
pdf.image('./shopee.png', x=4, y=2, w=30)

# Configurar fonte e tamanho


pdf.set_font("Arial", style="B", size=16)

# Adicionar título da loja


pdf.cell(200, 25, txt=f"Nota de Débito", ln=True, align='C')

pdf.set_font("Arial", size=10)

pdf.cell(200, 10, txt=f"Loja: {loja}", ln=True, align='C')


pdf.cell(200, 10, ln=True) # Linha em branco

# Definir larguras das colunas


col_width = 45
col_height = 5

# Adicionar cabeçalho da tabela


pdf.cell(col_width, col_height, 'Ordem', border=1, align='C')
pdf.cell(col_width, col_height, 'Data Lançamento', border=1, align='C')
pdf.cell(col_width, col_height, 'Tomador', border=1, align='C')
pdf.cell(col_width, col_height, 'Valor', border=1, align='C')
pdf.ln() # Nova linha

# Adicionar os pacotes ao arquivo PDF


for _, pacote in pacotes_loja.iterrows():
tn = pacote['tn']
data = pacote['data']
tomador = pacote['tomador']
valor = pacote['valor']

valor_formatado = locale.currency(valor, grouping=True)

# Adicionar informações do pacote à tabela


pdf.cell(col_width, col_height, str(tn), border=1, align='C')
pdf.cell(col_width, col_height, str(data), border=1, align='C')
pdf.cell(col_width, col_height, str(tomador), border=1, align='C')
pdf.cell(col_width, col_height, str(valor_formatado), border=1, align='C')
pdf.ln() # Nova linha

# Adicionar linha com o total do valor


pdf.cell(col_width * 3, col_height, 'Total a pagar:', border=1)
pdf.cell(col_width, col_height, locale.currency(total_valor, grouping=True),
border=1)

pdf.ln(20) # Espaço antes do campo de assinatura


pdf.cell(200, 10, txt='_____________________________', ln=True, align='L') #
Campo de assinatura
pdf.cell(200, 10, txt=f'Assinatura: {loja}', ln=True, align='L') # Nome da
loja

# Salvar o arquivo PDF


pdf_filename = f'{loja}.pdf'
pdf.output(f'{loja}.pdf')

email_to = df.loc[df['loja'] == loja, 'Email'].values[0]


msg = MIMEMultipart()
msg['From'] = username
msg['To'] = email_to
msg['Subject'] = 'Assunto do Email'

# Adicionar a mensagem no corpo do email


message = """
Olá,

Segue em anexo a Nota de Débito correspondente à sua loja.

Atenciosamente,
Sua Empresa
"""
msg.attach(MIMEText(message, 'plain'))

# Anexar o PDF ao email


with open(pdf_filename, 'rb') as attachment:
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', f'attachment; filename=
{pdf_filename}')
msg.attach(part)
# Conectar ao servidor SMTP e enviar o email
smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.starttls()
smtp_obj.login(username, password)
smtp_obj.send_message(msg)
smtp_obj.quit()

print(f'E-mail enviado para {loja} ({email_to}) com sucesso!')

print('Todos os e-mails foram enviados.')

Você também pode gostar