Mais um link do Blog do meu amigo Professor Luiz Henrique.
Desta vez ele mostra de maneira simples como Capturar imagem da WEBCAN com o Flex.
LINK
segunda-feira, 24 de agosto de 2009
sexta-feira, 21 de agosto de 2009
Como validar CNPJ, CPF e PIS em FLEX
Neste post irei demonstrar como validar CNPJ, CPF e PIS em FLEX utilizando a classe Validator. Aproveitando o embalo segue também como colocar mascara nos campos. O componente utilizado para máscara foi retirado desse link
Os arquivos ".as" devem ser criados na pasta componentes.
CpfValidator.as
CnpjValidator.as
PisValidator.as
main.mxml
Os arquivos ".as" devem ser criados na pasta componentes.
CpfValidator.as
package componentes
{
import mx.validators.Validator;
import mx.validators.ValidationResult;
public class CpfValidator extends Validator
{
public function CpfValidator()
{
super();
}
override protected function doValidation(value:Object):Array {
var results:Array = super.doValidation(value.text);
var digito:Array = new Array(); // array para os dígitos do CPF.
var aux:Number= 0;
var posicao:Number;
var i:Number;
var soma:Number;
var dv:Number;
var dvInformado:Number;
var CPF:String = value.text;
// Retira os dígitos formatadores de CPF '.' e '-', caso existam.
CPF.replace(".", "");
CPF.replace("-", "");
//verifica CPFs manjados
switch (CPF) {
case '0':
case '00':
case '000':
case '0000':
case '00000':
case '000000':
case '0000000':
case '00000000':
case '000000000':
case '0000000000':
case '00000000000':
case '11111111111':
case '22222222222':
case '33333333333':
case '44444444444':
case '55555555555':
case '66666666666':
case '77777777777':
case '88888888888':
case '99999999999':
results.push(new ValidationResult(true, null, "Erro",
"Número do CPF inválido!"));
return results;
}
// Início da validação do CPF.
/* Retira do número informado os dois últimos dígitos */
dvInformado = parseInt(CPF.substr(9,2));
/* Desmembra o número do CPF no array digito */
for (i=0; i< = 8; i++)
{
digito[i] = CPF.substr(i,1);
}
/* Calcula o valor do 10o. digito de verificação */
posicao = 10;
soma = 0;
for (i=0; i <= 8; i++)
{
soma = soma + digito[i] * posicao;
posicao--;
}
digito[9] = soma % 11;
if (digito[9] < 2)
{
digito[9] = 0;
}
else
{
digito[9] = 11 - digito[9];
}
/* Calcula o valor do 11o. digito de verificação */
posicao = 11;
soma = 0;
for (i=0; i <= 9; i++)
{
soma = soma + digito[i] * posicao;
posicao--;
}
digito[10] = soma % 11;
if (digito[10] < 2)
{
digito[10] = 0;
}
else
{
digito[10] = 11 - digito[10];
}
dv = digito[9] * 10 + digito[10];
/* Verifica se o DV calculado é igual ao informado */
if(dv != dvInformado)
{
results.push(new ValidationResult(true, null, "Erro",
"Número do CPF inválido!"));
}
return results;
}
override protected function getValueFromSource():Object
{
var value:Object = {};
value.text = super.getValueFromSource();
return value;
}
}
}
CnpjValidator.as
package componentes
{
import mx.validators.ValidationResult;
import mx.validators.Validator;
public class CnpjValidator extends Validator
{
public function CnpjValidator()
{
super();
}
override protected function doValidation(value:Object):Array {
var results:Array = super.doValidation(value.text);
var a:Array = new Array();
var b:Number = new Number;
var i:Number;
var x:Number;
var y:Number;
var c:Array = [6,5,4,3,2,9,8,7,6,5,4,3,2];
var CNPJ:String = value.text;
// Retira os dígitos formatadores de CNPJ '.' e '-', caso existam.
CNPJ.replace(".", "");
CNPJ.replace("-", "");
CNPJ.replace("/", "");
//verifica CNPJs manjados
switch (CNPJ) {
case '0':
case '00':
case '000':
case '0000':
case '00000':
case '000000':
case '0000000':
case '00000000':
case '000000000':
case '0000000000':
case '00000000000':
case '11111111111':
case '22222222222':
case '33333333333':
case '44444444444':
case '55555555555':
case '66666666666':
case '77777777777':
case '88888888888':
case '99999999999':
results.push(new ValidationResult(true, null, "Erro",
"Número do CNPJ inválido!"));
return results;
}
for (i=0; i < 12; i++){
a[i] = CNPJ.charAt(i);
b += a[i] * c[i+1];
}
if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
b = 0;
for (y=0; y < 13; y++) {
b += (a[y] * c[y]);
}
if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13]))
{
results.push(new ValidationResult(true, null, "Erro",
"Número do CNPJ inválido!"));
}
return results;
}
override protected function getValueFromSource():Object
{
var value:Object = {};
value.text = super.getValueFromSource();
return value;
}
}
}
PisValidator.as
package componentes
{
import mx.validators.ValidationResult;
import mx.validators.Validator;
public class PisValidator extends Validator
{
public function PisValidator()
{
super();
}
// Define the doValidation() method.
override protected function doValidation(value:Object):Array {
var results:Array = super.doValidation(value.text);
if (value.text != "") {
//Testa se o número do pis é válido ou não
var PIS:String = value.text;
var i:Number;
var digito:Number=0;
var total:Number=0;
var resto:Number=0;
var pesos:Array = new Array;
var erro:Boolean = false;
// Retira os dígitos formatadores de PIS '.' e '-', caso existam.
PIS.replace(".", "");
PIS.replace("-", "");
//verifica PIS manjados
switch (PIS) {
case '0':
case '00':
case '000':
case '0000':
case '00000':
case '000000':
case '0000000':
case '00000000':
case '000000000':
case '0000000000':
case '00000000000':
case '11111111111':
case '22222222222':
case '33333333333':
case '44444444444':
case '55555555555':
case '66666666666':
case '77777777777':
case '88888888888':
case '99999999999':
results.push(new ValidationResult(true, null, "Erro",
"Número do PIS inválido!"));
return results;
}
pesos[0] = 3;
pesos[1] = 2;
pesos[2] = 9;
pesos[3] = 8;
pesos[4] = 7;
pesos[5] = 6;
pesos[6] = 5;
pesos[7] = 4;
pesos[8] = 3;
pesos[9] = 2;
for (i=0; i<10; i++)
{
total = total + pesos[i] * parseInt(PIS.substr(i,1));
}
resto = total % 11;
if((11-resto)>9)
digito =0;
else
digito = (11 - resto);
if(digito != parseInt(PIS.substr(10,1)))
{
erro = true;
}else{
erro = false;
}
if(erro){
results.push(new ValidationResult(true, null, "Erro",
"Número do PIS inválido!"));
}
}
return results;
}
override protected function getValueFromSource():Object
{
var value:Object = {};
value.text = super.getValueFromSource();
return value;
}
}
}
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:componentes="componentes.*"
>
<!-- Criando componentes utilizando o MaskedTextInput -->
<mx:Form>
<mx:FormItem label="CPF">
<componentes:MaskedTextInput id="txiCPF" inputMask="###.###.###-##" width="200" restrict="0-9" />
</mx:FormItem>
<mx:FormItem label="CNPJ">
<componentes:MaskedTextInput id="txiCNPJ" width="200" inputMask="##.###.###//####-##" maxChars="10" restrict="0-9"/>
</mx:FormItem>
<mx:FormItem label="PIS">
<componentes:MaskedTextInput id="txiPIS" width="200" inputMask="###.#####.##-#" maxChars="10" restrict="0-9"/>
</mx:FormItem>
</mx:Form>
<!-- Validator para CPF -->
<componentes:CpfValidator required="true"
source="{txiCPF}"
property="text"
requiredFieldError="Campo Obrigatório"
/>
<!-- Validator para CNPJ -->
<componentes:CnpjValidator required="true"
source="{txiCNPJ}"
property="text"
requiredFieldError="Campo Obrigatório"
/>
<!-- Validator para PIS -->
<componentes:PisValidator required="true"
source="{txiPIS}"
property="text"
requiredFieldError="Campo Obrigatório"
/>
</mx:Application>
sexta-feira, 14 de agosto de 2009
Boa tarde a todos.
Para começar com os posts do blog vou colocar dois links, o primeiro link tem um post sobre a utilização do AMFPHP com Flex feito por Marcos (http://flex-cast.blogspot.com/), amigo e ex-aluno.
LINK AMFPHP
O segundo link é do blog de outro amigo e companheiro nas aulas de programação Luiz Henrique.
O blog dele está bem bacana, muita coisa interessante em FLEX. Vale a pena conferir.
Blog do Luiz é: http://luizdeangeli.blogspot.com/
Para começar com os posts do blog vou colocar dois links, o primeiro link tem um post sobre a utilização do AMFPHP com Flex feito por Marcos (http://flex-cast.blogspot.com/), amigo e ex-aluno.
LINK AMFPHP
O segundo link é do blog de outro amigo e companheiro nas aulas de programação Luiz Henrique.
O blog dele está bem bacana, muita coisa interessante em FLEX. Vale a pena conferir.
Blog do Luiz é: http://luizdeangeli.blogspot.com/
Início
Primeiro Post...
Os principais assuntos do Blog serão Desenvolvimento de Sistema para Web e Tecnologia em geral.
Vou postar algumas notícias e alguns exemplos de código para auxiliar no desenvolvimento para WEB.
Abraço
Assinar:
Postagens (Atom)