Kaynağa Gözat

Implemntación de mpdf y implementación de controladores del módulo de adquisiciones

JeanBenitez 2 yıl önce
ebeveyn
işleme
bca1d40e52

+ 7 - 7
sistema-mantenimiento-back/app/Http/Controllers/ArtitleController.php

@@ -624,7 +624,7 @@ class ArtitleController extends Controller {
 
         $arrInformation = $response['INFORMATION'];
         foreach ($arrInformation as $key => $information) {
-            $ruta = storage_path().'/app/public/GEAD/FO/';
+            $ruta = storage_path().'/app/public/GEAD/';
             $cont = -2;
             if (is_dir($ruta)){
                 $gestor = opendir($ruta);
@@ -643,7 +643,7 @@ class ArtitleController extends Controller {
             $nameArtitle = strtoupper(str_replace(' ', '_', $response['ARTICULO']));
             $imageName = $numeroLinea.'-GEAD-FO-'.$date.'-'.$numeroSecuencia.'-01-'.$nameArtitle.'.jpeg';
             try {
-                \File::put(storage_path(). '/app/public/GEAD/FO/' . $imageName, base64_decode($image));
+                \File::put(storage_path(). '/app/public/GEAD/' . $imageName, base64_decode($image));
             } catch (\Throwable $th) {
                 DB::rollBack();
                 return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG002: Ocurrió un error al guardar la imagen en la base de datos documental.", [], 500);
@@ -751,7 +751,7 @@ class ArtitleController extends Controller {
             if ( $information['ESTADO'] === 'Modificado' || $information['ESTADO'] === 'Activo' ) {
                 // Si la información cuenta con más de 1000 caracteres, entonces es una imágen nueva
                 if ( strlen($information['URLIMAGE']) > 1000 ) {
-                    $ruta = storage_path().'/app/public/GEAD/FO/';
+                    $ruta = storage_path().'/app/public/GEAD/';
                     $cont = -2;
                     if (is_dir($ruta)){
                         $gestor = opendir($ruta);
@@ -760,7 +760,7 @@ class ArtitleController extends Controller {
                         }
                     } else {
                         // Método Recursivo para generar la ruta del archivo
-                        $arrResponseCreate = $this->createRouteSave('app/public/GEAD/FO');
+                        $arrResponseCreate = $this->createRouteSave('app/public/GEAD');
                         if ($arrResponseCreate['error']) {
                             return $this->responseController->makeResponse(true, $arrResponseCreate['msg'], $arrResponseCreate['response'], 500);
                         }
@@ -777,7 +777,7 @@ class ArtitleController extends Controller {
                     $nameArtitle = strtoupper(str_replace(' ', '_', $response['ARTICULO']));
                     $imageName = $numeroLinea.'-GEAD-FO-'.$date.'-'.$numeroSecuencia.'-01-'.$nameArtitle.'.jpeg';
                     try {
-                        \File::put(storage_path(). '\\app\\public\\GEAD\\FO\\' . $imageName, base64_decode($image));
+                        \File::put(storage_path(). '\\app\\public\\GEAD\\' . $imageName, base64_decode($image));
                     } catch (\Throwable $th) {
                         DB::rollBack();
                         return $this->responseController->makeResponse(true, "ERR_ARTITLE_MOD003: No se pudo registrar la imagen en la base de datos documental.", $th->getMessage(), 500);
@@ -878,7 +878,7 @@ class ArtitleController extends Controller {
                     }
                 }
             } else if ($information['ESTADO'] === 'Nuevo') {
-                $ruta = storage_path().'/app/public/GEAD/FO/';
+                $ruta = storage_path().'/app/public/GEAD/';
                 $cont = -2;
                 if (is_dir($ruta)){
                     $gestor = opendir($ruta);
@@ -897,7 +897,7 @@ class ArtitleController extends Controller {
                 $nameArtitle = strtoupper(str_replace(' ', '_', $response['ARTICULO']));
                 $imageName = $numeroLinea.'-GEAD-FO-'.$date.'-'.$numeroSecuencia.'-01-'.$nameArtitle.'.jpeg';
                 try {
-                    \File::put(storage_path(). '/app/public/GEAD/FO/' . $imageName, base64_decode($image));
+                    \File::put(storage_path(). '/app/public/GEAD/' . $imageName, base64_decode($image));
                 } catch (\Throwable $th) {
                     DB::rollBack();
                     return $this->responseController->makeResponse(true, "ERR_ARTITLE_MOD012: Ocurrió un error al modificar en la tabla.", [], 500);

+ 81 - 0
sistema-mantenimiento-back/app/Http/Controllers/DelayAnalysisController.php

@@ -0,0 +1,81 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\ResponseController;
+use App\Http\Controllers\EncryptionController;
+use App\Http\Controllers\ResourcesController;
+
+use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Validator;
+
+class DelayAnalysisController extends Controller
+{
+    private $responseController;
+    private $encController;
+    private $resourcesController;
+
+    public function __construct(){
+        $this->responseController = new ResponseController();
+        $this->encController = new EncryptionController();
+        $this->resourcesController = new ResourcesController();
+    }
+
+    public function registerDelayAnalysis() {
+
+    }
+
+    public function getDelayAnalysis($line) {
+        try {
+            $getDelayAnalysis = DB::table('S002V01TANRE')
+                ->where('ANRE_NULI', '=', $line)
+                ->join('S002V01TORCO', 'ORCO_NUOR', '=', 'ANRE_NUOR')
+                ->join('S002V01TPROV', 'PROV_NUPR', '=', 'ORCO_NUPR')
+                ->get([
+                    'ANRE_IDAR',
+                    'ANRE_NUOR',
+                    'ANRE_DESC',
+                    'ANRE_TIPO',
+                    'ANRE_FEEN',
+                    'ANRE_ESTA',
+                    'ANRE_USRE',
+                    'ANRE_FERE',
+                    'ANRE_USMO',
+                    'ANRE_FEMO',
+
+                    'ORCO_NUOR',
+                    'ORCO_NUPR',
+                    'ORCO_NUDE',
+                    'ORCO_IDLI',
+                    'ORCO_MONE',
+                    'ORCO_COST',
+                    'ORCO_PROP',
+                    'ORCO_ACTI',
+                    'ORCO_PROY',
+
+                    'PROV_NUPR',
+                    'PROV_NOCO',
+                    'PROV_NOMB',
+                    'PROV_APPA',
+                    'PROV_APMA',
+                    'PROV_CORR',
+                    'PROV_LAD1',
+                    'PROV_TEL1',
+                    'PROV_LAD2',
+                    'PROV_TEL2',
+                    'PROV_XRFC',
+                    'PROV_XTAX',
+                    'PROV_GIRO',
+                    'PROV_TIPO',
+                    'PROV_SIWE',
+                    'PROV_MEPA',
+                ]);
+        } catch (\Throwable $th) {
+            return $this->responseController->makeResponse(true, "ERR_DELAY_ANALYSIS_GET000: Ocurrió un error al momento de obtener los registros", $th->getMessage(), 500);
+        }
+
+        return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getDelayAnalysis); 
+    }
+}

+ 1 - 1
sistema-mantenimiento-back/app/Http/Controllers/DocumentManagementController.php

@@ -114,7 +114,7 @@ class DocumentManagementController extends Controller
         if (!$idFile) {
             return $this->responseController->makeResponse(true, 'El ID del archivo requerido no está encriptado correctamente.', [], 400);
         }
-
+        
         $idUser = $this->encryptionController->shortDec($idUser);
         if (!$idUser) {
             return $this->responseController->makeResponse(true, 'El ID del usuario que realizó la petición no está encriptado correctamente.', [], 400);

+ 228 - 0
sistema-mantenimiento-back/app/Http/Controllers/IssueTrackingController.php

@@ -0,0 +1,228 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\ResponseController;
+use App\Http\Controllers\EncryptionController;
+use App\Http\Controllers\ResourcesController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Validator;
+
+class IssueTrackingController extends Controller
+{
+    private $responseController;
+    private $encController;
+    private $resourcesController;
+
+    public function __construct(){
+        $this->responseController = new ResponseController();
+        $this->encController = new EncryptionController();
+        $this->resourcesController = new ResourcesController();
+    }
+
+    public function reportProblem(Request $request) {
+        $validator = Validator::make($request->all(),[
+            'ORDER' => 'required|string',
+            'TIPO' => 'required|string',
+            'DESCRIPCION' => 'required|string',
+            'NOMBRE_EVIDENCIA1' => 'required|string',
+            'EVIDENCIA1' => 'required|string',
+            'NOMBRE_EVIDENCIA2' => 'string',
+            'EVIDENCIA2' => 'string',
+            'USUARIO' => 'required|string',
+            'NUMERO_LINEA' => 'required|integer',
+        ]);
+        if ($validator->fails()) {
+            return $this->responseController->makeResponse(
+                true,
+                "ERR_ISSUE_TRACKING_REG000: Se encontraron uno o más errores.",
+                $this->responseController->makeErrors($validator->errors()->messages()),
+                401
+            );
+        }
+
+        DB::beginTransaction();
+        $requestData = $request->all();
+        
+        // Se obtiene el usuario encriptado
+        try {
+            $user = $this->encController->decrypt($requestData['USUARIO']);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG001: Ocurrió un error al obtener el usuario.", [], 500);
+        }
+
+        // Se obtiene el número de orden enctriptado
+        try {
+            $orderNumber = $this->encController->decrypt($requestData['ORDER']);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG002: Ocurrió un error al obtener el usuario.", [], 500);
+        }
+
+
+        try {
+            $validateExists = DB::table('S002V01TORCO')->where('ORCO_NUOR', '=', $requestData['ORDER'])->exists();
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG003: Ocurrió un error al validar el número de orden de compra.", [], 500);
+        }
+
+        if (!$validateExists) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG004: No se encontró el número de orden de compra.", [], 500);
+        }
+
+        // Se guarda la imagen de evidencia en la base de datos documental
+        $codeDocument1 = null;
+        $arrResponseSave1 = $this->resourcesController->saveDocument($requestData['EVIDENCIA1'],'GEAD',$requestData['NOMBRE_EVIDENCIA1'],'FO',$requestData['NUMERO_LINEA']);
+        if ( $arrResponseSave1['error'] ) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, $arrResponseSave1['msg'], $arrResponseSave1['response'], 500);
+        }
+        $codeDocument1 = $arrResponseSave1['response'];
+        
+        // Se guarda la imagen de evidencia opcional en la base de datos documental
+        $codeDocument2 = null;
+        if ($requestData['EVIDENCIA1'] != '') {
+            $arrResponseSave2 = $this->resourcesController->saveDocument($requestData['EVIDENCIA2'],'GEAD',$requestData['NOMBRE_EVIDENCIA2'],'FO',$requestData['NUMERO_LINEA']);
+            if ( $arrResponseSave2['error'] ) {
+                DB::rollBack();
+                return $this->responseController->makeResponse(true, $arrResponseSave2['msg'], $arrResponseSave2['response'], 500);
+            }
+            $codeDocument2 = $arrResponseSave2['response'];
+        }
+        
+        // Se procede a registrar el reporte en la base de datos
+        try {
+            $validateInsert = DB::table('S002V01TSEPR')->insert([
+                'SEPR_NUOR' => $orderNumber,
+                'SEPR_TIPO' => $requestData['TIPO'],
+                'SEPR_DESC' => $requestData['DESCRIPCION'],
+                'SEPR_EVI1' => $codeDocument1,
+                'SEPR_EVI2' => $codeDocument2,
+                'SEPR_NULI' => $requestData['NUMERO_LINEA'],
+                'SEPR_USRE' => $user,
+                'SEPR_FERE' => Carbon::now()->timezone('America/Mazatlan')->toDateTimeString(),
+                'SEPR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
+            ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG003: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
+        }
+        // Se valida que se haya registrado correctamente
+        if (!$validateInsert) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG004: No se pudo ingresar el reporte en la base.", [], 500);
+        }
+        // Se guardan todos los cambios
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Registro de Reporte Exitoso");
+    }
+
+    public function getIssueTracking($line) {
+        DB::beginTransaction();
+        try {
+            $arrIssueTracking = DB::table('S002V01TSEPR')
+                ->where('SEPR_NULI', '=', $line)
+                ->join('S002V01TORCO', 'SEPR_NUOR', '=', 'ORCO_NUOR')
+                ->join('S002V01TDESP', 'DESP_NUDE', '=', 'ORCO_NUDE')
+                ->get([
+                    'SEPR_IDPR',
+                    'SEPR_NUOR',
+                    'DESP_NOMB',
+                    'SEPR_TIPO',
+                    'SEPR_DESC',
+                    'SEPR_RESO',
+                    'SEPR_EVI1',
+                    'SEPR_EVI2',
+                    'SEPR_ESTA',
+                    'SEPR_USRE',
+                    'SEPR_FERE',
+                    'SEPR_USMO',
+                    'SEPR_FEMO',
+                ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_GET000: Ocurrió un error al obtener los datos.", $th->getMessage(), 500);
+        }
+
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrIssueTracking);
+    }
+
+    public function resolutionIssueTracking(Request $request) {
+        $validator = Validator::make($request->all(),[
+            'NUMERO_SEGUIMIENTO' => 'required|string',
+            'DESCRIPCION' => 'required|string',
+            'NUMERO_LINEA' => 'required|string',
+            'USUARIO' => 'required|string',
+        ]);
+        if ($validator->fails()) {
+            return $this->responseController->makeResponse(
+                true,
+                "ERR_ISSUE_TRACKING_RES000: Se encontraron uno o más errores.",
+                $this->responseController->makeErrors($validator->errors()->messages()),
+                401
+            );
+        }
+
+        DB::beginTransaction();
+        $requestData = $request->all();
+        
+        // Se obtiene el usuario encriptado
+        try {
+            $user = $this->encController->decrypt($requestData['USUARIO']);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES001: Ocurrió un error al obtener el usuario.", [], 500);
+        }
+
+        // Se obtiene el número de orden enctriptado
+        try {
+            $trackingNumber = $this->encController->decrypt($requestData['NUMERO_SEGUIMIENTO']);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES002: Ocurrió un error al obtener el usuario.", [], 500);
+        }
+
+        // Se valida el número de seguimiento
+        try {
+            $validateExists = DB::table('S002V01TSEPR')
+                ->where('SEPR_IDPR', '=', $trackingNumber)
+                ->where('SEPR_NULI', '=', $requestData['NUMERO_LINEA'])
+                ->exists();
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES003: Ocurrió un error al validar el número de seguimiento.", [], 500);
+        }
+        if (!$validateExists) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES004: No se encontró el número de seguimiento seleccionado.", [], 500);
+        }
+
+        try {
+            $validateUpdate = DB::table('S002V01TSEPR')->where('SEPR_IDPR', '=', $trackingNumber)->where('SEPR_NULI', '=', $requestData['NUMERO_LINEA'])->update([
+                'SEPR_ESTA' => 'Resuelto',
+                'SEPR_RESO' => $requestData['DESCRIPCION'],
+                'SEPR_USRE' => $user,
+                'SEPR_FEMO' => Carbon::now()->timezone('America/Mazatlan')->toDateTimeString(),
+                'SEPR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
+            ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES005: Ocurrió un error al modificar los registros de seguimiento.", [], 500);
+        }
+
+        if (!$validateUpdate) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES006: No se pudo modificar los registros de seguimiento.", [], 500);
+        }
+        
+        // Se guardan todos los cambios
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Reporte Exitoso");
+    }
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 117 - 5
sistema-mantenimiento-back/app/Http/Controllers/OrderController.php


+ 86 - 0
sistema-mantenimiento-back/app/Http/Controllers/OrderReceptionController.php

@@ -0,0 +1,86 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\ResponseController;
+use App\Http\Controllers\EncryptionController;
+use App\Http\Controllers\ResourcesController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Validator;
+
+
+class OrderReceptionController extends Controller
+{
+    private $responseController;
+    private $encController;
+    private $resourcesController;
+
+    public function __construct(){
+        $this->responseController = new ResponseController();
+        $this->encController = new EncryptionController();
+        $this->resourcesController = new ResourcesController();
+    }
+
+    public function getOrderReception($line) {
+        DB::beginTransaction();
+        try {
+            $getOrderReception = DB::table('S002V01TORCO')
+                ->where('ORCO_NULI', '=', $line)
+                ->where('ORCO_ESTA', '=', 'Recibido')
+                ->orWhere('ORCO_ESTA', '=', 'Facturado')
+                ->orWhere('ORCO_ESTA', '=', 'Devuelto')
+                ->join('S002V01TDESP', 'DESP_NUDE', '=', 'ORCO_NUDE')
+                ->join('S002V01TPROV', 'PROV_NUPR', '=', 'ORCO_NUPR') 
+                ->get([
+                    'ORCO_NUOR',
+                    'ORCO_NUPR',
+                    'ORCO_NUDE',
+                    'ORCO_IDLI',
+                    'ORCO_MONE',
+                    'ORCO_COST',
+                    'ORCO_PROP',
+                    'ORCO_ACTI',
+                    'ORCO_PROY',
+                    'ORCO_ESTA',
+                    'ORCO_NULI',
+                    'ORCO_USRE',
+                    'ORCO_FERE',
+                    'ORCO_USMO',
+                    'ORCO_FEMO',
+                    'DESP_NUDE',
+                    'DESP_NOMB',
+                    'DESP_CALL',
+                    'DESP_NUEX',
+                    'DESP_NUIN',
+                    'DESP_COPO',
+                    'DESP_COLO',
+                    'DESP_MUNI',
+                    'DESP_ENTI',
+                    'PROV_NUPR',
+                    'PROV_NOCO',
+                    'PROV_NOMB',
+                    'PROV_APPA',
+                    'PROV_APMA',
+                    'PROV_CORR',
+                    'PROV_LAD1',
+                    'PROV_TEL1',
+                    'PROV_LAD2',
+                    'PROV_TEL2',
+                    'PROV_XRFC',
+                    'PROV_XTAX',
+                    'PROV_GIRO',
+                    'PROV_TIPO',
+                    'PROV_SIWE',
+                    'PROV_MEPA',
+                ]);
+
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_ORDER_RECEPTION_GET000: Ocurrió un error al obtener los datos.", $th->getMessage(), 500);
+        }
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getOrderReception);
+    }
+}

+ 52 - 0
sistema-mantenimiento-back/app/Http/Controllers/PartialDeliveriesController.php

@@ -0,0 +1,52 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Http\Controllers\ResponseController;
+use App\Http\Controllers\EncryptionController;
+use App\Http\Controllers\ResourcesController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Validator;
+
+class PartialDeliveriesController extends Controller
+{
+    private $responseController;
+    private $encController;
+    private $resourcesController;
+
+    public function __construct(){
+        $this->responseController = new ResponseController();
+        $this->encController = new EncryptionController();
+        $this->resourcesController = new ResourcesController();
+    }
+
+    public function getPartialDeliveries($line) {
+        DB::beginTransaction();
+        try {
+            $getPartial = DB::table('S002V01THIOR')
+                ->where('HIOR_ESOR', '=', 'Recibido Parcial')
+                ->where('HIOR_NULI', '=', $line)
+                ->get([
+                    'HIOR_IDHO',
+                    'HIOR_NUOR',
+                    'HIOR_ESOR',
+                    'HIOR_DESC',
+                    'HIOR_EVI1',
+                    'HIOR_EVI2',
+                    'HIOR_POEN',
+                    'HIOR_ESTA',
+                    'HIOR_USRE',
+                    'HIOR_FERE',
+                    'HIOR_USMO',
+                    'HIOR_FEMO',
+                ]);
+        } catch (\Throwable $th) {
+            DB::rollBack();
+            return $this->responseController->makeResponse(true, "ERR_PARTIAL_DELIVERIES_REG004: Ocurrió un error al momento de obtener los registros.", [], 500);
+        }
+        DB::commit();
+        return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getPartial);
+    }
+}

+ 43 - 0
sistema-mantenimiento-back/app/Http/Controllers/ProviderController.php

@@ -1005,4 +1005,47 @@ class ProviderController extends Controller{
         return $this->responseController->makeResponse(false, "ÉXITO", $arrDescription);
 
     }
+
+    public function generateSheet($encProvider, $encUser, $line) {
+        try {
+            $provider = $this->encController->decrypt($encProvider);
+        } catch (\Throwable $th) {
+            return $this->responseController->makeResponse(true, "ERR_GENERATE_SHEET_REG000: Ocurrió un error al obtener la ordens.", $th->getMessage(), 500);
+        }
+        try {
+            $user = $this->encController->decrypt($encUser);
+        } catch (\Throwable $th) {
+            return $this->responseController->makeResponse(true, "ERR_GENERATE_SHEET_REG001: Ocurrió un error al obtener la ordens.", $th->getMessage(), 500);
+        }
+
+        try {
+            $getProvider = DB::table('S002V01TPROV')
+                ->where('PROV_NUPR', '=', $provider)
+                ->first([
+                    'PROV_NOCO', 
+                    'PROV_NOMB', 
+                    'PROV_APPA', 
+                    'PROV_APMA', 
+                    'PROV_CORR', 
+                    'PROV_LAD1', 
+                    'PROV_TEL1', 
+                    'PROV_LAD2', 
+                    'PROV_TEL2', 
+                    'PROV_XRFC', 
+                    'PROV_XTAX', 
+                    'PROV_GIRO', 
+                    'PROV_TIPO', 
+                    'PROV_SIWE', 
+                    'PROV_MEPA', 
+                    'PROV_USRE', 
+                    'PROV_FERE', 
+                    'PROV_USMO', 
+                    'PROV_FEMO', 
+                ]);
+        } catch (\Throwable $th) {
+            return $this->responseController->makeResponse(true, "ERR_GENERATE_SHEET_REG001: Ocurrió un error al obtener la ordens.", $th->getMessage(), 500);
+        }
+
+        return $getProvider;
+    }
 }

+ 13 - 2
sistema-mantenimiento-back/app/Http/Controllers/ResourcesController.php

@@ -154,10 +154,15 @@ class ResourcesController extends Controller
                 // Se obtienen todos los archivos guardados en la ruta donde se guardará el archivo
                 while ( ($file = readdir($management)) !== false) {
                     if ($file != '.' && $file != '..') {
+                        $arrCodeDocument = explode('=',$file);
+                        $arrStructureDocument = explode('-', $arrCodeDocument[0]);
                         // Se va incrementando el número de secuencia según los archivos obtenidos en la ruta
-                        $secuenceNumber++;
+                        if ($arrStructureDocument[2] == $typeDocument) {
+                            $secuenceNumber++;
+                        }
                     }
                 }
+
                 // Si no se encontró ningún archivo, entonces se inicializa en 1
                 if ( $secuenceNumber === 0 ) {
                     $secuenceNumber = 1;
@@ -174,8 +179,14 @@ class ResourcesController extends Controller
                 // Se genera el código del documento
                 $codeDocument = "$lineNumber-$pathSave-$typeDocument-$currentDate-$secuenceNumber-01=$nameDocument";
 
+                $arrDocument = explode(',', $documentBase);
+                if (count($arrDocument) > 1) {
+                    $document = $arrDocument[1];
+                } else {
+                    $document = $arrDocument[0];
+                }
+
                 // Se obtiene la información del documento en base64
-                $document = explode(',', $documentBase)[1];
                 $document = str_replace(' ', '+', $document);
 
                 try {

+ 1 - 0
sistema-mantenimiento-back/composer.json

@@ -12,6 +12,7 @@
         "laravel/framework": "^9.2",
         "laravel/sanctum": "^2.14.1",
         "laravel/tinker": "^2.7",
+        "mpdf/mpdf": "^8.1",
         "phpoffice/phpspreadsheet": "^1.27"
     },
     "require-dev": {

+ 303 - 60
sistema-mantenimiento-back/composer.lock

@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "c1abb76167523c0b0dfd3b2f97854644",
+    "content-hash": "3e00d343b2722b91cf871e613dc34686",
     "packages": [
         {
             "name": "brick/math",
@@ -2188,6 +2188,186 @@
             ],
             "time": "2022-03-14T12:44:37+00:00"
         },
+        {
+            "name": "mpdf/mpdf",
+            "version": "v8.1.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/mpdf/mpdf.git",
+                "reference": "146c7c1dfd21c826b9d5bbfe3c15e52fd933c90f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/mpdf/mpdf/zipball/146c7c1dfd21c826b9d5bbfe3c15e52fd933c90f",
+                "reference": "146c7c1dfd21c826b9d5bbfe3c15e52fd933c90f",
+                "shasum": ""
+            },
+            "require": {
+                "ext-gd": "*",
+                "ext-mbstring": "*",
+                "mpdf/psr-log-aware-trait": "^2.0 || ^3.0",
+                "myclabs/deep-copy": "^1.7",
+                "paragonie/random_compat": "^1.4|^2.0|^9.99.99",
+                "php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0 || ~8.2.0",
+                "psr/http-message": "^1.0",
+                "psr/log": "^1.0 || ^2.0 || ^3.0",
+                "setasign/fpdi": "^2.1"
+            },
+            "require-dev": {
+                "mockery/mockery": "^1.3.0",
+                "mpdf/qrcode": "^1.1.0",
+                "squizlabs/php_codesniffer": "^3.5.0",
+                "tracy/tracy": "~2.5",
+                "yoast/phpunit-polyfills": "^1.0"
+            },
+            "suggest": {
+                "ext-bcmath": "Needed for generation of some types of barcodes",
+                "ext-xml": "Needed mainly for SVG manipulation",
+                "ext-zlib": "Needed for compression of embedded resources, such as fonts"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Mpdf\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0-only"
+            ],
+            "authors": [
+                {
+                    "name": "Matěj Humpál",
+                    "role": "Developer, maintainer"
+                },
+                {
+                    "name": "Ian Back",
+                    "role": "Developer (retired)"
+                }
+            ],
+            "description": "PHP library generating PDF files from UTF-8 encoded HTML",
+            "homepage": "https://mpdf.github.io",
+            "keywords": [
+                "pdf",
+                "php",
+                "utf-8"
+            ],
+            "support": {
+                "docs": "http://mpdf.github.io",
+                "issues": "https://github.com/mpdf/mpdf/issues",
+                "source": "https://github.com/mpdf/mpdf"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.me/mpdf",
+                    "type": "custom"
+                }
+            ],
+            "time": "2023-05-03T19:36:43+00:00"
+        },
+        {
+            "name": "mpdf/psr-log-aware-trait",
+            "version": "v3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/mpdf/psr-log-aware-trait.git",
+                "reference": "a633da6065e946cc491e1c962850344bb0bf3e78"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/mpdf/psr-log-aware-trait/zipball/a633da6065e946cc491e1c962850344bb0bf3e78",
+                "reference": "a633da6065e946cc491e1c962850344bb0bf3e78",
+                "shasum": ""
+            },
+            "require": {
+                "psr/log": "^3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Mpdf\\PsrLogAwareTrait\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mark Dorison",
+                    "email": "mark@chromatichq.com"
+                },
+                {
+                    "name": "Kristofer Widholm",
+                    "email": "kristofer@chromatichq.com"
+                }
+            ],
+            "description": "Trait to allow support of different psr/log versions.",
+            "support": {
+                "issues": "https://github.com/mpdf/psr-log-aware-trait/issues",
+                "source": "https://github.com/mpdf/psr-log-aware-trait/tree/v3.0.0"
+            },
+            "time": "2023-05-03T06:19:36+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.11.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+                "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/collections": "<1.6.8",
+                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.6.8",
+                "doctrine/common": "^2.13.3 || ^3.2.2",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ],
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "support": {
+                "issues": "https://github.com/myclabs/DeepCopy/issues",
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-03-03T13:19:32+00:00"
+        },
         {
             "name": "myclabs/php-enum",
             "version": "1.8.4",
@@ -2550,6 +2730,56 @@
             },
             "time": "2021-11-30T19:35:32+00:00"
         },
+        {
+            "name": "paragonie/random_compat",
+            "version": "v9.99.100",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/paragonie/random_compat.git",
+                "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+                "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">= 7"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "4.*|5.*",
+                "vimeo/psalm": "^1"
+            },
+            "suggest": {
+                "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Paragon Initiative Enterprises",
+                    "email": "security@paragonie.com",
+                    "homepage": "https://paragonie.com"
+                }
+            ],
+            "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+            "keywords": [
+                "csprng",
+                "polyfill",
+                "pseudorandom",
+                "random"
+            ],
+            "support": {
+                "email": "info@paragonie.com",
+                "issues": "https://github.com/paragonie/random_compat/issues",
+                "source": "https://github.com/paragonie/random_compat"
+            },
+            "time": "2020-10-15T08:29:30+00:00"
+        },
         {
             "name": "phpoffice/phpspreadsheet",
             "version": "1.27.1",
@@ -3389,6 +3619,78 @@
             ],
             "time": "2021-09-25T23:10:38+00:00"
         },
+        {
+            "name": "setasign/fpdi",
+            "version": "v2.3.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Setasign/FPDI.git",
+                "reference": "bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Setasign/FPDI/zipball/bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05",
+                "reference": "bccc892d5fa1f48c43f8ba7db5ed4ba6f30c8c05",
+                "shasum": ""
+            },
+            "require": {
+                "ext-zlib": "*",
+                "php": "^5.6 || ^7.0 || ^8.0"
+            },
+            "conflict": {
+                "setasign/tfpdf": "<1.31"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~5.7",
+                "setasign/fpdf": "~1.8",
+                "setasign/tfpdf": "1.31",
+                "squizlabs/php_codesniffer": "^3.5",
+                "tecnickcom/tcpdf": "~6.2"
+            },
+            "suggest": {
+                "setasign/fpdf": "FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured."
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "setasign\\Fpdi\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jan Slabon",
+                    "email": "jan.slabon@setasign.com",
+                    "homepage": "https://www.setasign.com"
+                },
+                {
+                    "name": "Maximilian Kresse",
+                    "email": "maximilian.kresse@setasign.com",
+                    "homepage": "https://www.setasign.com"
+                }
+            ],
+            "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
+            "homepage": "https://www.setasign.com/fpdi",
+            "keywords": [
+                "fpdf",
+                "fpdi",
+                "pdf"
+            ],
+            "support": {
+                "issues": "https://github.com/Setasign/FPDI/issues",
+                "source": "https://github.com/Setasign/FPDI/tree/v2.3.7"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/setasign/fpdi",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-02-09T10:38:43+00:00"
+        },
         {
             "name": "symfony/console",
             "version": "v6.0.5",
@@ -6189,65 +6491,6 @@
             },
             "time": "2022-01-20T13:18:17+00:00"
         },
-        {
-            "name": "myclabs/deep-copy",
-            "version": "1.11.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/myclabs/DeepCopy.git",
-                "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
-                "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.1 || ^8.0"
-            },
-            "conflict": {
-                "doctrine/collections": "<1.6.8",
-                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
-            },
-            "require-dev": {
-                "doctrine/collections": "^1.6.8",
-                "doctrine/common": "^2.13.3 || ^3.2.2",
-                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/DeepCopy/deep_copy.php"
-                ],
-                "psr-4": {
-                    "DeepCopy\\": "src/DeepCopy/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "description": "Create deep copies (clones) of your objects",
-            "keywords": [
-                "clone",
-                "copy",
-                "duplicate",
-                "object",
-                "object graph"
-            ],
-            "support": {
-                "issues": "https://github.com/myclabs/DeepCopy/issues",
-                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
-            },
-            "funding": [
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-03-03T13:19:32+00:00"
-        },
         {
             "name": "nunomaduro/collision",
             "version": "v6.1.0",

+ 119 - 129
sistema-mantenimiento-back/routes/api.php

@@ -1,5 +1,8 @@
 <?php
 
+use App\Http\Controllers\DelayAnalysisController;
+use App\Http\Controllers\OrderReceptionController;
+use App\Http\Controllers\PartialDeliveriesController;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Route;
 
@@ -25,6 +28,7 @@ use App\Http\Controllers\LocateController;
 use App\Http\Controllers\CountriesController;
 use App\Http\Controllers\DocumentManagementController;
 use App\Http\Controllers\OrderDocumentsController;
+use App\Http\Controllers\IssueTrackingController;
 
 
 /*
@@ -171,139 +175,125 @@ Route::middleware(['jwt.auth'])->group(function(){
     Route::post('tabla-db/modifica-state',                    [TableController::class,       'updateStateTables']);
 
     // Module: GEAD
-    Route::get ('acquisition-management/acquisition/get-families-and-subfamilies/{line}',           [ArtitleController::class,        'getFamiliesAndSubfamilies']);
-    Route::post('acquisition-management/acquisition/register-family',                               [ArtitleController::class,        'registerFamily']);
-    Route::post('acquisition-management/acquisition/register-subfamily',                            [ArtitleController::class,        'registerSubfamily']);
-    Route::get ('acquisition-management/acquisition/get-units/{line}',                              [ArtitleController::class,        'getUnits']);
-    Route::get ('acquisition-management/acquisition/get-units-actives/{line}',                      [ArtitleController::class,        'getUnitsActives']);
-    Route::post('acquisition-management/acquisition/register-unit',                                 [ArtitleController::class,        'registerUnit']);
-    Route::get ('acquisition-management/acquisition/get-artitle/{line}',                            [ArtitleController::class,        'getArtitles']);
-    Route::get ('acquisition-management/acquisition/get-all-artitle/{line}',                        [ArtitleController::class,        'getAllArtitles']);
-    Route::post('acquisition-management/acquisition/get-artitle-by-provider',                       [ArtitleController::class,        'getArtitlesByProvider']);
-    Route::post('acquisition-management/acquisition/get-artitle-by-id',                             [ArtitleController::class,        'getArtitleById']);
-    Route::get ('acquisition-management/acquisition/get-artitle-by-information/{information}/{line}',[ArtitleController::class,        'getArtitleByInformation']);
-    Route::post('acquisition-management/acquisition/register-artitle',                              [ArtitleController::class,        'registerArtitles']);
-    Route::post('acquisition-management/acquisition/update-artitle',                                [ArtitleController::class,        'updateArtitles']);
-    Route::post('acquisition-management/acquisition/delete-artitle',                                [ArtitleController::class,        'deleteArtitle']);
-    Route::post('acquisition-management/acquisition/generate-artitles',                             [ArtitleController::class,        'generateArtitles']);
-    Route::post('acquisition-management/acquisition/create-request-line',                           [RequestLineController::class,    'createRequestLine']);
-    Route::get ('acquisition-management/acquisition/get-all-request-lines/{line}',                  [RequestLineController::class,    'getAllRequestLines']);
-    Route::get ('acquisition-management/acquisition/get-request-line/{encIdRequestLine}/{line}',    [RequestLineController::class,    'getRequestLine']);
-    Route::post('acquisition-management/acquisition/cancel-request-line',                           [RequestLineController::class,    'cancelRequestLine']);
-    Route::post('acquisition-management/acquisition/update-state-request-line',                     [RequestLineController::class,    'updateStatusRequestLine']);
-    Route::post('acquisition-management/acquisition/register-order',                                [OrderController::class,          'createOrder']);
-    Route::post('acquisition-management/acquisition/update-state-order',                            [OrderController::class,          'updateStateHistory']);
-    Route::post('acquisition-management/acquisition/reorder-artitles',                              [OrderController::class,          'reorderArtitles']);
-    Route::get ('acquisition-management/acquisition/get-orders/{line}',                             [OrderController::class,          'getOrders']);
-    Route::get ('acquisition-management/acquisition/get-order-by-number/{order}/{provider}/{line}', [OrderController::class,          'getOrderByNumber']);
-    Route::get ('acquisition-management/acquisition/get-documents-by-order/{order}/{line}',         [OrderDocumentsController::class, 'getDocumentByOrder']);
-    Route::post('acquisition-management/acquisition/register-document-order',                       [OrderDocumentsController::class, 'registerDocumentOrder']);
-    Route::post('acquisition-management/acquisition/update-document-order',                         [OrderDocumentsController::class, 'updateDocumentOrder']);
-    Route::post('acquisition-management/acquisition/delete-document-order',                         [OrderDocumentsController::class, 'deleteDocumentOrder']);
-
-
-    Route::get ('acquisition-management/provider/get-all-provider/{line}',                       [ProviderController::class, 'getAllProvider']);
-    Route::get ('acquisition-management/provider/get-provider-actives/{line}',                   [ProviderController::class, 'getProvidersActives']);
-    Route::get ('acquisition-management/provider/get-provider-by-number/{provider}/{line}',      [ProviderController::class, 'getProvidersByNumber']);
-    Route::post('acquisition-management/provider/register-provider',                             [ProviderController::class, 'registerProvider']);
-    Route::post('acquisition-management/provider/update-provider',                               [ProviderController::class, 'updateProvider']);
-    Route::post('acquisition-management/provider/delete-provider',                               [ProviderController::class, 'deleteProvider']);
-    Route::post('acquisition-management/provider/get-provider-by-artitle',                       [ProviderController::class, 'getProviderByArtitle']);
-
-    Route::get ('acquisition-management/dispatch/get-dispatch/{line}',                       [DispatchController::class, 'getDispatch']);
-    Route::get ('acquisition-management/dispatch/get-dispatch-active/{line}',                [DispatchController::class, 'getDispatchActive']);
-    Route::post('acquisition-management/dispatch/register-dispatch',                         [DispatchController::class, 'registerDispatch']);
-    Route::post('acquisition-management/dispatch/update-dispatch',                           [DispatchController::class, 'updateDispatch']);
-    Route::post('acquisition-management/dispatch/delete-dispatch',                           [DispatchController::class, 'deleteDispatch']);
+    Route::get ('acquisition-management/acquisition/get-families-and-subfamilies/{line}',                           [ArtitleController::class,              'getFamiliesAndSubfamilies']);
+    Route::post('acquisition-management/acquisition/register-family',                                               [ArtitleController::class,              'registerFamily']);
+    Route::post('acquisition-management/acquisition/register-subfamily',                                            [ArtitleController::class,              'registerSubfamily']);
+    Route::get ('acquisition-management/acquisition/get-units/{line}',                                              [ArtitleController::class,              'getUnits']);
+    Route::get ('acquisition-management/acquisition/get-units-actives/{line}',                                      [ArtitleController::class,              'getUnitsActives']);
+    Route::post('acquisition-management/acquisition/register-unit',                                                 [ArtitleController::class,              'registerUnit']);
+    Route::get ('acquisition-management/acquisition/get-artitle/{line}',                                            [ArtitleController::class,              'getArtitles']);
+    Route::get ('acquisition-management/acquisition/get-all-artitle/{line}',                                        [ArtitleController::class,              'getAllArtitles']);
+    Route::post('acquisition-management/acquisition/get-artitle-by-provider',                                       [ArtitleController::class,              'getArtitlesByProvider']);
+    Route::post('acquisition-management/acquisition/get-artitle-by-id',                                             [ArtitleController::class,              'getArtitleById']);
+    Route::get ('acquisition-management/acquisition/get-artitle-by-information/{information}/{line}',               [ArtitleController::class,              'getArtitleByInformation']);
+    Route::post('acquisition-management/acquisition/register-artitle',                                              [ArtitleController::class,              'registerArtitles']);
+    Route::post('acquisition-management/acquisition/update-artitle',                                                [ArtitleController::class,              'updateArtitles']);
+    Route::post('acquisition-management/acquisition/delete-artitle',                                                [ArtitleController::class,              'deleteArtitle']);
+    Route::post('acquisition-management/acquisition/generate-artitles',                                             [ArtitleController::class,              'generateArtitles']);
+    Route::post('acquisition-management/acquisition/create-request-line',                                           [RequestLineController::class,          'createRequestLine']);
+    Route::get ('acquisition-management/acquisition/get-all-request-lines/{line}',                                  [RequestLineController::class,          'getAllRequestLines']);
+    Route::get ('acquisition-management/acquisition/get-request-line/{encIdRequestLine}/{line}',                    [RequestLineController::class,          'getRequestLine']);
+    Route::post('acquisition-management/acquisition/cancel-request-line',                                           [RequestLineController::class,          'cancelRequestLine']);
+    Route::post('acquisition-management/acquisition/update-state-request-line',                                     [RequestLineController::class,          'updateStatusRequestLine']);
+    Route::post('acquisition-management/acquisition/register-order',                                                [OrderController::class,                'createOrder']);
+    Route::post('acquisition-management/acquisition/update-state-order',                                            [OrderController::class,                'updateStateHistory']);
+    Route::post('acquisition-management/acquisition/reorder-artitles',                                              [OrderController::class,                'reorderArtitles']);
+    Route::get ('acquisition-management/acquisition/get-orders/{line}',                                             [OrderController::class,                'getOrders']);
+    Route::get ('acquisition-management/acquisition/get-order-by-number/{order}/{provider}/{line}',                 [OrderController::class,                'getOrderByNumber']);
+    Route::get ('acquisition-management/acquisition/generate-sheet-acquisition/{encOrderNumber}/{user}/{line}',     [OrderController::class,                'generateSheetAcquisition']);
+    Route::get ('acquisition-management/acquisition/get-documents-by-order/{order}/{line}',                         [OrderDocumentsController::class,       'getDocumentByOrder']);
+    Route::post('acquisition-management/acquisition/register-document-order',                                       [OrderDocumentsController::class,       'registerDocumentOrder']);
+    Route::post('acquisition-management/acquisition/update-document-order',                                         [OrderDocumentsController::class,       'updateDocumentOrder']);
+    Route::post('acquisition-management/acquisition/delete-document-order',                                         [OrderDocumentsController::class,       'deleteDocumentOrder']);
+    Route::post('acquisition-management/acquisition/report-problem-order',                                          [IssueTrackingController::class,        'reportProblem']);
+    Route::get ('acquisition-management/dispatch/get-issue-tracking/{line}',                                        [IssueTrackingController::class,        'getIssueTracking']);
+    Route::post('acquisition-management/dispatch/resolution-issue-tracking',                                        [IssueTrackingController::class,        'resolutionIssueTracking']);
+    Route::get ('acquisition-management/dispatch/get-partial-deliveries/{line}',                                    [PartialDeliveriesController::class,    'getPartialDeliveries']);
+    Route::get ('acquisition-management/dispatch/get-order-reception/{line}',                                       [OrderReceptionController::class,       'getOrderReception']);
+    Route::get ('acquisition-management/dispatch/get-delay-analysis/{line}',                                        [DelayAnalysisController::class,        'getDelayAnalysis']);
+    Route::get ('acquisition-management/provider/get-all-provider/{line}',                                          [ProviderController::class,             'getAllProvider']);
+    Route::get ('acquisition-management/provider/get-provider-actives/{line}',                                      [ProviderController::class,             'getProvidersActives']);
+    Route::get ('acquisition-management/provider/get-provider-by-number/{provider}/{line}',                         [ProviderController::class,             'getProvidersByNumber']);
+    Route::post('acquisition-management/provider/register-provider',                                                [ProviderController::class,             'registerProvider']);
+    Route::post('acquisition-management/provider/update-provider',                                                  [ProviderController::class,             'updateProvider']);
+    Route::post('acquisition-management/provider/delete-provider',                                                  [ProviderController::class,             'deleteProvider']);
+    Route::post('acquisition-management/provider/get-provider-by-artitle',                                          [ProviderController::class,             'getProviderByArtitle']);
+    Route::get ('acquisition-management/dispatch/get-dispatch/{line}',                                              [DispatchController::class,             'getDispatch']);
+    Route::get ('acquisition-management/dispatch/get-dispatch-active/{line}',                                       [DispatchController::class,             'getDispatchActive']);
+    Route::post('acquisition-management/dispatch/register-dispatch',                                                [DispatchController::class,             'registerDispatch']);
+    Route::post('acquisition-management/dispatch/update-dispatch',                                                  [DispatchController::class,             'updateDispatch']);
+    Route::post('acquisition-management/dispatch/delete-dispatch',                                                  [DispatchController::class,             'deleteDispatch']);
 
     // Module: ANFA
-    Route::get ('failure-analysis/get-catalog-failure/{line}', [CatalogFailureController::class,  'getFailures']);
-    Route::post('failure-analysis/register-catalog-failure',   [CatalogFailureController::class,  'registerFailures']);
-    Route::post('failure-analysis/update-catalog-failure',     [CatalogFailureController::class,  'updateFailures']);
-    Route::post('failure-analysis/delete-catalog-failure',     [CatalogFailureController::class,  'deleteFailures']);
-    Route::get ('failure-analysis/get-failure/{line}',         [FailureController::class,         'getFault']);
-    Route::post('failure-analysis/get-failure-by-equipment',   [FailureController::class,         'getFaultByEquipment']);
-    Route::post('failure-analysis/register-failure',           [FailureController::class,         'registerFault']);
-    Route::post('failure-analysis/update-failure',             [FailureController::class,         'updateFault']);
-    Route::post('failure-analysis/delete-failure',             [FailureController::class,         'deleteFault']);
-    Route::get ('failure-analysis/get-catalog-measures/{line}',[CatalogMeasuresController::class, 'getMeasures']);
-    Route::post('failure-analysis/register-catalog-measures',  [CatalogMeasuresController::class, 'registerMeasures']);
-    Route::post('failure-analysis/update-catalog-measures',    [CatalogMeasuresController::class, 'updateMeasures']);
-    Route::post('failure-analysis/delete-catalog-measures',    [CatalogMeasuresController::class, 'deleteMeasures']);
-    Route::get ('failure-analysis/get-symptom/{line}',         [SymptomController::class,         'getSymptom']);
-    Route::post('failure-analysis/register-symptom',           [SymptomController::class,         'registerSymptom']);
-    Route::post('failure-analysis/update-symptom',             [SymptomController::class,         'updateSymptom']);
-    Route::post('failure-analysis/delete-symptom',             [SymptomController::class,         'deleteSymptom']);
+    Route::get ('failure-analysis/get-catalog-failure/{line}',                                                      [CatalogFailureController::class,  'getFailures']);
+    Route::post('failure-analysis/register-catalog-failure',                                                        [CatalogFailureController::class,  'registerFailures']);
+    Route::post('failure-analysis/update-catalog-failure',                                                          [CatalogFailureController::class,  'updateFailures']);
+    Route::post('failure-analysis/delete-catalog-failure',                                                          [CatalogFailureController::class,  'deleteFailures']);
+    Route::get ('failure-analysis/get-failure/{line}',                                                              [FailureController::class,         'getFault']);
+    Route::post('failure-analysis/get-failure-by-equipment',                                                        [FailureController::class,         'getFaultByEquipment']);
+    Route::post('failure-analysis/register-failure',                                                                [FailureController::class,         'registerFault']);
+    Route::post('failure-analysis/update-failure',                                                                  [FailureController::class,         'updateFault']);
+    Route::post('failure-analysis/delete-failure',                                                                  [FailureController::class,         'deleteFault']);
+    Route::get ('failure-analysis/get-catalog-measures/{line}',                                                     [CatalogMeasuresController::class, 'getMeasures']);
+    Route::post('failure-analysis/register-catalog-measures',                                                       [CatalogMeasuresController::class, 'registerMeasures']);
+    Route::post('failure-analysis/update-catalog-measures',                                                         [CatalogMeasuresController::class, 'updateMeasures']);
+    Route::post('failure-analysis/delete-catalog-measures',                                                         [CatalogMeasuresController::class, 'deleteMeasures']);
+    Route::get ('failure-analysis/get-symptom/{line}',                                                              [SymptomController::class,         'getSymptom']);
+    Route::post('failure-analysis/register-symptom',                                                                [SymptomController::class,         'registerSymptom']);
+    Route::post('failure-analysis/update-symptom',                                                                  [SymptomController::class,         'updateSymptom']);
+    Route::post('failure-analysis/delete-symptom',                                                                  [SymptomController::class,         'deleteSymptom']);
+    
+    // Module: GPRS
+    Route::get ('subcontract/consult/{line_number}',                                [SubcontractController::class,      'getConsultOfSubcontratists']);
+    Route::put ('subcontract/inactive-subcontratist/{id_subcontratist}',            [SubcontractController::class,      'updateToInactiveStatus']);
+    Route::put ('subcontract/active-subcontratist/{id_subcontratist}',              [SubcontractController::class,      'updateToActiveStatus']);
+    Route::get ('subcontract/subcontratists/{line_number}',                         [SubcontractController::class,      'getAllSubcontratists']);
+    Route::get ('subcontract/active-subcontratists/{line_number}',                  [SubcontractController::class,      'getActiveSubcontratists']);
+    Route::post('subcontract/',                                                     [SubcontractController::class,      'storeSubcontratist']);
+    Route::get ('subcontract/subcontratist/{id_subcontratist}/{line_number}',       [SubcontractController::class,      'getSubcontratistById']);
+    Route::put ('subcontract/{id_subcontratist}',                                   [SubcontractController::class,      'updateSubcontratist']);
+    Route::get ('subcontract/contracts/subcontratists/{line_number}',               [SubcontractController::class,      'getContractsOfEverySubcontratist']);
+    Route::get ('subcontract/contracts/history/{id_subcontratist}/{line_number}',   [SubcontractController::class,      'getContractsBySubcontratist']);
+    Route::get ('subcontract/countries/{line_number}',                              [SubcontractController::class,      'getCountries']);
+    Route::post('subcontract/downoload-info-excel',                                 [SubcontractController::class,      'downoloadSubcontractInfoOnExcel']);
+    Route::post('subcontract/downoload-info-pdf',                                   [SubcontractController::class,      'downoloadSubcontractInfoOnPdf']);
+    Route::post('employee/consult/{line_number}',                                   [EmployeeController::class,         'getConsultOfEmployees']);
+    Route::get ('employee/user-avaible/{id_employee}/{line_number}',                [EmployeeController::class,         'getAvaibleUsers']);
+    Route::get ('employee/last-documents/{id_employee}/{line_number}',              [EmployeeController::class,         'getLastDocumentsByEmployee']);
+    Route::get ('employee/documents/{id_employee}/{line_number}',                   [EmployeeController::class,         'getDocumentsByEmployee']);
+    Route::get ('employee/orders/{id_employee}/{line_number}',                      [EmployeeController::class,         'getInterventionsByEmployee']);
+    Route::put ('employee/inactive-employee/{id_employee}',                         [EmployeeController::class,         'updateToInactiveStatus']);
+    Route::put ('employee/active-employee/{id_employee}',                           [EmployeeController::class,         'updateToActiveStatus']);
+    Route::post('employee/',                                                        [EmployeeController::class,         'storeEmployee']);
+    Route::get ('employee/{id_employee}/{line_number}',                             [EmployeeController::class,         'getEmployeeById']);
+    Route::get ('employee/{line_number}',                                           [EmployeeController::class,         'getAllEmployees']);
+    Route::get ('employee/contracts/employees/{line_number}',                       [EmployeeController::class,         'getContractsOfEveryEmployee']);
+    Route::get ('employee/contracts/history/{id_employee}/{line_number}',           [EmployeeController::class,         'getDetailsOfContractsByEmployee']);
+    Route::post('employee/downoload-details-excel',                                 [EmployeeController::class,         'downoloadEmployeeInfoOnExcel']);
+    Route::post('employee/downoload-details-pdf',                                   [EmployeeController::class,         'downoloadEmployeeInfoOnPdf']);
+    Route::post('employee/{id_employee}',                                           [EmployeeController::class,         'updateEmployee']);                                                       
+    Route::get ('intervention/consult/{line_number}',                               [InterventionController::class,     'getConsultOfInterventions']);
+    Route::get ('intervention/detail/{id_intervention}/{line_number}',              [InterventionController::class,     'getDetailsOfInterventionsById']);
+    Route::get ('intervention/contract/consult/{line_number}',                      [InterventionController::class,     'getConsultOfContracts']);
+    Route::get ('intervention/contract/{id_intervention}/{line_number}',            [InterventionController::class,     'getContractById']);
+    Route::post('intervention/contract',                                            [InterventionController::class,     'storeContract']);
+    Route::get ('intervention/contract/{line_number}',                              [InterventionController::class,     'getAllContracts']);
+    Route::get ('workteam/{line_number}',                                           [WorkTeamController::class,         'getConsultOfWorkteams']);
+    Route::get ('workteam/active-teams/{line_number}',                              [WorkTeamController::class,         'getActiveWorkteams']);
+    Route::get ('workteam/{id_workteam}/{line_number}',                             [WorkTeamController::class,         'getWorkteamById']);
+    Route::get ('workteam/details/{id_workteam}/{line_number}',                     [WorkTeamController::class,         'getDetailsOfWorkteamById']);
+    Route::get ('workteam/workteam-members/{id_workteam}/{line_number}',            [WorkTeamController::class,         'getMembersOfWorkteamById']);
+    Route::put ('workteam/inactive-workteam/{id_workteam}',                         [WorkTeamController::class,         'updateToInactiveStatus']);
+    Route::put ('workteam/active-workteam/{id_workteam}',                           [WorkTeamController::class,         'updateToActiveStatus']);
+    Route::post('workteam/',                                                        [WorkTeamController::class,         'storeWorkteam']);
+    Route::put ('workteam/{id_workteam}',                                           [WorkTeamController::class,         'updateWorkteam']);
+    Route::get ('country/postal-code-data/{postal_code}/{line_number}',             [CountriesController::class,        'getDataByPostalCode']);
+    Route::get ('country/{line_number}',                                            [CountriesController::class,        'getCountries']);
+    Route::get ('country/suburb-by-postal-code/{postal_code}/{line_number}',        [CountriesController::class,        'getSuburbByPostalCode']);
 
     // Module: GEIN
-    Route::post('inventory-management/register-stock', [StockController::class, 'createArtitle']);
+    Route::post('inventory-management/register-stock',                                                              [StockController::class, 'createArtitle']);
 
     // Localidad
-    Route::get ('locate/get-locate-by-cp/{cp}', [LocateController::class, 'getLocateByCP']);
-
-    // Module: GPRS
-    Route::controller(SubcontractController::class)->prefix('/subcontract')->group(function () {
-        Route::get('/consult/{line_number}',                                'getConsultOfSubcontratists');
-        Route::put('/inactive-subcontratist/{id_subcontratist}',            'updateToInactiveStatus');
-        Route::put('/active-subcontratist/{id_subcontratist}',              'updateToActiveStatus');
-        Route::get('/subcontratists/{line_number}',                         'getAllSubcontratists');
-        Route::get('/active-subcontratists/{line_number}',                  'getActiveSubcontratists');
-        Route::post('/',                                                    'storeSubcontratist');
-        Route::get('/subcontratist/{id_subcontratist}/{line_number}',       'getSubcontratistById');
-        Route::put('/{id_subcontratist}',                                   'updateSubcontratist');
-        Route::get('/contracts/subcontratists/{line_number}',               'getContractsOfEverySubcontratist');
-        Route::get('/contracts/history/{id_subcontratist}/{line_number}',   'getContractsBySubcontratist');
-        Route::get('/countries/{line_number}',                              'getCountries');
-        Route::post('/downoload-info-excel',                                'downoloadSubcontractInfoOnExcel');
-        Route::post('/downoload-info-pdf',                                  'downoloadSubcontractInfoOnPdf');
-    });
-
-    Route::controller(EmployeeController::class)->prefix('/employee')->group(function () {
-        Route::get('/consult/{line_number}',                                'getConsultOfEmployees');
-        Route::get('/user-avaible/{id_employee}/{line_number}',             'getAvaibleUsers');
-        Route::get('/last-documents/{id_employee}/{line_number}',           'getLastDocumentsByEmployee');
-        Route::get('/documents/{id_employee}/{line_number}',                'getDocumentsByEmployee');
-        Route::get('/orders/{id_employee}/{line_number}',                   'getInterventionsByEmployee');
-        Route::put('/inactive-employee/{id_employee}',                      'updateToInactiveStatus');
-        Route::put('/active-employee/{id_employee}',                        'updateToActiveStatus');
-        Route::post('/',                                                    'storeEmployee');
-        Route::get('/{id_employee}/{line_number}',                          'getEmployeeById');
-        Route::get('/{line_number}',                                        'getAllEmployees');
-        Route::get('/contracts/employees/{line_number}',                    'getContractsOfEveryEmployee');
-        Route::get('/contracts/history/{id_employee}/{line_number}',        'getDetailsOfContractsByEmployee');
-        Route::post('/downoload-details-excel',                             'downoloadEmployeeInfoOnExcel');
-        Route::post('/downoload-details-pdf',                               'downoloadEmployeeInfoOnPdf');
-        Route::post('/{id_employee}',                                       'updateEmployee'); # Se cambia el metodo PUT a POST por problema en form-data con archivos
-    });
-
-    Route::controller(InterventionController::class)->prefix('/intervention')->group(function () {
-        Route::get('/consult/{line_number}',                                  'getConsultOfInterventions');
-        Route::get('/detail/{id_intervention}/{line_number}',                 'getDetailsOfInterventionsById');
-        Route::get('/contract/consult/{line_number}',                         'getConsultOfContracts');
-        Route::get('/contract/{id_intervention}/{line_number}',               'getContractById');
-        Route::post('/contract',                                              'storeContract');
-        Route::get('/contract/{line_number}',                                 'getAllContracts');
-    });
-
-    Route::controller(WorkTeamController::class)->prefix('/workteam')->group(function () {
-        Route::get('/{line_number}',                                          'getConsultOfWorkteams');
-        Route::get('/active-teams/{line_number}',                             'getActiveWorkteams');
-        Route::get('/{id_workteam}/{line_number}',                            'getWorkteamById');
-        Route::get('/details/{id_workteam}/{line_number}',                    'getDetailsOfWorkteamById');
-        Route::get('/workteam-members/{id_workteam}/{line_number}',           'getMembersOfWorkteamById');
-        Route::put('/inactive-workteam/{id_workteam}',                        'updateToInactiveStatus');
-        Route::put('/active-workteam/{id_workteam}',                          'updateToActiveStatus');
-        Route::post('/',                                                      'storeWorkteam');
-        Route::put('/{id_workteam}',                                          'updateWorkteam');
-    });
-
-    Route::controller(CountriesController::class)->prefix('/country')->group(function () {
-        Route::get('/postal-code-data/{postal_code}/{line_number}',          'getDataByPostalCode');
-        Route::get('/{line_number}',                                         'getCountries');
-        Route::get('/suburb-by-postal-code/{postal_code}/{line_number}',     'getSuburbByPostalCode');
-    });
-
-
-
-
+    Route::get ('locate/get-locate-by-cp/{cp}',                                                                     [LocateController::class, 'getLocateByCP']);
 });

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor