| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105 |
- <?php
- /*
- Desarrollador: Ing. Jean Jairo Benitez Meza
- Ultima Modificación: 27/04/2023
- Módulo: Gestión de Adquisiciones
- */
- namespace App\Http\Controllers;
- use App\Http\Controllers\ResponseController;
- use App\Http\Controllers\EncryptionController;
- use Illuminate\Http\Request;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Validator;
- use App\Http\Controllers\FunctionsController;
- class RequestLineController extends Controller
- {
- private $responseController;
- private $encController;
- private $documentManagementController;
- private $functionsController;
- private $resourcesController;
- private $processManagementController;
- public function __construct(){
- $this->responseController = new ResponseController();
- $this->encController = new EncryptionController();
- $this->documentManagementController = new DocumentManagementController();
- $this->functionsController = new FunctionsController();
- $this->resourcesController = new ResourcesController();
- $this->processManagementController = new ProcessManagementController();
- }
- /*
- [
- {
- "TABLA": "S002V01TLINE",
- "CAMPO_ESTADO": "LINE_ESTA",
- "CAMBIO_ESTADO": "En espera",
- "NUMERO_LINEA": "LINE_NULI",
- "FECHA_MODIFICA": "LINE_FEMO",
- "FECHA_REGISTRA": "LINE_FERE",
- "USUARIO_MODIFICA": "LINE_USMO",
- "USUARIO_REGISTRA": "LINE_USRE"
- }
- ]
- */
- // Se registran las líneas de solicitud
- public function createRequestLine(Request $request){
- $validator = Validator::make($request->all(), [
- 'LINE' => 'required|integer',
- 'USER' => 'required|string',
- 'PRODUCTS' => 'required|array',
- 'PURPOSE' => 'required',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "ERR_REQUESTLINE_REG000: Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USER'], $requestData['LINE']);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_REG001:'.$arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- $idOrderPreventive = null;
- if ($requestData['PURPOSE']['PROPOSITO'] == 'MANT-PREV') {
- $idOrderPreventive = $requestData['PURPOSE']['ID'];
- try {
- $validateExistsPreventive = DB::table('S002V01TOTPR')
- ->where('OTPR_NULI', '=', $requestData['LINE'])
- ->where('OTPR_IDOT', '=', $idOrderPreventive )
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG002: Ocurrió un error al validar la orden de mantenimiento preventivo.", $th->getMessage(), 500);
- }
- if (!$validateExistsPreventive) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG003: La orden de mantenimiento preventivo no existe", [], 500);
- }
- }
-
- $idOrderCorrective = null;
- if ($requestData['PURPOSE']['PROPOSITO'] == 'MANT-CORR') {
- $idOrderCorrective = $requestData['PURPOSE']['ID'];
- try {
- $validateExistsCorrective = DB::table('S002V01TOTCO')
- ->where('OTCO_NULI', '=', $requestData['LINE'])
- ->where('OTCO_IDOT', '=', $idOrderCorrective )
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG004: Ocurrió un error al validar la orden de mantenimiento correctivo.", $th->getMessage(), 500);
- }
- if (!$validateExistsCorrective) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG005: La orden de mantenimiento correctivo no existe", [], 500);
- }
- }
-
- $arrArtitles = array();
- $count = 0;
- foreach ($requestData['PRODUCTS'] as $keyProducts => $products) {
- if ($keyProducts === 0) {
- $arrArtitles[$count] = [
- "NUMERO_ARTICULO" => $products['NUMERO_ARTICULO'],
- "NUMERO_PROVEEDOR" => $products['NUMERO_PROVEEDOR'],
- "NUMERO_INFORMACION" => $products['NUMERO_INFORMACION'],
- "CANTIDAD" => 1,
- ];
- $count++;
- } else {
- $find = false;
- foreach ($arrArtitles as $key => $value) {
- if (
- $value['NUMERO_ARTICULO'] === $products['NUMERO_ARTICULO'] &&
- $value['NUMERO_PROVEEDOR'] === $products['NUMERO_PROVEEDOR'] &&
- $value['NUMERO_INFORMACION'] === $products['NUMERO_INFORMACION']
- ) {
- $arrArtitles[$key]['CANTIDAD']++;
- $find = true;
- }
- }
- if ($find === false) {
- $arrArtitles[$count] = [
- "NUMERO_ARTICULO" => $products['NUMERO_ARTICULO'],
- "NUMERO_PROVEEDOR" => $products['NUMERO_PROVEEDOR'],
- "NUMERO_INFORMACION" => $products['NUMERO_INFORMACION'],
- "CANTIDAD" => 1,
- ];
- $count++;
- }
- }
- }
- $arrToWorkflow = array();
- foreach ($arrArtitles as $articles) {
- try {
- $arrArticle = (array) DB::table('S002V01TARTI')
- ->where('ARTI_IDAR', '=', $articles['NUMERO_ARTICULO'])
- ->where('INAR_IDIN', '=', $articles['NUMERO_INFORMACION'])
- ->where('ARTI_NULI', '=', $requestData['LINE'])
- ->where('DEAR_NULI', '=', $requestData['LINE'])
- ->where('INAR_NULI', '=', $requestData['LINE'])
- ->where('ARTI_ESTA', '=', 'Activo')
- ->where('DEAR_ESTA', '=', 'Activo')
- ->where('INAR_ESTA', '=', 'Activo')
- ->join('S002V01TDEAR', 'DEAR_IDAR', '=', 'ARTI_IDAR')
- ->join('S002V01TINAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
- ->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
- ->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
- ->first([
- DB::raw('CONCAT(FAMI_NOFA, " (", FAMI_COFA, ")") AS FAMILIA'),
- DB::raw('CONCAT(SUBF_NOSU, " (", SUBF_COSU, ")") AS SUBFAMILIA'),
- 'INAR_MODE AS MODELO',
- 'INAR_CODI AS CODIGO_MODELO',
- DB::raw('CONCAT("$ ", INAR_PREC, " ", INAR_COMO) AS PRECIO'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG005: No se pudo obtener la información de los productos.", $th->getMessage(), 500);
- }
- $arrArticle['CANTIDAD'] = $articles['CANTIDAD'];
- $arrArticle['NUMERO_PROVEEDOR'] = $articles['NUMERO_PROVEEDOR'];
- $arrToWorkflow[] = $arrArticle;
- }
-
- $strToWorkflow = json_encode($arrToWorkflow);
- $encToWorkflow = $this->encController->encrypt($strToWorkflow);
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- $arrProviders = array_unique(array_column($requestData['PRODUCTS'], 'NUMERO_PROVEEDOR'));
- $arrInfoRegistro = array();
- foreach ($arrProviders as $provider) {
- try {
- $idRegisterLine = DB::table('S002V01TLINE')->insertGetId([
- 'LINE_NUPR' => $provider,
- 'LINE_OTPR' => $idOrderPreventive,
- 'LINE_OTCO' => $idOrderCorrective,
- 'LINE_NULI' => $requestData['LINE'],
- 'LINE_ESTA' => 'Workflow',
- 'LINE_USRE' => $user,
- 'LINE_FERE' => $currentDate,
- 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG006: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
- }
- if ($idRegisterLine == null || $idRegisterLine <= 0) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG007: Ocurrió un error al hacer la inserción en la base.", [], 500);
- }
- $arrInfoRegistro['S002V01TLINE'][] = [
- 'LINE_IDLI' => $idRegisterLine,
- ];
- $nuar = 0;
- foreach ($requestData['PRODUCTS'] as $products) {
- if ($products['NUMERO_PROVEEDOR'] === $provider) {
- try {
- $validateInsert = DB::table('S002V01TARSE')->insert([
- 'ARSE_IDAS' => $nuar,
- 'ARSE_NULI' => $requestData['LINE'],
- 'ARSE_IDLI' => $idRegisterLine,
- 'ARSE_IDAR' => $products['NUMERO_ARTICULO'],
- 'ARSE_NUPR' => $products['NUMERO_PROVEEDOR'],
- 'ARSE_IDIN' => $products['NUMERO_INFORMACION'],
- 'ARSE_USRE' => $user,
- 'ARSE_FERE' => $currentDate,
- 'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG008: Ocurrió un error al insertar los artículos en la base de datos.", $th->getMessage(), 500);
- }
- if (!$validateInsert) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG009: No se pudo insertar los datos en la base de datos.", [], 500);
- }
- $nuar = $nuar + 1;
- }
- }
- }
- $strInfoRegistro = json_encode($arrInfoRegistro);
- $encInfoRegistro = $this->encController->encrypt($strInfoRegistro);
- $arrResponseRequestWorkflow = $this->processManagementController->registerRequestWorkflow(1, $encToWorkflow, $encInfoRegistro, $user, $requestData['LINE']);
- if ($arrResponseRequestWorkflow['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, $arrResponseRequestWorkflow['msg'], $arrResponseRequestWorkflow['response'], 500);
- }
-
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Registro correcto");
- }
- public function getAllRequestLines($user, $line) {
- try {
- $arrRequestLines = DB::table('S002V01TLINE')
- ->where("LINE_NULI", "=", $line)
- ->where("LINE_ESTA", "!=", 'Workflow')
- ->where("LINE_ESTA", "!=", 'Workflow Rechazado')
- ->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
- ->get([
- 'LINE_IDLI AS ID_LINEA_SOLICITUD',
- 'LINE_NUPR AS NUMERO_PROVEEDOR',
- 'PROV_NOCO AS NOMBRE_COMERCIAL',
- 'LINE_OTPR AS ORDEN_TRABAJO_PREVENTIVO',
- 'LINE_OTCO AS ORDEN_TRABAJO_CORRECTIVO',
- 'LINE_ESTA AS ESTADO',
- 'LINE_USRE AS USUARIO_REGISTRA',
- 'LINE_FERE AS FECHA_REGISTRA',
- 'LINE_USMO AS USUARIO_MODIFICA',
- 'LINE_FEMO AS FECHA_MODIFICA',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
- }
- $arrRequestLines = json_decode(json_encode($arrRequestLines), true);
- $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrRequestLines, $line);
- if ($responseCheckLatestUpdate['error']) {
- return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
- }
- $arrRequestLines = $responseCheckLatestUpdate['response'];
- try {
- $arrOrders= DB::table('S002V01TORCO')
- ->where("ORCO_NULI", "=", $line)
- ->get([
- 'ORCO_NUOR AS NUMERO_ORDEN',
- 'ORCO_IDLI AS ID_LINEA_SOLICITUD',
- 'ORCO_IDDE AS ID_DESPACHO',
- 'ORCO_ESTA AS ESTADO',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
- }
- $arrOrders = json_decode(json_encode($arrOrders), true);
- foreach ($arrRequestLines as $keyRequest => $requestLine) {
- try {
- $getSelected = DB::table('S002V01TARSE')
- ->where('ARSE_IDLI', '=', $requestLine['ID_LINEA_SOLICITUD'])
- ->where('ARSE_NULI', '=', $line)
- ->where('INAR_NULI', '=', $line)
- ->where('DEAR_NULI', '=', $line)
- ->where('ARTI_NULI', '=', $line)
- ->where('FAMI_NULI', '=', $line)
- ->where('SUBF_NULI', '=', $line)
- ->where('UNID_NULI', '=', $line)
- ->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
- ->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
- ->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
- ->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
- ->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
- ->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
- ->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
- ->get([
- 'ARSE_IDAS AS ID_ARTICULO_SELECCIONADO',
- 'ARSE_NUPR AS NUMERO_PROVEEDOR',
- 'ARSE_ESTA AS ESTADO',
- 'INAR_IDIN AS NUMERO_INFORMACION',
- 'INAR_CODI AS CODIGO_INFORMACION',
- 'INAR_MODE AS MODELO_INFORMACION',
- 'CAMO_COMO AS CODIGO_MONEDA',
- 'CAMO_DESC AS MONEDA_DESCRIPCION',
- 'INAR_PREC AS PRECIO_UNITARIO',
- 'INAR_MOMI AS MONTO_MINIMO',
- 'INAR_CARA AS CARACTERISTICAS_INFORMACION',
- 'DEAR_IDDE AS NUMERO_DESCRIPCION',
- 'DEAR_IMAG AS IMAGENES',
- 'DEAR_DESC AS DESCRIPCION',
- 'DEAR_CARA AS CARACTERISTICAS',
- 'DEAR_COWE AS COMPRA_WEB',
- 'ARTI_IDAR AS NUMERO_ARTICULO',
- 'ARTI_CODI AS CODIGO',
- 'ARTI_NOMB AS ARTICULO',
- 'FAMI_COFA AS CODIGO_FAMILIA',
- 'FAMI_NOFA AS NOMBRE_FAMILIA',
- 'SUBF_COSU AS CODIGO_SUBFAMILIA',
- 'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
- 'UNID_IDUN AS ID_UNIDAD',
- 'UNID_NOMB AS NOMBRE_UNIDAD',
- 'UNID_ACRO AS ACRONIMO_UNIDAD',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
- }
- $arrSelected = json_decode(json_encode($getSelected), true);
- $index = 0;
- $arrArtitles = array();
- foreach ($arrSelected as $keyArtitle => $artitles) {
- if ($keyArtitle === 0) {
- $arrArtitles[$index] = $artitles;
- $arrArtitles[$index]['CANTIDAD'] = 1;
- } else {
- if (
- in_array($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'))
- ) {
- $indexArtitle = array_search($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'));
- $arrArtitles[$indexArtitle]['CANTIDAD'] = $arrArtitles[$indexArtitle]['CANTIDAD'] + 1;
- } else {
- $index = $index + 1;
- $arrArtitles[$index] = $artitles;
- $arrArtitles[$index]['CANTIDAD'] = 1;
- }
- }
- }
- foreach ($arrArtitles as $keySelected => $selected) {
- $arrImagen = json_decode($selected['IMAGENES']);
- $arrUrlImage = array();
- foreach ($arrImagen as $key => $imagen) {
- $responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
- if ($responseDocument['error']) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
- }
- $arrUrlImage[] = $responseDocument['response']['public_uri'];
- }
- $arrArtitles[$keySelected]['IMAGENES'] = $arrUrlImage;
- }
- foreach ($arrOrders as $order) {
- if ($requestLine['ID_LINEA_SOLICITUD'] == $order['ID_LINEA_SOLICITUD']) {
- $requestLine['NUMERO_ORDEN'] = $order['NUMERO_ORDEN'];
- }
- }
- if (!array_key_exists('LINE_NUOR', $requestLine)) {
- $requestLine['NUMERO_ORDEN'] = null;
- }
- $arrRequestLines[$keyRequest] = $requestLine;
- $arrRequestLines[$keyRequest]['SELECTED'] = $arrArtitles;
- }
- return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrRequestLines);
- }
- // Se obtiene una línea de solicitud en específico
- public function getRequestLine($encIdRequestLine, $user, $line){
- try {
- $idRequestLine = $this->encController->decrypt($encIdRequestLine);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_ORDER_GET000: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
- }
- try {
- $arrRequestLines = DB::table('S002V01TLINE')
- ->where("LINE_NULI", "=", $line)
- ->where("LINE_IDLI", "=", $idRequestLine)
- ->first([
- 'LINE_IDLI AS ID_LINEA_SOLICITUD',
- 'LINE_ESTA AS ESTADO',
- 'LINE_IDME AS METODO_PAGO',
- 'LINE_FERE AS FECHA_REGISTRA',
- 'LINE_FEMO AS FECHA_MODIFICA',
- 'LINE_USRE AS USUARIO_REGISTRA',
- 'LINE_USMO AS USUARIO_MODIFICA'
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_ORDER_GET001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
- }
- try {
- $arrProducts = DB::table('S002V01TARSE')
- ->where("ARSE_NULI", "=", $line)
- ->where('ARSE_IDLI', '=', $idRequestLine)
- ->where('PROV_ESTA', '=', 'Activo')
- ->join('S002V01TPROV', 'ARSE_NUPR', '=', 'PROV_NUPR')
- ->join('S002V01TINAR', 'ARSE_IDIN', '=', 'INAR_IDIN')
- ->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
- ->get([
- 'ARSE_IDAS AS NUMERO_ARTI_SELE',
- 'ARSE_IDAR AS NUMERO_ARTICULO',
- 'ARSE_NUPR AS NUMERO_PRODUCTO',
- 'INAR_MODE AS MODELO',
- 'INAR_CODI AS CODIGO',
- 'INAR_CARA AS CARACTERISTICAS',
- 'ARSE_CANT AS CANTIDAD',
- 'INAR_PREC AS PRECIO_UNITARIO',
- 'CAMO_COMO AS MONEDA',
- 'CAMO_DESC AS MONEDA_DESCRIPCION',
- // 'ARSE_PRTO AS PRECIO_TOTAL',
- 'ARSE_ESTA AS ESTADO',
- 'ARSE_USRE AS USUARIO_REGISTRA',
- 'ARSE_FERE AS FECHA_REGISTRA',
- 'ARSE_USMO AS USUARIO_MODIFICA',
- 'ARSE_FEMO AS FECHA_MODIFICA',
- 'PROV_NUPR AS NUMERO_PROVEEDOR',
- 'PROV_NOCO AS PROVEEDOR',
- 'PROV_ESTA AS ESTADO_PROVEEDOR'
- ]);
- foreach ($arrProducts as $productos) {
- if ($productos == 'Eliminado') {
- return $this->responseController->makeResponse(true, "ERR_ORDER_GET002: Existe un usuario en la solicitud que se encuentra eliminado", [], 500);
- }
- }
- $arrRequestLines->PRODUCTOS = $arrProducts;
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_ORDER_GET003: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
- }
- return $this->responseController->makeResponse(false, "ÉXITO", $arrRequestLines);
- }
- // Se cancalan la linea de solicitud de compra
- public function cancelRequestLine(Request $request){
- $validator = Validator::make($request->all(), [
- 'ID_LINEA_SOLICITUD' => 'required|string',
- 'NUMERO_PROVEEDOR' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- 'USUARIO' => 'required|string',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "ERR_REQUESTLINE_CAN000: Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN001:'.$arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- try {
- $requestData['ID_LINEA_SOLICITUD'] = $this->encController->decrypt($requestData['ID_LINEA_SOLICITUD']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN002: Ocurrió un error al desencriptar la línea de solicitud de compra.', $th->getMessage(), 500);
- }
- try {
- $requestData['NUMERO_PROVEEDOR'] = $this->encController->decrypt($requestData['NUMERO_PROVEEDOR']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN003: Ocurrió un error al desencriptar el número de proveedor.', $th->getMessage(), 500);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $validateExists = DB::table('S002V01TPROV')
- ->where('PROV_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->where('PROV_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('PROV_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN004: Ocurrió un error al verificar el número del proveedor.', $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN005: El número del proveedor no existe.', [], 500);
- }
- try {
- $validateExists = DB::table('S002V01TLINE')
- ->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN006: Ocurrió un error al verificar la línea de solicitud de compra.', $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN007: La linea de solicitud de compra no existe.', [], 500);
- }
- try {
- $validateUpdate = DB::table('S002V01TLINE')
- ->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->update([
- 'LINE_ESTA' => 'Cancelado',
- 'LINE_USMO' => $user,
- 'LINE_FEMO' => $currentDate,
- 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN008: Ocurrió un error al modificar la línea de solicitud de compra.', $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN009: No se pudo cancelar la solicitud de compra.', [], 500);
- }
- try {
- $validateUpdate = DB::table('S002V01TARSE')
- ->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->update([
- 'ARSE_ESTA' => 'Eliminado',
- 'ARSE_USMO' => $user,
- 'ARSE_FEMO' => $currentDate,
- 'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN010: Ocurrió un error al modificar la línea de solicitud de compra.', $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN011: No se pudo eliminar los artículos seleccionados.', [], 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Cancelación Exitosa");
- }
- public function deleteArtitleByRequestLine(Request $request) {
- $validator = Validator::make($request->all(), [
- 'USUARIO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- 'NUMERO_INFORMACION' => 'required|string',
- 'NUMERO_PROVEEDOR' => 'required|string',
- 'NUMERO_ARTICULO' => 'required|string',
- 'ID_LINEA_SOLICITUD' => 'required|string',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "ERR_REQUESTLINE_DEL000: Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, 'ERR_LEVEL_UPD004:'.$arrResponseCheckUser['msg'], [], 401);
- }
- $user = $arrResponseCheckUser['response'];
- try {
- $requestData['NUMERO_INFORMACION'] = $this->encController->decrypt($requestData['NUMERO_INFORMACION']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL002: Ocurrió un error al obtener el número de información.", $th->getMessage(), 500);
- }
- try {
- $requestData['ID_LINEA_SOLICITUD'] = $this->encController->decrypt($requestData['ID_LINEA_SOLICITUD']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL003: Ocurrió un error al obtener la línea de solicitud de compra.", $th->getMessage(), 500);
- }
- try {
- $requestData['NUMERO_PROVEEDOR'] = $this->encController->decrypt($requestData['NUMERO_PROVEEDOR']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL004: Ocurrió un error al obtener el número del proveedor.", $th->getMessage(), 500);
- }
- try {
- $requestData['NUMERO_ARTICULO'] = $this->encController->decrypt($requestData['NUMERO_ARTICULO']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL005: Ocurrió un error al obtener el número del artículo.", $th->getMessage(), 500);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $validateExists = DB::table('S002V01TLINE')
- ->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL006: Ocurrió un error al verificar si existe la línea de solicitud de comrpa.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL007: El número de línea de solicitud de compra no existe.", [], 500);
- }
-
- try {
- $validateExists = DB::table('S002V01TARTI')
- ->where('ARTI_IDAR', '=', $requestData['NUMERO_ARTICULO'])
- ->where('ARTI_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('ARTI_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL008: Ocurrió un error al verificar si existe el número del artículo.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL009: El número del artículo no existe.", [], 500);
- }
-
- try {
- $validateExists = DB::table('S002V01TPROV')
- ->where('PROV_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->where('PROV_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('PROV_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL010: Ocurrió un error al verificar si existe el número de proveedor.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL011: El número de proveedor no existe.", [], 500);
- }
-
- try {
- $validateExists = DB::table('S002V01TINAR')
- ->where('INAR_IDIN', '=', $requestData['NUMERO_INFORMACION'])
- ->where('INAR_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('INAR_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL012: Ocurrió un error al verificar si existe el numero de información del artículo.", $th->getMessage(), 500);
- }
- if (!$validateExists) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL013: El número de información del artículo no existe.", [], 500);
- }
-
- try {
- $existsSelected = DB::table('S002V01TARSE')
- ->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('ARSE_IDAR', '=', $requestData['NUMERO_ARTICULO'])
- ->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->where('ARSE_IDIN', '=', $requestData['NUMERO_INFORMACION'])
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL014: Ocurrió un error al modificar los artículos seleccionados.", $th->getMessage(), 500);
- }
- if (!$existsSelected) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL015: No existen artículos asociados a la información obtenida.", [], 500);
- }
-
- try {
- $validateUpdate = DB::table('S002V01TARSE')
- ->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('ARSE_IDAR', '=', $requestData['NUMERO_ARTICULO'])
- ->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->where('ARSE_IDIN', '=', $requestData['NUMERO_INFORMACION'])
- ->update([
- 'ARSE_ESTA' => 'Eliminado',
- 'ARSE_USMO' => $user,
- 'ARSE_FEMO' => $currentDate,
- 'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL016: Ocurrió un error al modificar los artículos seleccionados.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL017: Ocurrió un error al eliminar el artículo seleccionado.", [], 500);
- }
-
- try {
- $existsArtitles = DB::table('S002V01TARSE')
- ->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('ARSE_ESTA', '=', 'Activo')
- ->exists();
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL018: Ocurrió un error al verificar los artículos disponibles.", $th->getMessage(), 500);
- }
- if (!$existsArtitles) {
- try {
- $validateUpdate = DB::table('S002V01TLINE')
- ->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
- ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
- ->update([
- 'LINE_ESTA' => 'Cancelado',
- 'LINE_USMO' => $user,
- 'LINE_FEMO' => $currentDate,
- 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL019: Ocurrió un error al cancelar la línea de solicitud de compra.", $th->getMessage(), 500);
- }
- if (!$validateUpdate) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL020: No se pudo cancelar la línea de solicitud de compra.", [], 500);
- }
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Correcta");
- }
- public function updateStatusRequestLine(Request $request) {
- $validator = Validator::make($request->all(), [
- 'NUMERO_SOLICITUD' => 'required|string',
- 'ESTADO' => 'required|string',
- 'USUARIO' => 'required|string',
- 'METODO_PAGO' => 'required|string',
- 'NUMERO_LINEA' => 'required|integer',
- // 'COMENTARIOS' => 'string',
- ]);
- if ($validator->fails()) {
- return $this->responseController->makeResponse(
- true,
- "ERR_ORDER_UPST000: Se encontraron uno o más errores.",
- $this->responseController->makeErrors($validator->errors()->messages()),
- 401
- );
- }
- DB::beginTransaction();
- $requestData = $request->all();
- try {
- $user = $this->encController->decrypt($requestData['USUARIO']);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_ORDER_UPST001: Ocurrió un error al obtener el usuario.", [], 500);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $validateUpdate = DB::table('S002V01TLINE')
- ->where('LINE_IDLI', '=', $requestData['NUMERO_SOLICITUD'])
- ->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
- ->update([
- 'LINE_ESTA' => $requestData['ESTADO'],
- 'LINE_IDME' => $requestData['METODO_PAGO'],
- 'LINE_COME' => $requestData['COMENTARIOS'] === '' ? null : $requestData['COMENTARIOS'],
- 'LINE_USMO' => $user,
- 'LINE_FEMO' => $currentDate,
- 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_ORDER_UPST002: Ocurrió un error al modificar el estado.", $th->getMessage(), 500);
- }
- if ( !$validateUpdate ) {
- DB::rollBack();
- return $this->responseController->makeResponse(true, "ERR_ORDER_UPST003: No se pudo modificar el estado de la línea de solicitud.", [], 500);
- }
- DB::commit();
- return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Estado Exitoso");
- }
- public function getArtitlesByRequestLine($requestLine, $user, $line) {
- try {
- $requestLine = $this->encController->decrypt($requestLine);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY000: Ocurrió un error al obtener la línea de solicitud.", $th->getMessage(), 500);
- }
- $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
- if ($arrResponseCheckUser['error']) {
- return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_GETBY001:'.$arrResponseCheckUser['msg'], [], 401);
- }
- try {
- $getArtitleSelected = DB::table('S002V01TARSE')
- ->where('ARSE_IDLI', '=', $requestLine)
- ->where('ARSE_NULI', '=', $line)
- ->where('INAR_NULI', '=', $line)
- ->where('DEAR_NULI', '=', $line)
- ->where('ARTI_NULI', '=', $line)
- ->where('FAMI_NULI', '=', $line)
- ->where('SUBF_NULI', '=', $line)
- ->where('UNID_NULI', '=', $line)
- ->where('ARSE_ESTA', '=', 'Activo')
- ->where('INAR_ESTA', '=', 'Activo')
- ->where('DEAR_ESTA', '=', 'Activo')
- ->where('ARTI_ESTA', '=', 'Activo')
- ->where('FAMI_ESTA', '=', 'Activo')
- ->where('SUBF_ESTA', '=', 'Activo')
- ->where('UNID_ESTA', '=', 'Activo')
- ->join('S002V01TINAR', 'INAR_IDIN', '=', 'ARSE_IDIN')
- ->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
- ->join('S002V01TARTI', 'ARTI_IDAR', '=', 'DEAR_IDAR')
- ->join('S002V01TFAMI', 'FAMI_COFA', '=', 'ARTI_COFA')
- ->join('S002V01TSUBF', 'SUBF_COSU', '=', 'ARTI_COSU')
- ->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN')
- ->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
- ->get([
- 'ARTI_IDAR AS NUMERO_ARTICULO',
- 'DEAR_IDDE AS NUMERO_DESCRIPCION',
- 'DEAR_NUPR AS NUMERO_PROVEEDOR',
- 'DEAR_IMAG AS IMAGENES',
- 'ARTI_NOMB AS ARTICULO',
- 'INAR_CARA AS CARACTERISTICAS',
- 'INAR_CODI AS CODIGO',
- 'INAR_MODE AS MODELO',
- 'CAMO_COMO AS MONEDA',
- 'CAMO_DESC AS MONEDA_DESCRIPCION',
- 'INAR_MOMI AS MONTO_MINIMO',
- 'INAR_IDIN AS NUMERO_INFORMACION',
- 'INAR_PREC AS PRECIO',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY002: Ocurrió un error al obtener la información.", $th->getMessage(), 500);
- }
- $arrArtitleSelected = json_decode(json_encode($getArtitleSelected), true);
- $index = 0;
- $arrArtitles = array();
- foreach ($arrArtitleSelected as $keyArtitle => $artitles) {
- if ($keyArtitle === 0) {
- $arrArtitles[$index] = $artitles;
- $arrArtitles[$index]['CANTIDAD'] = 1;
- } else {
- if (
- in_array($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'))
- ) {
- $indexArtitle = array_search($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'));
- $arrArtitles[$indexArtitle]['CANTIDAD'] = $arrArtitles[$indexArtitle]['CANTIDAD'] + 1;
- } else {
- $index = $index + 1;
- $arrArtitles[$index] = $artitles;
- $arrArtitles[$index]['CANTIDAD'] = 1;
- }
- }
- }
- $arrArtitleSelected = $arrArtitles;
- foreach ($arrArtitleSelected as $keyArtitleSelected => $artitleSelected) {
- $arrImage = json_decode($artitleSelected['IMAGENES']);
- $arrUrlImage = array();
- foreach ($arrImage as $key => $encImage) {
- $responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($encImage, $user, $line);
- if ($responseDocument['error']) {
- return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
- }
- $arrUrlImage[] = $responseDocument['response']['public_uri'];
- }
- $artitleSelected['IMAGENES'] = $arrUrlImage;
- $arrArtitleSelected[$keyArtitleSelected] = $artitleSelected;
- }
- return $this->responseController->makeResponse(false, "ÉXITO", $arrArtitleSelected);
- }
- public function checkItemsWorkOrder ($resources, $idOrder, $user, $line) {
- foreach ($resources as $resource) {
-
- if ($resource['REQ'] !== '-') {
- goto next;
- }
- $id = $this->encController->decrypt($resource['REQ']);
- if (is_null($id)) {
- return $this->responseController->makeResponse(true, 'El ID de la herramienta o refacción no está encriptado correctamente.', [], 500);
- }
- try {
- $amountStock = DB::table('S002V01TSTAR')
- ->where([
- ['STAR_IDIS', '=', $id],
- ['STAR_NULI', '=', $line],
- ['STAR_ESTA', '=', 'Activo'],
- ])
- ->count();
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del stock.', $th->getMessage(), 500);
- }
- $amountRequest = intval($resource['REQ']);
- if ($amountRequest > $amountStock) {
- goto next;
- }
- $adquisitionAmount = $amountRequest - $amountStock;
- try {
- $adquisition = (array) DB::table('S002V01TINST')
- ->where([
- ['INST_IDIS', '=', $id],
- ['INST_NULI', '=', $line],
- ['INST_ESTA', '=', 'Activo'],
- ])
- ->join('S002V01TINAR', 'INAR_CODI', '=', 'INST_COMO')
- ->join('S002V01TARTI', 'ARTI_IDAR', '=', 'INST_ARTI')
- ->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
- ->first([
- 'ARTI_IDAR',
- 'DEAR_NUPR',
- 'INAR_IDIN',
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información de la adquisición.', $th->getMessage(), 500);
- }
- if (is_null($adquisition) || empty($adquisition)) {
- return $this->responseController->makeResponse(true, 'No se pudo obtener la información de la adquisición.', [], 500);
- }
- $now = $this->functionsController->now();
- $currentDate = $now->toDateTimeString();
- try {
- $idLine = DB::table('S002V01TLINE')->insertGetId([
- 'LINE_NUPR' => $adquisition['DEAR_NUPR'],
- 'LINE_OTPR' => null,
- 'LINE_OTCO' => $idOrder,
- 'LINE_NULI' => $line,
- 'LINE_ESTA' => 'En OC',
- 'LINE_USRE' => $user,
- 'LINE_FERE' => $currentDate,
- 'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar la línea de solicitud.', $th->getMessage(), 500);
- }
- if (is_null($idLine) || $idLine < 1) {
- return $this->responseController->makeResponse(true, 'No se pudo registrar la línea de solicitud.', [], 500);
- }
- for ($i=1; $i <= $adquisitionAmount; $i++) {
- try {
- $validateInsert = DB::table('S002V01TARSE')->insert([
- 'ARSE_IDAS' => $i,
- 'ARSE_NULI' => $line,
- 'ARSE_IDLI' => $idLine,
- 'ARSE_IDAR' => $adquisition['ARTI_IDAR'],
- 'ARSE_NUPR' => $adquisition['DEAR_NUPR'],
- 'ARSE_IDIN' => $adquisition['INAR_IDIN'],
- 'ARSE_USRE' => $user,
- 'ARSE_FERE' => $currentDate,
- 'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar los artículos en la línea de solicitud.', $th->getMessage(), 500);
- }
- if (is_null($validateInsert) || !$validateInsert) {
- return $this->responseController->makeResponse(true, 'No se pudo registrar los artículos en la línea de solicitud.', [], 500);
- }
- }
- $typeOrder = rand(0, 1) === 0 ? 'ASC' : 'DESC';
- try {
- $dispatch = (array) DB::table('S002V01TDESP')
- ->where([
- ['DESP_NULI', '=', $line],
- ['DESP_ESTA', '=', 'Activo'],
- ])
- ->orderBy('DESP_IDDE', $typeOrder)
- ->first([
- 'DESP_IDDE'
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del despacho.', [], 500);
- }
- if (is_null($dispatch) || empty($dispatch)) {
- return $this->responseController->makeResponse(true, 'No se pudo obtener la información del despacho.', [], 500);
- }
- try {
- $idOrder = DB::table('S002V01TORCO')->insertGetId([
- 'ORCO_NULI' => $line,
- 'ORCO_IDLI' => $idLine,
- 'ORCO_IDDE' => $dispatch['DESP_IDDE'],
- 'ORCO_USRE' => $user,
- 'ORCO_FERE' => $currentDate,
- 'ORCO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar la orden de compra.', $th->getMessage(), 500);
- }
- if (is_null($idOrder) || $idOrder < 1) {
- return $this->responseController->makeResponse(true, 'No se pudo registrar la línea de solicitud.', [], 500);
- }
- try {
- $validateInsert = DB::table('S002V01THIOR')->insert([
- 'HIOR_NULI' => $idLine,
- 'HIOR_NUOR' => $idOrder,
- 'HIOR_POEN' => 10,
- 'HIOR_USRE' => $user,
- 'HIOR_FERE' => $currentDate,
- 'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
- ]);
- } catch (\Throwable $th) {
- return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar el historial de la orden de compra.', $th->getMessage(), 500);
- }
- if (is_null($validateInsert) || !$validateInsert) {
- return $this->responseController->makeResponse(true, 'No se pudo registrar el historial de la orden de compra.', [], 500);
- }
-
- next:
- }
- }
- }
|