Desde los inicios de SAP Business One, la restricción de la impresión de borradores de documentos (antes de que se agregaran a la base de datos y se validaran o autorizaran adecuadamente) ha sido un tema importante.
Sí, puede hacer que SAP inserte la imagen de fondo «BORRADOR», pero eso es feo, y también he visto casos en los que la imagen en escala de grises no se imprime correctamente y simplemente no es visible. (Preferencias de impresión… “Imprimir borrador de marca de agua en borradores de documentos”).
Para documentar mi enfoque para resolver este problema, dejaré la siguiente opción. Esta solución solo se aplica a los diseños de Crystal Reports, por lo que si aún usa diseños PLD, no funcionará.
Resumen:
{OPOR.DocTotal} = (if isnull({ODRF_ONLY.DocTotal}) then -1 else {ODRF_ONLY.DocTotal})
Esto comparará el DocTotal en su tabla «actual», como OPOR con el vinculado a la tabla ODRF. En el caso de un borrador de documento, la tabla «actual» es el mismo ODRF al que está vinculado en la referencia de la tabla ODRF_ONLY, por lo que todos los campos serán idénticos. Si la tabla es diferente, entonces ODRF_ONLY.DocTotal será nulo o (muy probablemente) diferente de su DocTotal actual. Así que la fórmula volverá verdadero si está mirando un borrador de documento y falso si está mirando un documento diferente.
¡Misión cumplida! Esto ocultará todo lo que desee si el documento es un borrador.
Por supuesto, es posible que desee bloquear la impresión por completo. Una posibilidad es provocar un error si el documento es un borrador. Considere la siguiente fórmula de «Impresión de bloque» como una posible solución:
NumberVar zero := 0;
if {@IsDraft} then (1/zero)
Esto producirá un error de «división por cero» cada vez que un usuario intente imprimir un borrador de documento… ¿Elegante? Probablemente no. Pero funciona. 🙂
Si alguien tiene una manera más fácil de determinar qué es un borrador de documento, ¡compártala en los comentarios!
¡Feliz año nuevo!
Joerg.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073