public function getModificacion($id) { $deposito = Auth::user()->deposito; $modification = Modification::where('id', $id)->where('deposito', $deposito)->first(['id', 'movimiento', 'naturaleza', 'original_documento', 'original_tercero', 'updated_tercero', 'updated_documento']); if (!$modification) { abort('404'); } else { //Obtiene el movimento. if ($modification->naturaleza == 'entrada') { $documentoId = Entrada::where('id', $modification->movimiento)->value('documento'); //Obtiene el documento asociado al movimiento. $documento = Documento::where('id', $documentoId)->first(['tipo', 'id']); //Campos a consultar $select = ["entradas.codigo", "entradas.id", "documentos.abreviatura", "documentos.id as documentoId", "documentos.nombre as concepto", "documentos.naturaleza as type", DB::raw('DATE_FORMAT(entradas.created_at, "%d/%m/%Y") as fecha')]; //Consulta base para la entrada $query = DB::table('entradas')->where('entradas.id', $modification->movimiento)->join('documentos', 'entradas.documento', '=', 'documentos.id')->select($select); /** *Une table para buscar el nombre del tercero, segun el *tipo del documento de la entrada y lo selecciona. */ switch ($documento->tipo) { case 'servicio': $query->join('departamentos', 'entradas.tercero', '=', 'departamentos.id')->addSelect('departamentos.nombre as tercero'); break; case 'proveedor': $query->join('provedores', 'entradas.tercero', '=', 'provedores.id')->addSelect('provedores.nombre as tercero'); break; case 'deposito': $query->join('depositos', 'entradas.tercero', '=', 'depositos.id')->addSelect('depositos.nombre as tercero'); break; case 'interno': $query->join('depositos', 'entradas.tercero', '=', 'depositos.id')->addSelect('depositos.nombre as tercero'); break; } //Realiza la consulta $movimiento = $query->first(); } else { $documentoId = Salida::where('id', $modification->movimiento)->value('documento'); //Obtiene el documento asociado al movimiento. $documento = Documento::where('id', $documentoId)->first(['tipo', 'id']); //Campos a consultar $select = ["salidas.codigo", "salidas.id", "documentos.abreviatura", "documentos.id as documentoId", "documentos.nombre as concepto", "documentos.naturaleza as type", DB::raw('DATE_FORMAT(salidas.created_at, "%d/%m/%Y") as fecha')]; //Consulta base para la salidas $query = DB::table('salidas')->where('salidas.id', $modification->movimiento)->join('documentos', 'salidas.documento', '=', 'documentos.id')->select($select); /** *Une table para buscar el nombre del tercero, segun el *tipo del documento de la salida y lo selecciona. */ switch ($documento->tipo) { case 'servicio': $query->join('departamentos', 'salidas.tercero', '=', 'departamentos.id')->addSelect('departamentos.nombre as tercero'); break; case 'proveedor': $query->join('provedores', 'salidas.tercero', '=', 'provedores.id')->addSelect('provedores.nombre as tercero'); break; case 'deposito': $query->join('depositos', 'salidas.tercero', '=', 'depositos.id')->addSelect('depositos.nombre as tercero'); break; case 'interno': $query->join('depositos', 'salidas.tercero', '=', 'depositos.id')->addSelect('depositos.nombre as tercero'); break; } //Realiza la consulta $movimiento = $query->first(); } } //Obtiene el nombre de el documento original $original_documento = Documento::where('id', $modification->original_documento)->first(['nombre', 'id', 'tipo']); //Obtiene el nombre de el documento modificado, si ha sido modificado if ($modification->updated_documento) { $updated_documento = Documento::where('id', $modification->updated_documento)->first(['nombre', 'id', 'tipo']); } else { $updated_documento = null; } //Obtiene el nombre del tercero original switch ($original_documento->tipo) { case 'servicio': $original_tercero = Departamento::where('id', $modification->original_tercero)->value('nombre'); break; case 'proveedor': $original_tercero = Provedore::where('id', $modification->original_tercero)->value('nombre'); break; case 'deposito': $original_tercero = Deposito::where('id', $modification->original_tercero)->value('nombre'); break; case 'interno': $original_tercero = Deposito::where('id', $modification->original_tercero)->value('nombre'); break; } //Obtiene el nombre del tercero modificado, si ha sido modificado if ($modification->updated_tercero) { if ($modification->updated_documento) { $tipo = $updated_documento->tipo; } else { $tipo = $original_documento->tipo; } switch ($tipo) { case 'servicio': $updated_tercero = Departamento::where('id', $modification->updated_tercero)->value('nombre'); break; case 'proveedor': $updated_tercero = Provedore::where('id', $modification->updated_tercero)->value('nombre'); break; case 'deposito': $updated_tercero = Deposito::where('id', $modification->updated_tercero)->value('nombre'); break; case 'interno': $updated_tercero = Deposito::where('id', $modification->updated_tercero)->value('nombre'); break; } } else { $updated_tercero = null; } $original_documento = $original_documento->nombre; if ($updated_documento) { $updated_documento = $updated_documento->nombre; } return Response()->json(['movimiento' => $movimiento, 'modificacion' => ['original_documento' => $original_documento, 'updated_documento' => $updated_documento, 'original_tercero' => $original_tercero, 'updated_tercero' => $updated_tercero]]); }