Skip to content

Commit

Permalink
Adiciona funções de atualização e modal de confirmação para ações
Browse files Browse the repository at this point in the history
Este commit adiciona uma nova função no módulo para atualizar o status de uma nota fiscal. Agora é possível buscar o status mais recente de uma nota na API em caso de falha no sincronismo dessa informação. Também foi refatorado os botoes de acoes para exibir um modal de confirmação antes de realizar a ação.
  • Loading branch information
andrekutianski committed Apr 25, 2024
1 parent 2a57522 commit 39ae7c0
Show file tree
Hide file tree
Showing 3 changed files with 317 additions and 117 deletions.
60 changes: 60 additions & 0 deletions modules/addons/NFEioServiceInvoices/lib/Admin/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,66 @@ public function cancelNf($vars)
}
}

/**
* Envia a nota fiscal por email ao cliente através da API da NFE.io
*
* @param $params array variáveis do WHMCS
*/
public function emailNf($params)
{
$msg = new FlashMessages();
$functions = new \NFEioServiceInvoices\Legacy\Functions();
$get = $_GET;
$nfId = $get['nfe_id'];
$moduleLink = $params['modulelink'];
$moduleAction = 'index';
$redirectUrl = $moduleLink . '&action=' . $moduleAction;

if (empty($nfId)) {
$msg->warning("Nenhuma nota fiscal informada.", $redirectUrl);
}

$response = $functions->gnfe_email_nfe($nfId);

if (empty($response->message)) {
$msg->success("Nota fiscal enviada por email com sucesso.", $redirectUrl);
} else {
$msg->error($response->message, $redirectUrl);
}
}

public function updateNfStatus($params)
{
$msg = new FlashMessages();
$moduleLink = $params['modulelink'];
$nfe = new \NFEioServiceInvoices\NFEio\Nfe();
$nfeId = $_GET['nfe_id'];

if (empty($nfeId)) {
$msg->warning("Nenhuma nota fiscal informada.", $moduleLink);
}

$invoice = $nfe->fetchNf($nfeId);

if ($invoice['error']) {
$msg->error("Erro ao buscar NF na API: {$invoice['error']}.", $moduleLink);
}

// recebe os dados da nota fiscal
$invoiceId = $invoice->id;
$invoiceStatus = $invoice->status;
$invoiceFlowStatus = $invoice->flowStatus;

// atualiza o status da nota fiscal no banco de dados
$result = $nfe->updateLocalNfeStatus($invoiceId, $invoiceStatus, $invoiceFlowStatus);

if ($result) {
$msg->success("Nota fiscal atualizada com sucesso.", $moduleLink);
} else {
$msg->error("Erro ao atualizar nota fiscal.", $moduleLink);
}
}

/**
* Support action.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<div class="modal fade" id="{$id}" tabindex="-1" role="dialog"
aria-labelledby="actionConfirmationModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Confirmar Ação:
<mark><span class="text-uppercase" id="actionConfirmationModalLabel"></span></mark>
</h5>
</div>
<div class="modal-body">
<p>
Tem certeza de que deseja
<mark><span class="text-uppercase" id="modalAction"></span></mark>
a NFS-e com o número <mark><span id="modalNfeId"></span> </mark>
para a fatura <mark><span id="modalInvoiceId"></span></mark>?
</p>
<p><strong>Nota: </strong><span class="text-info">Esta ação <span id="modalActionDesc"></span></span>.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="confirmAction">Confirmar Ação</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>

<script>
const moduleLink = '{$modulelink}';
</script>

{literal}
<script type="text/javascript">
$(document).ready(function () {
// funcao responsavel por acionar o modal para confirmacao de acoes
$('#actionConfirmationModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Botao que acionou o modal
var action = button.data('action') // a acao a ser executada
var nfeId = button.data('nfeid') // numero da nfe
var invoiceId = button.data('invoiceid') // id da fatura
var actionName = button.data('actionname') // nome da acao
var actionDesc = button.data('actiondesc') // descricao da acao
// Atualiza o modal com as informacoes da acao
var modal = $(this)
modal.find('#modalNfeId').text(nfeId)
modal.find('#modalInvoiceId').text(invoiceId)
modal.find('#modalAction').text(actionName)
modal.find('#modalActionDesc').text(actionDesc)
modal.find('#actionConfirmationModalLabel').text(actionName)
// Acao de confirmacao do modal
$('#confirmAction').off('click').click(function () {
var link = moduleLink + '&action=' + action + '&invoice_id=' + invoiceId;
// se action for emailNf, substitui invoiceId por nfeId
if (action === 'emailNf' || action === 'updateNfStatus') {
link = moduleLink + '&action=' + action + '&nfe_id=' + nfeId;
}
window.open(link, '_self');
});
});
});
</script>
{/literal}
Loading

0 comments on commit 39ae7c0

Please sign in to comment.