Problema con codigo...

Ya empezamos la frase por usted con AYUDA!!! Así que por favor no haga lo mismo cuando solicite soporte. Tan solo haga sus preguntas en forma académica y bien descrita.
Forum rules
Este foro puede ser editado para evitar mensajes redundantes. Los temas relacionados se mueven al mismo sub-foro. Errores idiomáticos pueden ser corregidos para mejorar la legibilidad.

Problema con codigo...

Postby raav6 » Fri Oct 19, 2012 12:12 am

Saludos, Bueno tengo e siguiente código asociado a un document validator, compila bien, subo los customization al servidor de pruebas pero no se ejecuta luego de completar una orden de compra, ni siquiera me muestra los textos en el log (lo tengo en level INFO), y ya había hecho arreglos similares en el mismo archivo, no se que puede estar pasando, como pregunta adicional cual es la mejor forma de mostrar mensajes en el log para hacer pruebas y demas?.

Code: Select all
      if (timing == TIMING_AFTER_COMPLETE && tablename.equals(MOrder.Table_Name)){
         MOrder order = (MOrder) po;
         if (!order.isSOTrx()){ // solo ordenes de compra            
            Timestamp dateOrdered = order.getDateOrdered();
            PreparedStatement pstmt = null;
            
            log.log(Level.SEVERE, "--------------------------------------------");
            log.log(Level.SEVERE, "Fecha de la orden: " + dateOrdered.toString());
            
            ResultSet rs = null;
            String sql = "SELECT * FROM C_OrderPaySchedule WHERE C_Order_ID = ?";
            
            log.log(Level.SEVERE, sql);

            try{               
               pstmt = DB.prepareStatement(sql, po.get_TrxName());
               pstmt.setInt(1, order.get_ID());
               rs = pstmt.executeQuery();
               
               while(rs.next()){
                  MOrderPaySchedule ops = new MOrderPaySchedule(order.getCtx(), rs, order.get_TrxName());
                  Timestamp orderDueDate = org.compiere.util.TimeUtil.addDays(dateOrdered, ops.get_ValueAsInt("eco_plazo"));
                  log.log(Level.SEVERE, "Fecha del programa de pagos: " + orderDueDate.toString());
                  ops.setDueDate(orderDueDate);
                  ops.saveEx();
               }
               rs.close();
               pstmt.close();
               pstmt = null;               
            }
            catch(Exception e){
               log.log(Level.SEVERE, sql.toString(), e);
            }
            
            log.log(Level.SEVERE, "--------------------------------------------");
         }
      }


Gracias de antemano.
raav6
 
Posts: 34
Joined: Wed May 02, 2012 10:37 pm

Re: Problema con codigo...

Postby emmie » Fri Oct 19, 2012 2:28 am

Hola,
En el validador que creaste debería "suscribir" los eventos para el tipo de objeto modelo que está procesando (en tu caso MOrder). Esta suscripción se realiza en el método public void initialize (ModelValidationEngine engine, MClient client) que tu validador está obligado a implementar. Es decir, algo asi:

Code: Select all
public void initialize (ModelValidationEngine engine, MClient client)
{
         //client = null for global validator
         if (client != null) {
             m_AD_Client_ID = client.getAD_Client_ID();
             log.info(client.toString());
         }   
         else  {
             log.info("Initializing global validator: "+this.toString());
         }   

         //  Tables to be monitored
         [...]

         // Documents to be monitored
         engine.addDocValidate(MOrder.Table_Name, this); // <<<<< Linea de "suscripción"
}


Acá podés encontrar información más detallada sobre los validadores

Respecto a lo que preguntas de los logs, lo que acostumbramos nosotros es usar el nivel INFO y dejar el SEVERE cuando se trata de un fallo/error. Ademas, para loguear con el nivel INFO, utilizamos el método info(): log.info("Mensaje que se quiere registrar...");

Saludos,

Emiliano Pereyra
emmie
 
Posts: 32
Joined: Fri Jun 03, 2011 10:35 pm

Re: Problema con codigo...

Postby raav6 » Fri Oct 19, 2012 2:54 am

Gracias Emiliano, revisaré la información que me estas dando.
-------------------------------------------------------------------------

Edit.
El documento si esta suscrito tal como lo mencionas, inclusive ya he realizado dos procedimientos de validación previos hace algún tiempo atrás por eso se me hace aun más extraño el que no funcione y peor aun que ni siquiera muestre los mensajes.

En cuanto a lo del info() lo tendré en cuenta de ahora en adelante, te agradezco.

Saludos
raav6
 
Posts: 34
Joined: Wed May 02, 2012 10:37 pm

Re: Problema con codigo...

Postby emmie » Fri Oct 19, 2012 11:05 am

Una última cosita, aunque quizás también la hayas hecho, pero por las dudas: ¿tenés registrado y activado el validador en diccionario de aplicación (AD_ModelValidator)?

Saludos,

Emiliano Pereyra
emmie
 
Posts: 32
Joined: Fri Jun 03, 2011 10:35 pm

Re: Problema con codigo...

Postby raav6 » Fri Oct 19, 2012 10:26 pm

Si Emiliano esa parte ya esta hecha, en realidad el archivo del Validator ya lleva mucho tiempo trabajando, creo que hasta el propio Carlos ha puesto código ahí, lo cual me ha servido de ejemplo a mi y los que han estado antes, lo único raro que hemos hecho antes es actualizar todo el sistema de nuevo con el comando
RUN_ImportAdempiere.sh para que el servidor de pruebas tuviera la misma información que el de producción, no se si a raíz de eso algún elemento esta de solo lectura alguna carpeta, ya que trate de mostrar un mensaje en otro bloque que se que funciona y no lo hace, haré un Callout sencillo en un campo para saber si realmente esta aceptando los cambios.

Cualquier idea será bienvenida, saludos.
raav6
 
Posts: 34
Joined: Wed May 02, 2012 10:37 pm


Return to Soporte ADempiere - AYUDA!!!

Who is online

Users browsing this forum: No registered users and 2 guests

cron