D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
novonote
/
adm
/
app
/
gre
/
Views
/
Contrato
/
Filename :
VieImpContrato_4.php
back
Copy
<?php require_once($_SERVER['DOCUMENT_ROOT'] . '/novonote/adm/vendor/autoload.php'); use PhpOffice\PhpWord\TemplateProcessor; session_start(); // Dados principais $formData = $this->Dados['form'][0]; $itens = $this->Dados['dadosItens']; $tipo_id = $formData['tipo_id']; $opcao_compra = $formData['opcao_compra']; $num_contrato = $formData['numero_contrato']; // Sanitiza nome do contratante $contratante = iconv('UTF-8', 'ASCII//TRANSLIT', $formData['nome_contratante']); $contratante = preg_replace('/[^A-Za-z0-9]/', '_', $contratante); // Caminho do modelo function caminhoContratoModelo($tipo_id, $opcao_compra) { return realpath(__DIR__ . '/../../../../ContratosNovonote/ContratoJuridica.docx'); } // Diretório de saída $destinoDir = __DIR__ . '/../../../../ContratoImpresso/impContrato'; if (!is_dir($destinoDir)) { mkdir($destinoDir, 0777, true); } // Caminhos dos arquivos $saidaDocx = "$destinoDir/{$num_contrato}_{$contratante}.docx"; $saidaPdf = "$destinoDir/{$num_contrato}_{$contratante}.pdf"; // Dados do contrato $dadosContrato = [ 'numero_contrato' => $formData['numero_contrato'], 'nome_contratante' => $formData['nome_contratante'], 'endereco_contratante' => $formData['endereco_contratante'], 'tipo_documento' => $formData['tipo_docto'], 'num_documento' => $formData['tipo_docto'] === 'CNPJ' ? $formData['cnpj'] : $formData['cpf'], 'prazo_contrato' => $formData['prazo_contrato'], 'data_vigencia' => $formData['data_inicio_completa'], 'local_entrega' => $formData['local_entrega'], 'valor_contrato' => $formData['valor_contratof'], 'valor_extenso' => $formData['valor_extenso'], 'dia_pagamento' => $formData['dia_pagto'], 'data_inicio_completa' => $formData['data_inicio_completa'] ]; try { $modeloContrato = caminhoContratoModelo($tipo_id, $opcao_compra); if (!$modeloContrato || !file_exists($modeloContrato)) { throw new Exception("Modelo de contrato não encontrado."); } $template = new TemplateProcessor($modeloContrato); $variaveis = $template->getVariables(); if (!in_array('num', $variaveis)) { throw new Exception("Marcador 'num' não encontrado no modelo."); } foreach ($dadosContrato as $chave => $valor) { $template->setValue($chave, $valor); } $dadosItens = []; foreach ($itens as $i => $item) { $dadosItens[] = [ 'num' => $i + 1, 'descricao' => $item['descricao'], 'quantidade' => $item['quantidade'], 'valor_unitario' => number_format((float)str_replace(',', '.', $item['valor_unitario']), 2, ',', '.'), 'valor_total' => number_format((float)str_replace(',', '.', $item['valor_total']), 2, ',', '.') ]; } $template->cloneRowAndSetValues('num', $dadosItens); $template->saveAs($saidaDocx); if (!file_exists($saidaDocx)) { throw new Exception("Falha ao salvar o DOCX."); } $sofficePath = '"' . SOFFIDEPATH . '"'; $cmd = $sofficePath . ' --headless --convert-to pdf --outdir "' . $destinoDir . '" "' . $saidaDocx . '"'; exec($cmd, $output, $resultCode); if ($resultCode !== 0 || !file_exists($saidaPdf) || filesize($saidaPdf) === 0) { throw new Exception("Falha na conversão para PDF."); } $_SESSION['pdf_gerado'] = $saidaPdf; $_SESSION['docx_gerado'] = $saidaDocx; header("Location: " . URLADM . "baixar_contrato_auto.php"); exit; } catch (Exception $e) { if (ob_get_length()) { ob_end_clean(); } echo "❌ Erro: " . $e->getMessage(); }