Em um portal de notas fiscais, diferentes tipos de documentos seguem fluxos similares mas com particularidades específicas, certo ?
a Pergunta é:
Extensibilidade !
**
Como Novos tipos de nota (NFCe, CTe) podem ser adicionados, de forma simples ?**
indo mais a fundo:
Endpoint
// routes/api.php (Laravel)
Route::post('/notas-fiscais/processar', [NotaFiscalController::class, 'processar']);
// Ou usando PHP puro
if ($_SERVER['REQUEST_METHOD'] === 'POST' && $_SERVER['REQUEST_URI'] === '/api/processar-nota') {
$controller = new NotaFiscalController();
$input = json_decode(file_get_contents('php://input'), true);
echo json_encode($controller->processarNota($input));
}
a i.a me trouxe,
// processar_nota.php
<?php
if ($_POST['acao'] === 'processar') {
$tipo = $_POST['tipo_nota']; // 'NFE_PRODUTO', 'NFSE_SERVICO', etc.
// Criar dados da nota a partir do formulário
$dados = new DadosNota(
$_POST['cnpj_emitente'],
$_POST['cnpj_destinatario'],
floatval($_POST['valor_total']),
criarItensDoFormulario($_POST['itens'])
);
// Processar usando o Template Method
$processador = ProcessadorFactory::criar($tipo);
$resultado = $processador->processarNotaFiscal($dados);
echo "<div class='alert alert-success'>$resultado</div>";
}
?>
o Cloud.ia me trouxe a estrutura: