function calcula_dv($chave43) {
$multiplicadores = array(2, 3, 4, 5, 6, 7, 8, 9);
$i = 42;
while ($i >= 0) {
for ($m = 0; $m < count($multiplicadores) && $i >= 0; $m++) {
$soma_ponderada+= $chave43[$i] * $multiplicadores[$m];
$i--;
}
}
$resto = $soma_ponderada % 11;
if ($resto == '0' || $resto == '1') {
$cDV = 0;
} else {
$cDV = 11 - $resto;
}
$this->cDV = $cDV;
return $cDV;
}
function calcula_chave_acesso($cUF, $AAMM, $CNPJ, $mod, $serie, $nCT, $tpEmis, $cCT) {
/*
· cUF - Código da UF do emitente do Documento Fiscal 2
· AAMM - Ano e Mês de emissão do CT-e 4
· CNPJ - CNPJ do emitente 14
· mod - Modelo do Documento Fiscal 2
· serie - Série do Documento Fiscal 3
· nCT - Número do Documento Fiscal 9
· tpEmis ? Forma de emissão do CT-e 1
· cCT - Código Numérico que compõe a Chave de Acesso 8
· cDV - Dígito Verificador da Chave de Acesso 1
*/
// 02 - cUF - código da UF do emitente do Documento Fiscal
$chave = sprintf("%02d", $cUF);
// 04 - AAMM - Ano e Mes de emissão da NF-e
$chave.= sprintf("%04s", $AAMM);
// 14 - CNPJ - CNPJ do emitente
$chave.= sprintf("%014s", $CNPJ);
// 02 - mod - Modelo do Documento Fiscal
$chave.= sprintf("%02d", $mod);
// 03 - serie - Série do Documento Fiscal
$chave.= sprintf("%03d", $serie);
// 09 - nCT - Número do Documento Fiscal
$chave.= sprintf("%09d", $nCT);
// 01 - tpEmis - Tipo emissão
$chave.= sprintf("%01d", $tpEmis);
// 08 - cCT - Código Numérico que compõe a Chave de Acesso // diminui 1 digito na versão 2.0
$chave.= sprintf("%08d", $cCT);
// 01 - cDV - Dígito Verificador da Chave de Acesso
$chave.= $this->calcula_dv($chave);
return $chave;
}