OrderController.php 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. <?php
  2. /*
  3. Desarrollador: Ing. Jean Jairo Benitez Meza
  4. Ultima Modificación: 11/04/2023
  5. Módulo: Gestión de Adquisiciones
  6. */
  7. namespace App\Http\Controllers;
  8. use App\Http\Controllers\Controller;
  9. use App\Http\Controllers\ResponseController;
  10. use App\Http\Controllers\EncryptionController;
  11. use App\Http\Controllers\ResourcesController;
  12. use App\Http\Controllers\FunctionsController;
  13. use App\Http\Controllers\DocumentManagementController;
  14. use Illuminate\Http\Request;
  15. use Illuminate\Support\Carbon;
  16. use Illuminate\Support\Facades\DB;
  17. use Illuminate\Support\Facades\Validator;
  18. use Illuminate\Database\Query\JoinClause;
  19. use Illuminate\Support\Facades\Storage;
  20. use \Mpdf\Mpdf as PDF;
  21. class OrderController extends Controller {
  22. private $responseController;
  23. private $encController;
  24. private $resourcesController;
  25. private $functionsController;
  26. private $documentManagementController;
  27. public function __construct(){
  28. $this->responseController = new ResponseController();
  29. $this->encController = new EncryptionController();
  30. $this->resourcesController = new ResourcesController();
  31. $this->functionsController = new FunctionsController();
  32. $this->arrUrlImage = new FunctionsController();
  33. $this->documentManagementController = new DocumentManagementController();
  34. }
  35. public function getOrders($user, $line) {
  36. try {
  37. $arrOrders = DB::table('S002V01TORCO')
  38. ->where('ORCO_NULI', '=', $line)
  39. ->where('DESP_NULI', '=', $line)
  40. ->where('PROV_NULI', '=', $line)
  41. ->where('LINE_NULI', '=', $line)
  42. ->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
  43. ->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
  44. ->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
  45. ->get([
  46. 'ORCO_NUOR', // Número de Orden
  47. 'LINE_IDLI', // Identificador de línea de solicitud de compra
  48. 'PROV_NUPR', // Número de Proveedor
  49. 'PROV_NOCO', // Nombre Comercial del Proveedor
  50. 'DESP_IDDE', // Número de Despacho
  51. 'DESP_NODE', // Nombre del Despacho
  52. 'DESP_NOMB', // Nombre del Despacho
  53. 'ORCO_ESTA', // Estado
  54. 'ORCO_USRE', // Usuario Registra
  55. 'ORCO_FERE', // Fecha Registra
  56. 'ORCO_USMO', // Usuario Modifica
  57. 'ORCO_FEMO', // Fecha Modifica
  58. ]);
  59. } catch ( \Throwable $th ) {
  60. return $this->responseController->makeResponse(true, "ERR_ORDER_GET000: Ocurrió un error al momento de obtener las órdenes de compra.", $th->getMessage(), 500);
  61. }
  62. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrders);
  63. }
  64. public function createOrder(Request $request){
  65. $validator = Validator::make($request->all(), [
  66. 'NUMERO_LINEA' => 'required|string',
  67. 'NUMERO_SOLICITUD' => 'required|string',
  68. 'DESPACHO' => 'required|integer',
  69. 'USUARIO' => 'required|string',
  70. ]);
  71. if ($validator->fails()) {
  72. return $this->responseController->makeResponse(
  73. true,
  74. "ERR_ORDER_REG000: Se encontraron uno o más errores.",
  75. $this->responseController->makeErrors($validator->errors()->messages()),
  76. 401
  77. );
  78. }
  79. DB::beginTransaction();
  80. $requestData = $request->all();
  81. try {
  82. $user = $this->encController->decrypt($requestData['USUARIO']);
  83. } catch (\Throwable $th) {
  84. DB::rollBack();
  85. return $this->responseController->makeResponse(true, "ERR_ORDER_REG001: Ocurrió un error al obtener el usuario.", [], 500);
  86. }
  87. $now = $this->functionsController->now();
  88. $currentDate = $now->toDateTimeString();
  89. try {
  90. $idOrder = DB::table('S002V01TORCO')->insertGetId([
  91. 'ORCO_NULI' => $requestData['NUMERO_LINEA'],
  92. 'ORCO_IDLI' => $requestData['NUMERO_SOLICITUD'],
  93. 'ORCO_IDDE' => $requestData['DESPACHO'],
  94. 'ORCO_USRE' => $user,
  95. 'ORCO_FERE' => $currentDate,
  96. 'ORCO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  97. ]);
  98. } catch (\Throwable $th) {
  99. DB::rollBack();
  100. return $this->responseController->makeResponse(true, "ERR_ORDER_REG002: Ocurrió un error al registrar la orden de compra.", $th->getMessage(), 500);
  101. }
  102. if (!$idOrder) {
  103. DB::rollBack();
  104. return $this->responseController->makeResponse(true, "ERR_ORDER_REG003: No se pudo registrar la orden de compra.", [], 401);
  105. }
  106. try {
  107. $validateUpdate = DB::table('S002V01TLINE')
  108. ->where('LINE_IDLI', '=', $requestData['NUMERO_SOLICITUD'])
  109. ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
  110. ->update([
  111. 'LINE_ESTA' => 'En OC',
  112. 'LINE_USMO' => $user,
  113. 'LINE_FEMO' => $currentDate,
  114. 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  115. ]);
  116. } catch (\Throwable $th) {
  117. DB::rollBack();
  118. return $this->responseController->makeResponse(true, "ERR_ORDER_REG004: Ocurrió un error al modificar la línea de solitud de compra.", $th->getMessage(), 500);
  119. }
  120. if (!$validateUpdate) {
  121. DB::rollBack();
  122. return $this->responseController->makeResponse(true, "ERR_ORDER_REG005: No se pudo modificar la línea de solicitud de compra.", [], 401);
  123. }
  124. try {
  125. $valdiateInsert = DB::table('S002V01THIOR')
  126. ->insert([
  127. 'HIOR_NULI' => $requestData['NUMERO_LINEA'],
  128. 'HIOR_NUOR' => $idOrder,
  129. 'HIOR_POEN' => 10,
  130. 'HIOR_USRE' => $user,
  131. 'HIOR_FERE' => $currentDate,
  132. 'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  133. ]);
  134. } catch (\Throwable $th) {
  135. DB::rollBack();
  136. return $this->responseController->makeResponse(true, "ERR_ORDER_REG006: Ocurrió un error al insertar el registro en el historial.", $th->getMessage(), 500);
  137. }
  138. if (!$valdiateInsert) {
  139. DB::rollBack();
  140. return $this->responseController->makeResponse(true, "ERR_ORDER_REG007: No se pudo insertar el registro en el HISTORIAL.", [], 401);
  141. }
  142. DB::commit();
  143. return $this->responseController->makeResponse(false, "ÉXITO: Generación de Órdenes Exitosas");
  144. }
  145. public function getOrderByNumber($order, $provider, $user, $line){
  146. try {
  147. $order = $this->encController->decrypt($order);
  148. } catch (\Throwable $th) {
  149. DB::rollBack();
  150. return $this->responseController->makeResponse(true, "ERR_ORDER_GET000: Ocurrió un error al obtener el usuario.", [], 500);
  151. }
  152. try {
  153. $provider = $this->encController->decrypt($provider);
  154. } catch (\Throwable $th) {
  155. DB::rollBack();
  156. return $this->responseController->makeResponse(true, "ERR_ORDER_GET001: Ocurrió un error al obtener el usuario.", [], 500);
  157. }
  158. try {
  159. $getOrders = (array) DB::table('S002V01TORCO')
  160. ->where('ORCO_NUOR', '=', $order)
  161. ->where('ORCO_NULI', '=', $line)
  162. ->where('DESP_NULI', '=', $line)
  163. ->where('LINE_NULI', '=', $line)
  164. ->where('PROV_NULI', '=', $line)
  165. ->where('LINE_ESTA', '!=', 'Cancelado')
  166. ->where('DESP_ESTA', '=', 'Activo')
  167. ->where('PROV_ESTA', '=', 'Activo')
  168. ->join('S002V01TLINE', 'ORCO_IDLI', '=', 'LINE_IDLI')
  169. ->join('S002V01TDESP', 'ORCO_IDDE', '=', 'DESP_IDDE')
  170. ->join('S002V01TPROV', 'LINE_NUPR', '=', 'PROV_NUPR')
  171. ->first([
  172. 'ORCO_NUOR',
  173. 'ORCO_ESTA',
  174. 'ORCO_USRE',
  175. 'ORCO_FERE',
  176. 'ORCO_USMO',
  177. 'ORCO_FEMO',
  178. 'ORCO_FEAR',
  179. 'LINE_IDLI',
  180. // 'LINE_NUPR',
  181. 'LINE_OTPR',
  182. 'LINE_OTCO',
  183. 'DESP_IDDE',
  184. 'DESP_NODE',
  185. 'DESP_NOMB',
  186. 'DESP_APPA',
  187. 'DESP_APMA',
  188. 'DESP_LADA',
  189. 'DESP_TELE',
  190. 'DESP_CORR',
  191. 'DESP_CALL',
  192. 'DESP_NUEX',
  193. 'DESP_NUIN',
  194. 'DESP_COPO',
  195. 'DESP_LOCA',
  196. 'DESP_COLO',
  197. 'DESP_MUNI',
  198. 'DESP_ENTI',
  199. 'DESP_PAIS',
  200. 'DESP_COME',
  201. 'PROV_NUPR',
  202. 'PROV_NOCO',
  203. 'PROV_NOMB',
  204. 'PROV_APPA',
  205. 'PROV_APMA',
  206. 'PROV_CORR',
  207. 'PROV_LAD1',
  208. 'PROV_TEL1',
  209. 'PROV_LAD2',
  210. 'PROV_TEL2',
  211. 'PROV_XRFC',
  212. 'PROV_XTAX',
  213. 'PROV_CRFI',
  214. 'PROV_TIPO',
  215. 'PROV_TICO',
  216. 'PROV_SIWE',
  217. 'PROV_MEPA',
  218. 'PROV_CALL',
  219. 'PROV_NUEX',
  220. 'PROV_NUIN',
  221. 'PROV_COPO',
  222. 'PROV_COLO',
  223. 'PROV_MUNI',
  224. 'PROV_LOCA',
  225. 'PROV_ENTI',
  226. 'PROV_PAIS',
  227. ]);
  228. } catch ( \Throwable $th ) {
  229. return $this->responseController->makeResponse( true, "ERR_ORDER_GET002: Ocurrió un error al momento de obtener las órdenes de compra.", $th->getMessage(), 500);
  230. }
  231. if ( empty($getOrders) || is_null($getOrders) ) {
  232. return $this->responseController->makeResponse( true, "ERR_ORDER_GET003: No se pudo obtener los datos de las órdenes de compra", [], 500);
  233. }
  234. try {
  235. $getArtitles = DB::table('S002V01TARSE')
  236. ->where('ARSE_IDLI', '=', $getOrders['LINE_IDLI'])
  237. ->where('ARSE_ESTA', '=', 'Activo')
  238. ->where('ARSE_NULI', '=', $line)
  239. ->where('ARTI_ESTA', '=', 'Activo')
  240. ->where('ARTI_NULI', '=', $line)
  241. ->where('FAMI_ESTA', '=', 'Activo')
  242. ->where('FAMI_NULI', '=', $line)
  243. ->where('SUBF_ESTA', '=', 'Activo')
  244. ->where('SUBF_NULI', '=', $line)
  245. ->where('DEAR_ESTA', '=', 'Activo')
  246. ->where('DEAR_NULI', '=', $line)
  247. ->where('INAR_ESTA', '=', 'Activo')
  248. ->where('INAR_NULI', '=', $line)
  249. ->where('UNID_ESTA', '=', 'Activo')
  250. ->where('UNID_NULI', '=', $line)
  251. ->join('S002V01TARTI', 'ARSE_IDAR', '=', 'ARTI_IDAR')
  252. ->join('S002V01TINAR', 'ARSE_IDIN', '=', 'INAR_IDIN')
  253. ->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
  254. ->join('S002V01TFAMI', 'ARTI_IDFA', '=', 'FAMI_IDFA')
  255. ->join('S002V01TSUBF', 'ARTI_IDSU', '=', 'SUBF_IDSU')
  256. ->join('S002V01TUNID', 'DEAR_IDUN', '=', 'UNID_IDUN')
  257. ->get([
  258. 'ARSE_IDAS',
  259. 'ARSE_CANT',
  260. 'ARSE_PRTO',
  261. 'FAMI_IDFA',
  262. 'FAMI_NOMB',
  263. 'SUBF_IDSU',
  264. 'SUBF_NOMB',
  265. 'ARTI_IDAR',
  266. 'ARTI_CODI',
  267. 'ARTI_NOMB',
  268. 'DEAR_IDDE',
  269. 'DEAR_IMAG',
  270. 'DEAR_DESC',
  271. 'DEAR_CARA',
  272. 'DEAR_COWE',
  273. 'INAR_IDIN',
  274. 'INAR_CODI',
  275. 'INAR_MODE',
  276. 'INAR_COMO',
  277. 'INAR_PREC',
  278. 'INAR_MOMI',
  279. 'INAR_CARA',
  280. 'UNID_IDUN',
  281. 'UNID_NOMB',
  282. 'UNID_ACRO',
  283. ]);
  284. $arrArtitles = json_decode(json_encode($getArtitles), true);
  285. } catch (\Throwable $th) {
  286. return $this->responseController->makeResponse( true, "ERR_ORDER_GET004: Ocurrió un error al momento de obtener los artículos de las órdenes de compra.", $th->getMessage(), 500);
  287. }
  288. if (empty($arrArtitles) || is_null($arrArtitles)) {
  289. return $this->responseController->makeResponse( true, "ERR_ORDER_GET005: No se pudo obtener los artículos de las órdenes de compra.", [], 500);
  290. }
  291. foreach ($arrArtitles as $keyArtitles => $artitles) {
  292. $arrImageArtitle = json_decode($artitles['DEAR_IMAG']);
  293. $arrUrlImage = array();
  294. foreach ($arrImageArtitle as $key => $imagen) {
  295. $responseDocument = $this->documentManagementController->getPublicDocumentURL($imagen, $user, $line);
  296. $arrResponseDocument = json_decode($responseDocument->original, true);
  297. if ($arrResponseDocument['error']) {
  298. return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
  299. }
  300. $arrUrlImage[] = $arrResponseDocument['response']['public_uri'];
  301. }
  302. $arrArtitles[$keyArtitles]['DEAR_IMAG'] = $arrUrlImage;
  303. }
  304. try {
  305. $getHistoryOrder = DB::table('S002V01THIOR')
  306. ->where('HIOR_NUOR', '=', $order)
  307. ->where('HIOR_NULI', '=', $line)
  308. ->get([
  309. 'HIOR_IDHO',
  310. 'HIOR_ESOR',
  311. 'HIOR_DESC',
  312. 'HIOR_EVID',
  313. 'HIOR_POEN',
  314. 'HIOR_USRE',
  315. 'HIOR_FERE',
  316. 'HIOR_USMO',
  317. 'HIOR_FEMO',
  318. ]);
  319. $arrHistoryOrder = json_decode(json_encode($getHistoryOrder), true);
  320. } catch (\Throwable $th) {
  321. return $this->responseController->makeResponse( true, "ERR_ORDER_GET006: Ocurrió un error al momento de obtener el historial de la orden de compra.", $th->getMessage(), 500);
  322. }
  323. if (empty($arrHistoryOrder) || is_null($arrHistoryOrder)) {
  324. return $this->responseController->makeResponse( true, "ERR_ORDER_GET007: No se pudo obtener el historial de la orden de compra.", [], 500);
  325. }
  326. foreach ($arrHistoryOrder as $keyHistoryOrder => $historyOrder) {
  327. if ( !is_null($historyOrder['HIOR_EVID']) ) {
  328. $arrEvidence = json_decode($historyOrder['HIOR_EVID']);
  329. $arrUrlImage = array();
  330. foreach ($arrEvidence as $key => $imagen) {
  331. $responseDocument = $this->documentManagementController->getPublicDocumentURL($imagen, $user, $line);
  332. $arrResponseDocument = json_decode($responseDocument->original, true);
  333. if ($arrResponseDocument['error']) {
  334. return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
  335. }
  336. $arrUrlImage[] = $arrResponseDocument['response']['public_uri'];
  337. }
  338. $historyOrder['HIOR_EVID'] = $arrUrlImage;
  339. }
  340. $arrHistoryOrder[$keyHistoryOrder] = $historyOrder;
  341. }
  342. $getOrders['ARTI'] = $arrArtitles;
  343. $getOrders['HIST'] = $arrHistoryOrder;
  344. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getOrders);
  345. }
  346. public function getLastSateOrder($order, $user, $line) {
  347. try {
  348. $arrOrderState = (array) DB::table('S002V01THIOR')
  349. ->where('HIOR_NUOR', '=', $order)
  350. ->where('HIOR_NULI', '=', $line)
  351. ->where('HIOR_ESTA', '=', 'Activo')
  352. ->orderBy('HIOR_FEAR', 'DESC')
  353. ->first([
  354. 'HIOR_IDHO',
  355. 'HIOR_NULI',
  356. 'HIOR_NUOR',
  357. 'HIOR_ESOR',
  358. 'HIOR_DESC',
  359. 'HIOR_EVID',
  360. 'HIOR_POEN',
  361. 'HIOR_ESTA',
  362. 'HIOR_USRE',
  363. 'HIOR_FERE',
  364. 'HIOR_USMO',
  365. 'HIOR_FEMO',
  366. 'HIOR_FEAR',
  367. ]);
  368. } catch (\Throwable $th) {
  369. return $this->responseController->makeResponse(true, "ERR_ORDER_GETHISTORY000: Ocurrió un error al obtener el historial de las órdenes de compra", [], 500);
  370. }
  371. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrderState);
  372. }
  373. public function updateStateHistory(Request $request) {
  374. $validator = Validator::make($request->all(), [
  375. 'ESTADO' => 'required|string',
  376. 'DESCRIPCION' => 'required|string',
  377. 'EVIDENCIA' => 'required|array',
  378. 'PORCENTAJE' => 'required|string',
  379. 'NUMERO_ORDEN' => 'required|string',
  380. 'USUARIO' => 'required|string',
  381. 'NUMERO_LINEA' => 'required|string',
  382. ]);
  383. if ($validator->fails()) {
  384. return $this->responseController->makeResponse(
  385. true,
  386. "ERR_ORDERSTATE_REG000: Se encontraron uno o más errores.",
  387. $this->responseController->makeErrors($validator->errors()->messages()),
  388. 401
  389. );
  390. }
  391. DB::beginTransaction();
  392. $requestData = $request->all();
  393. try {
  394. $user = $this->encController->decrypt($requestData['USUARIO']);
  395. } catch (\Throwable $th) {
  396. DB::rollBack();
  397. return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG001: Ocurrió un error al obtener el usuario.", [], 500);
  398. }
  399. $arrCodeEvidence = array();
  400. foreach ($requestData['EVIDENCIA'] as $keyEvidence => $evidence) {
  401. $idFile = $this->encController->decrypt($evidence);
  402. $tempFile = DB::table('S002V01TARTE')->where([
  403. ['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
  404. ['ARTE_IDAR', '=', $idFile],
  405. ])->first();
  406. if(is_null($tempFile)){
  407. return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG002: El archivo consultado no está registrado', [], 404);
  408. }else if($tempFile->ARTE_ESTA == 'Eliminado'){
  409. return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG003: El archivo consultado está eliminado', [], 404);
  410. }
  411. $fileResponse = $this->documentManagementController->moveFinalFile(
  412. intval($requestData['NUMERO_LINEA']),
  413. 'GEAD',
  414. 'FO',
  415. $tempFile,
  416. $user,
  417. );
  418. if(!$fileResponse[0]){
  419. return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG004: '.$fileResponse[1], [], 400);
  420. }
  421. $arrCodeEvidence[] = $this->encController->encrypt($fileResponse[1]);
  422. }
  423. $jsonEvidence = json_encode($arrCodeEvidence);
  424. $now = $this->functionsController->now();
  425. $currentDate = $now->toDateTimeString();
  426. $arrInsert = [
  427. 'HIOR_NUOR' => $requestData['NUMERO_ORDEN'],
  428. 'HIOR_ESOR' => $requestData['ESTADO'],
  429. 'HIOR_DESC' => $requestData['DESCRIPCION'],
  430. 'HIOR_EVID' => $jsonEvidence,
  431. 'HIOR_POEN' => $requestData['PORCENTAJE'],
  432. 'HIOR_NULI' => $requestData['NUMERO_LINEA'],
  433. 'HIOR_USRE' => $user,
  434. 'HIOR_FERE' => $currentDate,
  435. 'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
  436. ];
  437. try {
  438. $validateInsert = DB::table('S002V01THIOR')->insert($arrInsert);
  439. } catch (\Throwable $th) {
  440. DB::rollBack();
  441. return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG005: Ocurrió un error al momento de insertar los datos.", [], 500);
  442. }
  443. if ( !$validateInsert ) {
  444. DB::rollBack();
  445. return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG006: No se pudo insertar los datos a la tabla.", [], 500);
  446. }
  447. try {
  448. $validateUpdate = DB::table('S002V01TORCO')
  449. ->where('ORCO_NUOR', '=', $requestData['NUMERO_ORDEN'])
  450. ->where('ORCO_NULI', '=', $requestData['NUMERO_LINEA'])
  451. ->update([
  452. 'ORCO_ESTA' => $requestData['ESTADO'],
  453. 'ORCO_USMO' => $user,
  454. 'ORCO_FEMO' => $currentDate,
  455. ]);
  456. } catch (\Throwable $th) {
  457. DB::rollBack();
  458. return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG007: Ocurrió un error al momento de modificar los datos.", [], 500);
  459. }
  460. if ( !$validateUpdate ) {
  461. DB::rollBack();
  462. return $this->responseController->makeRespÑonse(true, "ERR_ORDERSTATE_REG008: No se pudo modificar los datos a la tabla.", [], 500);
  463. }
  464. DB::commit();
  465. return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Estado Exitoso");
  466. }
  467. public function reorderArtitles(Request $request) {
  468. $validator = Validator::make($request->all(), [
  469. 'ORDEN' => 'required|string',
  470. 'DESCRIPCION' => 'required|string',
  471. 'USUARIO' => 'required|string',
  472. 'NUMERO_LINEA' => 'required|string',
  473. ]);
  474. if ($validator->fails()) {
  475. return $this->responseController->makeResponse(
  476. true,
  477. "ERR_REORDER_REG000: Se encontraron uno o más errores.",
  478. $this->responseController->makeErrors($validator->errors()->messages()),
  479. 401
  480. );
  481. }
  482. DB::beginTransaction();
  483. $requestData = $request->all();
  484. try {
  485. $user = $this->encController->decrypt($requestData['USUARIO']);
  486. } catch (\Throwable $th) {
  487. DB::rollBack();
  488. return $this->responseController->makeResponse(true, "ERR_REORDER_REG001: Ocurrió un error al obtener el usuario.", [], 500);
  489. }
  490. try {
  491. $order = $this->encController->decrypt($requestData['ORDEN']);
  492. } catch (\Throwable $th) {
  493. DB::rollBack();
  494. return $this->responseController->makeResponse(true, "ERR_REORDER_REG002: Ocurrió un error al obtener el número de orden.", [], 500);
  495. }
  496. $now = $this->functionsController->now();
  497. $currentDate = $now->toDateTimeString();
  498. try {
  499. $idRegisterLine = DB::table('S002V01TLINE')->insertGetId([
  500. // 'LINE_DESC' => $request['DESCRIPCION'],
  501. 'LINE_NULI' => $request['NUMERO_LINEA'],
  502. 'LINE_USRE' => $user,
  503. 'LINE_FERE' => $currentDate,
  504. 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  505. ]);
  506. } catch (\Throwable $th) {
  507. DB::rollBack();
  508. return $this->responseController->makeResponse(true, "ERR_REORDER_REG003: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
  509. }
  510. if ( !$idRegisterLine ) {
  511. DB::rollBack();
  512. return $this->responseController->makeResponse(true, "ERR_REORDER_REG004: Ocurrió un error al hacer la inserción en la base.", [], 500);
  513. }
  514. try {
  515. $arrArtitles = DB::table('S002V01TORCO')
  516. ->where('ORCO_NUOR', '=', $order)
  517. ->join('S002V01TARSE', function (JoinClause $join) {
  518. $join->on('ARSE_IDLI', '=', 'ORCO_IDLI')
  519. ->on('ARSE_NUPR', '=', 'ORCO_NUPR');
  520. })
  521. ->get([
  522. 'ARSE_IDAR', // Identificador del artículo
  523. 'ARSE_NUPR', // Número del proveedor
  524. 'ARSE_IDIN', // Identificador de la información del artículo
  525. 'ARSE_CANT', // Cantidad
  526. 'ARSE_PRTO', // Precio total
  527. ]);
  528. } catch (\Throwable $th) {
  529. DB::rollBack();
  530. return $this->responseController->makeResponse(true, "ERR_REORDER_REG005: No se pudo obtener la información de la orden.", $th->getMessage(), 500);
  531. }
  532. if ( $arrArtitles->isEmpty() ) {
  533. DB::rollBack();
  534. return $this->responseController->makeResponse(true, "ERR_REORDER_REG006: La orden no tiene artículos.", [], 500);
  535. }
  536. foreach ($arrArtitles as $keyArtitle => $artitle) {
  537. try {
  538. $validateInsert = DB::table('S002V01TARSE')->insert([
  539. 'ARSE_IDAS' => $keyArtitle + 1,
  540. 'ARSE_IDLI' => $idRegisterLine,
  541. 'ARSE_IDAR' => $artitle->ARSE_IDAR,
  542. 'ARSE_NUPR' => $artitle->ARSE_NUPR,
  543. 'ARSE_IDIN' => $artitle->ARSE_IDIN,
  544. 'ARSE_CANT' => $artitle->ARSE_CANT,
  545. 'ARSE_PRTO' => $artitle->ARSE_PRTO,
  546. 'ARSE_NULI' => $request['NUMERO_LINEA'],
  547. 'ARSE_USRE' => $user,
  548. 'ARSE_FERE' => $currentDate,
  549. 'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
  550. ]);
  551. } catch (\Throwable $th) {
  552. DB::rollBack();
  553. return $this->responseController->makeResponse(true, "ERR_REORDER_REG007: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
  554. }
  555. if ( !$validateInsert ) {
  556. DB::rollBack();
  557. return $this->responseController->makeResponse(true, "ERR_REORDER_REG008: Ocurrió un error al hacer la inserción en la base.", [], 500);
  558. }
  559. }
  560. DB::commit();
  561. return $this->responseController->makeResponse(false, "ÉXITO: Artículos Reordenados Exitosamente");
  562. }
  563. public function generateSheetAcquisition($encOrderNumber, $user, $line) {
  564. }
  565. }