OrderReceptionController.php 62 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\ResponseController;
  4. use App\Http\Controllers\EncryptionController;
  5. use App\Http\Controllers\ResourcesController;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Carbon;
  8. use Illuminate\Support\Facades\DB;
  9. use Illuminate\Support\Facades\Validator;
  10. use Illuminate\Support\Facades\Storage;
  11. use Illuminate\Http\File;
  12. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  13. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  14. use App\Http\Controllers\FunctionsController;
  15. use Dompdf\Dompdf;
  16. class OrderReceptionController extends Controller
  17. {
  18. private $responseController;
  19. private $encController;
  20. private $resourcesController;
  21. private $functionsController;
  22. private $documentManagementController;
  23. public function __construct(){
  24. $this->responseController = new ResponseController();
  25. $this->encController = new EncryptionController();
  26. $this->resourcesController = new ResourcesController();
  27. $this->functionsController = new FunctionsController();
  28. $this->documentManagementController = new DocumentManagementController();
  29. }
  30. public function getOrderReception($user, $line) {
  31. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  32. if ($arrResponseCheckUser['error']) {
  33. DB::rollBack();
  34. return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
  35. }
  36. try {
  37. $getOrderReception = DB::table('S002V01TORCO')
  38. ->where('ORCO_NULI', '=', $line)
  39. ->where('DESP_NULI', '=', $line)
  40. ->where('DESP_ESTA', '=', 'Activo')
  41. ->where('ORCO_ESTA', '=', 'Recibido')
  42. ->orWhere('ORCO_ESTA', '=', 'Facturado')
  43. ->orWhere('ORCO_ESTA', '=', 'Devuelto')
  44. ->join('S002V01TDESP','DESP_IDDE', '=', 'ORCO_IDDE')
  45. ->join('S002V01TLINE','LINE_IDLI', '=', 'ORCO_IDLI')
  46. ->join('S002V01TPROV','PROV_NUPR', '=', 'LINE_NUPR')
  47. ->get([
  48. 'ORCO_NUOR AS NUMERO_ORDEN',
  49. 'ORCO_ESTA AS ESTADO',
  50. 'ORCO_USRE AS USUARIO_REGISTRA',
  51. 'ORCO_FERE AS FECHA_REGISTRA',
  52. 'ORCO_USMO AS USUARIO_MODIFICA',
  53. 'ORCO_FEMO AS FECHA_MODIFICA',
  54. 'LINE_IDLI AS NUMERO_SOLICITUD_COMPRA',
  55. 'PROV_NUPR AS NUMERO_PROVEEDOR',
  56. 'PROV_NOCO AS NOMBRE_COMERCIAL',
  57. 'DESP_IDDE AS ID_DESPACHO',
  58. 'DESP_NODE AS NOMBRE_DESPACHO',
  59. ]);
  60. $arrOrderReception = json_decode(json_encode($getOrderReception), true);
  61. } catch (\Throwable $th) {
  62. return $this->responseController->makeResponse(true, "ERR_ORDER_RECEPTION_GET000: Ocurrió un error al obtener los datos.", $th->getMessage(), 500);
  63. }
  64. $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrOrderReception, $line);
  65. if ($responseCheckLatestUpdate['error']) {
  66. return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
  67. }
  68. $arrOrderReception = $responseCheckLatestUpdate['response'];
  69. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrderReception);
  70. }
  71. public function getListArtitleReception($orderNumber, $user, $line) {
  72. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  73. if ($arrResponseCheckUser['error']) {
  74. return $this->responseController->makeResponse(true, 'ERR_RECEPTION_GET001:'.$arrResponseCheckUser['msg'], [], 401);
  75. }
  76. try {
  77. $orderNumber = $this->encController->decrypt($orderNumber);
  78. } catch (\Throwable $th) {
  79. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET002: Ocurrió un error el número de la orden de compra.", $th->getMessage(), 500);
  80. }
  81. try {
  82. $arrOrder = (array) DB::table('S002V01TORCO')
  83. ->where('ORCO_NUOR', '=', $orderNumber)
  84. ->where('ORCO_NULI', '=', $line)
  85. ->where('ORCO_ESTA', '=', 'Recibido')
  86. ->orWhere('ORCO_ESTA', '=', 'Facturado')
  87. ->first([
  88. 'ORCO_IDDE',
  89. 'ORCO_IDLI',
  90. ]);
  91. } catch (\Throwable $th) {
  92. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET003: Ocurrió un error al obtener los datos de la orden de compra.", $th->getMessage(), 500);
  93. }
  94. if (empty($arrOrder)) {
  95. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET004: No se pudo encontrar la información de la orden de compra. ", [], 500);
  96. }
  97. try {
  98. $arrListOrder = DB::table('S002V01TARSE')
  99. ->where('ARSE_IDLI', '=', $arrOrder['ORCO_IDLI'])
  100. ->where('ARSE_ESTA', '=', 'Activo')
  101. ->where('ARTI_ESTA', '=', 'Activo')
  102. ->where('FAMI_ESTA', '=', 'Activo')
  103. ->where('SUBF_ESTA', '=', 'Activo')
  104. ->where('DEAR_ESTA', '=', 'Activo')
  105. ->where('INAR_ESTA', '=', 'Activo')
  106. ->where('UNID_ESTA', '=', 'Activo')
  107. ->where('ARSE_NULI', '=', $line)
  108. ->where('ARTI_NULI', '=', $line)
  109. ->where('FAMI_NULI', '=', $line)
  110. ->where('SUBF_NULI', '=', $line)
  111. ->where('DEAR_NULI', '=', $line)
  112. ->where('INAR_NULI', '=', $line)
  113. ->where('UNID_NULI', '=', $line)
  114. ->join('S002V01TARTI','ARTI_IDAR','=','ARSE_IDAR')
  115. ->join('S002V01TFAMI','ARTI_COFA','=','FAMI_COFA')
  116. ->join('S002V01TSUBF','ARTI_COSU','=','SUBF_COSU')
  117. ->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
  118. ->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
  119. ->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
  120. ->get([
  121. 'FAMI_COFA AS CODIGO_FAMILIA',
  122. 'FAMI_NOFA AS NOMBRE_FAMILIA',
  123. 'SUBF_COSU AS CODIGO_SUBFAMILIA',
  124. 'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
  125. 'ARTI_IDAR AS ID_ARTICULO',
  126. 'ARTI_CODI AS CODIGO_ARTICULO',
  127. 'ARTI_NOMB AS NOMBRE_ARTICULO',
  128. 'DEAR_IDDE AS ID_DESCRIPCION',
  129. 'DEAR_IMAG AS IMAGENES',
  130. 'DEAR_DESC AS DESCRIPCION',
  131. 'DEAR_CARA AS CARACTERISTICAS',
  132. 'DEAR_COWE AS COMPRA_WEB',
  133. 'INAR_IDIN AS ID_INFORMACION',
  134. 'INAR_CODI AS CODIGO_INFORMACION',
  135. 'INAR_MODE AS MODELO_INFORMACION',
  136. 'INAR_COMO AS CODIGO_MONEDA',
  137. 'INAR_PREC AS PRECIO_UNITARIO',
  138. 'INAR_MOMI AS MONTO_MINIMO',
  139. 'INAR_CARA AS CARACTERISTICAS_INFORMACION',
  140. ]);
  141. } catch (\Throwable $th) {
  142. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET005: Ocurrió un error al obtener los datos de los artículos", $th->getMessage(), 500);
  143. }
  144. try {
  145. foreach ($arrListOrder as $listOrder) {
  146. $arrImagen = json_decode($listOrder->IMAGENES);
  147. $arrUrlImage = array();
  148. foreach ($arrImagen as $key => $imagen) {
  149. $arrResponse = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
  150. if ($arrResponse['error']) {
  151. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET006: Ocurrió un error al obtener la URL de la imágen.", $arrResponse['msg'], 500);
  152. }
  153. $arrUrlImage[] = $arrResponse['response']['public_uri'];
  154. }
  155. $listOrder->IMAGENES = $arrUrlImage;
  156. }
  157. } catch (\Throwable $th) {
  158. return $this->responseController->makeResponse(
  159. true,
  160. "ERR_RECEPTION_GET007: Ocurrió un error al obtener las imangenes de los artículos 1.",
  161. $th->getMessage(),
  162. 500
  163. );
  164. }
  165. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrListOrder);
  166. }
  167. public function getInformartionArtitleToEquipment($orderNumber, $idInformation, $user, $line) {
  168. try {
  169. $orderNumber = $this->encController->decrypt($orderNumber);
  170. } catch (\Throwable $th) {
  171. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET000: Ocurrió un error al obtener el número de orden de compra.", $th->getMessage(), 500);
  172. }
  173. try {
  174. $idInformation = $this->encController->decrypt($idInformation);
  175. } catch (\Throwable $th) {
  176. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET001: Ocurrió un error al obtener el número de información.", $th->getMessage(), 500);
  177. }
  178. $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
  179. if ($arrResponseCheckUser['error']) {
  180. return $this->responseController->makeResponse(true, 'ERR_INFORMATION_GET002:'.$arrResponseCheckUser['msg'], [], 401);
  181. }
  182. try {
  183. $arrOrder = (array) DB::table('S002V01TORCO')
  184. ->where('ORCO_NUOR', '=', $orderNumber)
  185. ->where('ORCO_NULI', '=', $line)
  186. ->where('ORCO_ESTA', '=', 'Recibido')
  187. ->first([
  188. 'ORCO_IDDE AS ID_DESPACHO',
  189. 'ORCO_IDLI AS ID_LINEA_SOLICITUD',
  190. ]);
  191. } catch (\Throwable $th) {
  192. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET003: Ocurrió un error al obtener los datos de la orden de compra.", $th->getMessage(), 500);
  193. }
  194. if (empty($arrOrder)) {
  195. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET004: El número de orden no existe o no se encuentra entregado.", [], 500);
  196. }
  197. try {
  198. $arrHistoryOrder = DB::table('S002V01THIOR')
  199. ->where('HIOR_NUOR', '=', $orderNumber)
  200. ->where('HIOR_ESTA', '=', 'Activo')
  201. ->where('HIOR_ESOR', '=', 'Recibido')
  202. ->get([
  203. 'HIOR_FERE AS FECHA_REGISTRA',
  204. 'HIOR_FEMO AS FECHA_MODIFICA',
  205. ]);
  206. } catch (\Throwable $th) {
  207. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET005: Ocurrió un error al obtener los del historial.", $th->getMessage(), 500);
  208. }
  209. $arrHistoryOrder = json_decode(json_encode($arrHistoryOrder), true);
  210. if (empty($arrHistoryOrder)) {
  211. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET006: No se pudo encontrar la información del historial.", [], 500);
  212. }
  213. $dateAdquisition = null;
  214. foreach ($arrHistoryOrder as $key => $historyOrder) {
  215. $tempDateAdquisition = $historyOrder['FECHA_MODIFICA'] !== null ? $historyOrder['FECHA_MODIFICA'] : $historyOrder['FECHA_REGISTRA'];
  216. if (is_null($dateAdquisition)) {
  217. $dateAdquisition = $tempDateAdquisition;
  218. } else {
  219. $carDateAdquisition = new Carbon($dateAdquisition);
  220. $carTempDateAdquisition = new Carbon($tempDateAdquisition);
  221. if ($carTempDateAdquisition->greaterThan($carDateAdquisition)) {
  222. $dateAdquisition = $tempDateAdquisition;
  223. }
  224. }
  225. }
  226. if (is_null($dateAdquisition)) {
  227. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET007: Ocurrió un error al obtener la fecha de adquisición.", [], 500);
  228. }
  229. try {
  230. $arrListOrder = (array) DB::table('S002V01TARSE')
  231. ->where('ARSE_IDLI', '=', $arrOrder['ID_LINEA_SOLICITUD'])
  232. ->where('ARSE_IDIN', '=', $idInformation)
  233. ->where('ARSE_ESTA', '=', 'Activo')
  234. ->where('ARTI_ESTA', '=', 'Activo')
  235. ->where('FAMI_ESTA', '=', 'Activo')
  236. ->where('SUBF_ESTA', '=', 'Activo')
  237. ->where('DEAR_ESTA', '=', 'Activo')
  238. ->where('INAR_ESTA', '=', 'Activo')
  239. ->where('UNID_ESTA', '=', 'Activo')
  240. ->where('ARSE_NULI', '=', $line)
  241. ->where('ARTI_NULI', '=', $line)
  242. ->where('FAMI_NULI', '=', $line)
  243. ->where('SUBF_NULI', '=', $line)
  244. ->where('DEAR_NULI', '=', $line)
  245. ->where('INAR_NULI', '=', $line)
  246. ->where('UNID_NULI', '=', $line)
  247. ->join('S002V01TARTI','ARTI_IDAR','=','ARSE_IDAR')
  248. ->join('S002V01TFAMI','ARTI_COFA','=','FAMI_COFA')
  249. ->join('S002V01TSUBF','ARTI_COSU','=','SUBF_COSU')
  250. ->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
  251. ->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
  252. ->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
  253. ->join('S002V01TPROV','PROV_NUPR','=','ARSE_NUPR')
  254. ->first([
  255. 'FAMI_COFA AS CODIGO_FAMILIA',
  256. 'FAMI_NOFA AS NOMBRE_FAMILIA',
  257. 'SUBF_COSU AS CODIGO_SUBFAMILIA',
  258. 'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
  259. 'ARTI_IDAR AS ID_ARTICULO',
  260. 'ARTI_CODI AS CODIGO_ARTICULO',
  261. 'ARTI_NOMB AS NOMBRE_ARTICULO',
  262. 'DEAR_IDDE AS ID_DESCRIPCION',
  263. 'DEAR_IMAG AS IMAGENES',
  264. 'DEAR_DESC AS DESCRIPCION',
  265. 'DEAR_CARA AS CARACTERISTICAS',
  266. 'DEAR_COWE AS COMPRA_WEB',
  267. 'INAR_IDIN AS ID_INFORMACION',
  268. 'INAR_CODI AS CODIGO_INFORMACION',
  269. 'INAR_MODE AS MODELO_INFORMACION',
  270. 'INAR_COMO AS CODIGO_MONEDA',
  271. 'INAR_PREC AS PRECIO_UNITARIO',
  272. 'INAR_MOMI AS MONTO_MINIMO',
  273. 'INAR_CARA AS CARACTERISTICAS_INFORMACION',
  274. 'PROV_NUPR AS NUMERO_PROVEEDOR',
  275. 'PROV_NOCO AS NOMBRE_PROVEEDOR',
  276. ]);
  277. } catch (\Throwable $th) {
  278. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET008: Ocurrió un error al obtener los datos de los artículos", $th->getMessage(), 500);
  279. }
  280. if (empty($arrListOrder)) {
  281. return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET009: No existen artículos regitrados en la orden de compra.", [], 500);
  282. }
  283. try {
  284. $arrImagen = json_decode($arrListOrder['IMAGENES']);
  285. $arrUrlImage = array();
  286. foreach ($arrImagen as $key => $imagen) {
  287. $arrResponse = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
  288. if($arrResponse['error']){
  289. return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET006: Ocurrió un error al obtener la URL de la imágen.", $arrResponse['msg'], 500);
  290. }
  291. $arrUrlImage[] = $arrResponse['response']['public_uri'];
  292. }
  293. $arrListOrder['IMAGENES'] = $arrUrlImage;
  294. } catch (\Throwable $th) {
  295. return $this->responseController->makeResponse(
  296. true,
  297. "ERR_RECEPTION_GET007: Ocurrió un error al obtener las imangenes de los artículos.",
  298. $th->getMessage(),
  299. 500
  300. );
  301. }
  302. $arrListOrder['FECHA_ADQUISICION'] = $dateAdquisition;
  303. $arrListOrder['ID_LINEA_SOLICITUD'] = $arrOrder['ID_LINEA_SOLICITUD'];
  304. return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrListOrder);
  305. }
  306. public function generateSheetDeliveryListXLS( $orderNumber, $user, $line ) {
  307. try {
  308. $idOrder = $this->encController->decrypt($orderNumber);
  309. } catch (\Throwable $th) {
  310. DB::rollBack();
  311. return $this->responseController->makeResponse(
  312. true,
  313. "ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
  314. $th->getMessage(),
  315. 500
  316. );
  317. }
  318. try {
  319. $user = $this->encController->decrypt($user);
  320. } catch (\Throwable $th) {
  321. DB::rollBack();
  322. return $this->responseController->makeResponse(
  323. true,
  324. "ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
  325. $th->getMessage(),
  326. 500
  327. );
  328. }
  329. try {
  330. $arrOrder = (array) DB::table('S002V01TORCO')
  331. ->where('ORCO_NUOR', '=', $idOrder)
  332. ->where('ORCO_NULI', '=', $line)
  333. ->where('LINE_NULI', '=', $line)
  334. ->where('DESP_NULI', '=', $line)
  335. ->where('PROV_NULI', '=', $line)
  336. ->where('DESP_ESTA', '=', 'Activo')
  337. ->where('PROV_ESTA', '=', 'Activo')
  338. ->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
  339. ->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
  340. ->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
  341. ->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
  342. ->first([
  343. 'ORCO_NUOR',
  344. 'ORCO_ESTA',
  345. 'LINE_IDLI',
  346. 'LINE_OTPR',
  347. 'LINE_OTCO',
  348. 'LINE_ESTA',
  349. 'DESP_IDDE',
  350. 'DESP_NODE',
  351. 'DESP_NOMB',
  352. 'DESP_APPA',
  353. 'DESP_APMA',
  354. 'DESP_LADA',
  355. 'DESP_TELE',
  356. 'DESP_CORR',
  357. 'DESP_CALL',
  358. 'DESP_NUEX',
  359. 'DESP_NUIN',
  360. 'DESP_COPO',
  361. 'DESP_COLO',
  362. 'DESP_LOCA',
  363. 'DESP_MUNI',
  364. 'DESP_ENTI',
  365. 'DESP_PAIS',
  366. 'DESP_COME',
  367. 'PROV_NUPR',
  368. 'PROV_IDPS',
  369. 'PROV_NOCO',
  370. 'PROV_NOMB',
  371. 'PROV_APPA',
  372. 'PROV_APMA',
  373. 'PROV_CORR',
  374. 'PROV_LAD1',
  375. 'PROV_TEL1',
  376. 'PROV_LAD2',
  377. 'PROV_TEL2',
  378. 'PROV_XRFC',
  379. 'PROV_XTAX',
  380. 'PROV_TIPO',
  381. 'PROV_TICO',
  382. 'PROV_SIWE',
  383. 'PROV_MEPA',
  384. 'PROV_CALL',
  385. 'PROV_NUEX',
  386. 'PROV_NUIN',
  387. 'PROV_COPO',
  388. 'PROV_COLO',
  389. 'PROV_MUNI',
  390. 'PROV_LOCA',
  391. 'PROV_ENTI',
  392. 'PROV_PAIS',
  393. 'REFI_CRFI',
  394. 'REFI_DRFI',
  395. ]);
  396. } catch (\Throwable $th) {
  397. return $this->responseController->makeResponse(
  398. true,
  399. "ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
  400. $th->getMessage(),
  401. 500
  402. );
  403. }
  404. try {
  405. $arrArtitle = DB::table('S002V01TARSE')
  406. ->where('ARSE_NULI', '=', $line)
  407. ->where('INAR_NULI', '=', $line)
  408. ->where('CAMO_NULI', '=', $line)
  409. ->where('DEAR_NULI', '=', $line)
  410. ->where('UNID_NULI', '=', $line)
  411. ->where('ARTI_NULI', '=', $line)
  412. ->where('FAMI_NULI', '=', $line)
  413. ->where('SUBF_NULI', '=', $line)
  414. ->where('ARSE_ESTA', '=', 'Activo')
  415. ->where('INAR_ESTA', '=', 'Activo')
  416. ->where('CAMO_ESTA', '=', 'Activo')
  417. ->where('DEAR_ESTA', '=', 'Activo')
  418. ->where('UNID_ESTA', '=', 'Activo')
  419. ->where('ARTI_ESTA', '=', 'Activo')
  420. ->where('FAMI_ESTA', '=', 'Activo')
  421. ->where('SUBF_ESTA', '=', 'Activo')
  422. ->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
  423. ->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
  424. ->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
  425. ->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
  426. ->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
  427. ->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
  428. ->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
  429. ->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
  430. ->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
  431. ->get([
  432. 'ARSE_IDAS',
  433. 'ARSE_IDLI',
  434. // 'ARSE_CANT',
  435. // 'ARSE_PRTO',
  436. 'INAR_IDIN',
  437. 'INAR_CODI',
  438. 'INAR_MODE',
  439. 'INAR_PREC',
  440. 'INAR_MOMI',
  441. 'INAR_CARA',
  442. 'CAMO_COMO',
  443. 'CAMO_DESC',
  444. // 'CAMO_DECI',
  445. // 'CAMO_POVA',
  446. // 'CAMO_FEIN',
  447. // 'CAMO_FEFI',
  448. 'DEAR_IDDE',
  449. 'DEAR_IMAG',
  450. 'DEAR_DESC',
  451. 'DEAR_CARA',
  452. 'DEAR_COWE',
  453. 'UNID_IDUN',
  454. 'UNID_NOMB',
  455. 'UNID_ACRO',
  456. 'ARTI_IDAR',
  457. 'ARTI_CODI',
  458. 'ARTI_NOMB',
  459. 'FAMI_COFA',
  460. 'FAMI_NOFA',
  461. 'SUBF_COSU',
  462. 'SUBF_NOSU',
  463. ]);
  464. $arrArtitle = json_decode( json_encode( $arrArtitle ), true );
  465. } catch (\Throwable $th) {
  466. return $this->responseController->makeResponse(
  467. true,
  468. "ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
  469. $th->getMessage(),
  470. 500
  471. );
  472. }
  473. $index = 0;
  474. $arrArtitlesTemp = array();
  475. foreach ($arrArtitle as $keyArtitle => $artitles) {
  476. if ($keyArtitle === 0) {
  477. $arrArtitlesTemp[$index] = $artitles;
  478. $arrArtitlesTemp[$index]['CANTIDAD'] = 1;
  479. } else {
  480. if (
  481. in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
  482. ) {
  483. $indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
  484. $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
  485. } else {
  486. $index = $index + 1;
  487. $arrArtitlesTemp[$index] = $artitles;
  488. $arrArtitlesTemp[$index]['CANTIDAD'] = 1;
  489. }
  490. }
  491. }
  492. $arrArtitle = $arrArtitlesTemp;
  493. $spreadsheet = new Spreadsheet();
  494. $activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
  495. $headerA1 = 'Número de orden';
  496. $contentB1 = $arrOrder['ORCO_NUOR'];
  497. $activeWorksheet->setCellValue("A1", $headerA1);
  498. $activeWorksheet->setCellValue("B1", $contentB1);
  499. $activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
  500. $headerA2 = 'Estado de la orden';
  501. $contentB2 = $arrOrder['ORCO_ESTA'];
  502. $activeWorksheet->setCellValue("A2", $headerA2);
  503. $activeWorksheet->setCellValue("B2", $contentB2);
  504. $activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
  505. $headerA3 = 'Numero de línea de solicitud';
  506. $contentB3 = $arrOrder['LINE_IDLI'];
  507. $activeWorksheet->setCellValue("A3", $headerA3);
  508. $activeWorksheet->setCellValue("B3", $contentB3);
  509. $activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
  510. $headerA4 = '';
  511. if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
  512. $headerA4 = 'Orden de Trabajo Preventivo';
  513. $contentB4 = $arrOrder['LINE_OTPR'];
  514. } else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
  515. $headerA4 = 'Orden de Trabajo Correctivo';
  516. $contentB4 = $arrOrder['LINE_OTCO'];
  517. } else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
  518. $headerA4 = 'Orden de Trabajo';
  519. $contentB4 = 'No aplica';
  520. } else {
  521. $headerA4 = 'Orden de Trabajo';
  522. $contentB4 = 'No aplica';
  523. }
  524. $activeWorksheet->setCellValue("A4", $headerA4 );
  525. $activeWorksheet->setCellValue("B4", $contentB4 );
  526. $activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
  527. $headerA5 = 'ID Despacho';
  528. $contentB5 = $arrOrder['DESP_IDDE'];
  529. $activeWorksheet->setCellValue("A5", $headerA5 );
  530. $activeWorksheet->setCellValue("B5", $contentB5 );
  531. $activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
  532. $headerA6 = 'Despacho';
  533. $contentB6 = $arrOrder['DESP_NODE'];
  534. $activeWorksheet->setCellValue("A6", $headerA6 );
  535. $activeWorksheet->setCellValue("B6", $contentB6 );
  536. $activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
  537. $headerA7 = 'Responsable del despacho';
  538. $contentB7 = $arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'];
  539. $activeWorksheet->setCellValue("A7", $headerA7 );
  540. $activeWorksheet->setCellValue("B7", $contentB7 );
  541. $activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
  542. $headerA8 = 'Teléfono del despacho';
  543. $contentB8 = $arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'];
  544. $activeWorksheet->setCellValue("A8", $headerA8 );
  545. $activeWorksheet->setCellValue("B8", $contentB8 );
  546. $activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
  547. $headerA9 = 'Correo electrónico del despacho';
  548. $contentB9 = $arrOrder['DESP_CORR'];
  549. $activeWorksheet->setCellValue("A9", $headerA9 );
  550. $activeWorksheet->setCellValue("B9", $contentB9 );
  551. $activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
  552. $headerA10 = 'Calle del despacho';
  553. $contentB10 = $arrOrder['DESP_CALL'];
  554. $activeWorksheet->setCellValue("A10", $headerA10 );
  555. $activeWorksheet->setCellValue("B10", $contentB10 );
  556. $activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
  557. $headerA11 = 'Número exterior';
  558. $contentB11 = $arrOrder['DESP_NUEX'];
  559. $activeWorksheet->setCellValue("A11", $headerA11 );
  560. $activeWorksheet->setCellValue("B11", $contentB11 );
  561. $activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
  562. $headerA12 = 'Número interior';
  563. if ( !is_null($arrOrder['DESP_NUIN']) ) {
  564. $contentB12 = $arrOrder['DESP_NUIN'];
  565. } else {
  566. $contentB12 = 'No aplica';
  567. }
  568. $activeWorksheet->setCellValue("A12", $headerA12 );
  569. $activeWorksheet->setCellValue("B12", $contentB12 );
  570. $activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
  571. $headerA13 = 'Código postal';
  572. $contentB13 = $arrOrder['DESP_COPO'];
  573. $activeWorksheet->setCellValue("A13", $headerA13 );
  574. $activeWorksheet->setCellValue("B13", $contentB13 );
  575. $activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
  576. $headerA14 = 'Colonia';
  577. $contentB14 = $arrOrder['DESP_COLO'];
  578. $activeWorksheet->setCellValue("A14", $headerA14 );
  579. $activeWorksheet->setCellValue("B14", $contentB14 );
  580. $activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
  581. $headerA15 = 'Localidad';
  582. if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
  583. $contentB15 = $arrOrder['DESP_LOCA'];
  584. } else {
  585. $contentB15 = 'No aplica';
  586. }
  587. $activeWorksheet->setCellValue("A15", $headerA15 );
  588. $activeWorksheet->setCellValue("B15", $contentB15 );
  589. $activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
  590. $headerA16 = 'Municipio';
  591. $contentB16 = $arrOrder['DESP_MUNI'];
  592. $activeWorksheet->setCellValue("A16", $headerA16 );
  593. $activeWorksheet->setCellValue("B16", $contentB16 );
  594. $activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
  595. $headerA17 = 'Entidad Federativa';
  596. $contentB17 = $arrOrder['DESP_ENTI'];
  597. $activeWorksheet->setCellValue("A17", $headerA17 );
  598. $activeWorksheet->setCellValue("B17", $contentB17 );
  599. $activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
  600. $headerA18 = 'País';
  601. $contentB18 = $arrOrder['DESP_PAIS'];
  602. $activeWorksheet->setCellValue("A18", $headerA18 );
  603. $activeWorksheet->setCellValue("B18", $contentB18 );
  604. $activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
  605. $headerA19 = 'Número de proveedor';
  606. $contentB19 = $arrOrder['PROV_NUPR'];
  607. $activeWorksheet->setCellValue("A19", $headerA19 );
  608. $activeWorksheet->setCellValue("B19", $contentB19 );
  609. $activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
  610. $headerA20 = 'Número de subcontratista';
  611. $contentB20 = $arrOrder['PROV_IDPS'];
  612. $activeWorksheet->setCellValue("A20", $headerA20 );
  613. $activeWorksheet->setCellValue("B20", $contentB20 );
  614. $activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
  615. $headerA21 = 'Nombre comercial del proveedor';
  616. $contentB21 = $arrOrder['PROV_NOCO'];
  617. $activeWorksheet->setCellValue("A21", $headerA21 );
  618. $activeWorksheet->setCellValue("B21", $contentB21 );
  619. $activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
  620. $headerA22 = 'Referencia fiscal del proveedor';
  621. $contentB22 = $arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')';
  622. $activeWorksheet->setCellValue("A22", $headerA22 );
  623. $activeWorksheet->setCellValue("B22", $contentB22 );
  624. $activeWorksheet->getStyle( "A22" )->getFont()->setBold(true);
  625. $headerA23 = 'Responsable del proveedor';
  626. $contentB23 = $arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'];
  627. $activeWorksheet->setCellValue("A23", $headerA23 );
  628. $activeWorksheet->setCellValue("B23", $contentB23 );
  629. $activeWorksheet->getStyle( "A23" )->getFont()->setBold(true);
  630. $headerA24 = 'Correo electrónico del proveedor';
  631. $contentB24 = $arrOrder['PROV_CORR'];
  632. $activeWorksheet->setCellValue("A24", $headerA24 );
  633. $activeWorksheet->setCellValue("B24", $contentB24 );
  634. $activeWorksheet->getStyle( "A24" )->getFont()->setBold(true);
  635. $headerA25 = 'Teléfono del proveedor';
  636. $contentB25 = $arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'];
  637. $activeWorksheet->setCellValue("A25", $headerA25 );
  638. $activeWorksheet->setCellValue("B25", $contentB25 );
  639. $activeWorksheet->getStyle( "A25" )->getFont()->setBold(true);
  640. $headerA26 = '';
  641. $contentB26 = '';
  642. if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
  643. $headerA26 = 'R.F.C. del proveedor';
  644. $contentB26 = $arrOrder['PROV_XRFC'];
  645. } else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
  646. $headerA26 = 'TAX ID. del proveedor';
  647. $contentB26 = $arrOrder['PROV_XTAX'];
  648. } else {
  649. $headerA26 = 'R.F.C. / TAX ID';
  650. $contentB26 = 'No aplica';
  651. }
  652. $activeWorksheet->setCellValue("A26", $headerA26 );
  653. $activeWorksheet->setCellValue("B26", $contentB26 );
  654. $activeWorksheet->getStyle( "A26" )->getFont()->setBold(true);
  655. $activeWorksheet->getColumnDimension("A")->setAutoSize(true);
  656. $activeWorksheet->getColumnDimension("B")->setAutoSize(true);
  657. $arrAlphabet = $this->resourcesController->arrAlphabet;
  658. $spreadsheet->createSheet();
  659. $spreadsheet->setActiveSheetIndex(1);
  660. $activeWorksheetArtitle = $spreadsheet->getActiveSheet()->setTitle('Artículos de la orden');
  661. $arrHeaderArtitle = array(
  662. /* A */ 'ID Artículo',
  663. /* B */ 'Código del Artíulo',
  664. /* C */ 'Artículo',
  665. /* D */ 'Familia',
  666. /* E */ 'Subfamilia',
  667. /* F */ 'Descripción',
  668. /* G */ 'Características',
  669. /* H */ 'Unidad',
  670. /* I */ 'Código',
  671. /* J */ 'Modelo',
  672. /* L */ 'Precio Unitario',
  673. /* M */ 'Cantidad',
  674. /* N */ 'Precio Total',
  675. /* O */ 'No. de selección',
  676. );
  677. foreach ($arrArtitle as $key => $artitle) {
  678. $key = $key + 2;
  679. $activeWorksheetArtitle->setCellValue("A".$key, $artitle['ARTI_IDAR']);
  680. $activeWorksheetArtitle->setCellValue("B".$key, $artitle['ARTI_CODI']);
  681. $activeWorksheetArtitle->setCellValue("C".$key, $artitle['ARTI_NOMB']);
  682. $activeWorksheetArtitle->setCellValue("D".$key, $artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')');
  683. $activeWorksheetArtitle->setCellValue("E".$key, $artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')');
  684. $activeWorksheetArtitle->setCellValue("F".$key, $artitle['DEAR_DESC']);
  685. $activeWorksheetArtitle->setCellValue("G".$key, $artitle['DEAR_CARA']);
  686. $activeWorksheetArtitle->setCellValue("H".$key, $artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')');
  687. $activeWorksheetArtitle->setCellValue("I".$key, $artitle['INAR_CODI']);
  688. $activeWorksheetArtitle->setCellValue("J".$key, $artitle['INAR_MODE']);
  689. $activeWorksheetArtitle->setCellValue("K".$key, '$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] );
  690. $activeWorksheetArtitle->setCellValue("L".$key, $artitle['CANTIDAD']);
  691. $activeWorksheetArtitle->setCellValue("M".$key, '$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD']) . ' ' . $artitle['CAMO_COMO'] );
  692. $activeWorksheetArtitle->setCellValue("N".$key, $artitle['ARSE_IDAS']);
  693. }
  694. foreach ($arrHeaderArtitle as $keyHeaderArtitle => $headerArtitle) {
  695. $activeWorksheetArtitle->setCellValue( $arrAlphabet[$keyHeaderArtitle]."1", $headerArtitle);
  696. $activeWorksheetArtitle->getColumnDimension( $arrAlphabet[$keyHeaderArtitle] )->setAutoSize(true);
  697. $activeWorksheetArtitle->getStyle( $arrAlphabet[$keyHeaderArtitle]."1" )->getFont()->setBold(true);
  698. }
  699. $nuli = $this->resourcesController->formatSecuence($line, 2);
  700. $como = 'GEAD'; // Código del módulo
  701. $cldo = 'IN'; // Código de la clasificación
  702. $fecr = date('ymd'); // Fecha en la se carga el archivo
  703. try {
  704. $arrSecuence = (array) DB::table('S002V01TAFAL')
  705. ->where('AFAL_COMO', '=', $como)
  706. ->where('AFAL_CLDO', '=', $cldo)
  707. ->where('AFAL_NULI', '=', $line)
  708. ->orderBy('AFAL_NUSE', 'desc')
  709. ->first([ 'AFAL_NUSE' ]);
  710. } catch (\Throwable $th) {
  711. return $this->responseController->makeResponse(
  712. true,
  713. "ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
  714. $th->getMessage(),
  715. 500
  716. );
  717. }
  718. $nuse = 1; // Secuencia del documento
  719. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  720. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  721. }
  722. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  723. $nuve = $this->resourcesController->formatSecuence('1', 2);
  724. $noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
  725. $exte = 'xlsx';
  726. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  727. $filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
  728. } else {
  729. $filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
  730. }
  731. $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
  732. $tempFile = $filePath.$fileName;
  733. if ( file_exists( $tempFile ) ) {
  734. if ( !unlink( $tempFile ) ) {
  735. return $this->responseController->makeResponse(
  736. true,
  737. "ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
  738. [],
  739. 500
  740. );
  741. }
  742. }
  743. try {
  744. $writer = new Xlsx($spreadsheet);
  745. ob_start();
  746. $writer->save('php://output');
  747. $base64 = base64_encode(ob_get_clean());
  748. $validate = \File::put( $tempFile, base64_decode($base64));
  749. } catch (\Throwable $th) {
  750. return $this->responseController->makeResponse(
  751. true,
  752. "ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
  753. $th->getMessage(),
  754. 500
  755. );
  756. }
  757. $ubic = Storage::putFile('files', new File($tempFile));
  758. $ubic = str_replace("/", "\\", $ubic);
  759. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  760. $ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
  761. } else {
  762. $ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
  763. }
  764. $tama = filesize($ubic);
  765. $usac = json_encode([$user]);
  766. $now = $this->functionsController->now();
  767. $currentDate = $now->toDateTimeString();
  768. try {
  769. $validateInsert = DB::table('S002V01TAFAL')->insert([
  770. 'AFAL_NULI' => $line,
  771. 'AFAL_COMO' => $como,
  772. 'AFAL_CLDO' => $cldo,
  773. 'AFAL_FECR' => $fecr,
  774. 'AFAL_NUSE' => $nuse,
  775. 'AFAL_NUVE' => $nuve,
  776. 'AFAL_NOAR' => $noar,
  777. 'AFAL_EXTE' => $exte,
  778. 'AFAL_TAMA' => $tama,
  779. 'AFAL_UBIC' => $ubic,
  780. 'AFAL_USAC' => $usac,
  781. 'AFAL_USRE' => $user,
  782. 'AFAL_FERE' => $currentDate,
  783. ]);
  784. } catch (\Throwable $th) {
  785. return $this->responseController->makeResponse(
  786. true,
  787. "ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
  788. $th->getMessage(),
  789. 500
  790. );
  791. }
  792. if ( !$validateInsert ) {
  793. return $this->responseController->makeResponse(
  794. true,
  795. "ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
  796. [],
  797. 500
  798. );
  799. }
  800. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  801. $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
  802. } else {
  803. $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
  804. }
  805. return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
  806. }
  807. public function generateSheetDeliveryListPDF( $orderNumber, $user, $line ) {
  808. try {
  809. $idOrder = $this->encController->decrypt($orderNumber);
  810. } catch (\Throwable $th) {
  811. DB::rollBack();
  812. return $this->responseController->makeResponse(
  813. true,
  814. "ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
  815. $th->getMessage(),
  816. 500
  817. );
  818. }
  819. try {
  820. $user = $this->encController->decrypt($user);
  821. } catch (\Throwable $th) {
  822. DB::rollBack();
  823. return $this->responseController->makeResponse(
  824. true,
  825. "ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
  826. $th->getMessage(),
  827. 500
  828. );
  829. }
  830. try {
  831. $arrOrder = (array) DB::table('S002V01TORCO')
  832. ->where('ORCO_NUOR', '=', $idOrder)
  833. ->where('ORCO_NULI', '=', $line)
  834. ->where('LINE_NULI', '=', $line)
  835. ->where('DESP_NULI', '=', $line)
  836. ->where('PROV_NULI', '=', $line)
  837. ->where('DESP_ESTA', '=', 'Activo')
  838. ->where('PROV_ESTA', '=', 'Activo')
  839. ->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
  840. ->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
  841. ->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
  842. ->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
  843. ->first([
  844. 'ORCO_NUOR',
  845. 'ORCO_ESTA',
  846. 'LINE_IDLI',
  847. 'LINE_OTPR',
  848. 'LINE_OTCO',
  849. 'LINE_ESTA',
  850. 'DESP_IDDE',
  851. 'DESP_NODE',
  852. 'DESP_NOMB',
  853. 'DESP_APPA',
  854. 'DESP_APMA',
  855. 'DESP_LADA',
  856. 'DESP_TELE',
  857. 'DESP_CORR',
  858. 'DESP_CALL',
  859. 'DESP_NUEX',
  860. 'DESP_NUIN',
  861. 'DESP_COPO',
  862. 'DESP_COLO',
  863. 'DESP_LOCA',
  864. 'DESP_MUNI',
  865. 'DESP_ENTI',
  866. 'DESP_PAIS',
  867. 'DESP_COME',
  868. 'PROV_NUPR',
  869. 'PROV_IDPS',
  870. 'PROV_NOCO',
  871. 'PROV_NOMB',
  872. 'PROV_APPA',
  873. 'PROV_APMA',
  874. 'PROV_CORR',
  875. 'PROV_LAD1',
  876. 'PROV_TEL1',
  877. 'PROV_LAD2',
  878. 'PROV_TEL2',
  879. 'PROV_XRFC',
  880. 'PROV_XTAX',
  881. 'PROV_TIPO',
  882. 'PROV_TICO',
  883. 'PROV_SIWE',
  884. 'PROV_MEPA',
  885. 'PROV_CALL',
  886. 'PROV_NUEX',
  887. 'PROV_NUIN',
  888. 'PROV_COPO',
  889. 'PROV_COLO',
  890. 'PROV_MUNI',
  891. 'PROV_LOCA',
  892. 'PROV_ENTI',
  893. 'PROV_PAIS',
  894. 'REFI_CRFI',
  895. 'REFI_DRFI',
  896. ]);
  897. } catch (\Throwable $th) {
  898. return $this->responseController->makeResponse(
  899. true,
  900. "ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
  901. $th->getMessage(),
  902. 500
  903. );
  904. }
  905. try {
  906. $arrArtitle = DB::table('S002V01TARSE')
  907. ->where('ARSE_NULI', '=', $line)
  908. ->where('INAR_NULI', '=', $line)
  909. ->where('CAMO_NULI', '=', $line)
  910. ->where('DEAR_NULI', '=', $line)
  911. ->where('UNID_NULI', '=', $line)
  912. ->where('ARTI_NULI', '=', $line)
  913. ->where('FAMI_NULI', '=', $line)
  914. ->where('SUBF_NULI', '=', $line)
  915. ->where('ARSE_ESTA', '=', 'Activo')
  916. ->where('INAR_ESTA', '=', 'Activo')
  917. ->where('CAMO_ESTA', '=', 'Activo')
  918. ->where('DEAR_ESTA', '=', 'Activo')
  919. ->where('UNID_ESTA', '=', 'Activo')
  920. ->where('ARTI_ESTA', '=', 'Activo')
  921. ->where('FAMI_ESTA', '=', 'Activo')
  922. ->where('SUBF_ESTA', '=', 'Activo')
  923. ->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
  924. ->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
  925. ->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
  926. ->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
  927. ->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
  928. ->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
  929. ->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
  930. ->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
  931. ->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
  932. ->get([
  933. 'ARSE_IDAS',
  934. 'ARSE_IDLI',
  935. 'INAR_IDIN',
  936. 'INAR_CODI',
  937. 'INAR_MODE',
  938. 'INAR_PREC',
  939. 'INAR_MOMI',
  940. 'INAR_CARA',
  941. 'CAMO_COMO',
  942. 'CAMO_DESC',
  943. 'DEAR_IDDE',
  944. 'DEAR_IMAG',
  945. 'DEAR_DESC',
  946. 'DEAR_CARA',
  947. 'DEAR_COWE',
  948. 'UNID_IDUN',
  949. 'UNID_NOMB',
  950. 'UNID_ACRO',
  951. 'ARTI_IDAR',
  952. 'ARTI_CODI',
  953. 'ARTI_NOMB',
  954. 'FAMI_COFA',
  955. 'FAMI_NOFA',
  956. 'SUBF_COSU',
  957. 'SUBF_NOSU',
  958. ]);
  959. $arrArtitle = json_decode( json_encode( $arrArtitle ), true );
  960. } catch (\Throwable $th) {
  961. return $this->responseController->makeResponse(
  962. true,
  963. "ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
  964. $th->getMessage(),
  965. 500
  966. );
  967. }
  968. $index = 0;
  969. $arrArtitlesTemp = array();
  970. foreach ($arrArtitle as $keyArtitle => $artitles) {
  971. if ($keyArtitle === 0) {
  972. $arrArtitlesTemp[$index] = $artitles;
  973. $arrArtitlesTemp[$index]['CANTIDAD'] = 1;
  974. } else {
  975. if (
  976. in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
  977. ) {
  978. $indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
  979. $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
  980. } else {
  981. $index = $index + 1;
  982. $arrArtitlesTemp[$index] = $artitles;
  983. $arrArtitlesTemp[$index]['CANTIDAD'] = 1;
  984. }
  985. }
  986. }
  987. $arrArtitle = $arrArtitlesTemp;
  988. $html = '<!DOCTYPE html>
  989. <html lang="en">
  990. <head>
  991. <meta charset="UTF-8">
  992. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  993. <title>Document</title>
  994. <style>
  995. body {
  996. font-family: Arial, Helvetica, sans-serif;
  997. font-size: 8pt;
  998. }
  999. .section-title {
  1000. margin: 20px 0;
  1001. font-size: 12pt;
  1002. }
  1003. table {
  1004. width: 100%;
  1005. font-size: 8pt;
  1006. }
  1007. thead tr th {
  1008. text-align: start;
  1009. padding: 0 16px;
  1010. height: 52px;
  1011. border-bottom-width: 1px;
  1012. border-bottom-style: solid;
  1013. border-bottom-color: #CCC;
  1014. }
  1015. tbody tr td {
  1016. padding: 0 16px;
  1017. height: 52px;
  1018. border-bottom-width: 1px;
  1019. border-bottom-style: solid;
  1020. border-bottom-color: #CCC;
  1021. }
  1022. p {
  1023. text-align: justify;
  1024. }
  1025. </style>
  1026. </head>
  1027. <body>
  1028. <div class="item">
  1029. <b>Número de Orden de Compra: </b>
  1030. <span>'.$arrOrder['ORCO_NUOR'].'</span>
  1031. </div>
  1032. <div class="item">
  1033. <b>Estado de la orden: </b>
  1034. <span>'.$arrOrder['ORCO_ESTA'].'</span>
  1035. </div>
  1036. <div class="item">
  1037. <b>Numero de línea de solicitud: </b>
  1038. <span>'.$arrOrder['LINE_IDLI'].'</span>
  1039. </div>
  1040. ';
  1041. if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
  1042. $html.='<div class="item">
  1043. <b>Orden de Trabajo Preventivo: </b>
  1044. <span>'.$arrOrder['LINE_OTPR'].'</span>
  1045. </div>';
  1046. } else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
  1047. $html.='<div class="item">
  1048. <b>Orden de Trabajo Correctivo: </b>
  1049. <span>'.$arrOrder['LINE_OTCO'].'</span>
  1050. </div>';
  1051. } else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
  1052. $html.='<div class="item">
  1053. <b>Orden de Trabajo: </b>
  1054. <span>No aplica</span>
  1055. </div>';
  1056. } else {
  1057. $html.='<div class="item">
  1058. <b>Orden de Trabajo: </b>
  1059. <span>No aplica</span>
  1060. </div>';
  1061. }
  1062. $html.='<div class="item">
  1063. <b>ID Despacho: </b>
  1064. <span>'.$arrOrder['DESP_IDDE'].'</span>
  1065. </div>
  1066. <div class="item">
  1067. <b>Despacho: </b>
  1068. <span>'.$arrOrder['DESP_NODE'].'</span>
  1069. </div>
  1070. <div class="item">
  1071. <b>Responsable del despacho: </b>
  1072. <span>'.$arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'].'</span>
  1073. </div>
  1074. <div class="item">
  1075. <b>Teléfono del despacho: </b>
  1076. <span>'.$arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'].'</span>
  1077. </div>
  1078. <div class="item">
  1079. <b>Correo electrónico del despacho: </b>
  1080. <span>'.$arrOrder['DESP_CORR'].'</span>
  1081. </div>
  1082. <div class="item">
  1083. <b>Calle del despacho: </b>
  1084. <span>'.$arrOrder['DESP_CALL'].'</span>
  1085. </div>
  1086. <div class="item">
  1087. <b>Número exterior: </b>
  1088. <span>'.$arrOrder['DESP_NUEX'].'</span>
  1089. </div>
  1090. ';
  1091. if ( !is_null($arrOrder['DESP_NUIN']) ) {
  1092. $html.='<div class="item">
  1093. <b>Número interior: </b>
  1094. <span>'.$arrOrder['DESP_NUIN'].'</span>
  1095. </div>';
  1096. } else {
  1097. $html.='<div class="item">
  1098. <b>Número interior: </b>
  1099. <span>No aplica</span>
  1100. </div>';
  1101. }
  1102. $html.='<div class="item">
  1103. <b>Código postal: </b>
  1104. <span>'.$arrOrder['DESP_COPO'].'</span>
  1105. </div>
  1106. <div class="item">
  1107. <b>Colonia: </b>
  1108. <span>'.$arrOrder['DESP_COLO'].'</span>
  1109. </div>
  1110. ';
  1111. if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
  1112. $html.='<div class="item">
  1113. <b>Localidad: </b>
  1114. <span>'.$arrOrder['DESP_LOCA'].'</span>
  1115. </div>';
  1116. } else {
  1117. $html.='<div class="item">
  1118. <b>Localidad: </b>
  1119. <span>No aplica</span>
  1120. </div>';
  1121. }
  1122. $html.='<div class="item">
  1123. <b>Municipio: </b>
  1124. <span>'.$arrOrder['DESP_MUNI'].'</span>
  1125. </div>
  1126. <div class="item">
  1127. <b>Entidad Federativa: </b>
  1128. <span>'.$arrOrder['DESP_ENTI'].'</span>
  1129. </div>
  1130. <div class="item">
  1131. <b>País: </b>
  1132. <span>'.$arrOrder['DESP_PAIS'].'</span>
  1133. </div>
  1134. <div class="item">
  1135. <b>Número de proveedor: </b>
  1136. <span>'.$arrOrder['PROV_NUPR'].'</span>
  1137. </div>
  1138. <div class="item">
  1139. <b>Número de subcontratista: </b>
  1140. <span>'.$arrOrder['PROV_IDPS'].'</span>
  1141. </div>
  1142. <div class="item">
  1143. <b>Nombre comercial del proveedor: </b>
  1144. <span>'.$arrOrder['PROV_NOCO'].'</span>
  1145. </div>
  1146. <div class="item">
  1147. <b>Referencia fiscal del proveedor: </b>
  1148. <span>'.$arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')'.'</span>
  1149. </div>
  1150. <div class="item">
  1151. <b>Responsable del proveedor: </b>
  1152. <span>'.$arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'].'</span>
  1153. </div>
  1154. <div class="item">
  1155. <b>Correo electrónico del proveedor: </b>
  1156. <span>'.$arrOrder['PROV_CORR'].'</span>
  1157. </div>
  1158. <div class="item">
  1159. <b>Teléfono del proveedor: </b>
  1160. <span>'.$arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'].'</span>
  1161. </div>
  1162. ';
  1163. if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
  1164. $html.='<div class="item">
  1165. <b>R.F.C. del proveedor: </b>
  1166. <span>'.$arrOrder['PROV_XRFC'].'</span>
  1167. </div>';
  1168. } else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
  1169. $html.='<div class="item">
  1170. <b>TAX ID. del proveedor: </b>
  1171. <span>'.$arrOrder['PROV_XTAX'].'</span>
  1172. </div>';
  1173. } else {
  1174. $html.='<div class="item">
  1175. <b>R.F.C. / TAX ID: </b>
  1176. <span>No aplica</span>
  1177. </div>';
  1178. }
  1179. if ( !empty($arrArtitle) ) {
  1180. $html.='
  1181. <div style="page-break-after:always;"></div>
  1182. <div class="section-title">
  1183. <b>Artículos</b>
  1184. </div>';
  1185. $html.='<table cellspacing="0" cellpadding="0">
  1186. <thead>
  1187. <tr>
  1188. <th>ID Artículo</th>
  1189. <th>Código del artíulo</th>
  1190. <th>Artículo</th>
  1191. <th>Familia</th>
  1192. <th>Subfamilia</th>
  1193. <!-- <th>Descripción</th> -->
  1194. <!-- <th>Características</th> -->
  1195. <th>Unidad</th>
  1196. <th>Código</th>
  1197. <th>Modelo</th>
  1198. <th>Precio Unitario</th>
  1199. <th>Cantidad</th>
  1200. <th>Precio Total</th>
  1201. <th>No. de selección</th>
  1202. </tr>
  1203. </thead>
  1204. <tbody>';
  1205. foreach ($arrArtitle as $keyArtitle => $artitle) {
  1206. $html.= '<tr>
  1207. <td>'.$artitle['ARTI_IDAR'].'</td>
  1208. <td>'.$artitle['ARTI_CODI'].'</td>
  1209. <td>'.$artitle['ARTI_NOMB'].'</td>
  1210. <td>'.$artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')'.'</td>
  1211. <td>'.$artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')'.'</td>
  1212. <!-- <td>'.$artitle['DEAR_DESC'].'</td> -->
  1213. <!-- <td>'.$artitle['DEAR_CARA'].'</td> -->
  1214. <td>'.$artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')'.'</td>
  1215. <td>'.$artitle['INAR_CODI'].'</td>
  1216. <td>'.$artitle['INAR_MODE'].'</td>
  1217. <td>'.'$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] .'</td>
  1218. <td>'.$artitle['CANTIDAD'].'</td>
  1219. <td>'.'$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD'] ) . ' ' . $artitle['CAMO_COMO'] .'</td>
  1220. <td>'.$artitle['ARSE_IDAS'].'</td>
  1221. </tr>';
  1222. }
  1223. $html.= '</tbody>
  1224. </table>';
  1225. }
  1226. $html.='</body></html>';
  1227. $nuli = $this->resourcesController->formatSecuence($line, 2);
  1228. $como = 'GEAD'; // Código del módulo
  1229. $cldo = 'IN'; // Código de la clasificación
  1230. $fecr = date('ymd'); // Fecha en la se carga el archivo
  1231. try {
  1232. $arrSecuence = (array) DB::table('S002V01TAFAL')
  1233. ->where('AFAL_COMO', '=', $como)
  1234. ->where('AFAL_CLDO', '=', $cldo)
  1235. ->where('AFAL_NULI', '=', $line)
  1236. ->orderBy('AFAL_NUSE', 'desc')
  1237. ->first([ 'AFAL_NUSE' ]);
  1238. } catch (\Throwable $th) {
  1239. return $this->responseController->makeResponse(
  1240. true,
  1241. "ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
  1242. $th->getMessage(),
  1243. 500
  1244. );
  1245. }
  1246. $nuse = 1; // Secuencia del documento
  1247. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  1248. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  1249. }
  1250. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  1251. $nuve = $this->resourcesController->formatSecuence('1', 2);
  1252. $noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
  1253. $nuli = $this->resourcesController->formatSecuence($line, 2);
  1254. $como = 'GEAD'; // Código del módulo
  1255. $cldo = 'IN'; // Código de la clasificación
  1256. $fecr = date('ymd'); // Fecha en la se carga el archivo
  1257. try {
  1258. $arrSecuence = (array) DB::table('S002V01TAFAL')
  1259. ->where('AFAL_COMO', '=', $como)
  1260. ->where('AFAL_CLDO', '=', $cldo)
  1261. ->where('AFAL_NULI', '=', $line)
  1262. ->orderBy('AFAL_NUSE', 'desc')
  1263. ->first([ 'AFAL_NUSE' ]);
  1264. } catch (\Throwable $th) {
  1265. return $this->responseController->makeResponse(
  1266. true,
  1267. "ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
  1268. $th->getMessage(),
  1269. 500
  1270. );
  1271. }
  1272. $nuse = 1; // Secuencia del documento
  1273. if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
  1274. $nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
  1275. }
  1276. $nuse = $this->resourcesController->formatSecuence($nuse, 6);
  1277. $nuve = $this->resourcesController->formatSecuence('1', 2);
  1278. $noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
  1279. $exte = 'pdf';
  1280. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1281. $filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
  1282. } else {
  1283. $filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
  1284. }
  1285. $fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
  1286. $tempFile = $filePath . $fileName;
  1287. $dompdf = new Dompdf();
  1288. $dompdf ->loadHtml($html);
  1289. $dompdf->setPaper('A4', 'landscape');
  1290. $dompdf->render();
  1291. $output = $dompdf->output();
  1292. file_put_contents($tempFile, $output);
  1293. $ubic = Storage::putFile('files', new File($tempFile));
  1294. $ubic = str_replace("/", "\\", $ubic);
  1295. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1296. $ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
  1297. } else {
  1298. $ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
  1299. }
  1300. $tama = filesize($ubic);
  1301. $usac = json_encode([$user]);
  1302. $now = $this->functionsController->now();
  1303. $currentDate = $now->toDateTimeString();
  1304. try {
  1305. $validateInsert = DB::table('S002V01TAFAL')->insert([
  1306. 'AFAL_NULI' => $line,
  1307. 'AFAL_COMO' => $como,
  1308. 'AFAL_CLDO' => $cldo,
  1309. 'AFAL_FECR' => $fecr,
  1310. 'AFAL_NUSE' => $nuse,
  1311. 'AFAL_NUVE' => $nuve,
  1312. 'AFAL_NOAR' => $noar,
  1313. 'AFAL_EXTE' => $exte,
  1314. 'AFAL_TAMA' => $tama,
  1315. 'AFAL_UBIC' => $ubic,
  1316. 'AFAL_USAC' => $usac,
  1317. 'AFAL_USRE' => $user,
  1318. 'AFAL_FERE' => $currentDate,
  1319. ]);
  1320. } catch (\Throwable $th) {
  1321. return $this->responseController->makeResponse(
  1322. true,
  1323. "ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
  1324. $th->getMessage(),
  1325. 500
  1326. );
  1327. }
  1328. if ( !$validateInsert ) {
  1329. return $this->responseController->makeResponse(
  1330. true,
  1331. "ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
  1332. [],
  1333. 500
  1334. );
  1335. }
  1336. if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
  1337. $urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
  1338. } else {
  1339. $urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
  1340. }
  1341. return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
  1342. }
  1343. }