Saudações, em um sistema que estou desenvolvendo me deparei com a necessidade de colocar os campos Código Municício (IBGE) e Código País (Bacen) para emissão de NFE.
Segue a solução que fiz
No link abaixo seguem as tabelas preenchidas com os respectivos códigos e municípios / países
Anexo: tabela e estrutura Bacen e IBGE (mysql)
http://ojrconsultoria.com.br/temp/bacen-ibge.zip
No formulário usei o padrão do SC para gerar o endereço através do CEP mesmo e fiz um evento ajax para o campo código do municipio e um para código país.
No código Município (ajax onchange)
m_php_codigoMun();//criar o código abaixo como método em programação métodos php
$sqlMun = "SELECT cc2_codigo from cc2ojr where replace(cc2_municipio,' ','-') = '".removerAcento({sa1_municipio})."' ORDER BY length(cc2_municipio) ";
sc_lookup(lookupMun,$sqlMun);
{sa1_cod_municipio} = (empty({lookupMun})) ? {sa1_cod_municipio} : {lookupMun[0][0]};
No código País (ajax onchange, lembrando que meu campo país deixo iniciando por Brasil)
m_php_codigoPais();//criar o código abaixo como método em programação métodos php
if({sa1_pais}=='Brasil')
{
{sa1_cod_pais} = "01058";
}
else
{
$sqlPais = "SELECT cch_codigo from cchojr where replace(cch_pais,' ','-') = '".removerAcento({sa1_pais})."' ORDER BY length(cch_pais) ";
sc_lookup(lookupPais,$sqlPais);
{sa1_cod_pais} = (empty({lookupPais})) ? {sa1_cod_pais} : {lookupPais[0][0]};
}
Obs.: pode-se criar um evento ajax no campo número (certamente irá ser preenchido) e chamar os dois métodos acima
ficando ajax onchange campo numero
m_php_codigoMun();
m_php_codigoPais();
Função usada acima
removerAcento (biblioteca)
[code]function removerAcento($str)
{
$a = array(‘À’,‘Á’,‘Â’,‘Ã’,‘Ä’,‘Å’,‘Æ’,‘Ç’,‘È’,‘É’,‘Ê’,‘Ë’,‘Ì’,‘Í’,‘Î’,‘Ï’,‘Ð’,‘Ñ’,‘Ò’,‘Ó’,‘Ô’,‘Õ’,‘Ö’,‘Ø’,‘Ù’,‘Ú’,‘Û’,‘Ü’,‘Ý’,‘ß’,‘à’,‘á’,‘â’,‘ã’,‘ä’,‘å’,‘æ’,‘ç’,‘è’,‘é’,‘ê’,‘ë’,‘ì’,‘í’,‘î’,‘ï’,‘ñ’,‘ò’,‘ó’,‘ô’,‘õ’,‘ö’,‘ø’,‘ù’,‘ú’,‘û’,‘ü’,‘ý’,‘ÿ’,‘Ā’,‘ā’,‘Ă’,‘ă’,‘Ą’,‘ą’,‘Ć’,‘ć’,‘Ĉ’,‘ĉ’,‘Ċ’,‘ċ’,‘Č’,‘č’,‘Ď’,‘ď’,‘Đ’,‘đ’,‘Ē’,‘ē’,‘Ĕ’,‘ĕ’,‘Ė’,‘ė’,‘Ę’,‘ę’,‘Ě’,‘ě’,‘Ĝ’,‘ĝ’,‘Ğ’,‘ğ’,‘Ġ’,‘ġ’,‘Ģ’,‘ģ’,‘Ĥ’,‘ĥ’,‘Ħ’,‘ħ’,‘Ĩ’,‘ĩ’,‘Ī’,‘ī’,‘Ĭ’,‘ĭ’,‘Į’,‘į’,‘İ’,‘ı’,‘IJ’,‘ij’,‘Ĵ’,‘ĵ’,‘Ķ’,‘ķ’,‘Ĺ’,‘ĺ’,‘Ļ’,‘ļ’,‘Ľ’,‘ľ’,‘Ŀ’,‘ŀ’,‘Ł’,‘ł’,‘Ń’,‘ń’,‘Ņ’,‘ņ’,‘Ň’,‘ň’,‘ʼn’,‘Ō’,‘ō’,‘Ŏ’,‘ŏ’,‘Ő’,‘ő’,‘Œ’,‘œ’,‘Ŕ’,‘ŕ’,‘Ŗ’,‘ŗ’,‘Ř’,‘ř’,‘Ś’,‘ś’,‘Ŝ’,‘ŝ’,‘Ş’,‘ş’,‘Š’,‘š’,‘Ţ’,‘ţ’,‘Ť’,‘ť’,‘Ŧ’,‘ŧ’,‘Ũ’,‘ũ’,‘Ū’,‘ū’,‘Ŭ’,‘ŭ’,‘Ů’,‘ů’,‘Ű’,‘ű’,‘Ų’,‘ų’,‘Ŵ’,‘ŵ’,‘Ŷ’,‘ŷ’,‘Ÿ’,‘Ź’,‘ź’,‘Ż’,‘ż’,‘Ž’,‘ž’,‘ſ’,‘ƒ’,‘Ơ’,‘ơ’,‘Ư’,‘ư’,‘Ǎ’,‘ǎ’,‘Ǐ’,‘ǐ’,‘Ǒ’,‘ǒ’,‘Ǔ’,‘ǔ’,‘Ǖ’,‘ǖ’,‘Ǘ’,‘ǘ’,‘Ǚ’,‘ǚ’,‘Ǜ’,‘ǜ’,‘Ǻ’,‘ǻ’,‘Ǽ’,‘ǽ’,‘Ǿ’,‘ǿ’,’ ‘,’/’,’(’,’)’,’.’,’ ‘);
$b = array(‘A’,‘A’,‘A’,‘A’,‘A’,‘A’,‘AE’,‘C’,‘E’,‘E’,‘E’,‘E’,‘I’,‘I’,‘I’,‘I’,‘D’,‘N’,‘O’,‘O’,‘O’,‘O’,‘O’,‘O’,‘U’,‘U’,‘U’,‘U’,‘Y’,‘S’,‘A’,‘A’,‘A’,‘A’,‘A’,‘A’,‘AE’,‘C’,‘E’,‘E’,‘E’,‘E’,‘I’,‘I’,‘I’,‘I’,‘N’,‘O’,‘O’,‘O’,‘O’,‘O’,‘O’,‘U’,‘U’,‘U’,‘U’,‘Y’,‘Y’,‘A’,‘A’,‘A’,‘A’,‘A’,‘A’,‘C’,‘C’,‘C’,‘C’,‘C’,‘C’,‘C’,‘C’,‘D’,‘D’,‘D’,‘D’,‘E’,‘E’,‘E’,‘E’,‘E’,‘E’,‘E’,‘E’,‘E’,‘E’,‘G’,‘G’,‘G’,‘G’,‘G’,‘G’,‘G’,‘G’,‘H’,‘H’,‘H’,‘H’,‘I’,‘I’,‘I’,‘I’,‘I’,‘I’,‘I’,‘I’,‘I’,‘I’,‘IJ’,‘IJ’,‘J’,‘J’,‘K’,‘K’,‘L’,‘L’,‘L’,‘L’,‘L’,‘L’,‘L’,‘L’,‘L’,‘L’,‘N’,‘N’,‘N’,‘N’,‘N’,‘N’,‘N’,‘O’,‘O’,‘O’,‘O’,‘O’,‘O’,‘OE’,‘OE’,‘R’,‘R’,‘R’,‘R’,‘R’,‘R’,‘S’,‘S’,‘S’,‘S’,‘S’,‘S’,‘S’,‘S’,‘T’,‘T’,‘T’,‘T’,‘T’,‘T’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘W’,‘W’,‘Y’,‘Y’,‘Y’,‘Z’,‘Z’,‘Z’,‘Z’,‘Z’,‘Z’,‘S’,‘F’,‘O’,‘O’,‘U’,‘U’,‘A’,‘A’,‘I’,‘I’,‘O’,‘O’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘U’,‘A’,‘A’,‘AE’,‘AE’,‘O’,‘O’,’-’,’/’,’’,’’,’-’,’ ');
$retorno = strtoupper(str_replace($a, $b, $str));
$retorno = str_replace("---","-",$retorno);
return $retorno;
} [/code]
Espero ter contribuído.