martes, 7 de enero de 2014

Create a new process in ADempiere



 1) Abrir el Eclipse
















2) File > Import > Existing Project into Workspace


3) Seleccionar el proyecto original "adempiere360lts"

















4) Repetir paso 2 para los proyectos "LCO_360" y "patches_360"


5) Crear un nuevo proyecto "EmpresaCustomization" en File > New > Java Project


6) Clic derecho sobre el nuevo proyecto, ir a las propiedades, clic en Java Build Path, Agregar los proyectos "adempiere360lts", "LCO_360" y "patches_360" haciendo clic en el boton "Add..."


7) Clic en el boton "Ok"


8) Clic derecho sobre el nuevo proyecto "EmpresaCustomization", seleccionar la opcion New > Source Folder, poner el nombre "base/src"


9) Clic derecho sobre el source folder "base/src", seleccionar la opción New > Class, como ejemplo le llamaremos a la clase "GenerarComprobante"


10) Abrimos la clase creada haciendo doble clic sobre ella en el explorador de proyecto, y la trabajamos de la siguiente manera:

/*************************************************************************/

 // Hace referencia al paquete de clases que realizan un determinado proceso

package org.compiere.process;

// Declaracion de las librerias a ocupar

import java.math.BigDecimal;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
//import java.sql.SQLException;
import java.util.logging.Level;

import org.compiere.util.DB;
import org.compiere.util.Env;

// Declaracion de la clase

public class GenerarComprobante extends SvrProcess
{
    // Declaracion y creacion de las variables que seran parametros del proceso
  
    private int p_C_Period_ID = 0;
    private int p_C_DocType_ID = 0;
  
    // Asignar valor a los parametros del proceso
  
    protected void prepare()
    {
        ProcessInfoParameter[] para = getParameter();
      
        for(int k = 0; k < para.length; k++)
        {
            String nombre = para[k].getParameterName();
          
            if(para[k].getParameter() == null)
                ;
            else if (nombre.equals("C_Period_ID"))
                this.p_C_Period_ID = ((BigDecimal)para[k].getParameter()).intValue();
            else if (nombre.equals("C_DocType_ID"))
                this.p_C_DocType_ID = ((BigDecimal)para[k].getParameter()).intValue();
            else
                log.log(Level.SEVERE, "Parámetro desconocido: " + nombre);
        }
    }
  
    // Ejecucion del Proceso, en este caso se hace una invocacion a un metodo
  
    protected String doIt() throws Exception
    {
        this.GenerarComprobanteDiario();
      
        return "";
    }
  
    public void GenerarComprobanteDiario()
    {
        @SuppressWarnings("unused")
        boolean b = false;
      
        String id_compania = String.valueOf(Env.getAD_Client_ID(getCtx()));
        String id_usuario = String.valueOf(Env.getAD_User_ID(getCtx()));
        String id_periodo = String.valueOf(p_C_Period_ID);
        String id_documento = String.valueOf(p_C_DocType_ID);
      
        String sql = "select * from sp_generar_comprobante(" +
        id_compania + "," + id_usuario + "," + id_periodo + "," + id_documento + ");";
      
        PreparedStatement ps = null;
        ResultSet rs = null;
      
        try
        {
            ps = DB.prepareStatement(sql, get_TrxName());
            rs = ps.executeQuery();
          
            while(rs.next())
            {
                b = rs.getBoolean(1);
            }
          
            //int no = DB.executeUpdateEx(sql.toString(), null);
          
            //addLog(1, null, BigDecimal.valueOf(no), "Registros Insertados");
        }
        catch(Exception e)
        {
            log.log(Level.SEVERE, sql, e);
        }
        finally
        {
            DB.close(rs, ps);
            rs = null;
            ps = null;
        }
    }
}

 /*************************************************************************/

11) Clic derecho sobre el nuevo proyecto, seleccionamos la opcion "Export JAR" y creamos el archivo "customization.jar", ver mas.

12) Abrimos una terminal, y enviamos el archivo al servidor con la siguiente instruccion:

sudo apt-get install scp

sudo scp /home/usuario/Documentos/customization.jar adempiere@servidor:/tmp/customization.jar

O simplemente usamos las herramientas WinSCP o FileZilla

13) Con la misma terminal, entramos al servidor con la siguiente instruccion:

ssh adempiere@servidor

Password: xxx (el sistema nos pedira la clave para entrar al servidor)

14) Detenemos el servicio del ADempiere con la siguiente instruccion:

sudo service adempiere stop

Si no tiene esta instruccion, la puede crear siguiendo este post

15) Nos dirigimos donde esta ubicado el ADempiere con la siguiente instruccion:

cd /opt/ADempiere/utils/lib

16) Respaldamos el customization original con lo siguiente:

sudo mv customization.jar customization_respaldo.jar

17) Copiamos el nuevo customization que tiene integrado la clase compilada "GenerarComprobante.class", con lo siguiente:

 sudo cp /tmp/customization.jar /opt/ADempiere/utils/lib

18) Iniciar el servicio del ADempiere con la siguiente instruccion:

sudo service adempiere start

19) Una vez iniciado el servicio, abrimos el sistema preferiblemente con el navegador FireFox, y entramos al sistema con el rol System Administrator

20) En "Diccionario de la Aplicación > Informes y Procesos" agregar un nuevo registro y lo llenamos de la siguiente forma:






21) Agregar el proceso en el menú del sistema de la siguiente forma:


22) Finalmente, salimos y volvemos a entrar al sistema con nuestro usuario con el rol distinto al System Administrator, y podemos hacer uso del proceso creado por nosotros mismo como se muestra en la imagen:


Si este post te ha sido de ayuda, dale un +1 y pon tu comentario.

Dios te bendiga !!!

1 comentario: