OrderReceptionController.php 62 KB

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