MMHospedagem Posted May 26, 2019 Share Posted May 26, 2019 (edited) 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! Edited April 14, 2022 by MMHospedagem 2 Quote Link to comment Share on other sites More sharing options...
Rafael Costa Posted April 4, 2020 Share Posted April 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 Quote Link to comment Share on other sites More sharing options...
MMHospedagem Posted April 4, 2020 Author Share Posted April 4, 2020 39 minutos atrás, JOSERAFAEL disse: Olá, boa noite! Isso ainda funciona? Sim funciona! 0 Quote Link to comment Share on other sites More sharing options...
Rafael Costa Posted April 4, 2020 Share Posted April 4, 2020 9 horas atrás, Maik V Oliveira disse: Sim funciona! Obrigado, vou testar. 0 Quote Link to comment Share on other sites More sharing options...
alecsandromoraes Posted May 14, 2021 Share Posted May 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 Quote Link to comment Share on other sites More sharing options...
Streaming Posted May 16, 2021 Share Posted May 16, 2021 Essa "Transmite Nota" ainda está em atividade? Certificado do site deles tá expirado... 0 Quote Link to comment Share on other sites More sharing options...
brunoalves Posted May 27, 2022 Share Posted May 27, 2022 funciona ainda? 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.