StockController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. /*
  3. Desarrollador: Ing. Jean Jairo Benitez Meza
  4. Ultima Modificación: 11/04/2023
  5. Módulo: Gestión de Inventario y/o Stock
  6. */
  7. namespace App\Http\Controllers;
  8. use App\Http\Controllers\Controller;
  9. use App\Http\Controllers\ResourcesController;
  10. use App\Http\Controllers\ResponseController;
  11. use App\Http\Controllers\EncryptionController;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Carbon;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Validator;
  16. class StockController extends Controller
  17. {
  18. private $responseController;
  19. private $encController;
  20. private $resourcesController;
  21. public function __construct(){
  22. $this->responseController = new ResponseController();
  23. $this->encController = new EncryptionController();
  24. $this->resourcesController = new ResourcesController();
  25. }
  26. // Crear Artículo en Stock
  27. public function createArtitle(Request $request) {
  28. $validator = Validator::make($request->all(), [
  29. 'CODIGO_ARTICULO' => 'required|string',
  30. 'ARTICULO' => 'required|string',
  31. 'MODELO' => 'required|string',
  32. 'CODIGO_MODELO' => 'required|string',
  33. 'CODIGO_BARRA' => 'required|integer',
  34. 'CANTIDAD' => 'required|integer',
  35. 'STOCK_MINIMO' => 'required|integer',
  36. 'STOCK_MAXIMO' => 'required|integer',
  37. 'REPARALE' => 'required|string',
  38. 'CONSUMIBLE' => 'required|string',
  39. 'FECHA_VENCIMIENTO' => 'required|string',
  40. 'ID_SUBCATEGORIA' => 'required|string',
  41. 'ID_UNIDAD' => 'required|string',
  42. 'PELIGROSO' => 'required|boolean',
  43. 'IMAGEN' => 'required|string',
  44. 'TASA_ROTACION' => 'required|double',
  45. 'TIPO_ADQUISICION' => 'required|string',
  46. 'PROVEEDOR' => 'required|string',
  47. 'NUMERO_LINEA' => 'required|integer',
  48. 'USUARIO' => 'required|string',
  49. ]);
  50. if ($validator->fails()) {
  51. return $this->responseController->makeResponse(
  52. true,
  53. "ERR_STOCK_REG000: Se encontraron uno o más errores.",
  54. $this->responseController->makeErrors($validator->errors()->messages()),
  55. 401
  56. );
  57. }
  58. $request = $request->all();
  59. // Se consulta si el código existe en la base de datos
  60. try {
  61. $existCode = DB::table('S002V01TSTOC')
  62. ->where('STOC_CODI', '=', $request['CODIGO_ARTICULO'])
  63. ->where('STOC_NULI', '=', $request['NUMERO_LINEA'])
  64. ->exists();
  65. } catch(\Exception $ex) {
  66. return $this->responseController->makeResponse(
  67. true,
  68. "ERR_STOCK_REG001: Ocurrió un error al consultar el código del artículo.",
  69. $request['CODIGO_ARTITULO'],
  70. 500
  71. );
  72. }
  73. // Se valida la respuesta de la consulta
  74. if ($existCode) {
  75. return $this->responseController->makeResponse(true,"ERR_STOCK_REG002: El código del artículo ya se encuentra registrado.");
  76. }
  77. $numberLine = $request['NUMERO_LINEA'];
  78. // Se crea y guarda la imagen
  79. $responseImage = $this->resourcesController->makeImage( $request['IMAGEN'], $request['MODELO'], 'jpeg', 'FO', $numberLine, 'GEIN' );
  80. // Se verifica que todo se encuentre en orden
  81. if ($responseImage['error']) {
  82. return $this->responseController->makeResponse( true, $responseImage['msg'], [], 500);
  83. }
  84. // Se obtiene el nombre de la imagen creada
  85. $nameImage = $responseImage['response'];
  86. // Se obtiene la fecha del día de hoy
  87. $currentDate = Carbon::now()->timezone('America/Mazatlan')->toDateTimeString();
  88. // Se obtiene el número de usuario
  89. $numberUser = $this->encController->decrypt($request['USUARIO']);
  90. // Se inicializa el objecto a insertar
  91. $objectInsert = [
  92. 'STOC_CODI' => $request['CODIGO_ARTICULO'],
  93. 'STOC_ARTI' => $request['ARTICULO'],
  94. 'STOC_MODE' => $request['MODELO'],
  95. 'STOC_COAR' => $request['CODIGO_MODELO'],
  96. 'STOC_COBA' => $request['CODIGO_BARRA'],
  97. 'STOC_CANT' => $request['CANTIDAD'],
  98. 'STOC_STMI' => $request['STOCK_MINIMO'],
  99. 'STOC_STMA' => $request['STOCK_MAXIMO'],
  100. 'STOC_REPA' => $request['REPARALE'],
  101. 'STOC_CONS' => $request['CONSUMIBLE'],
  102. 'STOC_FEVE' => $request['FECHA_VENCIMIENTO'],
  103. 'STOC_IDSU' => $request['ID_SUBCATEGORIA'],
  104. 'STOC_IDUN' => $request['ID_UNIDAD'],
  105. 'STOC_PELI' => $request['PELIGROSO'],
  106. 'STOC_IMAG' => $nameImage,
  107. 'STOC_TARO' => $request['TASA_ROTACION'],
  108. 'STOC_TIAD' => $request['TIPO_ADQUISICION'],
  109. 'STOC_PROV' => $request['PROVEEDOR'],
  110. 'STOC_NULI' => $numberLine,
  111. 'STOC_USRE' => $numberUser,
  112. 'STOC_FERE' => $currentDate,
  113. 'STOC_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  114. ];
  115. // Se realiza la inserción a la base de datos
  116. try {
  117. $responseInsert = DB::table('S002V01TSTOC')->insert($objectInsert);
  118. } catch (\Exception $ex){
  119. return $this->responseController->makeResponse(
  120. true,
  121. "ERR_STOCK_REG003: Ocurrió un error al momento de insertar los datos",
  122. [],
  123. 500
  124. );
  125. }
  126. // Se verifica que la inserción sea exitosa
  127. if ( $responseInsert ) {
  128. return $this->responseController->makeResponse(true,"ERR_STOCK_REG004: No se pudo insertar los datos",[],500);
  129. }
  130. return $this->responseController->makeResponse( false, 'ÉXITO: Registro Exitoso');
  131. }
  132. }