Ola pessoal!
Alguém poderia me informar qual é o procedimento para validar campos no adempiere. Estou precisando validar os campos de CNPJ e CPF.
Atenciosamente,
Controle Facil
Ola pessoal!
Alguém poderia me informar qual é o procedimento para validar campos no adempiere. Estou precisando validar os campos de CNPJ e CPF.
Atenciosamente,
Controle Facil
utilize o ModelValidator, se vc logar no Client que vc deseja fazer a Validação e for na Janela “Cliente”, tem um campo Model Validation Class, vc coloca assim:
[quote:06abd]
org.kenos.model.BPartnerValidator
[/quote:06abd]
o ModelValidator é executando no before e after Save e tbm no before e after complete
os métodos modeChange são do SAVE
os métodos docValidate são do COMPLETE
qq dúvida coloque aqui que tentaremos ajudar.
segue classes que estou utilizando: Vc terá que fazer algumas alterações em relação aos Campos, pois não sei que nomes vc utilizou ou aonde vc criou os campos
Validator - OBS é o Validator para Compiere, talvez vc tenha que comentar alguns métodos que não estão implementados no Adempiere
[code:06abd]
package org.kenos.model;
import java.util.*;
import org.compiere.model.;
import org.compiere.util.;
/**
Kenos Validator Business Partner
Validação de CNPJ e CPF
@author Mario Grigioni
@version $Id: BPartnerValidator.java,2007/04/18 10:51:00 mgrigioni Exp $
/
public class BPartnerValidator extends DocBR implements ModelValidator
{
/*
/** Logger /
private static CLogger log = CLogger.getCLogger(BPartnerValidator.class);
/* Client */
private int m_AD_Client_ID = -1;
/**
Initialize Validation
@param engine validation engine
@param client client
*/
public void initialize (ModelValidationEngine engine, MClient client)
{
m_AD_Client_ID = client.getAD_Client_ID();
log.info(client.toString());
// ModelChange
engine.addModelChange(“C_BPartner”, this);
} // initialize
/**
/**
/**
Model Change of a monitored Table.
Called after PO.beforeSave/PO.beforeDelete
when you called addModelChange for the table
@param po persistent object
@param type TYPE_
@return error message or null
@exception Exception if the recipient wishes the change to be not accept.
*/
public String modelChange (PO po, int type) throws Exception
{
//Executa quando um BPartner é salvo ou atualizado
if (po.get_TableName().equalsIgnoreCase(“C_BPartner”) && (type == CHANGETYPE_CHANGE || type == CHANGETYPE_NEW))
{
MBPartner bp = (MBPartner)po;
// Se não foi Validado e é Brasileiro
if (!bp.isBPTypeBRIsValid() && bp.getAD_Language().equalsIgnoreCase("pt_BR")) {
// Se o Idioma, for Português verifica
if (bp.getAD_Language().equalsIgnoreCase("pt_BR")){
// Se for pessoa física, verifica CPF
if (bp.getBPTypeBR().equalsIgnoreCase("PF")){
String CPF = bp.getCPF();
if (!validaCPF(CPF)){
return "CPF Invalido";
}
if (!consultaCPF(CPF)){
return "CPF Duplicado";
}
}
// Se for pessoa jurídica, verifica CNPJ
else if (bp.getBPTypeBR().equalsIgnoreCase("PJ")){
String CNPJ = bp.getCNPJ();
if (!validaCNPJ(CNPJ)){
return "CNPJ Invalido";
}
if (!consultaCNPJ(CNPJ)){
return "CNPJ Duplicado";
}
}
}
bp.setBPTypeBRIsValid(true);
}
}
log.info(po.toString()+" | TYPE:"+type );
return null;
} // modelChange
/**
/**
/**
}
[/code:06abd]
Classe da Validação
[code:06abd]
package org.kenos.model;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.logging.Level;
import org.compiere.util.CLogger;
import org.compiere.util.DB;
/**
Kenos DocBR
@author Mario Grigioni
@version $Id: DocBR.java,2007/04/16 08:34:00 mgrigioni Exp $
*/
public class DocBR{
protected static CLogger log = CLogger.getCLogger(DocBR.class);
public DocBR(){}
// Método para validar CPF
// @param - String CPF
public static boolean validaCPF(String xCPF){
int d1,d4,xx,nCount,resto,digito1,digito2;
String Check;
String Separadores = “/-.”;
d1 = 0; d4 = 0; xx = 1;
if (xCPF.equals("000.000.000-00") ||
xCPF.equals("111.111.111-11") ||
xCPF.equals("222.222.222-22") ||
xCPF.equals("333.333.333-33") ||
xCPF.equals("444.444.444-44") ||
xCPF.equals("555.555.555-55") ||
xCPF.equals("666.666.666-66") ||
xCPF.equals("777.777.777-77") ||
xCPF.equals("888.888.888-88") ||
xCPF.equals("999.999.999-99"))
{
return false;
}
for (nCount = 0; nCount < xCPF.length() -2; nCount++) {
String s_aux = xCPF.substring(nCount, nCount+1);
if (Separadores.indexOf(s_aux) == -1) {
d1 = d1 + ( 11 - xx ) * Integer.valueOf (s_aux).intValue();
d4 = d4 + ( 12 - xx ) * Integer.valueOf (s_aux).intValue();
xx++;
}
}
resto = (d1 % 11);
if (resto < 2) {
digito1 = 0;
}
else {
digito1 = 11 - resto;
}
d4 = d4 + 2 * digito1;
resto = (d4 % 11);
if (resto < 2) {
digito2 = 0;
}
else {
digito2 = 11 - resto;
}
Check = String.valueOf(digito1) + String.valueOf(digito2);
String s_aux2 = xCPF.substring (xCPF.length()-2, xCPF.length());
if (s_aux2.compareTo (Check) != 0){
return false;
}
return true;
} // validaCPF
// Método para validar CNPJ
// @param - String CNPJ
public static boolean validaCNPJ(String xCNPJ) {
int d1,d4,xx,nCount,fator,resto,digito1,digito2;
String Check, s_aux;
String Separadores = “/-.”;
d1 = 0;
d4 = 0;
xx = 0;
for (nCount = 0; nCount < xCNPJ.length()-2; nCount++) {
s_aux = xCNPJ.substring (nCount, nCount+1);
if (Separadores.indexOf(s_aux) == -1) {
if (xx < 4) {
fator = 5 - xx;
}
else {
fator = 13 - xx;
}
d1 = d1 + Integer.valueOf (s_aux).intValue() * fator;
if (xx < 5) {
fator = 6 - xx;
}
else {
fator = 14 - xx;
}
d4 += Integer.valueOf (s_aux).intValue() * fator;
xx++;
}
}
resto = (d1 % 11);
if (resto < 2) {
digito1 = 0;
}
else{
digito1 = 11 - resto;
}
d4 = d4 + 2 * digito1;
resto = (d4 % 11);
if (resto < 2) {
digito2 = 0;
}
else {
digito2 = 11 - resto;
}
Check = String.valueOf(digito1) + String.valueOf(digito2);
if (Check.compareTo(xCNPJ.substring(xCNPJ.length()-2, xCNPJ.length() )) !=0) {
return false;
}
return true;
} //validaCPNJ
// Método para consultar duplicidade de CNPJ
// @param - String CNPJ
public boolean consultaCNPJ(String xCNPJ) {
int iCNPJ = 0;
String sql = “select count(CNPJ) from C_BPartner where CNPJ = ?”;
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setString (1, xCNPJ);
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
{
iCNPJ = rs.getInt(1);
}
rs.close ();
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, “”, e);
}
try
{
if (pstmt != null)
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
if (iCNPJ > 0)
return false;
else
return true;
} // consultaCNPJ
// Método para consultar duplicidade de CPF
// @param - String CNPJ
public boolean consultaCPF(String xCPF) {
int iCPF = 0;
String sql = “select count(CPF) from C_BPartner where CPF = ?”;
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setString (1, xCPF);
ResultSet rs = pstmt.executeQuery ();
if (rs.next ())
{
iCPF = rs.getInt(1);
}
rs.close ();
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
log.log(Level.SEVERE, “”, e);
}
try
{
if (pstmt != null)
pstmt.close ();
pstmt = null;
}
catch (Exception e)
{
pstmt = null;
}
if (iCPF > 0)
return false;
else
return true;
}
}
[/code:06abd]