Análisis XML SAP en tu aplicación web: Nuevas funcionalidades adicionadas!

GitHub commit banner

Análisis XML SAP en tu aplicación web: Nuevas funcionalidades adicionadas!

En el mundo de la programación, la integración con sistemas externos es un tema común. En este caso, un desarrollador ha agregado una nueva funcionalidad a su proyecto BoilerplateServiceLayer para analizar XML SAP, lo que permite una mayor flexibilidad y capacidad de respuesta en aplicaciones web.

📁 julio101290/boilerplateservicelayer

🔧 Commit  11ef1e76

Add XML Analize SAP

📁 Repositorio julio101290/boilerplateservicelayer
🔑 SHA 11ef1e7659b2a4a46ddc5a76cb6118bb7a15ea3a
✍️ Autor Julio Cesar Leyva Rodriguez <juliocesarleyvarodriguez@hotmail.com>
🕐 Fecha 2026-05-28T22:57:43Z
📊 Cambios 4 archivo(s)  ·  +983   -0  ·  983 líneas

📂 Archivos modificados (4)

📄 src/Config/Routes.php ✏️ modificado +19 -0
🖥️ Diff — PHP
@@ -145,4 +145,23 @@
'namespace' => 'julio101290\boilerplateservicelayer\Controllers'
]
);
+
+ $routes->get('servicelayer/analizadorSAPXML',
+ 'CFDISAPController::analizadorCFDI',
+ ['namespace' => 'julio101290\boilerplateservicelayer\Controllers']
+ );
+
+ $routes->get('servicelayer/analizadorSAPXML',
+ 'CFDISAPController::analizadorCFDI',
+ [
+ 'namespace' => 'julio101290\boilerplateservicelayer\Controllers',
+ 'filter' => 'permission:analizadorCFDI-permission'
+ ]
+ );
+
+ // Para procesar el archivo Excel
+ $routes->post('servicelayer/procesarAnalisisCFDI',
+ 'CFDISAPController::procesarAnalisisCFDI',
+ ['namespace' => 'julio101290\boilerplateservicelayer\Controllers']
+ );
});
📄 src/Controllers/CFDISAPController.php ➕ añadido +781 -0
🖥️ Diff — PHP
@@ -0,0 +1,781 @@
+<?php
+
+namespace julio101290\boilerplateservicelayer\Controllers;
+
+use App\Controllers\BaseController;
+use julio101290\boilerplateservicelayer\Models\SapservicelayerModel;
+use julio101290\boilerplateservicelayer\Controllers\SapservicelayerController;
+use julio101290\boilerplateservicelayer\Models\User_sap_linkModel;
+use CodeIgniter\API\ResponseTrait;
+use julio101290\boilerplatelog\Models\LogModel;
+use julio101290\boilerplatecompanies\Models\EmpresasModel;
+use julio101290\boilerplate\Models\UserModel;
+use julio101290\boilerplatecompanies\Models\UsuariosempresaModel;
+use PhpOffice\PhpSpreadsheet\IOFactory;
+
+class CFDISAPController extends BaseController
+{
+ use ResponseTrait;
+
+ protected $log;
+ protected $user_sap_link;
+ protected $empresa;
+ protected $serviceLayerController;
+ protected $serviceLayerModel;
+ protected $users;
+ protected $usersPerCompanie;
+
+ public function __construct()
+ {
+ $this->user_sap_link = new User_sap_linkModel();
+ $this->log = new LogModel();
+ $this->empresa = new EmpresasModel();
+ $this->serviceLayerController = new SapservicelayerController();
+ $this->serviceLayerModel = new SapservicelayerModel();
+ $this->users = new UserModel();
+ $this->usersPerCompanie = new UsuariosempresaModel();
+
+ helper(['menu', 'utilerias']);
+ }
+
+ // ==================== MÉTODOS EXISTENTES ====================
+
+ public function index()
+ {
+ helper('auth');
+
+ $idUser = user()->id;
+ $titulos["empresas"] = $this->empresa->mdlEmpresasPorUsuario($idUser);
+
+ if ($this->request->isAJAX()) {
+ $request = service('request');
+
+ $draw = (int) $request->getGet('draw');
+ $start = (int) $request->getGet('start');
+ $length = (int) $request->getGet('length');
+
+ $searchValue = trim($request->getGet('search')['value'] ?? '');
+
+ $orderColumnIndex = (int) ($request->getGet('order')[0]['column'] ?? 0);

… diff truncado a 60 líneas

📄 src/Database/Seeds/BoilerplateServiceLayer.php ✏️ modificado +4 -0
🖥️ Diff — PHP
@@ -41,12 +41,16 @@ public function run() {
$this->authorize->createPermission('user_sap_link-permission', 'Permiso para la lista de user_sap_link');
$this->authorize->createPermission('reqauth-permission', 'Permisos para autorizar requisiciones del SAP');
$this->authorize->createPermission('poauth-permission', 'Permiso Para Autorizar');
+ $this->authorize->createPermission('analizadorCFDI-permission', 'Permiso Analizar CFDI');
+
+
// Assign Permission to user
$this->authorize->addPermissionToUser('servicelayer-permission', 1);
$this->authorize->addPermissionToUser('user_sap_link-permission', 1);
$this->authorize->addPermissionToUser('reqauth-permission', 1);
$this->authorize->addPermissionToUser('poauth-permission', 1);
+ $this->authorize->addPermissionToUser('analizadorCFDI-permission', 1);
}
public function down() {
📄 src/Views/CFDISAP.php ➕ añadido +179 -0
🖥️ Diff — PHP
@@ -0,0 +1,179 @@
+<?= $this->extend('julio101290\boilerplate\Views\layout\index') ?>
+<?= $this->section('content') ?>
+
+<div class="card card-primary">
+ <div class="card-header">
+ <h3 class="card-title">Analizador CFDI vs SAP</h3>
+ </div>
+ <div class="card-body">
+ <form id="formAnalizador" enctype="multipart/form-data">
+ <div class="row">
+ <div class="col-md-6">
+ <div class="form-group">
+ <label for="sapConnection">Conexión SAP</label>
+ <select name="sapConnection" id="sapConnection" class="form-control" required>
+ <option value="">Seleccione...</option>
+ <?php foreach ($conexiones as $conn): ?>
+ <option value="<?= $conn['id'] ?>"><?= esc($conn['description']) ?> (<?= esc($conn['companyDB']) ?>)</option>
+ <?php endforeach; ?>
+ </select>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <div class="form-group">
+ <label for="excelFile">Archivo Excel (formato SAT)</label>
+ <div class="custom-file">
+ <input type="file" class="custom-file-input" id="excelFile" name="excelFile" accept=".xlsx, .xls" required>
+ <label class="custom-file-label" for="excelFile">Seleccionar archivo</label>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12 text-center">
+ <button type="submit" class="btn btn-success" id="btnProcesar">
+ <i class="fas fa-sync-alt"></i> Procesar y validar contra SAP
+ </button>
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
+
+<div class="card card-info" id="cardResultados" style="display:none;">
+ <div class="card-header">
+ <h3 class="card-title">Resultados de la validación</h3>
+ <div class="card-tools">
+ <button type="button" class="btn btn-tool" id="btnExportarExcel">
+ <i class="fas fa-file-excel"></i> Exportar a Excel
+ </button>
+ </div>
+ </div>
+ <div class="card-body table-responsive">
+ <table id="tablaResultados" class="table table-bordered table-striped table-hover">
+ <thead>
+ <tr>
+ <th>RFC Emisor</th>
+ <th>Nombre Emisor</th>
+ <th>Folio</th>
+ <th>Fecha</th>

… diff truncado a 60 líneas

🔗 Ver commit completo en GitHub →

⚡ César Systems — Blog técnico automatizado

Comentarios

Entradas populares