Compare commits
2 Commits
7acd947a1e
...
1f8aa1cff2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f8aa1cff2 | ||
|
|
6fd303f10e |
@ -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,18 +71,20 @@ 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['excesso'] = np.where(df['estoque'] - df['estoque_seguranca'] > 0, df['estoque'] - df['estoque_seguranca'], 0)
|
df['quantidade_ruptura'] = df['estoque_seguranca'] - df['estoque']
|
||||||
|
df['excesso'] = np.where(df['estoque'] - df['estoque_seguranca'] > 0, df['estoque'] - df['estoque_seguranca'], 0)
|
||||||
|
|
||||||
remetente = config['credenciais']['remetente']
|
remetente = config['credenciais']['remetente']
|
||||||
senha = config['credenciais']['senha']
|
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}">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user