MMHospedagem Postado Maio 26, 2019 Postado Maio 26, 2019 (editado) Tudo bem? Como desenvolvi meu próprio emissor de nota fiscal estou aqui para disponibilizar uma integração com a transmite notas https://www.transmitenota.com.br/ a empresa e muito boa quem quiser usar ta ai! Salve o código em um arquivo .php e coloque no diretório whmcs/includes/hooks/ Lembre-se de alterar os campos do CPF, CNPJ e etc... <?php use WHMCS\Database\Capsule; // Gera a NFSe / NFe / NFc add_hook('InvoicePaid', 1, function($vars) { global $numerosearchkey; global $numerodafatura; global $statusdanotafical; global $codigodostatus; global $cpfvalor; global $cnpjvalor; $numerodafatura = $vars['invoiceid']; // ID do Cliente pela fatura foreach (Capsule::table('tblinvoices')->where([['id','=',$numerodafatura],])->get() as $client) { $iddocliente = $client->userid; $datadopagamento = $client->datepaid; $valordafaturacomponto = number_format($client->total, 2, '.', ''); $valordafaturacomvirgula = number_format($client->total, 2, ',', ''); } // Tipo de Conta foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','460'],['relid','=',$iddocliente],])->get() as $tipodeconta) { $tipodecontavalor = $tipodeconta->value; } if($tipodecontavalor == '') { // Valor CPF foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','3'],['relid','=',$iddocliente],])->get() as $cpf) { $cpfoucnpjvalor = $cpf->value; } } if($tipodecontavalor == 'Pessoa Jurídica)') { // Valor CNPJ foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','461'],['relid','=',$iddocliente],])->get() as $cnpj) { $cpfoucnpjvalor = $cnpj->value; } } if($tipodecontavalor == '(Pessoa Física') { // Valor CPF foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','3'],['relid','=',$iddocliente],])->get() as $cpf) { $cpfoucnpjvalor = $cpf->value; } } foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','37'],['relid','=',$iddocliente],])->get() as $dados) { $numerowhatsapp = $dados->value; } // Dados do Cliente tblclients foreach (Capsule::table('tblclients')->where([['id','=',$iddocliente],])->get() as $informacoesdocliente) { $primeironome = $informacoesdocliente->firstname; $sobrenome = $informacoesdocliente->lastname; $email = $informacoesdocliente->email; $telefone = $informacoesdocliente->phonenumber; $endereço = $informacoesdocliente->address1; $bairro = $informacoesdocliente->address2; $cidade = $informacoesdocliente->city; $estato = $informacoesdocliente->state; $cep = $informacoesdocliente->postcode; } // Url do sistema $urlnfse = 'https://app1.transmitenota.com.br/api/producao/EnviarNfse/'; $urlretorno = 'https://app1.transmitenota.com.br/api/producao/ConsultarEmissaoNotaNfse/'; $urlenviodenfseporemail = 'https://app1.transmitenota.com.br/api/producao/ConsultarEmissaoNotaNfse/'; $dadosdaempresa = array( 'ApiKey' => "Senha API", 'Cnpj' => "Numero CNPJ", ); $stingdanota = '{ "ApiKey":"'.$dadosdaempresa['ApiKey'].'", "Cnpj":"'.$dadosdaempresa['Cnpj'].'", "Dados":{ "natureza_operacao":"3", "tipo_servico":"951180000", "tipo_rps":"2", "data_emissao":"'. date("d/m/Y", strtotime($datadopagamento)) .'", "data_competencia":"'. date("d/m/Y", strtotime($datadopagamento)) .'", "razao_social_tomador":"'. $primeironome . ' ' . $sobrenome .'", "email_tomador":"'.$email.'", "cnpj_tomador":"'. preg_replace('/\D/', '',$cpfoucnpjvalor) .'", "inscricao_municipal_tomador":"", "telefone_tomador":"'. $telefone .'", "endereco_tomador":"'.$endereço.'", "numero_tomador":"2", "complemento_tomador":null, "bairro_tomador":"'.$bairro.'", "municipio_tomador":"'.$cidade.'", "uf_tomador":"'.$estato.'", "pais_tomador":"BRASIL", "cep_tomador":"'.preg_replace('/\D/', '',$cep).'", "numero_processo":null, "responsavel_retencao":null, "valor_deducoes":null, "valor_pis":0, "valor_cofins":0, "desconto_incondicionado":null, "desconto_condicionado":0, "valor_aliquota":"3.00", "iss_retido":"2", "valor_total_iss":null, "valor_iss_retido":0, "valor_outras_retencoes":0, "valor_base_calculo":"0.00", "valor_liquido":"'.$valordafaturacomponto.'", "observacoes":null, "valor_total_nfse":"'.$valordafaturacomponto.'", "valor_total_servicos":"'.$valordafaturacomponto.'", "Itens":[ [ { "codigo_servico":"Cod Serviço junto a prefeitura", "descricao_servico":"Pagamento da fatura de numero '. $numerodafatura .'", "valor_servico":"'.$valordafaturacomvirgula.'" } ] ] } }'; $retorno = execute($urlnfse, $stingdanota); $retornodosistema = json_decode($retorno, true); $statusdanova = $retornodosistema['status']; $numerosearchkey = $retornodosistema['searchkey']; $statusdanotafical = $retornodosistema['status']; $codigodostatus = $retornodosistema['codigo']; $notaretorno = '{ "ApiKey":"'.$dadosdaempresa['ApiKey'].'", "Cnpj":"'.$dadosdaempresa['Cnpj'].'", "Dados": { "searchkey":"'.$numerosearchkey.'" } }'; $executar_retorno = execute($urlretorno, $notaretorno); try { Capsule::connection()->transaction( function ($connectionManager) { global $numerosearchkey; global $numerodafatura; $connectionManager->table('tblinvoices')->where('id', $numerodafatura)->update( [ 'statusnfe' => 1, 'nfsesearchkey' => $numerosearchkey ] ); logActivity('MMNFSe: Foi gerado um código searchkey para a fatura de número #'.$numerodafatura.' : '.$numerosearchkey); } ); } catch (\Exception $e) { echo $e->getMessage(); exit(); } $command = 'SendEmail'; $postData = array( 'messagename' => 'Client Signup Email', 'id' => $iddocliente, 'customtype' => 'general', 'customsubject' => 'NFSe da fatura #'. $numerodafatura .' disponível!', 'custommessage' => ' Olá '. $primeironome .' '. $sobrenome .', tudo bem? Acabamos de disponibilizar uma nota fiscal de serviço em nosso sistema! Para visualizar esta nota fiscal acesse nosso sistema de nota fiscal <strong><a href="https://www.mmhospedagem.com.br/#!/notafiscal">clicando aqui!</a></strong> e informe a chave de número [ <strong>'. $numerosearchkey .'</strong> ] Para ver esta e outras notas fiscais disponíveis <strong><a href="https://www.mmhospedagem.com.br/painel/nfe.php">clique aqui!</a></strong> ---- Atenciosamente, Equipe MMHospedagem Tel: (062) 4101-9380 ', ); $results = localAPI($command, $postData); logActivity('MMNFSe: Sistema de emissão de nova finalizado com sucesso!'); return $executar_retorno; }); function execute($url, $data){ $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_POST, true); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array('Accept: application/json')); $response = curl_exec($curl_handle); curl_close($curl_handle); return $response; } OBS: Em breve estarei lançando um emissor de nota fiscal, dicas, sugestões são bem vindas! Editado Abril 14, 2022 por MMHospedagem 2 Citar
Rafael Costa Postado Abril 4, 2020 Postado Abril 4, 2020 Em 25/05/2019 em 23:35, Maik V Oliveira disse: Tudo bem? Como desenvolvi meu próprio emissor de nota fiscal estou aqui para disponibilizar uma integração com a transmite notas https://www.transmitenota.com.br/ a empresa e muito boa quem quiser usar ta ai! Salve o código em um arquivo .php e coloque no diretório WHMCS [Link do PDH]/includes/hooks/ Lembre-se de alterar os campos do CPF, CNPJ e etc... ----------------------- <?php use WHMCS [Link do PDH]\Database\Capsule; // Gera a NFSe / NFe / NFc add_hook('InvoicePaid', 1, function($vars) { global $numerosearchkey; global $numerodafatura; global $statusdanotafical; global $codigodostatus; global $cpfvalor; global $cnpjvalor; $numerodafatura = $vars['invoiceid']; // ID do Cliente pela fatura foreach (Capsule::table('tblinvoices')->where([['id','=',$numerodafatura],])->get() as $client) { $iddocliente = $client->userid; $datadopagamento = $client->datepaid; $valordafaturacomponto = number_format($client->total, 2, '.', ''); $valordafaturacomvirgula = number_format($client->total, 2, ',', ''); } // Tipo de Conta foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','460'],['relid','=',$iddocliente],])->get() as $tipodeconta) { $tipodecontavalor = $tipodeconta->value; } if($tipodecontavalor == '') { // Valor CPF foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','3'],['relid','=',$iddocliente],])->get() as $cpf) { $cpfoucnpjvalor = $cpf->value; } } if($tipodecontavalor == 'Pessoa Jurídica)') { // Valor CNPJ foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','461'],['relid','=',$iddocliente],])->get() as $cnpj) { $cpfoucnpjvalor = $cnpj->value; } } if($tipodecontavalor == '(Pessoa Física') { // Valor CPF foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','3'],['relid','=',$iddocliente],])->get() as $cpf) { $cpfoucnpjvalor = $cpf->value; } } foreach (Capsule::table('tblcustomfieldsvalues')->where([['fieldid','=','37'],['relid','=',$iddocliente],])->get() as $dados) { $numerowhatsapp = $dados->value; } // Dados do Cliente tblclients foreach (Capsule::table('tblclients')->where([['id','=',$iddocliente],])->get() as $informacoesdocliente) { $primeironome = $informacoesdocliente->firstname; $sobrenome = $informacoesdocliente->lastname; $email = $informacoesdocliente->email; $telefone = $informacoesdocliente->phonenumber; $endereço = $informacoesdocliente->address1; $bairro = $informacoesdocliente->address2; $cidade = $informacoesdocliente->city; $estato = $informacoesdocliente->state; $cep = $informacoesdocliente->postcode; } // Url do sistema $urlnfse = 'https://app1.transmitenota.com.br/api/producao/EnviarNfse/'; $urlretorno = 'https://app1.transmitenota.com.br/api/producao/ConsultarEmissaoNotaNfse/'; $urlenviodenfseporemail = 'https://app1.transmitenota.com.br/api/producao/ConsultarEmissaoNotaNfse/'; $dadosdaempresa = array( 'ApiKey' => "Senha API", 'Cnpj' => "Numero CNPJ", ); $stingdanota = '{ "ApiKey":"'.$dadosdaempresa['ApiKey'].'", "Cnpj":"'.$dadosdaempresa['Cnpj'].'", "Dados":{ "natureza_operacao":"3", "tipo_servico":"951180000", "tipo_rps":"2", "data_emissao":"'. date("d/m/Y", strtotime($datadopagamento)) .'", "data_competencia":"'. date("d/m/Y", strtotime($datadopagamento)) .'", "razao_social_tomador":"'. $primeironome . ' ' . $sobrenome .'", "email_tomador":"'.$email.'", "cnpj_tomador":"'. preg_replace('/\D/', '',$cpfoucnpjvalor) .'", "inscricao_municipal_tomador":"", "telefone_tomador":"'. $telefone .'", "endereco_tomador":"'.$endereço.'", "numero_tomador":"2", "complemento_tomador":null, "bairro_tomador":"'.$bairro.'", "municipio_tomador":"'.$cidade.'", "uf_tomador":"'.$estato.'", "pais_tomador":"BRASIL", "cep_tomador":"'.preg_replace('/\D/', '',$cep).'", "numero_processo":null, "responsavel_retencao":null, "valor_deducoes":null, "valor_pis":0, "valor_cofins":0, "desconto_incondicionado":null, "desconto_condicionado":0, "valor_aliquota":"3.00", "iss_retido":"2", "valor_total_iss":null, "valor_iss_retido":0, "valor_outras_retencoes":0, "valor_base_calculo":"0.00", "valor_liquido":"'.$valordafaturacomponto.'", "observacoes":null, "valor_total_nfse":"'.$valordafaturacomponto.'", "valor_total_servicos":"'.$valordafaturacomponto.'", "Itens":[ [ { "codigo_servico":"Cod Serviço junto a prefeitura", "descricao_servico":"Pagamento da fatura de numero '. $numerodafatura .'", "valor_servico":"'.$valordafaturacomvirgula.'" } ] ] } }'; $retorno = execute($urlnfse, $stingdanota); $retornodosistema = json_decode($retorno, true); $statusdanova = $retornodosistema['status']; $numerosearchkey = $retornodosistema['searchkey']; $statusdanotafical = $retornodosistema['status']; $codigodostatus = $retornodosistema['codigo']; $notaretorno = '{ "ApiKey":"'.$dadosdaempresa['ApiKey'].'", "Cnpj":"'.$dadosdaempresa['Cnpj'].'", "Dados": { "searchkey":"'.$numerosearchkey.'" } }'; $executar_retorno = execute($urlretorno, $notaretorno); try { Capsule::connection()->transaction( function ($connectionManager) { global $numerosearchkey; global $numerodafatura; $connectionManager->table('tblinvoices')->where('id', $numerodafatura)->update( [ 'statusnfe' => 1, 'nfsesearchkey' => $numerosearchkey ] ); logActivity('MMNFSe: Foi gerado um código searchkey para a fatura de número #'.$numerodafatura.' : '.$numerosearchkey); } ); } catch (\Exception $e) { echo $e->getMessage(); exit(); } $command = 'SendEmail'; $postData = array( 'messagename' => 'Client Signup Email', 'id' => $iddocliente, 'customtype' => 'general', 'customsubject' => 'NFSe da fatura #'. $numerodafatura .' disponível!', 'custommessage' => ' Olá '. $primeironome .' '. $sobrenome .', tudo bem? Acabamos de disponibilizar uma nota fiscal de serviço em nosso sistema! Para visualizar esta nota fiscal acesse nosso sistema de nota fiscal <strong><a href="https://www.mmhospedagem.com.br/#!/notafiscal">clicando aqui!</a></strong> e informe a chave de número [ <strong>'. $numerosearchkey .'</strong> ] Para ver esta e outras notas fiscais disponíveis <strong><a href="https://www.mmhospedagem.com.br/painel/nfe.php">clique aqui!</a></strong> ---- Atenciosamente, Equipe MMHospedagem Tel: (062) 4101-9380 ', ); $results = localAPI($command, $postData); logActivity('MMNFSe: Sistema de emissão de nova finalizado com sucesso!'); return $executar_retorno; }); function execute($url, $data){ $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_POST, true); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array('Accept: application/json')); $response = curl_exec($curl_handle); curl_close($curl_handle); return $response; } ---------------------------- OBS: Em breve estarei lançando um emissor de nota fiscal, dicas, sugestões são bem vindas! Olá, boa noite! Isso ainda funciona? 0 Citar
MMHospedagem Postado Abril 4, 2020 Autor Postado Abril 4, 2020 39 minutos atrás, JOSERAFAEL disse: Olá, boa noite! Isso ainda funciona? Sim funciona! 0 Citar
Rafael Costa Postado Abril 4, 2020 Postado Abril 4, 2020 9 horas atrás, Maik V Oliveira disse: Sim funciona! Obrigado, vou testar. 0 Citar
alecsandromoraes Postado Maio 14, 2021 Postado Maio 14, 2021 Olá meu amigo, uma dúvida esse módulo consigo selecionar individualmente cada cliente que quero emitir a nota? E além disso se emite a nota na geração da fatura ou no pagamento? Pois tenho clientes que precisam da nota pra autorizar pagamento, e nos demais emitir nota só quando o pagamento for compensado. 0 Citar
Streaming Postado Maio 16, 2021 Postado Maio 16, 2021 Essa "Transmite Nota" ainda está em atividade? Certificado do site deles tá expirado... 0 Citar
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.
Nota: Sua postagem exigirá aprovação do moderador antes de ficar visível.