Compare commits

..

2 Commits

View File

@ -56,7 +56,12 @@ SELECT
pendingorder AS pendente, pendingorder AS pendente,
nextcycleprojection AS pv_mar, nextcycleprojection AS pv_mar,
currentcyclesales AS venda_atual, currentcyclesales AS venda_atual,
CASE WHEN criticalitem_iscritical = 0 THEN 'REGULAR' ELSE 'CRITICO' END AS status_item CASE WHEN criticalitem_iscritical = 0 THEN 'REGULAR' ELSE 'CRITICO' END AS status_item,
( COALESCE(thirdtolastcyclesales, 0) +
COALESCE(secondtolastcyclesales, 0) +
COALESCE(lastcyclesales, 0) +
COALESCE(nextcycleprojection, 0)
) / 4.0 AS media_vendas
FROM Draft FROM Draft
WHERE isproductdeactivated = 0 AND codcategory NOT IN ('SUPORTE A VENDA','EMBALAGENS') WHERE isproductdeactivated = 0 AND codcategory NOT IN ('SUPORTE A VENDA','EMBALAGENS')
''' '''
@ -66,9 +71,10 @@ df.columns = df.columns.str.lower()
filtered_calendario.columns = filtered_calendario.columns.str.lower() filtered_calendario.columns = filtered_calendario.columns.str.lower()
df['ddv'] = df['pv_mar'] / filtered_calendario['duração'].values[0] df['ddv'] = df['pv_mar'] / filtered_calendario['duração'].values[0]
df['estoque_seguranca'] = np.ceil(df['pv_mar'] + (15 * df['ddv'])).astype(int) df['estoque_seguranca'] = np.ceil((df['media_vendas']/20)*11 - (df['ddv']*11)).astype(int) #media de vendas realizada+projetada
df['risco_ruptura'] = np.where(df['ddv'] * filtered_calendario['dias_ate_fim'].max() >= df['estoque'], "SIM", "NÃO") df['estoque_seguranca'] = np.where(df['estoque_seguranca'] <1,1,df['estoque_seguranca'])
df['quantidade_ruptura'] = np.ceil(df['ddv'] * filtered_calendario['dias_ate_fim'].max() - df['estoque']) df['risco_ruptura'] = np.where(df['estoque_seguranca'] > df['estoque'], "SIM", "NÃO")
df['quantidade_ruptura'] = df['estoque_seguranca'] - df['estoque']
df['excesso'] = np.where(df['estoque'] - df['estoque_seguranca'] > 0, df['estoque'] - df['estoque_seguranca'], 0) df['excesso'] = np.where(df['estoque'] - df['estoque_seguranca'] > 0, df['estoque'] - df['estoque_seguranca'], 0)
remetente = config['credenciais']['remetente'] remetente = config['credenciais']['remetente']
@ -76,8 +82,9 @@ senha = config['credenciais']['senha']
destinatarios = [email.strip() for email in config['email_ruptura']['destinatarios'].split(',')] destinatarios = [email.strip() for email in config['email_ruptura']['destinatarios'].split(',')]
assunto = config['email_ruptura']['assunto'] assunto = config['email_ruptura']['assunto']
df_rpt = pd.read_excel(r"C:\Users\joao.herculano\Downloads\Ruptura Cliente CP GINSENG (1).xlsx") df_rpt = pd.read_excel(r"C:\Users\joao.herculano\Downloads\Ruptura Cliente CP GINSENG - 09.06.xlsx")
df_rpt.columns = df_rpt.columns.str.lower() df_rpt.columns = df_rpt.columns.str.lower()
print(df_rpt.columns)
df['pdv'] = df['pdv'].astype('Int64') df['pdv'] = df['pdv'].astype('Int64')
df['sku'] = df['sku'].astype('Int64') df['sku'] = df['sku'].astype('Int64')
@ -257,7 +264,7 @@ html_email = f"""
<p>Além disso, o material destaca as VDs com maior criticidade, permitindo uma atuação direcionada para mitigar impactos e priorizar ações de abastecimento e transferência.</p> <p>Além disso, o material destaca as VDs com maior criticidade, permitindo uma atuação direcionada para mitigar impactos e priorizar ações de abastecimento e transferência.</p>
<p><strong>Importante:</strong></p> <p><strong>Importante:</strong></p>
<p>O relatório está em processo de desenvolvimento e pode sofrer mudanças futuras no layout. Ficamos à disposição para esclarecer quaisquer dúvidas.</p> <p>O relatório está em processo de desenvolvimento e pode sofrer mudanças futuras no layout. Ficamos à disposição para esclarecer quaisquer dúvidas.</p>
<p>Foram adicionados ao relatório os PDVs da região de Irecê.</p> <p>Foram adicionados ao relatório os PDVs da região de Irecê e Jacobina.</p>
<img src="cid:{grafico_cid}"> <img src="cid:{grafico_cid}">
<img src="cid:{grafico2_cid}"> <img src="cid:{grafico2_cid}">