desarrollo instalado en el cliente globe italia
This commit is contained in:
commit
d7c4d532b5
17 files changed
+1946
No files matched your search
Executable
+90
@@ -0,0 +1,90 @@
|
||||
|
||||
# ============================================================================
|
||||
def generate_email_html(
|
||||
data: dict,
|
||||
cardcode: str,
|
||||
cardname: str | None,
|
||||
item_catalog: dict[str, str],
|
||||
prices: dict[str, float],
|
||||
) -> str:
|
||||
cab = data.get("cabecera", {})
|
||||
det = data.get("detalle", [])
|
||||
|
||||
num_oc = cab.get("numero_oc", "") or ""
|
||||
fecha_entrega = (cab.get("fecha_embarque") or cab.get("fecha_generacion") or "")[:10]
|
||||
cliente = f"{cardcode} — {cardname or ''}"
|
||||
|
||||
rows_html = ""
|
||||
for d in det:
|
||||
upc = d.get("cod_upc", "") or ""
|
||||
desc = d.get("descripcion", "") or ""
|
||||
empaques = d.get("empaques", 0) or 0
|
||||
color_talla = d.get("color_talla_um", "") or ""
|
||||
unid_emp = d.get("unid_empaque", 0) or 0
|
||||
cantidad_unid = d.get("cantidad_unid", 0) or 0
|
||||
importe = d.get("importe", 0) or 0
|
||||
precio_unidad = round(importe / cantidad_unid) if cantidad_unid > 0 else 0
|
||||
|
||||
sap_item = item_catalog.get(upc, "")
|
||||
sap_price = prices.get(sap_item) if sap_item else None
|
||||
|
||||
if not sap_item:
|
||||
texto = "Sin catálogo"
|
||||
elif sap_price is None:
|
||||
texto = "Sin precio SAP"
|
||||
elif sap_price != precio_unidad:
|
||||
texto = f"Precio difiere: ${precio_unidad:,} vs ${sap_price:,.0f}"
|
||||
else:
|
||||
texto = "OK"
|
||||
|
||||
rows_html += (
|
||||
"<tr>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px'>{upc}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{empaques:,}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px'>{color_talla}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{unid_emp:,}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{cantidad_unid:,}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{importe:,}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{precio_unidad:,}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px'>{sap_item or '—'}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px;text-align:right'>{f'${sap_price:,.0f}' if sap_price is not None else '—'}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px'>{texto}</td>"
|
||||
f"<td style='border:1px solid #ccc;padding:6px'>{desc}</td>"
|
||||
"</tr>\n"
|
||||
)
|
||||
|
||||
html = f"""<!DOCTYPE html>
|
||||
<html>
|
||||
<head><meta charset="utf-8"></head>
|
||||
<body style="font-family:sans-serif;font-size:13px">
|
||||
<h2>Orden de Compra — {num_oc}</h2>
|
||||
<table style="border-collapse:collapse;margin-bottom:16px">
|
||||
<tr><td style='border:1px solid #ccc;padding:6px'><strong>N° OC:</strong></td><td style='border:1px solid #ccc;padding:6px'>{num_oc}</td></tr>
|
||||
<tr><td style='border:1px solid #ccc;padding:6px'><strong>Fecha Entrega:</strong></td><td style='border:1px solid #ccc;padding:6px'>{fecha_entrega}</td></tr>
|
||||
<tr><td style='border:1px solid #ccc;padding:6px'><strong>Cliente:</strong></td><td style='border:1px solid #ccc;padding:6px'>{cliente}</td></tr>
|
||||
</table>
|
||||
<table style="border-collapse:collapse;width:100%">
|
||||
<thead>
|
||||
<tr style="background:#eee">
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:left">cod_upc</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">empaques</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:left">color_talla_um</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">unid_empaque</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">cantidad_unid</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">Importe</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">precio_unidad</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:left">ItemCode</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:right">Precio SAP</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:left">Texto</th>
|
||||
<th style="border:1px solid #ccc;padding:6px;text-align:left">descripción</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{rows_html}
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
</html>"""
|
||||
|
||||
return html
|
||||
# ============================================================================
|
||||
Reference in new issue
Block a user