Files
MBS/PROYECTO/otrodir/enviacorreo.4gl
T
LuisandClaude Opus 5.5 465205efc6 Pruebas migracion 6.0: correo de prueba, PDF y esquema DECIMAL(38)
- otrodir/enviacorreo.4gl: TRY/CATCH al ejecutar el procedimiento de correo
  (si falla avisa y no se pierde la grabacion; antes una cotizacion con
  reserva se perdia completa) y desvio opcional MBS_CORREO_PRUEBA para
  ambientes de prueba (en produccion no existe la variable).
- ccprmt001, ccprmt003, ccprrp049, ccprrp054: salida SVG fija -> PDF.
- bin/ccprrp054.4rp: era de otro reporte (reporte54); se usa el de
  ccprrp049 (mismo REPORT r_email).
- *.sch: columnas DECIMAL/MONEY con precision > 32 (vistas como
  ventas_facturas, analisiscotizaciones, rotacioniventario) bajadas a 32
  con la misma escala; Genero daba -6634 y no compilaban veprrp058/059/060.
- mbsERP.4pw: agregado vefmrp060.4fd a FORMULARIOS_VE (-1110).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:54:27 -04:00

43 lines
1.8 KiB
Plaintext

{
================================================================
FUNCION : ENVIACORREO
OBJETIVO : Reutilizacion de codigos para ejecuar Store
Procedures relacionado al envio de correo
PROGRAMADOR : ING. JUAN SOTO
FECHA : 28 DE ABRIL 2011
================================================================
}
FUNCTION envia_correo(emailTO,emailCC,emailBody,emailSubject,Procedimiento)
DEFINE Procedimiento VARCHAR(500),
emailTO,emailCC,emailSubject,emailBody VARCHAR(2000)
DEFINE correo_prueba, aviso STRING
# Ambiente de pruebas: si existe MBS_CORREO_PRUEBA, todo correo va solo a esa
# direccion (en produccion no se define y no cambia nada)
LET correo_prueba = fgl_getenv("MBS_CORREO_PRUEBA")
IF correo_prueba IS NOT NULL THEN
LET aviso = "<p>PRUEBA - destinatarios originales: "
IF emailTO IS NOT NULL THEN LET aviso = aviso, emailTO CLIPPED END IF
IF emailCC IS NOT NULL THEN LET aviso = aviso, " / copia: ", emailCC CLIPPED END IF
LET aviso = aviso, "</p>"
IF emailBody IS NOT NULL THEN LET aviso = aviso, emailBody CLIPPED END IF
LET emailBody = aviso
LET emailSubject = "[PRUEBA MBS] ", emailSubject CLIPPED
LET emailTO = correo_prueba
LET emailCC = NULL
END IF
# Si el correo falla (permiso de Database Mail, perfil, red...) solo se avisa:
# no debe detener el programa ni perder la transaccion que se esta grabando
TRY
PREPARE smt FROM procedimiento
EXECUTE smt USING emailTo IN,emailCC IN,emailSubject IN,emailBody IN
CATCH
DISPLAY "envia_correo fallo: ", SQLCA.SQLCODE, " ", SQLERRMESSAGE
CALL fgl_winmessage("AVISO",
"LA INFORMACION SE GRABO, PERO NO SE PUDO ENVIAR EL CORREO DE AVISO",
"exclamation")
END TRY
END FUNCTION