MMHospedagem Postado Maio 26, 2019 Compartilhar 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 Link para o comentário Compartilhar em outros sites More sharing options...
Rafael Costa Postado Abril 4, 2020 Compartilhar 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 Link para o comentário Compartilhar em outros sites More sharing options...
MMHospedagem Postado Abril 4, 2020 Autor Compartilhar Postado Abril 4, 2020 39 minutos atrás, JOSERAFAEL disse: Olá, boa noite! Isso ainda funciona? Sim funciona! 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Rafael Costa Postado Abril 4, 2020 Compartilhar Postado Abril 4, 2020 9 horas atrás, Maik V Oliveira disse: Sim funciona! Obrigado, vou testar. 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
alecsandromoraes Postado Maio 14, 2021 Compartilhar 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 Link para o comentário Compartilhar em outros sites More sharing options...
Streaming Postado Maio 16, 2021 Compartilhar Postado Maio 16, 2021 Essa "Transmite Nota" ainda está em atividade? Certificado do site deles tá expirado... 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
brunoalves Postado Maio 27, 2022 Compartilhar Postado Maio 27, 2022 funciona ainda? 0 Citar Link para o comentário Compartilhar em outros sites More sharing options...
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.