responseController = new ResponseController();
$this->encController = new EncryptionController();
$this->resourcesController = new ResourcesController();
$this->documentManagementController = new DocumentManagementController();
$this->functionsController = new FunctionsController();
$this->processManagementController = new ProcessManagementController();
}
public function getFamiliesAndSubfamilies ($user, $line) {
try {
$arrFamilias = DB::table('S002V01TFAMI')
->where('FAMI_ESTA', '=', 'Activo')
->where('FAMI_NULI', '=', $line)
->get([
'FAMI_COFA AS ID_FAMILIA',
'FAMI_NOFA AS FAMILIA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETFAMILYS000: No se pudo realizar la consulta de las familias en la base.",
$th->getMessage(),
500
);
}
try {
$arrSubfamilias = DB::table('S002V01TSUBF')
->where('SUBF_ESTA', '=', 'Activo')
->where('SUBF_NULI', '=', $line)
->get([
'SUBF_COSU AS ID_SUBFAMILIA',
'SUBF_NOSU AS SUBFAMILIA',
'SUBF_COFA AS ID_FAMILIA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETFAMILYS001: No se pudo realizar la consulta de las subfamilias en la base.",
$th->getMessage(),
500
);
}
try {
foreach ($arrFamilias as $keyFamilias => $familias) {
$familias->SUBFAMILIAS = array();
foreach ($arrSubfamilias as $keySubfamilias => $subfamilias) {
if ($familias->ID_FAMILIA == $subfamilias->ID_FAMILIA) {
$familias->SUBFAMILIAS[] = array(
"ID_SUBFAMILIA" => $subfamilias->ID_SUBFAMILIA,
"SUBFAMILIA" => $subfamilias->SUBFAMILIA,
);
}
}
}
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETFAMILYS002: Ocurrió un error al generar la respuesta de la consulta.",
$th->getMessage(),
500
);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFamilias);
}
public function registerFamily(Request $request){
$valitador = Validator::make($request->all(), [
'FAMILIA' => 'required|string|max:50',
'LINE' => 'required|integer',
'USER' => 'required|string'
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_FAMILY_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
$usuario = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TFAMI')->insert([
"FAMI_NOFA" => trim($responseData['FAMILIA']),
"FAMI_USRE" => $usuario,
"FAMI_NULI" => $responseData['LINE'],
"FAMI_FERE" => $currentDate,
"FAMI_FEAR" => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al ingresar los registros.", $th->getMessage(), 401);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo ingresar los datos a la base de datos.", [], 401);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function getUnits($user, $line) {
try {
$arrFamilias = DB::table('S002V01TUNID')
->where('UNID_NULI', '=', $line)
->get([
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS UNIDAD',
'UNID_ESTA AS ESTADO',
'UNID_USRE AS USUARIO_REGISTRA',
'UNID_FERE AS FECHA_REGISTRA',
'UNID_USMO AS USUARIO_MODIFICA',
'UNID_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETUNITS000: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrFamilias);
}
public function getUnitsActives($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_UNITS_GETACTIVES000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrFamilias = DB::table('S002V01TUNID')
->where('UNID_NULI', '=', $line)
->where('UNID_ESTA', '=', 'Activo')
->get([
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS UNIDAD',
'UNID_USRE AS USUARIO_REGISTRA',
'UNID_FERE AS FECHA_REGISTRA',
'UNID_USMO AS USUARIO_MODIFICA',
'UNID_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_UNITS_GETACTIVES001: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFamilias);
}
public function registerUnit(Request $request){
$valitador = Validator::make($request->all(), [
'UNIDAD' => 'required|string|max:50',
'LINE' => 'required|integer',
'USER' => 'required|string'
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_UNITS_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_UNITS_REG001:'.$arrResponseCheckUser['msg'], [], 401);
}
$usuario = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TUNID')->insert([
"UNID_NOMB" => trim($responseData['UNIDAD']),
"UNID_USRE" => $usuario,
"UNID_NULI" => $responseData['LINE'],
"UNID_FERE" => $currentDate,
"UNID_FEAR" => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_UNITS_REG002: Ocurrió un error al ingresar los registros.",
$th->getMessage(),
401
);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_UNITS_REG003: No se pudo ingresar los datos a la base de datos.",
[],
401
);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function registerSubfamily(Request $request){
$valitador = Validator::make($request->all(), [
'ID_FAMILIA' => 'required|integer',
'SUBFAMILIA' => 'required|string|max:50',
'LINE' => 'required|integer',
'USER' => 'required|string'
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_SUBFAMILY_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
try {
$validateExists = DB::table('S002V01TFAMI')
->where('FAMI_COFA', '=', trim($responseData['ID_FAMILIA']))
->where('FAMI_ESTA', '=', 'Activo')
->where('FAMI_NULI', '=', $responseData['LINE'])
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_SUBFAMILY_REG001: Ocurrió al verificar la Familia.",
$th->getMessage(),
401
);
}
if (!$validateExists) {
return $this->responseController->makeResponse(
true,
"ERR_SUBFAMILY_REG002: La Familia seleccionada no existe.",
[],
401
);
}
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_SUBFAMILY_REG003:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TSUBF')->insert([
"SUBF_COFA" => $responseData['ID_FAMILIA'],
"SUBF_NOSU" => $responseData['SUBFAMILIA'],
"SUBF_USRE" => $user,
"SUBF_NULI" => $responseData['LINE'],
"SUBF_FERE" => $currentDate,
"SUBF_FEAR" => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_SUBFAMILY_REG004: Ocurrió un error al ingresar los registros.",
$th->getMessage(),
401
);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_SUBFAMILY_REG005: No se pudo ingresar los datos a la base de datos.",
[],
401
);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function getArtitles($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GET000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$getArtitle = DB::table('S002V01TARTI')->select([
"DEAR_IDDE AS ID_DESC_ARTI",
"ARTI_IDAR AS ID_ARTICULO",
"ARTI_NOMB AS MODELO",
"FAMI_COFA AS ID_FAMILIA",
"FAMI_NOFA AS FAMILIA",
"SUBF_COSU AS ID_SUBFAMILIA",
"SUBF_NOSU AS SUBFAMILIA",
"DEAR_DESC AS DESCRIPCION",
"DEAR_CARA AS CARACTERISTICAS",
"DEAR_COWE AS COMPRA_WEB",
"DEAR_IDUN AS TIPO_UNIDAD",
"DEAR_IMAG AS URL_IMAGEN",
"PROV_NUPR AS ID_PROVEEDOR",
"PROV_NOCO AS PROVEEDOR",
])->where([
["ARTI_NULI", "=", $line],
["FAMI_NULI", "=", $line],
["SUBF_NULI", "=", $line],
["DEAR_NULI", "=", $line],
["PROV_NULI", "=", $line],
["UNID_NULI", "=", $line],
["ARTI_ESTA", "=", "Activo"],
["FAMI_ESTA", "=", "Activo"],
["SUBF_ESTA", "=", "Activo"],
["DEAR_ESTA", "=", "Activo"],
["PROV_ESTA", "=", "Activo"],
["UNID_ESTA", "=", "Activo"],
])->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA")
->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU")
->join("S002V01TDEAR", "ARTI_IDAR", "=", "DEAR_IDAR")
->join("S002V01TPROV", "DEAR_NUPR", "=", "PROV_NUPR")
->join("S002V01TUNID", "DEAR_IDUN", "=", "UNID_IDUN")->get()->all();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GET001: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
try {
foreach ($getArtitle as $artitle) {
$arrImagen = json_decode($artitle->URL_IMAGEN);
$arrUrlImage = array();
foreach ($arrImagen as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET002: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$artitle->URL_IMAGEN = $arrUrlImage;
}
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GET003: Ocurrió un error al obtener las imangenes de los artículos.",
$th->getMessage(),
500
);
}
$getArtitle = json_decode(json_encode($getArtitle), true);
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getArtitle);
}
public function getArtitleByProvider($artitle, $provider, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GETBYPROVIDER000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$idArtitle = $this->encController->decrypt($artitle);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETBYPROVIDER001: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
try {
$idProvider = $this->encController->decrypt($provider);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETBYPROVIDER002: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
try {
$objArtitle = (array) DB::table('S002V01TDEAR')
->where("ARTI_NULI", "=", $line)
->where("DEAR_IDDE", "=", $idArtitle)
->where("DEAR_NUPR", "=", $idProvider)
->join("S002V01TARTI", "ARTI_IDAR", "=", "DEAR_IDAR")
->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA")
->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU")
->join("S002V01TPROV", "DEAR_NUPR", "=", "PROV_NUPR")
->join("S002V01TUNID", "DEAR_IDUN", "=", "UNID_IDUN")
->first([
"DEAR_IDDE AS ID_DESC_ARTI",
"ARTI_IDAR AS ID_ARTICULO",
"ARTI_NOMB AS MODELO",
"FAMI_COFA AS ID_FAMILIA",
"FAMI_NOFA AS FAMILIA",
"SUBF_COSU AS ID_SUBFAMILIA",
"SUBF_NOSU AS SUBFAMILIA",
"DEAR_DESC AS DESCRIPCION",
"DEAR_CARA AS CARACTERISTICAS",
"DEAR_COWE AS COMPRA_WEB",
"UNID_IDUN AS ID_UNIDAD",
"UNID_NOMB AS UNIDAD",
"DEAR_IMAG AS URL_IMAGEN",
"PROV_NUPR AS ID_PROVEEDOR",
"PROV_NOCO AS PROVEEDOR",
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETBYPROVIDER003: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
if ( empty($objArtitle) ) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYPROVIDER004: No se encontró el resultado deseado.", [], 500);
}
try {
$objArtitle['URL_IMAGEN'] = json_decode($objArtitle['URL_IMAGEN']);
$arrUrlImage = array();
foreach ($objArtitle['URL_IMAGEN'] as $key => $encImage) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($encImage, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYPROVIDER005: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$objArtitle['URL_IMAGEN'] = $arrUrlImage;
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETBYPROVIDER006: Ocurrió un error al obtner las imagenes de los artículos",
$th->getMessage(),
500
);
}
try {
$arrInformation = DB::table('S002V01TINAR')
->where('INAR_ESTA', '=', 'Activo')
->where('INAR_NULI', '=', $line)
->where('INAR_IDDE', '=', $objArtitle['ID_DESC_ARTI'])
->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
->get([
'INAR_IDIN AS NUMERO_INFORMACION',
'INAR_CODI AS CODIGO',
'INAR_MODE AS MODELO',
'CAMO_COMO AS MONEDA',
'CAMO_DESC AS MONEDA_DESCRIPCION',
'INAR_PREC AS PRECIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTICAS',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_GETBYPROVIDER007: No se pudo realizar la consulta a la base.",
$th->getMessage(),
500
);
}
$objArtitle['INFO_PRODUCTO'] = json_encode($arrInformation);
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $objArtitle);
}
public function getArticleById($idArticle, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
$idArticle = $this->encController->decrypt($idArticle);
if (is_null($idArticle)) {
return $this->responseController->makeResponse(true, 'El identificador del artículo no está encriptado correctamente.', [], 401);
}
try {
$article = DB::table('S002V01TARTI')
->where([
['ARTI_NULI', '=', $line],
['ARTI_IDAR', '=', $idArticle],
['ARTI_ESTA', '=', 'Activo'],
])
->first([
'ARTI_IDAR AS ID_ARTICULO',
'ARTI_COFA AS FAMILIA',
'ARTI_COSU AS SUBFAMILIA',
'ARTI_CODI AS CODIGO',
'ARTI_NOMB AS ARTICULO',
'ARTI_ESTA AS ESTADO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del artículo #{$idArticle}.", $th->getMessage(), 500);
}
if (is_null($article) || empty((array)$article)) {
return $this->responseController->makeResponse(true, "No existen datos del artículo #{$idArticle}.", [], 500);
}
try {
$arrDescription = DB::table('S002V01TDEAR')
->where([
['DEAR_NULI', '=', $line],
['DEAR_IDAR', '=', $idArticle],
['DEAR_ESTA', '=', 'Activo'],
])
->join('S002V01TPROV', 'PROV_NUPR', '=', 'DEAR_NUPR')
->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN')
->get([
'DEAR_IDDE AS ID_DESCRIPCION',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS PROVEEDOR',
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS UNIDAD',
'DEAR_DESC AS DESCRIPCION',
'DEAR_CARA AS CARACTERISTICAS',
'DEAR_ESTA AS ESTADO',
'DEAR_IMAG AS ARCHIVOS',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido la descripción del artículo #{$idArticle}.", $th->getMessage(), 500);
}
foreach ($arrDescription as $description) {
$images = json_decode($description->ARCHIVOS);
$files = array();
foreach ($images as $img) {
$response = $this->documentManagementController->getFileByCode($img, $user, $line);
if ($response['error']) {
return $this->responseController->makeResponse(true, $response['msg'], $response['response'], 500);
}
$dataFile = $response['response'];
$files[] = $dataFile;
}
$description->ARCHIVOS = $files;
try {
$arrDetails = DB::table('S002V01TINAR')
->where([
['INAR_NULI', '=', $line],
['INAR_IDDE', '=', $description->ID_DESCRIPCION],
['INAR_ESTA', '=', 'Activo'],
])
->get([
'INAR_IDIN AS ID_DETAILS',
'INAR_CODI AS CODIGO',
'INAR_MODE AS MODELO',
'INAR_COMO AS MONEDA',
'INAR_PREC AS PRECIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTICAS',
'INAR_ESTA AS ESTADO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido de los detalles de la descripción del artículo #{$idArticle}.", $th->getMessage(), 500);
}
$description->DETALLES = $arrDetails;
}
$article->DESCRIPCION_ARTICULO = $arrDescription;
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $article);
}
public function getAllArtitles($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GETALL000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrArtitle = DB::table('S002V01TARTI')
->where("ARTI_NULI", "=", $line)
->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA")
->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU")
->get([
"ARTI_IDAR AS ID_ARTICULO",
"ARTI_NOMB AS MODELO",
"FAMI_COFA AS ID_FAMILIA",
"FAMI_NOFA AS FAMILIA",
"SUBF_COSU AS ID_SUBFAMILIA",
"SUBF_NOSU AS SUBFAMILIA",
"ARTI_ESTA AS ESTADO",
"ARTI_USRE AS USUARIO_REGISTRA",
"ARTI_FERE AS FECHA_REGISTRA",
"ARTI_USMO AS USUARIO_MODIFICA",
"ARTI_FEMO AS FECHA_MODIFICA",
]);
$arrArtitle = json_decode(json_encode($arrArtitle), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETALL001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrArtitle, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrArtitle = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrArtitle);
}
public function registerArtitlesOld(Request $request) {
$validator = Validator::make($request->all(), [
'CODIGO' => 'required|string',
'ARTICULO' => 'required|string',
'FAMILIA' => 'required|string',
'SUBFAMILIA' => 'required|string',
'INFORMATION' => 'required|array',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
foreach ($requestData['INFORMATION'] as $information) {
$validator = Validator::make($information, [
'NO' => 'required|string',
'IMAGEN' => 'required|array',
'DESCRIPCION' => 'required|string',
// 'CARACTERISTICAS' => '|string',
'TIPO_UNIDAD' => 'required|integer',
'PROVEEDOR' => 'required|string',
'COMPRA_WEB' => 'required|boolean',
'ESTADO' => 'required|string',
'DETAILS' => 'required|array',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_REG001: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
foreach ($information['DETAILS'] as $details) {
$validator = Validator::make($details, [
'NO' => 'required|string',
'CODIGO' => 'required|string',
'MODELO' => 'required|string',
'MONEDA' => 'required|string',
'PRECIO' => 'required|string',
'MONTO_MINIMO' => 'required|string',
'ESTADO' => 'required|string',
'CARACTERISTICAS' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_REG002: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
}
}
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG003:'.$arrResponseCheckUser['msg'], [], 401);
}
$usuario = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$idArtitle = DB::table('S002V01TARTI')->insertGetId([
'ARTI_CODI' => $requestData['CODIGO'],
'ARTI_COFA' => $requestData['FAMILIA'],
'ARTI_COSU' => $requestData['SUBFAMILIA'],
'ARTI_NOMB' => $requestData['ARTICULO'],
'ARTI_NULI' => $requestData['NUMERO_LINEA'],
'ARTI_USRE' => $usuario,
'ARTI_FERE' => $currentDate,
'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG004: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
foreach ($requestData['INFORMATION'] as $keyInformation => $information) {
try {
$arrCodeImages = array();
foreach ($information['IMAGEN'] as $key => $encIdFile) {
$idFile = $this->encController->decrypt($encIdFile);
$tempFile = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
if(is_null($tempFile)){
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG005: El archivo consultado no está registrado', [], 404);
}else if($tempFile->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG006: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($requestData['NUMERO_LINEA']),
'GEAD',
'FO',
$tempFile,
$usuario,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG007: '.$fileResponse[1], [], 400);
}
$arrCodeImages[] = $this->encController->encrypt($fileResponse[1]);
}
$jsonImages = json_encode($arrCodeImages);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG008: Ocurrió un error al obtener la URL pública de las imágenes.", $th->getMessage(), 500);
}
try {
$idDescription = DB::table('S002V01TDEAR')->insertGetId([
'DEAR_DESC' => $information['DESCRIPCION'],
'DEAR_CARA' => $information['CARACTERISTICAS'],
'DEAR_COWE' => $information['COMPRA_WEB'],
'DEAR_IDUN' => $information['TIPO_UNIDAD'],
'DEAR_IMAG' => $jsonImages,
'DEAR_NUPR' => $information['PROVEEDOR'],
'DEAR_IDAR' => $idArtitle,
'DEAR_NULI' => $requestData['NUMERO_LINEA'],
'DEAR_USRE' => $usuario,
'DEAR_FERE' => $currentDate,
'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG009: Ocurrió un error al insertar los datos de la información del artículo.", $th->getMessage(), 500);
}
$arrDetails = $information['DETAILS'];
foreach ($arrDetails as $keyDetails => $details) {
$insertDetails = [
'INAR_IDDE' => $idDescription,
'INAR_CODI' => $details['CODIGO'],
'INAR_MODE' => $details['MODELO'],
'INAR_COMO' => $details['MONEDA'],
'INAR_PREC' => $details['PRECIO'],
'INAR_MOMI' => $details['MONTO_MINIMO'],
'INAR_CARA' => $details['CARACTERISTICAS'],
'INAR_NULI' => $requestData['NUMERO_LINEA'],
'INAR_USRE' => $usuario,
'INAR_FERE' => $currentDate,
'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$validateDetails = DB::table('S002V01TINAR')->insert($insertDetails);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG010: Ocurrió un error al insertar los datos de los detalles del artículo.", $th->getMessage(), 500);
}
if (!$validateDetails) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG011: No se pudo insertar los datos de los detalles.", [], 500);
}
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function registerArticle (Request $request) {
$validator = Validator::make($request->all(), [
'CODIGO' => 'required|string',
'ARTICULO' => 'required|string',
'FAMILIA' => 'required|string',
'SUBFAMILIA' => 'required|string',
'DESCRIPCION_ARTICULO' => 'required|array',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
try {
$validateExists = DB::table("S002V01TFAMI")->where([
['FAMI_COFA', '=', $requestData['FAMILIA']],
['FAMI_NULI', '=', $requestData['NUMERO_LINEA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la familia.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La familia {$requestData['FAMILIA']} no existe.", [], 500);
}
unset($validateExists);
try {
$validateExists = DB::table('S002V01TSUBF')
->where([
['SUBF_NULI', '=', $requestData['NUMERO_LINEA']],
['SUBF_COFA', '=', $requestData['FAMILIA']],
['SUBF_COSU', '=', $requestData['SUBFAMILIA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la subfamilia.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La subfamilia {$requestData['SUBFAMILIA']} perteneciente a la familia {$requestData['FAMILIA']} no existe.", [], 500);
}
unset($validateExists);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$idArticle = DB::table('S002V01TARTI')
->insertGetId([
'ARTI_NULI' => $requestData['NUMERO_LINEA'],
'ARTI_COFA' => $requestData['FAMILIA'],
'ARTI_COSU' => $requestData['SUBFAMILIA'],
'ARTI_CODI' => $requestData['CODIGO'],
'ARTI_NOMB' => $requestData['ARTICULO'],
'ARTI_USRE' => $user,
'ARTI_FERE' => $currentDate,
'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el artículo.", $th->getMessage(), 500);
}
if ($idArticle <= 0) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo registra el artículo.", [], 500);
}
foreach ($requestData['DESCRIPCION_ARTICULO'] as $item => $descriptions) {
try {
$validateExists = DB::table('S002V01TUNID')
->where([
['UNID_NULI', '=', $requestData['NUMERO_LINEA']],
['UNID_IDUN', '=', $descriptions['ID_UNIDAD']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}).", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}) no existe.", [], 500);
}
unset($validateExists);
try {
$validateExists = DB::table('S002V01TPROV')
->where([
['PROV_NULI', '=', $requestData['NUMERO_LINEA']],
['PROV_NUPR', '=', $descriptions['NUMERO_PROVEEDOR']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia del proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}).", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "El proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}) no existe.", [], 500);
}
unset($validateExists);
$arrImages = [];
foreach ($descriptions['ARCHIVOS'] as $files) {
$idFile = $this->encController->decrypt($files['ID']);
if (is_null($idFile)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del identificador del archivo temporal.", [], 500);
}
try {
$tempFile = DB::table('S002V01TARTE')
->where([
['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los archivos temporales.", $th->getMessage(), 500);
}
if (is_null($tempFile) || empty((array)$tempFile)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se encontró el archivo temporal dentro de la base de datos.", [], 500);
}
if ($tempFile->ARTE_ESTA == 'Eliminado') {
DB::rollBack();
return $this->responseController->makeResponse(true, "El archivo consultado se encuentra eliminado.", [], 500);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($requestData['NUMERO_LINEA']),
'GEAD',
'FO',
$tempFile,
$user,
);
if(!$fileResponse[0]){
DB::rollBack();
return $this->responseController->makeResponse(true, $fileResponse[1], [], 400);
}
$arrImages[] = $this->encController->encrypt($fileResponse[1]);
}
$images = json_encode($arrImages);
try {
$idDescription = DB::table('S002V01TDEAR')
->insertGetId([
'DEAR_NULI' => $requestData['NUMERO_LINEA'],
'DEAR_IMAG' => $images,
'DEAR_DESC' => $descriptions['DESCRIPCION'],
'DEAR_CARA' => $descriptions['CARACTERISTICAS'],
'DEAR_COWE' => true,
'DEAR_IDUN' => $descriptions['ID_UNIDAD'],
'DEAR_NUPR' => $descriptions['NUMERO_PROVEEDOR'],
'DEAR_IDAR' => $idArticle,
'DEAR_PRIO' => $item + 1,
'DEAR_CAAR' => $descriptions['CANTIDAD_UNIDAD'],
'DEAR_USRE' => $user,
'DEAR_FERE' => $currentDate,
'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500);
}
if ($idDescription <= 0) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo registrar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", [], 500);
}
foreach ($descriptions['DETALLES'] as $details) {
try {
$validateExists = DB::table('S002V01TCAMO')
->where([
['CAMO_NULI', '=', $requestData['NUMERO_LINEA']],
['CAMO_COMO', '=', $details['MONEDA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al verificar la existencia de la moneda {$details['MONEDA']}.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La moneda {$details['MONEDA']} no existe.", [], 500);
}
unset($validateExists);
try {
$validateInsert = DB::table('S002V01TINAR')
->insert([
'INAR_NULI' => $requestData['NUMERO_LINEA'],
'INAR_IDDE' => $idDescription,
'INAR_CODI' => $details['CODIGO'],
'INAR_MODE' => $details['MODELO'],
'INAR_COMO' => $details['MONEDA'],
'INAR_PREC' => $details['PRECIO'],
'INAR_MOMI' => $details['MONTO_MINIMO'],
'INAR_CARA' => $details['CARACTERISTICAS'],
'INAR_USRE' => $user,
'INAR_FERE' => $currentDate,
'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al registrar los detalles de la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500);
}
if ($validateInsert === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo registrar los detalles de descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", [], 500);
}
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro exitoso");
}
public function updateArticle (Request $request, $idArticle) {
$validator = Validator::make($request->all(), [
'CODIGO' => 'required|string',
'ARTICULO' => 'required|string',
'FAMILIA' => 'required|string',
'SUBFAMILIA' => 'required|string',
'DESCRIPCION_ARTICULO' => 'required|array',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$idArticle = $this->encController->decrypt($idArticle);
if (is_null($idArticle)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "El identificador del artículo no está encriptado correctamente.", [], 500);
}
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
try {
$validateExists = DB::table("S002V01TFAMI")->where([
['FAMI_COFA', '=', $requestData['FAMILIA']],
['FAMI_NULI', '=', $requestData['NUMERO_LINEA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la familia.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La familia {$requestData['FAMILIA']} no existe.", [], 500);
}
unset($validateExists);
try {
$validateExists = DB::table('S002V01TSUBF')
->where([
['SUBF_NULI', '=', $requestData['NUMERO_LINEA']],
['SUBF_COFA', '=', $requestData['FAMILIA']],
['SUBF_COSU', '=', $requestData['SUBFAMILIA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la subfamilia.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La subfamilia {$requestData['SUBFAMILIA']} perteneciente a la familia {$requestData['FAMILIA']} no existe.", [], 500);
}
unset($validateExists);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TARTI')
->where([
['ARTI_IDAR', '=', $idArticle],
['ARTI_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTI_ESTA', '=', 'Activo'],
])
->update([
'ARTI_COFA' => $requestData['FAMILIA'],
'ARTI_COSU' => $requestData['SUBFAMILIA'],
'ARTI_CODI' => $requestData['CODIGO'],
'ARTI_NOMB' => $requestData['ARTICULO'],
'ARTI_USRE' => $user,
'ARTI_FERE' => $currentDate,
'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar el artículo.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo modificar el artículo #{$idArticle}.", [], 500);
}
foreach ($requestData['DESCRIPCION_ARTICULO'] as $item => $descriptions) {
try {
$validateExists = DB::table('S002V01TUNID')
->where([
['UNID_NULI', '=', $requestData['NUMERO_LINEA']],
['UNID_IDUN', '=', $descriptions['ID_UNIDAD']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}).", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}) no existe.", [], 500);
}
unset($validateExists);
try {
$validateExists = DB::table('S002V01TPROV')
->where([
['PROV_NULI', '=', $requestData['NUMERO_LINEA']],
['PROV_NUPR', '=', $descriptions['NUMERO_PROVEEDOR']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia del proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}).", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "El proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}) no existe.", [], 500);
}
unset($validateExists);
$arrImages = [];
foreach ($descriptions['ARCHIVOS'] as $files) {
if ($files['TYPE'] === 'R') {
$idFile = $this->encController->decrypt($files['ID']);
if (is_null($idFile)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del identificador del archivo temporal.", [], 500);
}
try {
$tempFile = DB::table('S002V01TARTE')
->where([
['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los archivos temporales.", $th->getMessage(), 500);
}
if (is_null($tempFile) || empty((array)$tempFile)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se encontró el archivo temporal dentro de la base de datos.", [], 500);
}
if ($tempFile->ARTE_ESTA == 'Eliminado') {
DB::rollBack();
return $this->responseController->makeResponse(true, "El archivo consultado se encuentra eliminado.", [], 500);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($requestData['NUMERO_LINEA']),
'GEAD',
'FO',
$tempFile,
$user,
);
if(!$fileResponse[0]){
DB::rollBack();
return $this->responseController->makeResponse(true, $fileResponse[1], [], 400);
}
$arrImages[] = $this->encController->encrypt($fileResponse[1]);
}
if ($files['TYPE'] === 'O') {
$idFile = $this->encController->encrypt($files['ID']);
$arrImages[] = $idFile;
}
if ($files['TYPE'] === 'OD') {
$idFile = $this->encController->encrypt($files['ID']);
$request = new Request([
'id_user' => $requestData['USUARIO'],
'id_file' => $idFile,
'linea' => $requestData['NUMERO_LINEA'],
]);
$responseData = $this->documentManagementController->deleteFile($request);
$responseData = json_decode($responseData->original, true);
if ($responseData['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $responseData['msg'], $responseData['response'], 500);
}
}
}
$images = json_encode($arrImages);
try {
$valdateUpdate = DB::table('S002V01TDEAR')
->where([
['DEAR_NULI', '=', $requestData['NUMERO_LINEA']],
['DEAR_IDDE', '=', $descriptions['ID_DESCRIPCION']],
['DEAR_IDAR', '=', $idArticle],
['DEAR_ESTA', '=', 'Activo'],
])
->update([
'DEAR_IMAG' => $images,
'DEAR_DESC' => $descriptions['DESCRIPCION'],
'DEAR_CARA' => $descriptions['CARACTERISTICAS'],
'DEAR_COWE' => true,
'DEAR_IDUN' => $descriptions['ID_UNIDAD'],
'DEAR_NUPR' => $descriptions['NUMERO_PROVEEDOR'],
'DEAR_CAAR' => $descriptions['CANTIDAD_UNIDAD'],
'DEAR_PRIO' => $item + 1,
'DEAR_USMO' => $user,
'DEAR_FEMO' => $currentDate,
'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500);
}
if (!$valdateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo actualizar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", [], 500);
}
foreach ($descriptions['DETALLES'] as $details) {
try {
$validateExists = DB::table('S002V01TCAMO')
->where([
['CAMO_NULI', '=', $requestData['NUMERO_LINEA']],
['CAMO_COMO', '=', $details['MONEDA']],
])->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al verificar la existencia de la moneda {$details['MONEDA']}.", $th->getMessage(), 500);
}
if ($validateExists === false) {
DB::rollBack();
return $this->responseController->makeResponse(true, "La moneda {$details['MONEDA']} no existe.", [], 500);
}
unset($validateExists);
try {
$validateUpdate = DB::table('S002V01TINAR')
->where([
['INAR_NULI', '=', $requestData['NUMERO_LINEA']],
['INAR_IDIN', '=', $details['ID_DETAILS']],
['INAR_IDDE', '=', $descriptions['ID_DESCRIPCION']],
['INAR_ESTA', '=', 'Activo'],
])
->update([
'INAR_CODI' => $details['CODIGO'],
'INAR_MODE' => $details['MODELO'],
'INAR_COMO' => $details['MONEDA'],
'INAR_PREC' => $details['PRECIO'],
'INAR_MOMI' => $details['MONTO_MINIMO'],
'INAR_CARA' => $details['CARACTERISTICAS'],
'INAR_USMO' => $user,
'INAR_FEMO' => $currentDate,
'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al modificar los detalles de la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "No se pudo modificar los detalles de descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", [], 500);
}
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
}
public function deleteArtitle(Request $request) {
$validator = Validator::make($request->all(), [
'NUMERO_ARTITULO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
'USUARIO' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_DEL000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_ARTITLE_DEL001:'.$arrResponseCheckUser['msg'], [], 401);
}
$usuario = $arrResponseCheckUser['response'];
try {
$artitleNumber = $this->encController->decrypt($requestData['NUMERO_ARTITULO']);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_DEL002: Ocurrió un error al modificar el registro.",
$th->getMessage(),
500
);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TARTI')
->where('ARTI_IDAR', '=', $artitleNumber)
->where('ARTI_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'ARTI_ESTA' => 'Eliminado',
'ARTI_USMO' => $usuario,
'ARTI_FEMO' => $currentDate,
'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL003: Ocurrió un error al modificar el registro.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL004: Ocurrió un error al modificar en la tabla.", [], 500);
}
try {
$arrDescription = DB::table('S002V01TDEAR')
->where('DEAR_IDAR', '=', $artitleNumber)
->get([ 'DEAR_IDDE AS NUMERO_DESCRIPCION' ]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL005: Ocurrió un error al obtener los datos de la descripción del artículo", $th->getMessage(), 500);
}
foreach ($arrDescription as $keyDescription => $description) {
$numeroDescripcion = $description->NUMERO_DESCRIPCION;
try {
$validateUpdate = DB::table('S002V01TDEAR')
->where('DEAR_IDDE', '=', $numeroDescripcion)
->where('DEAR_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'DEAR_ESTA' => 'Eliminado',
'DEAR_USMO' => $usuario,
'DEAR_FEMO' => $currentDate,
'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL007: Ocurrió un error al modificar el registro.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL006: Ocurrió un error al modificar en la tabla.", [], 500);
}
try {
$validateUpdate = DB::table('S002V01TINAR')
->where('INAR_IDDE', '=', $numeroDescripcion)
->where('INAR_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'INAR_ESTA' => 'Eliminado',
'INAR_USMO' => $usuario,
'INAR_FEMO' => $currentDate,
'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL009: Ocurrió un error al modificar el registro.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL008: Ocurrió un error al modificar en la tabla.", [], 500);
}
}
DB::commit(); # Para guardar los cambios en la base de datos
return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa");
}
public function generateArtitles(Request $request) {
$validator = Validator::make($request->all(), [
'FILE_ZIP' => 'required',
'NUMERO_LINEA' => 'required',
'USUARIO' => 'required',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ARTITLE_MOD000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
}
public function getArtitleByInformation($information, $user, $line) {
try {
$objInformation = (array) DB::table('S002V01TINAR')
->where('INAR_IDIN', '=', $information)
->where('INAR_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
->join('S002V01TARTI', 'ARTI_IDAR', '=', 'DEAR_IDAR')
->join('S002V01TFAMI', 'FAMI_COFA', '=', 'ARTI_COFA')
->join('S002V01TSUBF', 'SUBF_COSU', '=', 'ARTI_COSU')
->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'DEAR_NUPR')
->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
->first([
'INAR_IDIN', // Identificador de Información del artículo
'INAR_CODI', // Código del artículo
'INAR_MODE', // Modelo del artículo
DB::raw('CONCAT("(", CAMO_COMO, ") ", CAMO_DESC) AS CAMO_COMO'),
'INAR_PREC', // Precio
'INAR_CARA', // Características
'DEAR_IDDE', // Identificador de la descripción del artículo
'DEAR_DESC', // Descripción del artículo
'DEAR_CARA', // Características del artículo
'DEAR_COWE', // Compra web
'DEAR_IMAG', // Imagen
'DEAR_IDUN', // Identificador de la unidad
'UNID_NOMB', // Nombre de la unidad
'UNID_ACRO', // Acrónimo de la familia
'DEAR_NUPR', // Número del proveedor
'ARTI_IDAR', // Identificador del artículo
'ARTI_COFA', // Identificador de la familia
'FAMI_NOFA', // Nombre de la familia
'ARTI_COSU', // Identificador de la subfamilia
'SUBF_NOSU', // Nombre de la subfamilia
'ARTI_CODI', // Código del artículo
'ARTI_NOMB', // Nombre del artículo
'PROV_NOCO', // Nombre comercial
'PROV_NOMB', // Nombre del proveedor
'PROV_APPA', // Apellido paterno del proveedor
'PROV_APMA', // Apellido materno del proveedor
'PROV_CORR', // Correo electrónico
'PROV_LAD1', // Lada 1
'PROV_TEL1', // Teléfono 1
'PROV_LAD2', // Lada 2
'PROV_TEL2', // Teléfono 2
'PROV_XRFC', // R.F.C
'PROV_XTAX', // TAX ID
'PROV_TIPO', // Tipo
'PROV_SIWE', // Sitio Web
'PROV_MEPA', // Metodos de pago
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYINFORMATION000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$objInformation['DEAR_IMAG'] = json_decode($objInformation['DEAR_IMAG']);
$arrUrlImage = array();
foreach ($objInformation['DEAR_IMAG'] as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYINFORMATION001: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$objInformation['DEAR_IMAG'] = $arrUrlImage;
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $objInformation);
}
public function getManagementUnit ($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrUnits = DB::table('S002V01TUNID')
->where('UNID_NULI', '=', $line)
->where('UNID_ESTA', '=', 'Activo')
->get([
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS UNIDAD',
'UNID_ACRO AS ACRONIMO',
]);
$arrUnits = json_decode(json_encode($arrUnits), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de la unidad.', [], 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrUnits);
}
public function createUnit (Request $request) {
$validator = Validator::make($request->all(), [
'UNIDAD' => 'required|string',
'ACRONIMO' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validate = DB::table('S002V01TUNID')->insert([
'UNID_NULI' => $requestData['NUMERO_LINEA'],
'UNID_NOMB' => $requestData['UNIDAD'],
'UNID_ACRO' => $requestData['ACRONIMO'],
'UNID_USRE' => $user,
'UNID_FERE' => $currentDate,
'UNID_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la unidad.", $th->getMessage(), 500);
}
if (!$validate) {
return $this->responseController->makeResponse(true, "No se pudo registrar la unidad.", [], 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function updateUnit (Request $request, $idUnit) {
$validator = Validator::make($request->all(), [
'UNIDAD' => 'required|string',
'ACRONIMO' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$idUnit = $this->encController->encrypt($idUnit);
if (is_null($idUnit)) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el identificador de la unidad.", [], 500);
}
try {
$validateExists = DB::table('S002V01TUNID')
->where('UNID_IDUN', '=', $idUnit)
->where('UNID_ESTA', '=', 'Activo')
->where('UNID_NULI', '=', $requestData['NUMERO_LINEA'])
->exists();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si la unidad está registrada.", $th->getMessage(), 500);
}
if (!$validateExists) {
return $this->responseController->makeResponse(true, "La unidad no existe.", [], 404);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validate = DB::table('S002V01TUNID')
->where('UNID_IDUN', '=', $idUnit)
->where('UNID_ESTA', '=', 'Activo')
->where('UNID_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'UNID_NOMB' => $requestData['UNIDAD'],
'UNID_ACRO' => $requestData['ACRONIMO'],
'UNID_USMO' => $user,
'UNID_FEMO' => $currentDate,
'UNID_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "IOcurrió un error al modificar la unidad.", $th->getMessage(), 500);
}
if (!$validate) {
return $this->responseController->makeResponse(true, "No se pudo modificar la unidad.", [], 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa");
}
public function getUnitById ($idUnit, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$idUnit = $this->encController->decrypt($idUnit);
if (is_null($idUnit)) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el identificador de la unidad.", [], 500);
}
try {
$validateExists = DB::table('S002V01TUNID')
->where('UNID_IDUN', '=', $idUnit)
->where('UNID_ESTA', '=', 'Activo')
->where('UNID_NULI', '=', $line)
->exists();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si la unidad está registrada.", $th->getMessage(), 500);
}
if (!$validateExists) {
return $this->responseController->makeResponse(true, "La unidad no existe.", [], 404);
}
try {
$arrUnit = (array) DB::table('S002V01TUNID')
->where('UNID_IDUN', '=', $idUnit)
->where('UNID_ESTA', '=', 'Activo')
->where('UNID_NULI', '=', $line)
->first([
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS UNIDAD',
'UNID_ACRO AS ACRONIMO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la información de la unidad.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrUnit);
}
public function deleteUnitById (Request $request, $idUnit) {
}
/* NO BORRAR: [{ "TABLA": "S002V01TLINE","CAMPO_ESTADO": "LINE_ESTA","CAMBIO_ESTADO": "En espera","NUMERO_LINEA": "LINE_NULI","FECHA_MODIFICA": "LINE_FEMO","FECHA_REGISTRA": "LINE_FERE","USUARIO_MODIFICA": "LINE_USMO", "USUARIO_REGISTRA": "LINE_USRE"}] */
public function createRequestLine(Request $request){
$validator = Validator::make($request->all(), [
'LINE' => 'required|integer',
'USER' => 'required|string',
'PRODUCTS' => 'required|array',
'PURPOSE' => 'required',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_REQUESTLINE_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USER'], $requestData['LINE']);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_REG001:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$idOrderPreventive = null;
if ($requestData['PURPOSE']['PROPOSITO'] == 'MANT-PREV') {
$idOrderPreventive = $requestData['PURPOSE']['ID'];
try {
$validateExistsPreventive = DB::table('S002V01TOTPR')
->where('OTPR_NULI', '=', $requestData['LINE'])
->where('OTPR_IDOT', '=', $idOrderPreventive )
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG002: Ocurrió un error al validar la orden de mantenimiento preventivo.", $th->getMessage(), 500);
}
if (!$validateExistsPreventive) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG003: La orden de mantenimiento preventivo no existe", [], 500);
}
}
$idOrderCorrective = null;
if ($requestData['PURPOSE']['PROPOSITO'] == 'MANT-CORR') {
$idOrderCorrective = $requestData['PURPOSE']['ID'];
try {
$validateExistsCorrective = DB::table('S002V01TOTCO')
->where('OTCO_NULI', '=', $requestData['LINE'])
->where('OTCO_IDOT', '=', $idOrderCorrective )
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG004: Ocurrió un error al validar la orden de mantenimiento correctivo.", $th->getMessage(), 500);
}
if (!$validateExistsCorrective) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG005: La orden de mantenimiento correctivo no existe", [], 500);
}
}
$arrArtitles = array();
$count = 0;
foreach ($requestData['PRODUCTS'] as $keyProducts => $products) {
if ($keyProducts === 0) {
$arrArtitles[$count] = [
"NUMERO_ARTICULO" => $products['NUMERO_ARTICULO'],
"NUMERO_PROVEEDOR" => $products['NUMERO_PROVEEDOR'],
"NUMERO_INFORMACION" => $products['NUMERO_INFORMACION'],
"CANTIDAD" => 1,
];
$count++;
} else {
$find = false;
foreach ($arrArtitles as $key => $value) {
if (
$value['NUMERO_ARTICULO'] === $products['NUMERO_ARTICULO'] &&
$value['NUMERO_PROVEEDOR'] === $products['NUMERO_PROVEEDOR'] &&
$value['NUMERO_INFORMACION'] === $products['NUMERO_INFORMACION']
) {
$arrArtitles[$key]['CANTIDAD']++;
$find = true;
}
}
if ($find === false) {
$arrArtitles[$count] = [
"NUMERO_ARTICULO" => $products['NUMERO_ARTICULO'],
"NUMERO_PROVEEDOR" => $products['NUMERO_PROVEEDOR'],
"NUMERO_INFORMACION" => $products['NUMERO_INFORMACION'],
"CANTIDAD" => 1,
];
$count++;
}
}
}
$arrToWorkflow = array();
foreach ($arrArtitles as $articles) {
try {
$arrArticle = (array) DB::table('S002V01TARTI')
->where('ARTI_IDAR', '=', $articles['NUMERO_ARTICULO'])
->where('INAR_IDIN', '=', $articles['NUMERO_INFORMACION'])
->where('ARTI_NULI', '=', $requestData['LINE'])
->where('DEAR_NULI', '=', $requestData['LINE'])
->where('INAR_NULI', '=', $requestData['LINE'])
->where('ARTI_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->join('S002V01TDEAR', 'DEAR_IDAR', '=', 'ARTI_IDAR')
->join('S002V01TINAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->first([
DB::raw('CONCAT(FAMI_NOFA, " (", FAMI_COFA, ")") AS FAMILIA'),
DB::raw('CONCAT(SUBF_NOSU, " (", SUBF_COSU, ")") AS SUBFAMILIA'),
'INAR_MODE AS MODELO',
'INAR_CODI AS CODIGO_MODELO',
DB::raw('CONCAT("$ ", INAR_PREC, " ", INAR_COMO) AS PRECIO'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG005: No se pudo obtener la información de los productos.", $th->getMessage(), 500);
}
$arrArticle['CANTIDAD'] = $articles['CANTIDAD'];
$arrArticle['NUMERO_PROVEEDOR'] = $articles['NUMERO_PROVEEDOR'];
$arrToWorkflow[] = $arrArticle;
}
$strToWorkflow = json_encode($arrToWorkflow);
$encToWorkflow = $this->encController->encrypt($strToWorkflow);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$arrProviders = array_unique(array_column($requestData['PRODUCTS'], 'NUMERO_PROVEEDOR'));
$arrInfoRegistro = array();
foreach ($arrProviders as $provider) {
try {
$idRegisterLine = DB::table('S002V01TLINE')->insertGetId([
'LINE_NUPR' => $provider,
'LINE_OTPR' => $idOrderPreventive,
'LINE_OTCO' => $idOrderCorrective,
'LINE_NULI' => $requestData['LINE'],
'LINE_ESTA' => 'Workflow',
'LINE_USRE' => $user,
'LINE_FERE' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG006: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
}
if ($idRegisterLine == null || $idRegisterLine <= 0) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG007: Ocurrió un error al hacer la inserción en la base.", [], 500);
}
$arrInfoRegistro['S002V01TLINE'][] = [
'LINE_IDLI' => $idRegisterLine,
];
$nuar = 0;
foreach ($requestData['PRODUCTS'] as $products) {
if ($products['NUMERO_PROVEEDOR'] === $provider) {
try {
$validateInsert = DB::table('S002V01TARSE')->insert([
'ARSE_IDAS' => $nuar,
'ARSE_NULI' => $requestData['LINE'],
'ARSE_IDLI' => $idRegisterLine,
'ARSE_IDAR' => $products['NUMERO_ARTICULO'],
'ARSE_NUPR' => $products['NUMERO_PROVEEDOR'],
'ARSE_IDIN' => $products['NUMERO_INFORMACION'],
'ARSE_USRE' => $user,
'ARSE_FERE' => $currentDate,
'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG008: Ocurrió un error al insertar los artículos en la base de datos.", $th->getMessage(), 500);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_REG009: No se pudo insertar los datos en la base de datos.", [], 500);
}
$nuar = $nuar + 1;
}
}
}
$strInfoRegistro = json_encode($arrInfoRegistro);
$encInfoRegistro = $this->encController->encrypt($strInfoRegistro);
$arrResponseRequestWorkflow = $this->processManagementController->registerRequestWorkflow(1, $encToWorkflow, $encInfoRegistro, $user, $requestData['LINE']);
if ($arrResponseRequestWorkflow['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseRequestWorkflow['msg'], $arrResponseRequestWorkflow['response'], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro correcto");
}
public function getAllRequestLines($user, $line) {
try {
$arrRequestLines = DB::table('S002V01TLINE')->select([
'LINE_IDLI AS ID_LINEA_SOLICITUD',
'LINE_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS NOMBRE_COMERCIAL',
'LINE_OTPR AS ORDEN_TRABAJO_PREVENTIVO',
'LINE_OTCO AS ORDEN_TRABAJO_CORRECTIVO',
'LINE_ESTA AS ESTADO',
'LINE_USRE AS USUARIO_REGISTRA',
'LINE_FERE AS FECHA_REGISTRA',
'LINE_USMO AS USUARIO_MODIFICA',
'LINE_FEMO AS FECHA_MODIFICA',
])->where([
["LINE_NULI", "=", $line],
["LINE_ESTA", "!=", 'Workflow'],
["LINE_ESTA", "!=", 'Workflow Rechazado'],
])->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')->get()->all();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrRequestLines, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrRequestLines = $responseCheckLatestUpdate['response'];
try {
$arrOrders= DB::table('S002V01TORCO')->select([
'ORCO_NUOR AS NUMERO_ORDEN',
'ORCO_IDLI AS ID_LINEA_SOLICITUD',
'ORCO_IDDE AS ID_DESPACHO',
'ORCO_ESTA AS ESTADO',
])->where("ORCO_NULI", "=", $line)->get()->all();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
foreach ($arrRequestLines as $keyRequest => $requestLine) {
try {
$getSelected = DB::table('S002V01TARSE')->select([
'ARSE_IDAS AS ID_ARTICULO_SELECCIONADO',
'ARSE_NUPR AS NUMERO_PROVEEDOR',
'ARSE_ESTA AS ESTADO',
'INAR_IDIN AS NUMERO_INFORMACION',
'INAR_CODI AS CODIGO_INFORMACION',
'INAR_MODE AS MODELO_INFORMACION',
'CAMO_COMO AS CODIGO_MONEDA',
'CAMO_DESC AS MONEDA_DESCRIPCION',
'INAR_PREC AS PRECIO_UNITARIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTICAS_INFORMACION',
'DEAR_IDDE AS NUMERO_DESCRIPCION',
'DEAR_IMAG AS IMAGENES',
'DEAR_DESC AS DESCRIPCION',
'DEAR_CARA AS CARACTERISTICAS',
'DEAR_COWE AS COMPRA_WEB',
'ARTI_IDAR AS NUMERO_ARTICULO',
'ARTI_CODI AS CODIGO',
'ARTI_NOMB AS ARTICULO',
'FAMI_COFA AS CODIGO_FAMILIA',
'FAMI_NOFA AS NOMBRE_FAMILIA',
'SUBF_COSU AS CODIGO_SUBFAMILIA',
'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS NOMBRE_UNIDAD',
'UNID_ACRO AS ACRONIMO_UNIDAD',
])->where([
['ARSE_IDLI', '=', $requestLine['ID_LINEA_SOLICITUD']],
['ARSE_NULI', '=', $line],
['INAR_NULI', '=', $line],
['DEAR_NULI', '=', $line],
['ARTI_NULI', '=', $line],
['FAMI_NULI', '=', $line],
['SUBF_NULI', '=', $line],
['UNID_NULI', '=', $line],
])->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')->get()->all();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$index = 0;
$arrArtitles = array();
foreach ($getSelected as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'))
) {
$indexArtitle = array_search($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'));
$arrArtitles[$indexArtitle]['CANTIDAD'] = $arrArtitles[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
}
}
}
foreach ($arrArtitles as $keySelected => $selected) {
$arrImagen = json_decode($selected['IMAGENES']);
$arrUrlImage = array();
foreach ($arrImagen as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$arrArtitles[$keySelected]['IMAGENES'] = $arrUrlImage;
}
foreach ($arrOrders as $order) {
if ($requestLine['ID_LINEA_SOLICITUD'] == $order->ID_LINEA_SOLICITUD) {
$requestLine['NUMERO_ORDEN'] = $order->NUMERO_ORDEN;
}
}
if (!array_key_exists('LINE_NUOR', $requestLine)) {
$requestLine['NUMERO_ORDEN'] = null;
}
$arrRequestLines[$keyRequest] = $requestLine;
$arrRequestLines[$keyRequest]['SELECTED'] = $arrArtitles;
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrRequestLines);
}
public function getRequestLine($encIdRequestLine, $user, $line){
try {
$idRequestLine = $this->encController->decrypt($encIdRequestLine);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ORDER_GET000: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
try {
$arrRequestLines = DB::table('S002V01TLINE')
->where("LINE_NULI", "=", $line)
->where("LINE_IDLI", "=", $idRequestLine)
->first([
'LINE_IDLI AS ID_LINEA_SOLICITUD',
'LINE_ESTA AS ESTADO',
'LINE_IDME AS METODO_PAGO',
'LINE_FERE AS FECHA_REGISTRA',
'LINE_FEMO AS FECHA_MODIFICA',
'LINE_USRE AS USUARIO_REGISTRA',
'LINE_USMO AS USUARIO_MODIFICA'
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ORDER_GET001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
try {
$arrProducts = DB::table('S002V01TARSE')
->where("ARSE_NULI", "=", $line)
->where('ARSE_IDLI', '=', $idRequestLine)
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TPROV', 'ARSE_NUPR', '=', 'PROV_NUPR')
->join('S002V01TINAR', 'ARSE_IDIN', '=', 'INAR_IDIN')
->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
->get([
'ARSE_IDAS AS NUMERO_ARTI_SELE',
'ARSE_IDAR AS NUMERO_ARTICULO',
'ARSE_NUPR AS NUMERO_PRODUCTO',
'INAR_MODE AS MODELO',
'INAR_CODI AS CODIGO',
'INAR_CARA AS CARACTERISTICAS',
'ARSE_CANT AS CANTIDAD',
'INAR_PREC AS PRECIO_UNITARIO',
'CAMO_COMO AS MONEDA',
'CAMO_DESC AS MONEDA_DESCRIPCION',
// 'ARSE_PRTO AS PRECIO_TOTAL',
'ARSE_ESTA AS ESTADO',
'ARSE_USRE AS USUARIO_REGISTRA',
'ARSE_FERE AS FECHA_REGISTRA',
'ARSE_USMO AS USUARIO_MODIFICA',
'ARSE_FEMO AS FECHA_MODIFICA',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS PROVEEDOR',
'PROV_ESTA AS ESTADO_PROVEEDOR'
]);
foreach ($arrProducts as $productos) {
if ($productos == 'Eliminado') {
return $this->responseController->makeResponse(true, "ERR_ORDER_GET002: Existe un usuario en la solicitud que se encuentra eliminado", [], 500);
}
}
$arrRequestLines->PRODUCTOS = $arrProducts;
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ORDER_GET003: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO", $arrRequestLines);
}
public function cancelRequestLine(Request $request){
$validator = Validator::make($request->all(), [
'ID_LINEA_SOLICITUD' => 'required|string',
'NUMERO_PROVEEDOR' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
'USUARIO' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_REQUESTLINE_CAN000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN001:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
try {
$requestData['ID_LINEA_SOLICITUD'] = $this->encController->decrypt($requestData['ID_LINEA_SOLICITUD']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN002: Ocurrió un error al desencriptar la línea de solicitud de compra.', $th->getMessage(), 500);
}
try {
$requestData['NUMERO_PROVEEDOR'] = $this->encController->decrypt($requestData['NUMERO_PROVEEDOR']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN003: Ocurrió un error al desencriptar el número de proveedor.', $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateExists = DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->where('PROV_NULI', '=', $requestData['NUMERO_LINEA'])
->where('PROV_ESTA', '=', 'Activo')
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN004: Ocurrió un error al verificar el número del proveedor.', $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN005: El número del proveedor no existe.', [], 500);
}
try {
$validateExists = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN006: Ocurrió un error al verificar la línea de solicitud de compra.', $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN007: La linea de solicitud de compra no existe.', [], 500);
}
try {
$validateUpdate = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->update([
'LINE_ESTA' => 'Cancelado',
'LINE_USMO' => $user,
'LINE_FEMO' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN008: Ocurrió un error al modificar la línea de solicitud de compra.', $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN009: No se pudo cancelar la solicitud de compra.', [], 500);
}
try {
$validateUpdate = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->update([
'ARSE_ESTA' => 'Eliminado',
'ARSE_USMO' => $user,
'ARSE_FEMO' => $currentDate,
'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN010: Ocurrió un error al modificar la línea de solicitud de compra.', $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_CAN011: No se pudo eliminar los artículos seleccionados.', [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Cancelación Exitosa");
}
public function deleteArtitleByRequestLine(Request $request) {
$validator = Validator::make($request->all(), [
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
'NUMERO_INFORMACION' => 'required|string',
'NUMERO_PROVEEDOR' => 'required|string',
'NUMERO_ARTICULO' => 'required|string',
'ID_LINEA_SOLICITUD' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_REQUESTLINE_DEL000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, 'ERR_LEVEL_UPD004:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
try {
$requestData['NUMERO_INFORMACION'] = $this->encController->decrypt($requestData['NUMERO_INFORMACION']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL002: Ocurrió un error al obtener el número de información.", $th->getMessage(), 500);
}
try {
$requestData['ID_LINEA_SOLICITUD'] = $this->encController->decrypt($requestData['ID_LINEA_SOLICITUD']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL003: Ocurrió un error al obtener la línea de solicitud de compra.", $th->getMessage(), 500);
}
try {
$requestData['NUMERO_PROVEEDOR'] = $this->encController->decrypt($requestData['NUMERO_PROVEEDOR']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL004: Ocurrió un error al obtener el número del proveedor.", $th->getMessage(), 500);
}
try {
$requestData['NUMERO_ARTICULO'] = $this->encController->decrypt($requestData['NUMERO_ARTICULO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL005: Ocurrió un error al obtener el número del artículo.", $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateExists = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL006: Ocurrió un error al verificar si existe la línea de solicitud de comrpa.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL007: El número de línea de solicitud de compra no existe.", [], 500);
}
try {
$validateExists = DB::table('S002V01TARTI')
->where('ARTI_IDAR', '=', $requestData['NUMERO_ARTICULO'])
->where('ARTI_NULI', '=', $requestData['NUMERO_LINEA'])
->where('ARTI_ESTA', '=', 'Activo')
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL008: Ocurrió un error al verificar si existe el número del artículo.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL009: El número del artículo no existe.", [], 500);
}
try {
$validateExists = DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->where('PROV_NULI', '=', $requestData['NUMERO_LINEA'])
->where('PROV_ESTA', '=', 'Activo')
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL010: Ocurrió un error al verificar si existe el número de proveedor.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL011: El número de proveedor no existe.", [], 500);
}
try {
$validateExists = DB::table('S002V01TINAR')
->where('INAR_IDIN', '=', $requestData['NUMERO_INFORMACION'])
->where('INAR_NULI', '=', $requestData['NUMERO_LINEA'])
->where('INAR_ESTA', '=', 'Activo')
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL012: Ocurrió un error al verificar si existe el numero de información del artículo.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL013: El número de información del artículo no existe.", [], 500);
}
try {
$existsSelected = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('ARSE_IDAR', '=', $requestData['NUMERO_ARTICULO'])
->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->where('ARSE_IDIN', '=', $requestData['NUMERO_INFORMACION'])
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL014: Ocurrió un error al modificar los artículos seleccionados.", $th->getMessage(), 500);
}
if (!$existsSelected) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL015: No existen artículos asociados a la información obtenida.", [], 500);
}
try {
$validateUpdate = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('ARSE_IDAR', '=', $requestData['NUMERO_ARTICULO'])
->where('ARSE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->where('ARSE_IDIN', '=', $requestData['NUMERO_INFORMACION'])
->update([
'ARSE_ESTA' => 'Eliminado',
'ARSE_USMO' => $user,
'ARSE_FEMO' => $currentDate,
'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL016: Ocurrió un error al modificar los artículos seleccionados.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL017: Ocurrió un error al eliminar el artículo seleccionado.", [], 500);
}
try {
$existsArtitles = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('ARSE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('ARSE_ESTA', '=', 'Activo')
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL018: Ocurrió un error al verificar los artículos disponibles.", $th->getMessage(), 500);
}
if (!$existsArtitles) {
try {
$validateUpdate = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['ID_LINEA_SOLICITUD'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->where('LINE_NUPR', '=', $requestData['NUMERO_PROVEEDOR'])
->update([
'LINE_ESTA' => 'Cancelado',
'LINE_USMO' => $user,
'LINE_FEMO' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL019: Ocurrió un error al cancelar la línea de solicitud de compra.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_DEL020: No se pudo cancelar la línea de solicitud de compra.", [], 500);
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Correcta");
}
public function updateStatusRequestLine(Request $request) {
$validator = Validator::make($request->all(), [
'NUMERO_SOLICITUD' => 'required|string',
'ESTADO' => 'required|string',
'USUARIO' => 'required|string',
'METODO_PAGO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
// 'COMENTARIOS' => 'string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_UPST000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_UPST001: Ocurrió un error al obtener el usuario.", [], 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['NUMERO_SOLICITUD'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'LINE_ESTA' => $requestData['ESTADO'],
'LINE_IDME' => $requestData['METODO_PAGO'],
'LINE_COME' => $requestData['COMENTARIOS'] === '' ? null : $requestData['COMENTARIOS'],
'LINE_USMO' => $user,
'LINE_FEMO' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_UPST002: Ocurrió un error al modificar el estado.", $th->getMessage(), 500);
}
if ( !$validateUpdate ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_UPST003: No se pudo modificar el estado de la línea de solicitud.", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Estado Exitoso");
}
public function getArtitlesByRequestLine($requestLine, $user, $line) {
try {
$requestLine = $this->encController->decrypt($requestLine);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY000: Ocurrió un error al obtener la línea de solicitud.", $th->getMessage(), 500);
}
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, 'ERR_REQUESTLINE_GETBY001:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$getArtitleSelected = DB::table('S002V01TARSE')
->where('ARSE_IDLI', '=', $requestLine)
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->join('S002V01TINAR', 'INAR_IDIN', '=', 'ARSE_IDIN')
->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
->join('S002V01TARTI', 'ARTI_IDAR', '=', 'DEAR_IDAR')
->join('S002V01TFAMI', 'FAMI_COFA', '=', 'ARTI_COFA')
->join('S002V01TSUBF', 'SUBF_COSU', '=', 'ARTI_COSU')
->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN')
->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO')
->get([
'ARTI_IDAR AS NUMERO_ARTICULO',
'DEAR_IDDE AS NUMERO_DESCRIPCION',
'DEAR_NUPR AS NUMERO_PROVEEDOR',
'DEAR_IMAG AS IMAGENES',
'ARTI_NOMB AS ARTICULO',
'INAR_CARA AS CARACTERISTICAS',
'INAR_CODI AS CODIGO',
'INAR_MODE AS MODELO',
'CAMO_COMO AS MONEDA',
'CAMO_DESC AS MONEDA_DESCRIPCION',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_IDIN AS NUMERO_INFORMACION',
'INAR_PREC AS PRECIO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY002: Ocurrió un error al obtener la información.", $th->getMessage(), 500);
}
$arrArtitleSelected = json_decode(json_encode($getArtitleSelected), true);
$index = 0;
$arrArtitles = array();
foreach ($arrArtitleSelected as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'))
) {
$indexArtitle = array_search($artitles['NUMERO_INFORMACION'], array_column($arrArtitles, 'NUMERO_INFORMACION'));
$arrArtitles[$indexArtitle]['CANTIDAD'] = $arrArtitles[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitleSelected = $arrArtitles;
foreach ($arrArtitleSelected as $keyArtitleSelected => $artitleSelected) {
$arrImage = json_decode($artitleSelected['IMAGENES']);
$arrUrlImage = array();
foreach ($arrImage as $key => $encImage) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($encImage, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_REQUESTLINE_GETBY003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$artitleSelected['IMAGENES'] = $arrUrlImage;
$arrArtitleSelected[$keyArtitleSelected] = $artitleSelected;
}
return $this->responseController->makeResponse(false, "ÉXITO", $arrArtitleSelected);
}
public function checkItemsWorkOrder ($resources, $idOrder, $user, $line) {
foreach ($resources as $resource) {
if ($resource['REQ'] !== '-') {
goto next;
}
$id = $this->encController->decrypt($resource['REQ']);
if (is_null($id)) {
return $this->responseController->makeResponse(true, 'El ID de la herramienta o refacción no está encriptado correctamente.', [], 500);
}
try {
$amountStock = DB::table('S002V01TSTAR')
->where([
['STAR_IDIS', '=', $id],
['STAR_NULI', '=', $line],
['STAR_ESTA', '=', 'Activo'],
])
->count();
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del stock.', $th->getMessage(), 500);
}
$amountRequest = intval($resource['REQ']);
if ($amountRequest > $amountStock) {
goto next;
}
$adquisitionAmount = $amountRequest - $amountStock;
try {
$adquisition = (array) DB::table('S002V01TINST')
->where([
['INST_IDIS', '=', $id],
['INST_NULI', '=', $line],
['INST_ESTA', '=', 'Activo'],
])
->join('S002V01TINAR', 'INAR_CODI', '=', 'INST_COMO')
->join('S002V01TARTI', 'ARTI_IDAR', '=', 'INST_ARTI')
->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
->first([
'ARTI_IDAR',
'DEAR_NUPR',
'INAR_IDIN',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información de la adquisición.', $th->getMessage(), 500);
}
if (is_null($adquisition) || empty($adquisition)) {
return $this->responseController->makeResponse(true, 'No se pudo obtener la información de la adquisición.', [], 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$idLine = DB::table('S002V01TLINE')->insertGetId([
'LINE_NUPR' => $adquisition['DEAR_NUPR'],
'LINE_OTPR' => null,
'LINE_OTCO' => $idOrder,
'LINE_NULI' => $line,
'LINE_ESTA' => 'En OC',
'LINE_USRE' => $user,
'LINE_FERE' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar la línea de solicitud.', $th->getMessage(), 500);
}
if (is_null($idLine) || $idLine < 1) {
return $this->responseController->makeResponse(true, 'No se pudo registrar la línea de solicitud.', [], 500);
}
for ($i=1; $i <= $adquisitionAmount; $i++) {
try {
$validateInsert = DB::table('S002V01TARSE')->insert([
'ARSE_IDAS' => $i,
'ARSE_NULI' => $line,
'ARSE_IDLI' => $idLine,
'ARSE_IDAR' => $adquisition['ARTI_IDAR'],
'ARSE_NUPR' => $adquisition['DEAR_NUPR'],
'ARSE_IDIN' => $adquisition['INAR_IDIN'],
'ARSE_USRE' => $user,
'ARSE_FERE' => $currentDate,
'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar los artículos en la línea de solicitud.', $th->getMessage(), 500);
}
if (is_null($validateInsert) || !$validateInsert) {
return $this->responseController->makeResponse(true, 'No se pudo registrar los artículos en la línea de solicitud.', [], 500);
}
}
$typeOrder = rand(0, 1) === 0 ? 'ASC' : 'DESC';
try {
$dispatch = (array) DB::table('S002V01TDESP')
->where([
['DESP_NULI', '=', $line],
['DESP_ESTA', '=', 'Activo'],
])
->orderBy('DESP_IDDE', $typeOrder)
->first([
'DESP_IDDE'
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener la información del despacho.', [], 500);
}
if (is_null($dispatch) || empty($dispatch)) {
return $this->responseController->makeResponse(true, 'No se pudo obtener la información del despacho.', [], 500);
}
try {
$idOrder = DB::table('S002V01TORCO')->insertGetId([
'ORCO_NULI' => $line,
'ORCO_IDLI' => $idLine,
'ORCO_IDDE' => $dispatch['DESP_IDDE'],
'ORCO_USRE' => $user,
'ORCO_FERE' => $currentDate,
'ORCO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar la orden de compra.', $th->getMessage(), 500);
}
if (is_null($idOrder) || $idOrder < 1) {
return $this->responseController->makeResponse(true, 'No se pudo registrar la línea de solicitud.', [], 500);
}
try {
$validateInsert = DB::table('S002V01THIOR')->insert([
'HIOR_NULI' => $idLine,
'HIOR_NUOR' => $idOrder,
'HIOR_POEN' => 10,
'HIOR_USRE' => $user,
'HIOR_FERE' => $currentDate,
'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, 'Ocurrió un error al registrar el historial de la orden de compra.', $th->getMessage(), 500);
}
if (is_null($validateInsert) || !$validateInsert) {
return $this->responseController->makeResponse(true, 'No se pudo registrar el historial de la orden de compra.', [], 500);
}
next:
}
}
public function getOrders($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrOrders = DB::table('S002V01TORCO')
->where('ORCO_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->get([
'ORCO_NUOR AS NUMERO_ORDEN', // Número de Orden
'LINE_IDLI AS NUMERO_SOLICITUD_COMPRA', // Identificador de línea de solicitud de compra
'PROV_NUPR AS NUMERO_PROVEEDOR', // Número de Proveedor
'PROV_NOCO AS NOMBRE_COMERCIAL', // Nombre Comercial del Proveedor
'PROV_TIPO AS TIPO_NACIONALIDAD', // Tipo de Nacionalidad
'DESP_IDDE AS ID_DESPACHO', // Número de Despacho
'DESP_NODE AS NOMBRE_DESPACHO', // Nombre del Despacho
'ORCO_ESTA AS ESTADO', // Estado
'ORCO_USRE AS USUARIO_REGISTRA', // Usuario Registra
'ORCO_FERE AS FECHA_REGISTRA', // Fecha Registra
'ORCO_USMO AS USUARIO_MODIFICA', // Usuario Modifica
'ORCO_FEMO AS FECHA_MODIFICA', // Fecha Modifica
]);
$arrOrders = json_decode(json_encode($arrOrders), true);
} catch ( \Throwable $th ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_GET000: Ocurrió un error al momento de obtener las órdenes de compra.",
$th->getMessage(),
500
);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrOrders, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrOrders = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrders);
}
public function createOrder(Request $request){
$validator = Validator::make($request->all(), [
'NUMERO_SOLICITUD' => 'required|string',
'DESPACHO' => 'required|string',
'PROPOSITO' => 'required|string',
'ID_MANT_PREV' => 'nullable|string',
'ID_MANT_CORR' => 'nullable|string',
'NUMERO_LINEA' => 'required|integer',
'USUARIO' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$arrInfoRegistro = array();
$arrToWorkflow = array();
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
$user = $arrResponseCheckUser['response'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$idOrder = DB::table('S002V01TORCO')->insertGetId([
'ORCO_NULI' => $requestData['NUMERO_LINEA'],
'ORCO_IDLI' => $requestData['NUMERO_SOLICITUD'],
'ORCO_IDDE' => $requestData['DESPACHO'],
'ORCO_USRE' => $user,
'ORCO_FERE' => $currentDate,
'ORCO_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG002: Ocurrió un error al registrar la orden de compra.", $th->getMessage(), 500);
}
if (!$idOrder) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG003: No se pudo registrar la orden de compra.", [], 401);
}
$arrInfoRegistro['S002V01TORCO'][] = [
'ORCO_NUOR' => $idOrder,
];
$idMantPrev = null;
$idMantCorr = null;
if ($requestData['PROPOSITO'] === 'MANT-PREV' && !is_null($requestData['ID_MANT_PREV'])) {
$idMantPrev = $requestData['ID_MANT_PREV'];
} else if ($requestData['PROPOSITO'] === 'MANT-CORR' && !is_null($requestData['ID_MANT_CORR'])) {
$idMantCorr = $requestData['ID_MANT_CORR'];
}
try {
$validateUpdate = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $requestData['NUMERO_SOLICITUD'])
->where('LINE_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'LINE_ESTA' => 'En OC',
'LINE_OTPR' => $idMantPrev,
'LINE_OTCO' => $idMantCorr,
'LINE_USMO' => $user,
'LINE_FEMO' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG004: Ocurrió un error al modificar la línea de solitud de compra.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG005: No se pudo modificar la línea de solicitud de compra.", [], 401);
}
try {
$idHistoryOrder = DB::table('S002V01THIOR')
->insertGetId([
'HIOR_NULI' => $requestData['NUMERO_LINEA'],
'HIOR_NUOR' => $idOrder,
'HIOR_POEN' => 10,
'HIOR_USRE' => $user,
'HIOR_FERE' => $currentDate,
'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG006: Ocurrió un error al insertar el registro en el historial.", $th->getMessage(), 500);
}
if (!$idHistoryOrder) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_REG007: No se pudo insertar el registro en el HISTORIAL.", [], 401);
}
$arrInfoRegistro['S002V01THIOR'][] = [ 'HIOR_IDHO' => $idHistoryOrder, ];
/* $arrToWorkflow['NUMERO_SOLICITUD'] = $requestData['NUMERO_SOLICITUD'];
$arrToWorkflow['DESPACHO'] = $requestData['DESPACHO'];
$arrToWorkflow['PROPOSITO'] = $requestData['PROPOSITO'];
if (!is_null($requestData['ID_MANT_PREV'])) {
$arrToWorkflow['MANTENIMIENTO_PREVENTIVO'] = $requestData['ID_MANT_PREV'];
}
if (!is_null($requestData['ID_MANT_CORR'])) {
$arrToWorkflow['MANTENIMIENTO_CORRECTIVO'] = $requestData['ID_MANT_CORR'];
} */
// $strToWorkflow = json_encode($arrToWorkflow);
// $encToWorkflow = $this->encController->encrypt($strToWorkflow);
// $strInfoRegistro = json_encode($arrInfoRegistro);
// $encInfoRegistro = $this->encController->encrypt($strInfoRegistro);
/* $arrResponseRequestWorkflow = $this->processManagementController->registerRequestWorkflow(2, $encToWorkflow, $encInfoRegistro, $user, $requestData['NUMERO_LINEA']);
if ($arrResponseRequestWorkflow['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseRequestWorkflow['msg'], $arrResponseRequestWorkflow['response'], 500);
} */
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Generación de Órdenes Exitosas");
}
public function getOrderByNumber($order, $provider, $user, $line){
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$order = $this->encController->decrypt($order);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_GET000: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
try {
$provider = $this->encController->decrypt($provider);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDER_GET001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
try {
$arrOrders = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $order)
->where('ORCO_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('LINE_ESTA', '!=', 'Cancelado')
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'ORCO_IDLI', '=', 'LINE_IDLI')
->join('S002V01TDESP', 'ORCO_IDDE', '=', 'DESP_IDDE')
->join('S002V01TPROV', 'LINE_NUPR', '=', 'PROV_NUPR')
->first([
'ORCO_NUOR AS NUMERO_ORDEN',
'ORCO_ESTA AS ESTADO_ORDEN',
'ORCO_USRE AS USUARIO_REGISTRA',
'ORCO_FERE AS FECHA_REGISTRA',
'ORCO_USMO AS USUARIO_MODIFICA',
'ORCO_FEMO AS FECHA_MODIFICA',
'LINE_IDLI AS NUMERO_SOLICITUD_COMPRA',
'LINE_OTPR AS ORDEN_TRABAJO_PREVENTIVO',
'LINE_OTCO AS ORDEN_TRABAJO_CORRECTIVO',
'DESP_IDDE AS ID_DESPACHO',
'DESP_NODE AS NOMBRE_DESPACHO',
'DESP_NOMB AS NOMBRE_RESPONSABLE',
'DESP_APPA AS APELLIDO_PATERNO_RESPONSABLE',
'DESP_APMA AS APELLIDO_MATERNO_RESPONSABLE',
'DESP_LADA AS LADA',
'DESP_TELE AS TELEFONO',
'DESP_CORR AS CORREO_ELECTRONICO',
'DESP_CALL AS CALLE',
'DESP_NUEX AS NUMERO_EXTERIOR',
'DESP_NUIN AS NUMERO_INTERIOR',
'DESP_COPO AS CODIGO_POSTAL',
'DESP_LOCA AS LOCALIDAD',
'DESP_COLO AS COLONIA',
'DESP_MUNI AS MUNICIPIO',
'DESP_ENTI AS ENTIDAD_FEDERATIVA',
'DESP_PAIS AS PAIS',
'DESP_COME AS COMENTARIOS',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS NOMBRE_COMERCIAL',
'PROV_NOMB AS NOMBRE_PROVEEDOR',
'PROV_APPA AS APELLIDO_PATERNO_PROVEEDOR',
'PROV_APMA AS APELLIDO_MATERNO_PROVEEDOR',
'PROV_CORR AS CORREO_ELECTRONICO_PROVEEDOR',
'PROV_LAD1 AS LADA1_PROVEEDOR',
'PROV_TEL1 AS TELEFONO1_PROVEEDOR',
'PROV_LAD2 AS LADA2_PROVEEDOR',
'PROV_TEL2 AS TELEFONO2_PROVEEDOR',
'PROV_XRFC AS RFC',
'PROV_XTAX AS TAXID',
]);
} catch ( \Throwable $th ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_GET002: Ocurrió un error al momento de obtener las órdenes de compra.",
$th->getMessage(),
500
);
}
if ( empty($arrOrders) || is_null($arrOrders) ) {
return $this->responseController->makeResponse( true, "ERR_ORDER_GET003: No se pudo obtener los datos de las órdenes de compra", [], 500);
}
try {
$getArtitles = DB::table('S002V01TARSE')
->where('ARSE_IDLI', '=', $arrOrders['NUMERO_SOLICITUD_COMPRA'])
->where('ARSE_ESTA', '!=', 'Eliminado')
->where('ARSE_NULI', '=', $line)
->where('ARTI_ESTA', '=', 'Activo')
->where('ARTI_NULI', '=', $line)
->where('FAMI_ESTA', '=', 'Activo')
->where('FAMI_NULI', '=', $line)
->where('SUBF_ESTA', '=', 'Activo')
->where('SUBF_NULI', '=', $line)
->where('DEAR_ESTA', '=', 'Activo')
->where('DEAR_NULI', '=', $line)
->where('INAR_ESTA', '=', 'Activo')
->where('INAR_NULI', '=', $line)
->where('UNID_ESTA', '=', 'Activo')
->where('UNID_NULI', '=', $line)
->join('S002V01TARTI', 'ARSE_IDAR', '=', 'ARTI_IDAR')
->join('S002V01TINAR', 'ARSE_IDIN', '=', 'INAR_IDIN')
->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE')
->join('S002V01TFAMI', 'ARTI_COFA', '=', 'FAMI_COFA')
->join('S002V01TSUBF', 'ARTI_COSU', '=', 'SUBF_COSU')
->join('S002V01TUNID', 'DEAR_IDUN', '=', 'UNID_IDUN')
->get([
'ARSE_IDAS AS ID_ARTICULO_SELECCION',
'FAMI_COFA AS CODIGO_FAMILIA',
'FAMI_NOFA AS NOMBRE_FAMILIA',
'SUBF_COSU AS CODIGO_SUBFAMILIA',
'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
'ARTI_IDAR AS ID_ARTICULO',
'ARTI_CODI AS CODIGO',
'ARTI_NOMB AS NOMRE_ARTICULO',
'DEAR_IDDE AS ID_DESCRIPCION',
'DEAR_IMAG AS IMAGEN',
'DEAR_DESC AS DESCRIPCION',
'DEAR_CARA AS CARACTERISTICAS',
'DEAR_COWE AS COMPRA_WEB',
'INAR_IDIN AS ID_INFORMACION',
'INAR_CODI AS CODIGO_ARTICULO',
'INAR_MODE AS MODELO_ARTICULO',
'INAR_COMO AS CODIGO_MONEDA',
'INAR_PREC AS PRECIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTIAS_INFORMACION',
'UNID_IDUN AS ID_UNIDAD',
'UNID_NOMB AS NOMBRE_UNIDAD',
'UNID_ACRO AS ACRONIMO_UNIDAD',
]);
$arrArtitles = json_decode(json_encode($getArtitles), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_GET004: Ocurrió un error al momento de obtener los artículos de las órdenes de compra.",
$th->getMessage(),
500
);
}
if (empty($arrArtitles) || is_null($arrArtitles)) {
return $this->responseController->makeResponse( true, "ERR_ORDER_GET005: No se pudo obtener los artículos de las órdenes de compra.", [], 500);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitles as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if ( in_array($artitles['ID_INFORMACION'], array_column($arrArtitlesTemp, 'ID_INFORMACION')) ) {
$indexArtitle = array_search($artitles['ID_INFORMACION'], array_column($arrArtitlesTemp, 'ID_INFORMACION'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitles = $arrArtitlesTemp;
foreach ($arrArtitles as $keyArtitles => $artitles) {
$arrImageArtitle = json_decode($artitles['IMAGEN']);
$arrUrlImage = array();
foreach ($arrImageArtitle as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$arrArtitles[$keyArtitles]['IMAGEN'] = $arrUrlImage;
}
try {
$getHistoryOrder = DB::table('S002V01THIOR')
->where('HIOR_NUOR', '=', $order)
->where('HIOR_NULI', '=', $line)
->get([
'HIOR_IDHO AS ID_HISTORIA_ORDEN',
'HIOR_ESOR AS ESTADO_ORDEN',
'HIOR_DESC AS DESCRIPCION',
'HIOR_EVID AS EVIDENCIA',
'HIOR_POEN AS PORCENTAJE_ENTREGA',
'HIOR_USRE AS USUARIO_REGISTRA',
'HIOR_FERE AS FECHA_REGISTRA',
'HIOR_USMO AS USUARIO_MODIFICA',
'HIOR_FEMO AS FECHA_MODIFICA',
]);
$arrHistoryOrder = json_decode(json_encode($getHistoryOrder), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_GET006: Ocurrió un error al momento de obtener el historial de la orden de compra.",
$th->getMessage(),
500
);
}
if (empty($arrHistoryOrder) || is_null($arrHistoryOrder)) {
return $this->responseController->makeResponse( true, "ERR_ORDER_GET007: No se pudo obtener el historial de la orden de compra.", [], 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrHistoryOrder, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrHistoryOrder = $responseCheckLatestUpdate['response'];
foreach ($arrHistoryOrder as $keyHistoryOrder => $historyOrder) {
if ( !is_null($historyOrder['EVIDENCIA']) ) {
$arrEvidence = json_decode($historyOrder['EVIDENCIA']);
$arrUrlImage = array();
foreach ($arrEvidence as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET003: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$historyOrder['EVIDENCIA'] = $arrUrlImage;
}
$arrHistoryOrder[$keyHistoryOrder] = $historyOrder;
}
$arrOrders['ARTI'] = $arrArtitles;
$arrOrders['HIST'] = $arrHistoryOrder;
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrders);
}
public function getLastSateOrder($order, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrOrderState = (array) DB::table('S002V01THIOR')
->where('HIOR_NUOR', '=', $order)
->where('HIOR_NULI', '=', $line)
->where('HIOR_ESTA', '=', 'Activo')
->orderBy('HIOR_FEAR', 'DESC')
->first([
'HIOR_IDHO AS ID_HISTORIA_ORDEN',
'HIOR_ESOR AS ESTADO_ORDEN',
'HIOR_DESC AS DESCRIPCION',
'HIOR_EVID AS EVIDENCIA',
'HIOR_POEN AS PORCENTAJE_ENTREGA',
'HIOR_ESTA AS ESTADO_ORDEN',
'HIOR_USRE AS USUARIO_REGISTRA',
'HIOR_FERE AS FECHA_REGISTRA',
'HIOR_USMO AS USUARIO_MODIFICA',
'HIOR_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_GETHISTORY000: Ocurrió un error al obtener el historial de las órdenes de compra",
$th->getMessage(),
500
);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrOrderState], $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrOrderState = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrderState);
}
public function updateStateHistory(Request $request) {
$validator = Validator::make($request->all(), [
'ESTADO' => 'required|string',
'DESCRIPCION' => 'required|string',
'EVIDENCIA' => 'required|array',
'PORCENTAJE' => 'required|string',
'NUMERO_ORDEN' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ORDERSTATE_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDERSTATE_REG001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
$arrCodeEvidence = array();
foreach ($requestData['EVIDENCIA'] as $evidence) {
$idFile = $this->encController->decrypt($evidence);
$tempFile = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
if(is_null($tempFile)){
return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG002: El archivo consultado no está registrado', [], 404);
}else if($tempFile->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG003: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($requestData['NUMERO_LINEA']),
'GEAD',
'FO',
$tempFile,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_ORDERSTATE_REG004: '.$fileResponse[1], [], 400);
}
$arrCodeEvidence[] = $this->encController->encrypt($fileResponse[1]);
}
$jsonEvidence = json_encode($arrCodeEvidence);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$arrInsert = [
'HIOR_NUOR' => $requestData['NUMERO_ORDEN'],
'HIOR_ESOR' => $requestData['ESTADO'],
'HIOR_DESC' => $requestData['DESCRIPCION'],
'HIOR_EVID' => $jsonEvidence,
'HIOR_POEN' => $requestData['PORCENTAJE'],
'HIOR_NULI' => $requestData['NUMERO_LINEA'],
'HIOR_USRE' => $user,
'HIOR_FERE' => $currentDate,
'HIOR_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
];
try {
$validateInsert = DB::table('S002V01THIOR')->insert($arrInsert);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG005: Ocurrió un error al momento de insertar los datos.", $th->getMessage(), 500);
}
if ( !$validateInsert ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG006: No se pudo insertar los datos a la tabla.", [], 500);
}
try {
$validateUpdate = DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $requestData['NUMERO_ORDEN'])
->where('ORCO_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'ORCO_ESTA' => $requestData['ESTADO'],
'ORCO_USMO' => $user,
'ORCO_FEMO' => $currentDate,
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ORDERSTATE_REG007: Ocurrió un error al momento de modificar los datos.", $th->getMessage(), 500);
}
if ( !$validateUpdate ) {
DB::rollBack();
return $this->responseController->makeRespÑonse(true, "ERR_ORDERSTATE_REG008: No se pudo modificar los datos a la tabla.", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Estado Exitoso");
}
public function reorderArtitles(Request $request) {
$validator = Validator::make($request->all(), [
'ORDEN' => 'required|string',
'DESCRIPCION' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_REORDER_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
try {
$order = $this->encController->decrypt($requestData['ORDEN']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG002: Ocurrió un error al obtener el número de orden.", $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$idRegisterLine = DB::table('S002V01TLINE')->insertGetId([
// 'LINE_DESC' => $request['DESCRIPCION'],
'LINE_NULI' => $request['NUMERO_LINEA'],
'LINE_USRE' => $user,
'LINE_FERE' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG003: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
}
if ( !$idRegisterLine ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG004: Ocurrió un error al hacer la inserción en la base.", [], 500);
}
try {
$arrArtitles = DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $order)
->join('S002V01TARSE', function (JoinClause $join) {
$join->on('ARSE_IDLI', '=', 'ORCO_IDLI')
->on('ARSE_NUPR', '=', 'ORCO_NUPR');
})
->get([
'ARSE_IDAR', // Identificador del artículo
'ARSE_NUPR', // Número del proveedor
'ARSE_IDIN', // Identificador de la información del artículo
'ARSE_CANT', // Cantidad
// 'ARSE_PRTO', // Precio total
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG005: No se pudo obtener la información de la orden.", $th->getMessage(), 500);
}
if ( $arrArtitles->isEmpty() ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG006: La orden no tiene artículos.", [], 500);
}
foreach ($arrArtitles as $keyArtitle => $artitle) {
try {
$validateInsert = DB::table('S002V01TARSE')->insert([
'ARSE_IDAS' => $keyArtitle + 1,
'ARSE_IDLI' => $idRegisterLine,
'ARSE_IDAR' => $artitle->ARSE_IDAR,
'ARSE_NUPR' => $artitle->ARSE_NUPR,
'ARSE_IDIN' => $artitle->ARSE_IDIN,
'ARSE_CANT' => $artitle->ARSE_CANT,
// 'ARSE_PRTO' => $artitle->ARSE_PRTO,
'ARSE_NULI' => $request['NUMERO_LINEA'],
'ARSE_USRE' => $user,
'ARSE_FERE' => $currentDate,
'ARSE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG007: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
}
if ( !$validateInsert ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_REORDER_REG008: Ocurrió un error al hacer la inserción en la base.", [], 500);
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Artículos Reordenados Exitosamente");
}
public function generateSheetAcquisitionXLS($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
$headerA1 = 'Número de orden';
$contentB1 = $arrOrder['ORCO_NUOR'];
$activeWorksheet->setCellValue("A1", $headerA1);
$activeWorksheet->setCellValue("B1", $contentB1);
$activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
$headerA2 = 'Estado de la orden';
$contentB2 = $arrOrder['ORCO_ESTA'];
$activeWorksheet->setCellValue("A2", $headerA2);
$activeWorksheet->setCellValue("B2", $contentB2);
$activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
$headerA3 = 'Numero de línea de solicitud';
$contentB3 = $arrOrder['LINE_IDLI'];
$activeWorksheet->setCellValue("A3", $headerA3);
$activeWorksheet->setCellValue("B3", $contentB3);
$activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
$headerA4 = '';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Preventivo';
$contentB4 = $arrOrder['LINE_OTPR'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Correctivo';
$contentB4 = $arrOrder['LINE_OTCO'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
} else {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
}
$activeWorksheet->setCellValue("A4", $headerA4 );
$activeWorksheet->setCellValue("B4", $contentB4 );
$activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
$headerA5 = 'ID Despacho';
$contentB5 = $arrOrder['DESP_IDDE'];
$activeWorksheet->setCellValue("A5", $headerA5 );
$activeWorksheet->setCellValue("B5", $contentB5 );
$activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
$headerA6 = 'Despacho';
$contentB6 = $arrOrder['DESP_NODE'];
$activeWorksheet->setCellValue("A6", $headerA6 );
$activeWorksheet->setCellValue("B6", $contentB6 );
$activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
$headerA7 = 'Responsable del despacho';
$contentB7 = $arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'];
$activeWorksheet->setCellValue("A7", $headerA7 );
$activeWorksheet->setCellValue("B7", $contentB7 );
$activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
$headerA8 = 'Teléfono del despacho';
$contentB8 = $arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'];
$activeWorksheet->setCellValue("A8", $headerA8 );
$activeWorksheet->setCellValue("B8", $contentB8 );
$activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
$headerA9 = 'Correo electrónico del despacho';
$contentB9 = $arrOrder['DESP_CORR'];
$activeWorksheet->setCellValue("A9", $headerA9 );
$activeWorksheet->setCellValue("B9", $contentB9 );
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerA10 = 'Calle del despacho';
$contentB10 = $arrOrder['DESP_CALL'];
$activeWorksheet->setCellValue("A10", $headerA10 );
$activeWorksheet->setCellValue("B10", $contentB10 );
$activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
$headerA11 = 'Número exterior';
$contentB11 = $arrOrder['DESP_NUEX'];
$activeWorksheet->setCellValue("A11", $headerA11 );
$activeWorksheet->setCellValue("B11", $contentB11 );
$activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
$headerA12 = 'Número interior';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$contentB12 = $arrOrder['DESP_NUIN'];
} else {
$contentB12 = 'No aplica';
}
$activeWorksheet->setCellValue("A12", $headerA12 );
$activeWorksheet->setCellValue("B12", $contentB12 );
$activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
$headerA13 = 'Código postal';
$contentB13 = $arrOrder['DESP_COPO'];
$activeWorksheet->setCellValue("A13", $headerA13 );
$activeWorksheet->setCellValue("B13", $contentB13 );
$activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
$headerA14 = 'Colonia';
$contentB14 = $arrOrder['DESP_COLO'];
$activeWorksheet->setCellValue("A14", $headerA14 );
$activeWorksheet->setCellValue("B14", $contentB14 );
$activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
$headerA15 = 'Localidad';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$contentB15 = $arrOrder['DESP_LOCA'];
} else {
$contentB15 = 'No aplica';
}
$activeWorksheet->setCellValue("A15", $headerA15 );
$activeWorksheet->setCellValue("B15", $contentB15 );
$activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
$headerA16 = 'Municipio';
$contentB16 = $arrOrder['DESP_MUNI'];
$activeWorksheet->setCellValue("A16", $headerA16 );
$activeWorksheet->setCellValue("B16", $contentB16 );
$activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
$headerA17 = 'Entidad Federativa';
$contentB17 = $arrOrder['DESP_ENTI'];
$activeWorksheet->setCellValue("A17", $headerA17 );
$activeWorksheet->setCellValue("B17", $contentB17 );
$activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
$headerA18 = 'País';
$contentB18 = $arrOrder['DESP_PAIS'];
$activeWorksheet->setCellValue("A18", $headerA18 );
$activeWorksheet->setCellValue("B18", $contentB18 );
$activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
$headerA19 = 'Número de proveedor';
$contentB19 = $arrOrder['PROV_NUPR'];
$activeWorksheet->setCellValue("A19", $headerA19 );
$activeWorksheet->setCellValue("B19", $contentB19 );
$activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
$headerA20 = 'Número de subcontratista';
$contentB20 = $arrOrder['PROV_IDPS'];
$activeWorksheet->setCellValue("A20", $headerA20 );
$activeWorksheet->setCellValue("B20", $contentB20 );
$activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
$headerA21 = 'Nombre comercial del proveedor';
$contentB21 = $arrOrder['PROV_NOCO'];
$activeWorksheet->setCellValue("A21", $headerA21 );
$activeWorksheet->setCellValue("B21", $contentB21 );
$activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
$headerA22 = 'Referencia fiscal del proveedor';
$contentB22 = $arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')';
$activeWorksheet->setCellValue("A22", $headerA22 );
$activeWorksheet->setCellValue("B22", $contentB22 );
$activeWorksheet->getStyle( "A22" )->getFont()->setBold(true);
$headerA23 = 'Responsable del proveedor';
$contentB23 = $arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'];
$activeWorksheet->setCellValue("A23", $headerA23 );
$activeWorksheet->setCellValue("B23", $contentB23 );
$activeWorksheet->getStyle( "A23" )->getFont()->setBold(true);
$headerA24 = 'Correo electrónico del proveedor';
$contentB24 = $arrOrder['PROV_CORR'];
$activeWorksheet->setCellValue("A24", $headerA24 );
$activeWorksheet->setCellValue("B24", $contentB24 );
$activeWorksheet->getStyle( "A24" )->getFont()->setBold(true);
$headerA25 = 'Teléfono del proveedor';
$contentB25 = $arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'];
$activeWorksheet->setCellValue("A25", $headerA25 );
$activeWorksheet->setCellValue("B25", $contentB25 );
$activeWorksheet->getStyle( "A25" )->getFont()->setBold(true);
$headerA26 = '';
$contentB26 = '';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'R.F.C. del proveedor';
$contentB26 = $arrOrder['PROV_XRFC'];
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'TAX ID. del proveedor';
$contentB26 = $arrOrder['PROV_XTAX'];
} else {
$headerA26 = 'R.F.C. / TAX ID';
$contentB26 = 'No aplica';
}
$activeWorksheet->setCellValue("A26", $headerA26 );
$activeWorksheet->setCellValue("B26", $contentB26 );
$activeWorksheet->getStyle( "A26" )->getFont()->setBold(true);
$activeWorksheet->getColumnDimension("A")->setAutoSize(true);
$activeWorksheet->getColumnDimension("B")->setAutoSize(true);
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$activeWorksheetArtitle = $spreadsheet->getActiveSheet()->setTitle('Artículos de la orden');
$arrHeaderArtitle = array(
/* A */ 'ID Artículo',
/* B */ 'Código del Artíulo',
/* C */ 'Artículo',
/* D */ 'Familia',
/* E */ 'Subfamilia',
/* F */ 'Descripción',
/* G */ 'Características',
/* H */ 'Unidad',
/* I */ 'Código',
/* J */ 'Modelo',
/* L */ 'Precio Unitario',
/* M */ 'Cantidad',
/* N */ 'Precio Total',
/* O */ 'No. de selección',
);
foreach ($arrArtitle as $key => $artitle) {
$key = $key + 2;
$activeWorksheetArtitle->setCellValue("A".$key, $artitle['ARTI_IDAR']);
$activeWorksheetArtitle->setCellValue("B".$key, $artitle['ARTI_CODI']);
$activeWorksheetArtitle->setCellValue("C".$key, $artitle['ARTI_NOMB']);
$activeWorksheetArtitle->setCellValue("D".$key, $artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')');
$activeWorksheetArtitle->setCellValue("E".$key, $artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')');
$activeWorksheetArtitle->setCellValue("F".$key, $artitle['DEAR_DESC']);
$activeWorksheetArtitle->setCellValue("G".$key, $artitle['DEAR_CARA']);
$activeWorksheetArtitle->setCellValue("H".$key, $artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')');
$activeWorksheetArtitle->setCellValue("I".$key, $artitle['INAR_CODI']);
$activeWorksheetArtitle->setCellValue("J".$key, $artitle['INAR_MODE']);
$activeWorksheetArtitle->setCellValue("K".$key, '$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("L".$key, $artitle['CANTIDAD']);
$activeWorksheetArtitle->setCellValue("M".$key, '$'.( $artitle['INAR_PREC'] * $artitle['CANTIDAD']) . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("N".$key, $artitle['ARSE_IDAS']);
}
foreach ($arrHeaderArtitle as $keyHeaderArtitle => $headerArtitle) {
$activeWorksheetArtitle->setCellValue( $arrAlphabet[$keyHeaderArtitle]."1", $headerArtitle);
$activeWorksheetArtitle->getColumnDimension( $arrAlphabet[$keyHeaderArtitle] )->setAutoSize(true);
$activeWorksheetArtitle->getStyle( $arrAlphabet[$keyHeaderArtitle]."1" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
} else {
$ubic = "C:\inetpub\wwwroot\sam\storage\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetAcquisitionPDF($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
$html = '
Document
Número de Orden de Compra:
'.$arrOrder['ORCO_NUOR'].'
Estado de la orden:
'.$arrOrder['ORCO_ESTA'].'
Numero de línea de solicitud:
'.$arrOrder['LINE_IDLI'].'
';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Preventivo:
'.$arrOrder['LINE_OTPR'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Correctivo:
'.$arrOrder['LINE_OTCO'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo:
No aplica
';
} else {
$html.='
Orden de Trabajo:
No aplica
';
}
$html.='
ID Despacho:
'.$arrOrder['DESP_IDDE'].'
Despacho:
'.$arrOrder['DESP_NODE'].'
Responsable del despacho:
'.$arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'].'
Teléfono del despacho:
'.$arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'].'
Correo electrónico del despacho:
'.$arrOrder['DESP_CORR'].'
Calle del despacho:
'.$arrOrder['DESP_CALL'].'
Número exterior:
'.$arrOrder['DESP_NUEX'].'
';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$html.='
Número interior:
'.$arrOrder['DESP_NUIN'].'
';
} else {
$html.='
Número interior:
No aplica
';
}
$html.='
Código postal:
'.$arrOrder['DESP_COPO'].'
Colonia:
'.$arrOrder['DESP_COLO'].'
';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$html.='
Localidad:
'.$arrOrder['DESP_LOCA'].'
';
} else {
$html.='
Localidad:
No aplica
';
}
$html.='
Municipio:
'.$arrOrder['DESP_MUNI'].'
Entidad Federativa:
'.$arrOrder['DESP_ENTI'].'
País:
'.$arrOrder['DESP_PAIS'].'
Número de proveedor:
'.$arrOrder['PROV_NUPR'].'
Número de subcontratista:
'.$arrOrder['PROV_IDPS'].'
Nombre comercial del proveedor:
'.$arrOrder['PROV_NOCO'].'
Referencia fiscal del proveedor:
'.$arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')'.'
Responsable del proveedor:
'.$arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'].'
Correo electrónico del proveedor:
'.$arrOrder['PROV_CORR'].'
Teléfono del proveedor:
'.$arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'].'
';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
R.F.C. del proveedor:
'.$arrOrder['PROV_XRFC'].'
';
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
TAX ID. del proveedor:
'.$arrOrder['PROV_XTAX'].'
';
} else {
$html.='
R.F.C. / TAX ID:
No aplica
';
}
if ( !empty($arrArtitle) ) {
$html.='
Artículos
';
$html.='
| ID Artículo |
Código del artíulo |
Artículo |
Familia |
Subfamilia |
Unidad |
Código |
Modelo |
Precio Unitario |
Cantidad |
Precio Total |
No. de selección |
';
foreach ($arrArtitle as $keyArtitle => $artitle) {
$html.= '
| '.$artitle['ARTI_IDAR'].' |
'.$artitle['ARTI_CODI'].' |
'.$artitle['ARTI_NOMB'].' |
'.$artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')'.' |
'.$artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')'.' |
'.$artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')'.' |
'.$artitle['INAR_CODI'].' |
'.$artitle['INAR_MODE'].' |
'.'$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] .' |
'.$artitle['CANTIDAD'].' |
'.'$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD']) . ' ' . $artitle['CAMO_COMO'] .' |
'.$artitle['ARSE_IDAS'].' |
';
}
$html.= '
';
}
$html.='';
// return $html;
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetDivisaXLS($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
try {
$arrInvoice = DB::table('S002V01TFALS')
->where('FALS_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('FALS_ESTA', '=', 'Activo')
->where('DLSC_ESTA', '=', 'Activo')
->where('DLSC_TIPO', '=', 'Cotización')
->orWhere('DLSC_TIPO', '=', 'Orden')
->join('S002V01TDLSC', 'DLSC_IDFA', '=', 'FALS_IDFA')
->get([
'FALS_IDFA',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_TIAR',
'DLSC_DESC',
]);
$arrInvoice = json_decode( json_encode( $arrInvoice ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET003: Ocurrió un error al obtener la información de las facturas.",
$th->getMessage(),
500
);
}
if ( empty($arrInvoice) ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET004: La orden de compra no tiene ninguna factura registrada.",
[],
500
);
}
$arrInvoiceOrder = array();
$arrInvoiceCotizacion = array();
foreach ($arrInvoice as $keyInvoice => $invoice) {
if ( $invoice['DLSC_TIPO'] === 'Orden') {
$arrInvoiceOrder[] = $invoice;
}
if ( $invoice['DLSC_TIPO'] === 'Cotización') {
$arrInvoiceCotizacion[] = $invoice;
}
}
unset($arrInvoice);
if ( !empty($arrInvoiceOrder) ) {
$idMax = 0;
foreach ($arrInvoiceOrder as $keyInvoiceOrder => $invoiceOrder) {
if ( $invoiceOrder['FALS_IDFA'] > $idMax ) {
$idMax = $invoiceOrder['FALS_IDFA'];
$arrInvoice = $invoiceOrder;
}
}
} else {
$idMax = 0;
foreach ($arrInvoiceCotizacion as $keyInvoiceCotizacion => $invoiceCotizacion) {
if ( $invoiceCotizacion['FALS_IDFA'] > $idMax ) {
$idMax = $invoiceCotizacion['FALS_IDFA'];
$arrInvoice = $invoiceCotizacion;
}
}
}
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
$headerA1 = 'Número de orden';
$contentB1 = $arrOrder['ORCO_NUOR'];
$activeWorksheet->setCellValue("A1", $headerA1);
$activeWorksheet->setCellValue("B1", $contentB1);
$activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
$headerA2 = 'Estado de la orden';
$contentB2 = $arrOrder['ORCO_ESTA'];
$activeWorksheet->setCellValue("A2", $headerA2);
$activeWorksheet->setCellValue("B2", $contentB2);
$activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
$headerA3 = 'Numero de línea de solicitud';
$contentB3 = $arrOrder['LINE_IDLI'];
$activeWorksheet->setCellValue("A3", $headerA3);
$activeWorksheet->setCellValue("B3", $contentB3);
$activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
$headerA4 = '';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Preventivo';
$contentB4 = $arrOrder['LINE_OTPR'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Correctivo';
$contentB4 = $arrOrder['LINE_OTCO'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
} else {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
}
$activeWorksheet->setCellValue("A4", $headerA4 );
$activeWorksheet->setCellValue("B4", $contentB4 );
$activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
$headerA5 = 'ID Despacho';
$contentB5 = $arrOrder['DESP_IDDE'];
$activeWorksheet->setCellValue("A5", $headerA5 );
$activeWorksheet->setCellValue("B5", $contentB5 );
$activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
$headerA6 = 'Despacho';
$contentB6 = $arrOrder['DESP_NODE'];
$activeWorksheet->setCellValue("A6", $headerA6 );
$activeWorksheet->setCellValue("B6", $contentB6 );
$activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
$headerA7 = 'Responsable del despacho';
$contentB7 = $arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'];
$activeWorksheet->setCellValue("A7", $headerA7 );
$activeWorksheet->setCellValue("B7", $contentB7 );
$activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
$headerA8 = 'Teléfono del despacho';
$contentB8 = $arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'];
$activeWorksheet->setCellValue("A8", $headerA8 );
$activeWorksheet->setCellValue("B8", $contentB8 );
$activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
$headerA9 = 'Correo electrónico del despacho';
$contentB9 = $arrOrder['DESP_CORR'];
$activeWorksheet->setCellValue("A9", $headerA9 );
$activeWorksheet->setCellValue("B9", $contentB9 );
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerA10 = 'Calle del despacho';
$contentB10 = $arrOrder['DESP_CALL'];
$activeWorksheet->setCellValue("A10", $headerA10 );
$activeWorksheet->setCellValue("B10", $contentB10 );
$activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
$headerA11 = 'Número exterior';
$contentB11 = $arrOrder['DESP_NUEX'];
$activeWorksheet->setCellValue("A11", $headerA11 );
$activeWorksheet->setCellValue("B11", $contentB11 );
$activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
$headerA12 = 'Número interior';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$contentB12 = $arrOrder['DESP_NUIN'];
} else {
$contentB12 = 'No aplica';
}
$activeWorksheet->setCellValue("A12", $headerA12 );
$activeWorksheet->setCellValue("B12", $contentB12 );
$activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
$headerA13 = 'Código postal';
$contentB13 = $arrOrder['DESP_COPO'];
$activeWorksheet->setCellValue("A13", $headerA13 );
$activeWorksheet->setCellValue("B13", $contentB13 );
$activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
$headerA14 = 'Colonia';
$contentB14 = $arrOrder['DESP_COLO'];
$activeWorksheet->setCellValue("A14", $headerA14 );
$activeWorksheet->setCellValue("B14", $contentB14 );
$activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
$headerA15 = 'Localidad';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$contentB15 = $arrOrder['DESP_LOCA'];
} else {
$contentB15 = 'No aplica';
}
$activeWorksheet->setCellValue("A15", $headerA15 );
$activeWorksheet->setCellValue("B15", $contentB15 );
$activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
$headerA16 = 'Municipio';
$contentB16 = $arrOrder['DESP_MUNI'];
$activeWorksheet->setCellValue("A16", $headerA16 );
$activeWorksheet->setCellValue("B16", $contentB16 );
$activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
$headerA17 = 'Entidad Federativa';
$contentB17 = $arrOrder['DESP_ENTI'];
$activeWorksheet->setCellValue("A17", $headerA17 );
$activeWorksheet->setCellValue("B17", $contentB17 );
$activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
$headerA18 = 'País';
$contentB18 = $arrOrder['DESP_PAIS'];
$activeWorksheet->setCellValue("A18", $headerA18 );
$activeWorksheet->setCellValue("B18", $contentB18 );
$activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
$headerA19 = 'Número de proveedor';
$contentB19 = $arrOrder['PROV_NUPR'];
$activeWorksheet->setCellValue("A19", $headerA19 );
$activeWorksheet->setCellValue("B19", $contentB19 );
$activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
$headerA20 = 'Número de subcontratista';
$contentB20 = $arrOrder['PROV_IDPS'];
$activeWorksheet->setCellValue("A20", $headerA20 );
$activeWorksheet->setCellValue("B20", $contentB20 );
$activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
$headerA21 = 'Nombre comercial del proveedor';
$contentB21 = $arrOrder['PROV_NOCO'];
$activeWorksheet->setCellValue("A21", $headerA21 );
$activeWorksheet->setCellValue("B21", $contentB21 );
$activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
$headerA22 = 'Referencia fiscal del proveedor';
$contentB22 = $arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')';
$activeWorksheet->setCellValue("A22", $headerA22 );
$activeWorksheet->setCellValue("B22", $contentB22 );
$activeWorksheet->getStyle( "A22" )->getFont()->setBold(true);
$headerA23 = 'Responsable del proveedor';
$contentB23 = $arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'];
$activeWorksheet->setCellValue("A23", $headerA23 );
$activeWorksheet->setCellValue("B23", $contentB23 );
$activeWorksheet->getStyle( "A23" )->getFont()->setBold(true);
$headerA24 = 'Correo electrónico del proveedor';
$contentB24 = $arrOrder['PROV_CORR'];
$activeWorksheet->setCellValue("A24", $headerA24 );
$activeWorksheet->setCellValue("B24", $contentB24 );
$activeWorksheet->getStyle( "A24" )->getFont()->setBold(true);
$headerA25 = 'Teléfono del proveedor';
$contentB25 = $arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'];
$activeWorksheet->setCellValue("A25", $headerA25 );
$activeWorksheet->setCellValue("B25", $contentB25 );
$activeWorksheet->getStyle( "A25" )->getFont()->setBold(true);
$headerA26 = '';
$contentB26 = '';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'R.F.C. del proveedor';
$contentB26 = $arrOrder['PROV_XRFC'];
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'TAX ID. del proveedor';
$contentB26 = $arrOrder['PROV_XTAX'];
} else {
$headerA26 = 'R.F.C. / TAX ID';
$contentB26 = 'No aplica';
}
$activeWorksheet->setCellValue("A26", $headerA26 );
$activeWorksheet->setCellValue("B26", $contentB26 );
$activeWorksheet->getStyle( "A26" )->getFont()->setBold(true);
$activeWorksheet->getColumnDimension("A")->setAutoSize(true);
$activeWorksheet->getColumnDimension("B")->setAutoSize(true);
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$activeWorksheetArtitle = $spreadsheet->getActiveSheet()->setTitle('Artículos de la orden');
$arrHeaderArtitle = array(
/* A */ 'ID Artículo',
/* B */ 'Código del Artíulo',
/* C */ 'Artículo',
/* D */ 'Familia',
/* E */ 'Subfamilia',
/* F */ 'Unidad',
/* G */ 'Código',
/* H */ 'Modelo',
/* I */ 'Precio Unitario',
/* J */ 'Cantidad',
/* K */ 'Precio Total',
/* L */ 'Moneda Local',
/* M */ 'Tipo de cambio',
/* N */ 'Precio Local',
);
foreach ($arrArtitle as $key => $artitle) {
$key = $key + 2;
$activeWorksheetArtitle->setCellValue("A".$key, $artitle['ARTI_IDAR']);
$activeWorksheetArtitle->setCellValue("B".$key, $artitle['ARTI_CODI']);
$activeWorksheetArtitle->setCellValue("C".$key, $artitle['ARTI_NOMB']);
$activeWorksheetArtitle->setCellValue("D".$key, $artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')');
$activeWorksheetArtitle->setCellValue("E".$key, $artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')');
$activeWorksheetArtitle->setCellValue("F".$key, $artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')');
$activeWorksheetArtitle->setCellValue("G".$key, $artitle['INAR_CODI']);
$activeWorksheetArtitle->setCellValue("H".$key, $artitle['INAR_MODE']);
$activeWorksheetArtitle->setCellValue("I".$key, '$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("J".$key, $artitle['CANTIDAD']);
$activeWorksheetArtitle->setCellValue("K".$key, '$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD']). ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("L".$key, 'MXN');
$activeWorksheetArtitle->setCellValue("M".$key, $arrInvoice['FALS_TICA']);
$activeWorksheetArtitle->setCellValue("N".$key, '$'.($arrInvoice['FALS_TICA'] * $artitle['INAR_PREC']) . ' MXN' );
}
foreach ($arrHeaderArtitle as $keyHeaderArtitle => $headerArtitle) {
$activeWorksheetArtitle->setCellValue( $arrAlphabet[$keyHeaderArtitle]."1", $headerArtitle);
$activeWorksheetArtitle->getColumnDimension( $arrAlphabet[$keyHeaderArtitle] )->setAutoSize(true);
$activeWorksheetArtitle->getStyle( $arrAlphabet[$keyHeaderArtitle]."1" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_divisa_' . $arrOrder['ORCO_NUOR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetDivisaPDF($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
try {
$arrInvoice = DB::table('S002V01TFALS')
->where('FALS_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('FALS_ESTA', '=', 'Activo')
->where('DLSC_ESTA', '=', 'Activo')
->where('DLSC_TIPO', '=', 'Cotización')
->orWhere('DLSC_TIPO', '=', 'Orden')
->join('S002V01TDLSC', 'DLSC_IDFA', '=', 'FALS_IDFA')
->get([
'FALS_IDFA',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_TIAR',
'DLSC_DESC',
]);
$arrInvoice = json_decode( json_encode( $arrInvoice ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET003: Ocurrió un error al obtener la información de las facturas.",
$th->getMessage(),
500
);
}
if ( empty($arrInvoice) ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET004: La orden de compra no tiene ninguna factura registrada.",
[],
500
);
}
$arrInvoiceOrder = array();
$arrInvoiceCotizacion = array();
foreach ($arrInvoice as $keyInvoice => $invoice) {
if ( $invoice['DLSC_TIPO'] === 'Orden') {
$arrInvoiceOrder[] = $invoice;
}
if ( $invoice['DLSC_TIPO'] === 'Cotización') {
$arrInvoiceCotizacion[] = $invoice;
}
}
unset($arrInvoice);
if ( !empty($arrInvoiceOrder) ) {
$idMax = 0;
foreach ($arrInvoiceOrder as $keyInvoiceOrder => $invoiceOrder) {
if ( $invoiceOrder['FALS_IDFA'] > $idMax ) {
$idMax = $invoiceOrder['FALS_IDFA'];
$arrInvoice = $invoiceOrder;
}
}
} else {
$idMax = 0;
foreach ($arrInvoiceCotizacion as $keyInvoiceCotizacion => $invoiceCotizacion) {
if ( $invoiceCotizacion['FALS_IDFA'] > $idMax ) {
$idMax = $invoiceCotizacion['FALS_IDFA'];
$arrInvoice = $invoiceCotizacion;
}
}
}
$html = '
Document
Número de Orden de Compra:
'.$arrOrder['ORCO_NUOR'].'
Estado de la orden:
'.$arrOrder['ORCO_ESTA'].'
Numero de línea de solicitud:
'.$arrOrder['LINE_IDLI'].'
';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Preventivo:
'.$arrOrder['LINE_OTPR'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Correctivo:
'.$arrOrder['LINE_OTCO'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo:
No aplica
';
} else {
$html.='
Orden de Trabajo:
No aplica
';
}
$html.='
ID Despacho:
'.$arrOrder['DESP_IDDE'].'
Despacho:
'.$arrOrder['DESP_NODE'].'
Responsable del despacho:
'.$arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'].'
Teléfono del despacho:
'.$arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'].'
Correo electrónico del despacho:
'.$arrOrder['DESP_CORR'].'
Calle del despacho:
'.$arrOrder['DESP_CALL'].'
Número exterior:
'.$arrOrder['DESP_NUEX'].'
';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$html.='
Número interior:
'.$arrOrder['DESP_NUIN'].'
';
} else {
$html.='
Número interior:
No aplica
';
}
$html.='
Código postal:
'.$arrOrder['DESP_COPO'].'
Colonia:
'.$arrOrder['DESP_COLO'].'
';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$html.='
Localidad:
'.$arrOrder['DESP_LOCA'].'
';
} else {
$html.='
Localidad:
No aplica
';
}
$html.='
Municipio:
'.$arrOrder['DESP_MUNI'].'
Entidad Federativa:
'.$arrOrder['DESP_ENTI'].'
País:
'.$arrOrder['DESP_PAIS'].'
Número de proveedor:
'.$arrOrder['PROV_NUPR'].'
Número de subcontratista:
'.$arrOrder['PROV_IDPS'].'
Nombre comercial del proveedor:
'.$arrOrder['PROV_NOCO'].'
Referencia fiscal del proveedor:
'.$arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')'.'
Responsable del proveedor:
'.$arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'].'
Correo electrónico del proveedor:
'.$arrOrder['PROV_CORR'].'
Teléfono del proveedor:
'.$arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'].'
';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
R.F.C. del proveedor:
'.$arrOrder['PROV_XRFC'].'
';
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
TAX ID. del proveedor:
'.$arrOrder['PROV_XTAX'].'
';
} else {
$html.='
R.F.C. / TAX ID:
No aplica
';
}
if ( !empty($arrArtitle) ) {
$html.='
Artículos
';
$html.='
| ID |
Código del artíulo |
Artículo |
Familia |
Subfamilia |
Unidad |
Código |
Modelo |
Precio Unitario |
Cantidad |
Precio Total |
Moneda Local |
Tipo de cambio |
Precio Local |
';
foreach ($arrArtitle as $keyArtitle => $artitle) {
$html.= '
| '.$artitle['ARTI_IDAR'] . ' |
'.$artitle['ARTI_CODI'] . ' |
'.$artitle['ARTI_NOMB'] . ' |
'.$artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')' . ' |
'.$artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')' . ' |
'.$artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')' . ' |
'.$artitle['INAR_CODI'] . ' |
'.$artitle['INAR_MODE'] . ' |
'.'$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] . ' |
'.$artitle['CANTIDAD'] . ' |
'.'$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD']) . ' ' . $artitle['CAMO_COMO'] . ' |
'.'MXN' . ' |
'.$arrInvoice['FALS_TICA'] . ' |
'.'$'.($arrInvoice['FALS_TICA'] * $artitle['INAR_PREC']) . ' MXN' . ' |
';
}
$html.= '
';
}
$html.='';
// return $html;
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_divisa_' . $arrOrder['ORCO_NUOR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_divisa_' . $arrOrder['ORCO_NUOR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetInvoiceXLS($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
try {
$arrInvoice = DB::table('S002V01TFALS')
->where('FALS_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('FALS_ESTA', '=', 'Activo')
->where('DLSC_ESTA', '=', 'Activo')
->where('DLSC_TIPO', '=', 'Cotización')
->orWhere('DLSC_TIPO', '=', 'Orden')
->join('S002V01TDLSC', 'DLSC_IDFA', '=', 'FALS_IDFA')
->get([
'FALS_IDFA',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_CAAR',
'FALS_PRTO',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_TIAR',
'DLSC_DESC',
]);
$arrInvoice = json_decode( json_encode( $arrInvoice ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET003: Ocurrió un error al obtener la información de las facturas.",
$th->getMessage(),
500
);
}
if ( empty($arrInvoice) ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET004: La orden de compra no tiene ninguna factura registrada.",
[],
500
);
}
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
$activeWorksheet->setCellValue("B2", 'Número de orden de compra:' );
$activeWorksheet->setCellValue("C2", $arrOrder['ORCO_NUOR'] );
$activeWorksheet->getStyle( "B2" )->getFont()->setBold(true);
$arrHeaderInvoice = array(
/* A */ 'ID Factura',
/* B */ 'Tipo de Factura',
/* C */ 'UUID',
/* D */ 'Versión',
/* E */ 'Fecha de Emisión',
/* F */ 'R.F.C. Emisor',
/* G */ 'R.F.C. Receptor',
/* H */ 'Folio',
/* I */ 'Serie',
/* J */ 'Forma de Pago',
/* K */ 'Método de Pago',
/* L */ 'Tipo de Cambio',
/* M */ 'Moneda',
/* N */ 'Descripción',
/* O */ 'Cantidad de artículos',
/* P */ 'Precio Total',
);
foreach ($arrInvoice as $keyInvoice => $invoice) {
$key = $keyInvoice + 5;
$activeWorksheet->setCellValue("A".$key, $invoice['FALS_IDFA']);
if ($invoice['DLSC_TIPO'] === 'Cotización') {
$activeWorksheet->setCellValue("B".$key, 'Factura de Cotización');
} else if ($invoice['DLSC_TIPO'] === 'Orden') {
$activeWorksheet->setCellValue("B".$key, 'Factura de Orden de Compra');
} else if ($invoice['DLSC_TIPO'] === 'Abono') {
$activeWorksheet->setCellValue("B".$key, 'Factura de Abono');
} else {
$activeWorksheet->setCellValue("B".$key, 'No aplica');
}
$activeWorksheet->setCellValue("C".$key, $invoice['FALS_UUID']);
$activeWorksheet->setCellValue("D".$key, $invoice['FALS_VERS']);
$activeWorksheet->setCellValue("E".$key, $invoice['FALS_FEEM']);
$activeWorksheet->setCellValue("F".$key, $invoice['FALS_RFCE']);
$activeWorksheet->setCellValue("G".$key, $invoice['FALS_RFCR']);
$activeWorksheet->setCellValue("H".$key, $invoice['FALS_FOLI']);
$activeWorksheet->setCellValue("I".$key, $invoice['FALS_SERI']);
$activeWorksheet->setCellValue("J".$key, $invoice['FALS_FOPA']);
$activeWorksheet->setCellValue("K".$key, $invoice['FALS_MEPA']);
$activeWorksheet->setCellValue("L".$key, $invoice['FALS_TICA']);
$activeWorksheet->setCellValue("M".$key, $invoice['FALS_MONE']);
$activeWorksheet->setCellValue("N".$key, $invoice['DLSC_DESC']);
$activeWorksheet->setCellValue("O".$key, $invoice['FALS_CAAR']);
$activeWorksheet->setCellValue("P".$key, $invoice['FALS_PRTO']);
}
foreach ($arrHeaderInvoice as $keyHeaderInvoice => $headerInvoice) {
$activeWorksheet->setCellValue( $arrAlphabet[$keyHeaderInvoice]."4", $headerInvoice);
$activeWorksheet->getColumnDimension( $arrAlphabet[$keyHeaderInvoice] )->setAutoSize(true);
$activeWorksheet->getStyle( $arrAlphabet[$keyHeaderInvoice]."4" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_facturación_' . $arrOrder['ORCO_NUOR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetInvoicePDF($encOrderNumber, $user, $line) {
try {
$idOrder = $this->encController->decrypt($encOrderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
try {
$arrInvoice = DB::table('S002V01TFALS')
->where('FALS_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('FALS_ESTA', '=', 'Activo')
->where('DLSC_ESTA', '=', 'Activo')
->where('DLSC_TIPO', '=', 'Cotización')
->orWhere('DLSC_TIPO', '=', 'Orden')
->join('S002V01TDLSC', 'DLSC_IDFA', '=', 'FALS_IDFA')
->get([
'FALS_IDFA',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_CAAR',
'FALS_PRTO',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_TIAR',
'DLSC_DESC',
]);
$arrInvoice = json_decode( json_encode( $arrInvoice ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET003: Ocurrió un error al obtener la información de las facturas.",
$th->getMessage(),
500
);
}
if ( empty($arrInvoice) ) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET004: La orden de compra no tiene ninguna factura registrada.",
[],
500
);
}
$html = '
Document
Número de Orden de Compra:
'.$arrOrder['ORCO_NUOR'].'
';
$html.='
| ID Factura |
Tipo de Factura |
UUID |
Fecha de Emisión |
R.F.C. Emisor |
R.F.C. Receptor |
Tipo de Cambio |
Descripción |
Cantidad de artículos |
Precio Total |
';
foreach ($arrInvoice as $keyInvoice => $invoice) {
$html.= '';
$html.= '| '.$invoice['FALS_IDFA'] . ' | ';
if ($invoice['DLSC_TIPO'] === 'Cotización') {
$html.= 'Factura de Cotización | ';
} else if ($invoice['DLSC_TIPO'] === 'Orden') {
$html.= 'Factura de Orden de Compra | ';
} else if ($invoice['DLSC_TIPO'] === 'Abono') {
$html.= 'Factura de Abono | ';
} else {
$html.= 'No aplica | ';
}
$html.= ''.$invoice['FALS_UUID'].' | ';
// $html.= ''.$invoice['FALS_VERS'].' | ';
$html.= ''.$invoice['FALS_FEEM'].' | ';
$html.= ''.$invoice['FALS_RFCE'].' | ';
$html.= ''.$invoice['FALS_RFCR'].' | ';
// $html.= ''.$invoice['FALS_FOLI'].' | ';
// $html.= ''.$invoice['FALS_SERI'].' | ';
// $html.= ''.$invoice['FALS_FOPA'].' | ';
// $html.= ''.$invoice['FALS_MEPA'].' | ';
$html.= ''.$invoice['FALS_TICA'].' | ';
// $html.= ''.$invoice['FALS_MONE'].' | ';
$html.= ''.$invoice['DLSC_DESC'].' | ';
$html.= ''.$invoice['FALS_CAAR'].' | ';
$html.= '$'.$invoice['FALS_PRTO']. ' '. $invoice['FALS_MONE'] . ' | ';
$html.= '
';
}
$html.= '
';
$html.='';
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_divisa_' . $arrOrder['ORCO_NUOR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_facturación_' . $arrOrder['ORCO_NUOR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function getDocument($user, $line) {
try {
$arrDocuments = DB::table('S002V01TDLSC')
->where('DLSC_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->join('S002V01TLINE', 'DLSC_IDLI', '=', 'LINE_IDLI')
->get([
'LINE_IDLI',
'LINE_NUPR',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DLSC_IDDO',
'DLSC_IDLI',
'DLSC_IDFA',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_DESC',
'DLSC_TIAR',
'DLSC_ESTA',
'DLSC_USRE',
'DLSC_FERE',
'DLSC_USMO',
'DLSC_FEMO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrDocuments);
}
public function getDocumentByRequestLine($requestLine, $user, $line) {
try {
$requestLine = $this->encController->decrypt($requestLine);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_REG001: Ocurrió un error al desencriptar los datos.", $th->getMessage(), 401);
}
try {
$arrDocuments = DB::table('S002V01TDLSC')
->where('DLSC_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DLSC_IDLI', '=', $requestLine)
->join('S002V01TLINE', 'DLSC_IDLI', '=', 'LINE_IDLI')
->get([
'LINE_IDLI',
'LINE_NUPR',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DLSC_IDDO',
'DLSC_IDLI',
'DLSC_IDFA',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_DESC',
'DLSC_TIAR',
'DLSC_ESTA',
'DLSC_USRE',
'DLSC_FERE',
'DLSC_USMO',
'DLSC_FEMO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrDocuments);
}
public function registerDocumentOrder(Request $request) {
$valitador = Validator::make($request->all(), [
'LINEA_SOLICITUD' => 'required|string',
'TIPO_DOCUMENTO' => 'required|string',
'TIPO_ARCHIVO' => 'required|string|max:2',
'DOCUMENTO' => 'required|string',
'DESCRIPCION' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DOCUMENT_ORDER_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
try {
$user = $this->encController->decrypt($responseData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_REG001: Ocurrió un error al desencriptar el usuario.", $th->getMessage(), 401);
}
try {
$idFile = $this->encController->decrypt($responseData['DOCUMENTO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_REG002: Ocurrió un error al desencriptar el documento.", $th->getMessage(), 401);
}
$tempFile = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $responseData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
if(is_null($tempFile)){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_REG003: El archivo consultado no está registrado', [], 404);
}else if($tempFile->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_REG004: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($responseData['LINEA_SOLICITUD']),
'GEAD',
$responseData['TIPO_ARCHIVO'],
$tempFile,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_REG005: '.$fileResponse[1], [], 400);
}
$encCode = $this->encController->encrypt($fileResponse[1]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TDLSC')
->insert([
'DLSC_NULI' => $responseData['NUMERO_LINEA'],
'DLSC_IDLI' => $responseData['LINEA_SOLICITUD'],
'DLSC_CODO' => $encCode,
'DLSC_TIPO' => $responseData['TIPO_DOCUMENTO'],
'DLSC_TIAR' => $responseData['TIPO_ARCHIVO'],
'DLSC_DESC' => $responseData['DESCRIPCION'],
'DLSC_USRE' => $user,
'DLSC_FERE' => $currentDate,
'DLSC_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_REG006: Ocurrió un error al registrar el documento.", $th->getMessage(), 401);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_REG007: No se pudo registrar el documento.", [], 401);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro de Documento Exitoso");
}
public function updateDocumentOrder(Request $request) {
$valitador = Validator::make($request->all(), [
'LINEA_SOLICITUD' => 'required|integer',
'ID_DOCUMENTO' => 'required|int',
'TIPO_DOCUMENTO' => 'required|string',
'TIPO_ARCHIVO' => 'required|string',
'DOCUMENTO' => 'required|string',
'DESCRIPCION' => 'required|string',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DOCUMENT_ORDER_UPD000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
try {
$user = $this->encController->decrypt($responseData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_UPD001: Ocurrió un error al desencriptar el usuario.", $th->getMessage(), 401);
}
try {
$idFile = $this->encController->decrypt($responseData['DOCUMENTO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_UPD002: Ocurrió un error al desencriptar el documento.", $th->getMessage(), 401);
}
$tempFile = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $responseData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
if(is_null($tempFile)){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_UPD003: El archivo consultado no está registrado', [], 404);
}else if($tempFile->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_UPD004: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($responseData['LINEA_SOLICITUD']),
'GEAD',
$responseData['TIPO_ARCHIVO'],
$tempFile,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_DOCUMENT_ORDER_UPD005: '.$fileResponse[1], [], 400);
}
$encCode = $this->encController->encrypt($fileResponse[1]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TDLSC')
->where('DLSC_IDDO', '=', $responseData['ID_DOCUMENTO'])
->where('DLSC_NULI', '=', $responseData['NUMERO_LINEA'])
->where('DLSC_ESTA', '=', 'Activo')
->where('DLSC_IDLI', '=', $responseData['LINEA_SOLICITUD'])
->update([
'DLSC_CODO' => $encCode,
'DLSC_TIPO' => $responseData['TIPO_DOCUMENTO'],
'DLSC_TIAR' => $responseData['TIPO_ARCHIVO'],
'DLSC_DESC' => $responseData['DESCRIPCION'],
'DLSC_USMO' => $user,
'DLSC_FEMO' => $currentDate,
'DLSC_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_UPD006: Ocurrió un error al registrar el documento.", $th->getMessage(), 401);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_UPD007: No se pudo registrar el documento.", [], 401);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro de Documento Exitoso");
}
public function deleteDocumentOrder(Request $request) {
$valitador = Validator::make($request->all(), [
'ID_DOCUMENTO' => 'required|integer',
'NUMERO_LINEA' => 'required|integer',
'USUARIO' => 'required|string'
]);
if ($valitador->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DOCUMENT_ORDER_DEL000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($valitador->errors()->messages()),
401
);
}
DB::beginTransaction();
$responseData = $request->all();
try {
$user = $this->encController->decrypt($responseData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL001: Ocurrió un error al desencriptar los datos.", $th->getMessage(), 401);
}
$arrDeleteFileCode = array();
try {
$arrDocument = (array) DB::table('S002V01TDLSC')
->where('DLSC_IDDO', '=', $responseData['ID_DOCUMENTO'])
->where('DLSC_NULI', '=', $responseData['NUMERO_LINEA'])
->first([
'DLSC_IDLI',
'DLSC_IDFA',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_TIAR',
'DLSC_DESC',
'DLSC_ESTA',
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL002: Ocurrió un error al obtener los datos del documento.", $th->getMessage(), 401);
}
if (empty($arrDocument)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL003: No se encontró el documento seleccionado.", [], 401);
}
if ($arrDocument['DLSC_ESTA'] == 'Eliminado') {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL004: El documento ya se encuentra eliminado.", [], 401);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TDLSC')
->where('DLSC_IDDO', '=', $responseData['ID_DOCUMENTO'])
->where('DLSC_NULI', '=', $responseData['NUMERO_LINEA'])
->update([
'DLSC_ESTA' => 'Eliminado',
'DLSC_USMO' => $user,
'DLSC_FEMO' => $currentDate,
'DLSC_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL005: Ocurrió un error al eliminar el documento.", $th->getMessage(), 401);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL006: No se pudo modificar el registro del documento.", [], 401);
}
$arrDeleteFileCode[] = $arrDocument['DLSC_CODO'];
if ($arrDocument['DLSC_IDFA'] != null) {
try {
$arrInvoice = (array) DB::table('S002V01TFALS')
->where('FALS_IDFA', '=', $arrDocument['DLSC_IDFA'])
->where('FALS_NULI', '=', $responseData['NUMERO_LINEA'])
->where('FALS_IDLI', '=', $arrDocument['DLSC_IDLI'])
->first([
'FALS_IDLI',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_ESTA',
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL007: Ocurrió un error al obtener los datos de la factura.", $th->getMessage(), 401);
}
if (empty($arrDocument)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL008: No se encontró la factura.", [], 401);
}
if ($arrInvoice['FALS_ESTA'] == 'Eliminado') {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL009: La factura ya se encuentra eliminada.", [], 401);
}
try {
$validateUpdate = DB::table('S002V01TFALS')
->where('FALS_IDFA', '=', $arrDocument['DLSC_IDFA'])
->where('FALS_NULI', '=', $responseData['NUMERO_LINEA'])
->where('FALS_IDLI', '=', $arrDocument['DLSC_IDLI'])
->update([
'FALS_ESTA' => 'Eliminado',
'FALS_USMO' => $user,
'FALS_FEMO' => $currentDate,
'FALS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL010: Ocurrió un error al eliminar la factura.", $th->getMessage(), 401);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL011: No se pudo modificar el registro de la factura.", [], 401);
}
$arrDeleteFileCode[] = $arrInvoice['FALS_CODO'];
}
try {
foreach ($arrDeleteFileCode as $key => $fileCode) {
$arrDelete = [
'id_file' => $fileCode,
'id_user' => $responseData['USUARIO'],
'linea' => $responseData['NUMERO_LINEA'],
];
$request = new Request($arrDelete);
$responseDocument = $this->documentManagementController->deleteFile($request);
$arrResponseDocument = json_decode($responseDocument->original, true);
if ($arrResponseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL012: Ocurrió un error al eliminar el documento.", [], 500);
}
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DOCUMENT_ORDER_DEL013: Ocurrió un error la intentar eliminar los documentos.", $th->getMessage(), 401);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Eliminación de Documento Exitoso");
}
public function reportProblem(Request $request) {
$validator = Validator::make($request->all(),[
'ORDER' => 'required|string',
'TIPO' => 'required|string',
'DESCRIPCION' => 'required|string',
'EVIDENCIA' => 'required|array',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ISSUE_TRACKING_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
try {
$orderNumber = $this->encController->decrypt($requestData['ORDER']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG002: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
try {
$validateExists = DB::table('S002V01TORCO')->where('ORCO_NUOR', '=', $orderNumber)->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG003: Ocurrió un error al validar el número de orden de compra.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG004: No se encontró el número de orden de compra.", [], 500);
}
$arrCodeEvidence = array();
foreach ($requestData['EVIDENCIA'] as $keyEvidence => $evidence) {
$idFile = $this->encController->decrypt($evidence);
$tempFile = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $requestData['NUMERO_LINEA']],
['ARTE_IDAR', '=', $idFile],
])->first();
if(is_null($tempFile)){
return $this->responseController->makeResponse(true, 'ERR_ISSUE_TRACKING_REG005: El archivo consultado no está registrado', [], 404);
}else if($tempFile->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_ISSUE_TRACKING_REG006: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($requestData['NUMERO_LINEA']),
'GEAD',
'FO',
$tempFile,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_ISSUE_TRACKING_REG007: '.$fileResponse[1], [], 400);
}
$arrCodeEvidence[] = $this->encController->encrypt($fileResponse[1]);
}
$jsonEvidence = json_encode($arrCodeEvidence);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TSEPR')->insert([
'SEPR_NUOR' => $orderNumber,
'SEPR_TIPO' => $requestData['TIPO'],
'SEPR_DESC' => $requestData['DESCRIPCION'],
'SEPR_EVID' => $jsonEvidence,
'SEPR_NULI' => $requestData['NUMERO_LINEA'],
'SEPR_USRE' => $user,
'SEPR_FERE' => $currentDate,
'SEPR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG008: Ocurrió un error al hacer la inserción en la base.", $th->getMessage(), 500);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_REG009: No se pudo ingresar el reporte en la base.", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro de Reporte Exitoso");
}
public function getIssueTracking($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrIssueTracking = DB::table('S002V01TSEPR')
->where('SEPR_NULI', '=', $line)
->where('ORCO_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->join('S002V01TORCO', 'SEPR_NUOR', '=', 'ORCO_NUOR')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->get([
'SEPR_IDPR AS ID_PROBLEMA',
'SEPR_NUOR AS NUMERO_ORDEN',
'DESP_IDDE AS ID_DESPACHO',
'DESP_NODE AS NOMBRE_DESPACHO',
'SEPR_TIPO AS TIPO_PROBLEMA',
'SEPR_DESC AS DESCRIPCION',
'SEPR_RESO AS RESOLUCION',
'SEPR_EVID AS EVIDENCIA',
'SEPR_ESTA AS ESTADO',
'SEPR_USRE AS USUARIO_REGISTRA',
'SEPR_FERE AS FECHA_REGISTRA',
'SEPR_USMO AS USUARIO_MODIFICA',
'SEPR_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los datos.", $th->getMessage(), 500);
}
$arrIssueTracking = json_decode(json_encode($arrIssueTracking), true);
foreach ($arrIssueTracking as $keyIssueTracking => $issueTracking) {
$issueTracking['EVIDENCIA'] = json_decode($issueTracking['EVIDENCIA']);
$arrUrlImage = array();
foreach ($issueTracking['EVIDENCIA'] as $keyEvidence => $evidence) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($evidence, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$issueTracking['EVIDENCIA'] = $arrUrlImage;
$arrIssueTracking[$keyIssueTracking] = $issueTracking;
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrIssueTracking, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrIssueTracking = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrIssueTracking);
}
public function resolutionIssueTracking(Request $request) {
$validator = Validator::make($request->all(),[
'NUMERO_SEGUIMIENTO' => 'required|string',
'DESCRIPCION' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
'USUARIO' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_ISSUE_TRACKING_RES000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
// Se obtiene el usuario encriptado
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
// Se obtiene el número de orden enctriptado
try {
$trackingNumber = $this->encController->decrypt($requestData['NUMERO_SEGUIMIENTO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES002: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
// Se valida el número de seguimiento
try {
$validateExists = DB::table('S002V01TSEPR')
->where('SEPR_IDPR', '=', $trackingNumber)
->where('SEPR_NULI', '=', $requestData['NUMERO_LINEA'])
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES003: Ocurrió un error al validar el número de seguimiento.", $th->getMessage(), 500);
}
if (!$validateExists) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES004: No se encontró el número de seguimiento seleccionado.", [], 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateUpdate = DB::table('S002V01TSEPR')->where('SEPR_IDPR', '=', $trackingNumber)->where('SEPR_NULI', '=', $requestData['NUMERO_LINEA'])->update([
'SEPR_ESTA' => 'Resuelto',
'SEPR_RESO' => $requestData['DESCRIPCION'],
'SEPR_USRE' => $user,
'SEPR_FEMO' => $currentDate,
'SEPR_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES005: Ocurrió un error al modificar los registros de seguimiento.", $th->getMessage(), 500);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ISSUE_TRACKING_RES006: No se pudo modificar los registros de seguimiento.", [], 500);
}
// Se guardan todos los cambios
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Modificación de Reporte Exitoso");
}
public function getAllProvider($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrProvider = DB::table('S002V01TPROV')
->where('PROV_NULI', '=', $line)
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->get([
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS RAZON_SOCIAL',
'PROV_NOMB AS NOMBRE',
'PROV_APPA AS PRIMER_APELLIDO',
'PROV_APMA AS SEGUNDO_APELLIDO',
'PROV_CORR AS CORREO',
'PROV_LAD1 AS LADA1',
'PROV_TEL1 AS TELEFONO1',
'PROV_LAD2 AS LADA2',
'PROV_TEL2 AS TELEFONO2',
'PROV_XRFC AS RFC',
'PROV_XTAX AS TAXID',
'PROV_CRFI AS REGIMEN_FISCAL',
DB::raw('CONCAT(REFI_DRFI, " (", REFI_CRFI, ")") AS REGIMEN_FISCAL'),
'PROV_TIPO AS TIPO',
'PROV_TICO AS TIPO_CONTRIBUYENTE',
'PROV_SIWE AS SITIOWEB',
'PROV_MEPA AS METODO_PAGO',
'PROV_ESTA AS ESTADO',
'PROV_USRE AS USUARIO_REGISTRA',
'PROV_FERE AS FECHA_REGISTRA',
'PROV_USMO AS USUARIO_MODIFICA',
'PROV_FEMO AS FECHA_MODIFICA',
'PROV_CALL AS CALLE',
'PROV_NUEX AS EXTERIOR',
'PROV_NUIN AS INTERIOR',
'PROV_COPO AS CODIGO_POSTAL',
'PROV_COLO AS COLONIA',
'PROV_LOCA AS LOCALIDAD',
'PROV_MUNI AS MUNICIPIO',
'PROV_ENTI AS ENTIDAD',
'PROV_PAIS AS PAIS',
]);
$arrResponse = array();
foreach ($arrProvider as $provider) {
$provider = (array) $provider;
$provider['SEGUNDO_APELLIDO'] = $provider['SEGUNDO_APELLIDO'] == null ? '' : $provider['SEGUNDO_APELLIDO'];
$arrReferences = DB::table('S002V01TPRRE')
->where('PRRE_NULI', '=', $line)
->where('PRRE_ESTA', '=', 'Activo')
->where('PRRE_NUPR', '=', $provider['NUMERO_PROVEEDOR'])
->get([
'PRRE_IDRE AS NUMERO_REFERENCIA',
'PRRE_EMPR AS RAZON_SOCIAL',
'PRRE_CORR AS CORREO',
'PRRE_LADA AS LADA',
'PRRE_TELE AS TELEFONO',
'PRRE_XRFC AS RFC',
'PRRE_DIRE AS DIRECCION',
'PRRE_ESTA AS ESTADO',
'PRRE_USRE AS USUARIO_REGISTRA',
'PRRE_FERE AS FECHA_REGISTRA',
'PRRE_USMO AS USUARIO_MODIFICA',
'PRRE_FEMO AS FECHA_MODIFICA',
]);
$arrContacts = DB::table('S002V01TPRCO')
->where('PRCO_NULI', '=', $line)
->where('PRCO_ESTA', '=', 'Activo')
->where('PRCO_NUPR', '=', $provider['NUMERO_PROVEEDOR'])
->get([
'PRCO_IDCP AS ID_CONTACTO',
'PRCO_NOMB AS NOMBRE_CONTACTO',
'PRCO_TIPO AS TIPO_CONTACTO',
'PRCO_CALL AS CALLE',
'PRCO_NUEX AS NUMERO_EXTERIOR',
'PRCO_NUIN AS NUMERO_INTERIOR',
'PRCO_COPO AS CODIGO_POSTAL',
'PRCO_COLO AS COLONIA',
'PRCO_LOCA AS LOCALIDAD',
'PRCO_MUNI AS MUNICIPIO',
'PRCO_ENTI AS ENTIDAD',
'PRCO_PAIS AS PAIS',
'PRCO_LAD1 AS LADA1',
'PRCO_TEL1 AS TELEFONO1',
'PRCO_LAD2 AS LADA2',
'PRCO_TEL2 AS TELEFONO2',
'PRCO_COR1 AS CORREO1',
'PRCO_COR2 AS CORREO2',
'PRCO_OBSE AS OBSERVACIONES',
'PRCO_ESTA AS ESTADO',
'PRCO_USRE AS USUARIO_REGISTRA',
'PRCO_FERE AS FECHA_REGISTRA',
'PRCO_USMO AS USUARIO_MODIFICA',
'PRCO_FEMO AS FECHA_MODIFICA',
]);
$arrConditions = DB::table('S002V01TPRCN')
->where('PRCN_NULI', '=', $line)
->where('PRCN_ESTA', '=', 'Activo')
->where('PRCN_NUPR', '=', $provider['NUMERO_PROVEEDOR'])
->get([
'PRCN_IDCM AS NUMERO_CONDICION',
'PRCN_TIPO AS TIPO_CONDICION',
'PRCN_INFO AS INFORMACION',
'PRCN_ESTA AS ESTADO',
'PRCN_USRE AS USUARIO_REGISTRA',
'PRCN_FERE AS FECHA_REGISTRA',
'PRCN_USMO AS USUARIO_MODIFICA',
'PRCN_FEMO AS FECHA_MODIFICA',
]);
$arrCatalogs = DB::table('S002V01TPRCE')
->where('PRCE_NULI', '=', $line)
->where('PRCE_ESTA', '=', 'Activo')
->where('PRCE_NUPR', '=', $provider['NUMERO_PROVEEDOR'])
->get([
'PRCE_IDCE AS NUMERO_CATALAGO',
'PRCE_CATA AS CATALAGO',
'PRCE_DESC AS DESCRIPCION',
'PRCE_XURL AS URL_CATALAGO',
'PRCE_ESTA AS ESTADO',
'PRCE_USRE AS USUARIO_REGISTRA',
'PRCE_FERE AS FECHA_REGISTRA',
'PRCE_USMO AS USUARIO_MODIFICA',
'PRCE_FEMO AS FECHA_MODIFICA',
]);
$arrPayment = json_decode($provider['METODO_PAGO'], true);
$provider['REFERENCIAS'] = $arrReferences;
$provider['CONTACTOS'] = $arrContacts;
$provider['CONDICIONES'] = $arrConditions;
$provider['CATALAGOS'] = $arrCatalogs;
$provider['METODOS_PAGO'] = $arrPayment;
$arrResponse[] = $provider;
}
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_PROVIDER_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrResponse, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrResponse = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrResponse);
}
public function getProvidersActives($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrProvider = DB::table('S002V01TPROV')
->where('PROV_ESTA', '=', 'Activo')
->where('PROV_NULI', '=', $line)
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->get([
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS RAZON_SOCIAL',
'PROV_NOMB AS NOMBRE',
'PROV_APPA AS PRIMER_APELLIDO',
'PROV_APMA AS SEGUNDO_APELLIDO',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_PROVIDER_GETACTIVE000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrProvider);
}
public function getProvidersByNumber($provider, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrProvider = DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $provider)
->where('PROV_NULI', '=', $line)
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS RAZON_SOCIAL',
'PROV_NOMB AS NOMBRE',
'PROV_APPA AS PRIMER_APELLIDO',
'PROV_APMA AS SEGUNDO_APELLIDO',
'PROV_CORR AS CORREO',
'PROV_LAD1 AS LADA1',
'PROV_TEL1 AS TELEFONO1',
'PROV_LAD2 AS LADA2',
'PROV_TEL2 AS TELEFONO2',
'PROV_XRFC AS RFC',
'PROV_XTAX AS TAXID',
'REFI_CRFI AS NUMERO_REGIMEN_FISCAL',
'REFI_DRFI AS REGIMEN_FISCAL',
'PROV_TIPO AS TIPO',
'PROV_TICO AS TIPO_CONTRIBUYENTE',
'PROV_SIWE AS SITIOWEB',
'PROV_CALL AS CALLE',
'PROV_NUEX AS EXTERIOR',
'PROV_NUIN AS INTERIOR',
'PROV_COPO AS CODIGO_POSTAL',
'PROV_COLO AS COLONIA',
'PROV_MUNI AS MUNICIPIO',
'PROV_LOCA AS LOCALIDAD',
'PROV_ENTI AS ENTIDAD_FEDERATIVA',
'PROV_PAIS AS PAIS',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_PROVIDER_GETBYNUMBER000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrProvider);
}
public function updateProvider(Request $request) {
$validator = Validator::make($request->all(), [
'line' => 'required|integer',
'user' => 'required|string',
'obj_response' => 'required',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_MOD000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$line = $requestData['line'];
try {
$user = $this->encController->decrypt($request['user']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD001: No se pudo obtener el usuario.", $th->getMessage(), 500);
}
$arrInformationPersonal = $requestData['obj_response']['INFORMACION'];
$arrReferences = $requestData['obj_response']['REFERENCIAS'];
$arrContacts = $requestData['obj_response']['CONTACTOS'];
$arrConditions = $requestData['obj_response']['CONDICIONES'];
$arrPaymentMedia = $requestData['obj_response']['METODOS_PAGO'];
$arrCatalogs = $requestData['obj_response']['CATALAGOS'];
$numeroProveedor = $arrInformationPersonal['NUMERO_PROVEEDOR'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$arrPaymentTemp = array();
foreach ($arrPaymentMedia as $payment) {
$arrPaymentTemp[$payment['C_FORMAPAGO']] = $payment['DESCRIPCION'];
}
try {
$strPayment = json_encode($arrPaymentTemp);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD002: Ocurrió un error al obtener los datos del método de pago.", $th->getMessage(), 500);
}
try {
$validateUpdateInformation = DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $numeroProveedor)
->where('PROV_NULI', '=', $line)
->update([
'PROV_NOCO' => $arrInformationPersonal['RAZON_SOCIAL'],
'PROV_NOMB' => $arrInformationPersonal['NOMBRE'],
'PROV_APPA' => $arrInformationPersonal['PRIMER_APELLIDO'],
'PROV_APMA' => $arrInformationPersonal['SEGUNDO_APELLIDO'] != '' ? $arrInformationPersonal['SEGUNDO_APELLIDO'] : null,
'PROV_CORR' => $arrInformationPersonal['CORREO'],
'PROV_LAD1' => $arrInformationPersonal['LADA1'],
'PROV_TEL1' => $arrInformationPersonal['TELEFONO1'],
'PROV_LAD2' => $arrInformationPersonal['LADA2'] != '' ? $arrInformationPersonal['LADA2'] : null,
'PROV_TEL2' => $arrInformationPersonal['TELEFONO2'] != '' ? $arrInformationPersonal['TELEFONO2'] : null,
'PROV_TICO' => $arrInformationPersonal['TIPO_CONTRIBUYENTE'],
'PROV_XRFC' => $arrInformationPersonal['RFC'],
'PROV_XTAX' => $arrInformationPersonal['TAXID'] != '' ? $arrInformationPersonal['TAXID'] : null,
'PROV_CRFI' => $arrInformationPersonal['REGIMEN_FISCAL'],
'PROV_TIPO' => $arrInformationPersonal['TIPO'],
'PROV_SIWE' => $arrInformationPersonal['SITIOWEB'],
'PROV_MEPA' => $strPayment,
'PROV_CALL' => $arrInformationPersonal['CALLE'],
'PROV_NUEX' => $arrInformationPersonal['EXTERIOR'],
'PROV_NUIN' => $arrInformationPersonal['INTERIOR'],
'PROV_COPO' => $arrInformationPersonal['CODIGO_POSTAL'],
'PROV_COLO' => $arrInformationPersonal['COLONIA'],
'PROV_LOCA' => $arrInformationPersonal['LOCALIDAD'] === 'Sin localidad' ? null : $arrInformationPersonal['LOCALIDAD'],
'PROV_MUNI' => $arrInformationPersonal['MUNICIPIO'],
'PROV_ENTI' => $arrInformationPersonal['ENTIDAD'],
'PROV_PAIS' => $arrInformationPersonal['PAIS'],
'PROV_USMO' => $user,
'PROV_FEMO' => $currentDate,
'PROV_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD003: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateInformation) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD004: Ocurrió un error al obtener el contenido.", [], 500);
}
foreach ($arrReferences as $references) {
if ($references['ESTADO'] == 'Activo' || $references['ESTADO'] == 'Modificado') {
try {
$validateUpdateReference = DB::table('S002V01TPRRE')
->where('PRRE_IDRE', '=', $references['NUMERO_REFERENCIA'])
->where('PRRE_NUPR', '=', $numeroProveedor)
->where('PRRE_NULI', '=', $line)
->update([
'PRRE_EMPR' => $references['RAZON_SOCIAL'],
'PRRE_CORR' => $references['CORREO'],
'PRRE_LADA' => $references['LADA'],
'PRRE_TELE' => $references['TELEFONO'],
'PRRE_XRFC' => $references['RFC'],
'PRRE_DIRE' => $references['DIRECCION'],
'PRRE_USMO' => $user,
'PRRE_FEMO' => $currentDate,
'PRRE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD005: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateReference) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD006: Ocurrió un error al obtener el contenido. ", [], 500);
}
} else if ($references['ESTADO'] == 'Nuevo') {
try {
$validateInsertReference = DB::table('S002V01TPRRE')->insert([
'PRRE_NUPR' => $numeroProveedor,
'PRRE_EMPR' => $references['RAZON_SOCIAL'],
'PRRE_CORR' => $references['CORREO'],
'PRRE_LADA' => $references['LADA'],
'PRRE_TELE' => $references['TELEFONO'],
'PRRE_XRFC' => $references['RFC'],
'PRRE_DIRE' => $references['DIRECCION'],
'PRRE_NULI' => $line,
'PRRE_USRE' => $user,
'PRRE_FERE' => $currentDate,
'PRRE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD007: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateInsertReference) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD008: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($references['ESTADO'] == 'Eliminado'){
try {
$validateUpdateReference = DB::table('S002V01TPRRE')
->where('PRRE_IDRE', '=', $references['NUMERO_REFERENCIA'])
->where('PRRE_NUPR', '=', $numeroProveedor)
->where('PRRE_NULI', '=', $line)
->update([
'PRRE_ESTA' => 'Eliminado',
'PRRE_USMO' => $user,
'PRRE_FEMO' => $currentDate,
'PRRE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD009: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateReference) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD010: Ocurrió un error al obtener el contenido.", [], 500);
}
}
}
foreach ($arrContacts as $contacts) {
if ($contacts['ESTADO'] == 'Activo' || $contacts['ESTADO'] == 'Modificado') {
try {
$validateUpdateContact = DB::table('S002V01TPRCO')
->where('PRCO_IDCP', '=', $contacts['ID_CONTACTO'])
->where('PRCO_NUPR', '=', $numeroProveedor)
->where('PRCO_NULI', '=', $line)
->update([
'PRCO_NOMB' => $contacts['NOMBRE_CONTACTO'],
'PRCO_TIPO' => $contacts['TIPO_CONTACTO'],
'PRCO_CALL' => $contacts['CALLE'],
'PRCO_NUEX' => $contacts['NUMERO_EXTERIOR'],
'PRCO_NUIN' => $contacts['NUMERO_INTERIOR'] != '' ? $contacts['NUMERO_INTERIOR'] : null,
'PRCO_COPO' => $contacts['CODIGO_POSTAL'],
'PRCO_COLO' => $contacts['COLONIA'],
'PRCO_LOCA' => $contacts['LOCALIDAD'],
'PRCO_MUNI' => $contacts['MUNICIPIO'],
'PRCO_ENTI' => $contacts['ENTIDAD'],
'PRCO_PAIS' => $contacts['PAIS'],
'PRCO_LAD1' => $contacts['LADA1'],
'PRCO_LAD2' => $contacts['LADA2'],
'PRCO_TEL1' => $contacts['TELEFONO1'],
'PRCO_TEL2' => $contacts['TELEFONO2'] != '' ? $contacts['TELEFONO2'] : null,
'PRCO_COR1' => $contacts['CORREO1'],
'PRCO_COR2' => $contacts['CORREO2'] != '' ? $contacts['CORREO2'] : null,
'PRCO_OBSE' => $contacts['OBSERVACIONES'],
'PRCO_USMO' => $user,
'PRCO_FEMO' => $currentDate,
'PRCO_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD011: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateContact) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD012: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($contacts['ESTADO'] == 'Nuevo') {
try {
$validateInsertContact = DB::table('S002V01TPRCO')->insert([
'PRCO_NUPR' => $numeroProveedor,
'PRCO_NOMB' => $contacts['NOMBRE_CONTACTO'],
'PRCO_TIPO' => $contacts['TIPO_CONTACTO'],
'PRCO_CALL' => $contacts['CALLE'],
'PRCO_NUEX' => $contacts['NUMERO_EXTERIOR'],
'PRCO_NUIN' => $contacts['NUMERO_INTERIOR'] != '' ? $contacts['NUMERO_INTERIOR'] : null,
'PRCO_COPO' => $contacts['CODIGO_POSTAL'],
'PRCO_COLO' => $contacts['COLONIA'],
'PRCO_LOCA' => $contacts['LOCALIDAD'],
'PRCO_MUNI' => $contacts['MUNICIPIO'],
'PRCO_ENTI' => $contacts['ENTIDAD'],
'PRCO_PAIS' => $contacts['PAIS'],
'PRCO_LAD1' => $contacts['LADA1'],
'PRCO_TEL1' => $contacts['TELEFONO1'],
'PRCO_LAD2' => $contacts['LADA2'] != '' ? $contacts['LADA2'] : null,
'PRCO_TEL2' => $contacts['TELEFONO2'] != '' ? $contacts['TELEFONO2'] : null,
'PRCO_COR1' => $contacts['CORREO1'],
'PRCO_COR2' => $contacts['CORREO2'] != '' ? $contacts['CORREO2'] : null,
'PRCO_OBSE' => $contacts['OBSERVACIONES'],
'PRCO_NULI' => $line,
'PRCO_USRE' => $user,
'PRCO_FERE' => $currentDate,
'PRCO_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD013: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateInsertContact) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD014: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($contacts['ESTADO'] == 'Eliminado'){
try {
$validateUpdateContact = DB::table('S002V01TPRCO')
->where('PRCO_IDCP', '=', $contacts['ID_CONTACTO'])
->where('PRCO_NUPR', '=', $numeroProveedor)
->where('PRCO_NULI', '=', $line)
->update([
'PRCO_ESTA' => 'Eliminado',
'PRCO_USMO' => $user,
'PRCO_FEMO' => $currentDate,
'PRCO_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD015: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateContact) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD016: Ocurrió un error al obtener el contenido.", [], 500);
}
}
}
foreach ($arrConditions as $conditions) {
if ($conditions['ESTADO'] == 'Activo' || $conditions['ESTADO'] == 'Modificado') {
try {
$validateUpdateCondition = DB::table('S002V01TPRCN')
->where('PRCN_IDCM', '=', $conditions['NUMERO_CONDICION'])
->where('PRCN_NUPR', '=', $numeroProveedor)
->where('PRCN_NULI', '=', $line)
->update([
'PRCN_TIPO' => $conditions['TIPO_CONDICION'],
'PRCN_INFO' => $conditions['INFORMACION'],
'PRCN_USMO' => $user,
'PRCN_FEMO' => $currentDate,
'PRCN_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD017: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateCondition) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD018: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($conditions['ESTADO'] == 'Nuevo'){
try {
$validateInsertCondition = DB::table('S002V01TPRCN')->insert([
'PRCN_NUPR' => $numeroProveedor,
'PRCN_TIPO' => $conditions['TIPO_CONDICION'],
'PRCN_INFO' => $conditions['INFORMACION'],
'PRCN_NULI' => $line,
'PRCN_USRE' => $user,
'PRCN_FERE' => $currentDate,
'PRCN_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD019: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateInsertCondition) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD020: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($conditions['ESTADO'] == 'Eliminado'){
try {
$validateRegister = DB::table('S002V01TPRCN')
->where('PRCN_IDCM', '=', $conditions['NUMERO_CONDICION'])
->where('PRCN_NUPR', '=', $numeroProveedor)
->where('PRCN_NULI', '=', $line)
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD021: Ocurrió un error al validar el registro.", $th->getMessage(), 500);
}
if ($validateRegister) {
try {
$validateUpdateConditions = DB::table('S002V01TPRCN')
->where('PRCN_IDCM', '=', $conditions['NUMERO_CONDICION'])
->where('PRCN_NUPR', '=', $numeroProveedor)
->where('PRCN_NULI', '=', $line)
->update([
'PRCN_ESTA' => 'Eliminado',
'PRCN_USMO' => $user,
'PRCN_FEMO' => $currentDate,
'PRCN_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD022: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateConditions) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD023: Ocurrió un error al obtener el contenido.", [], 500);
}
}
}
}
foreach ($arrCatalogs as $catalogs) {
if ($catalogs['ESTADO'] == 'Activo' || $catalogs['ESTADO'] == 'Modificado') {
try {
$validateUpdateCatalog = DB::table('S002V01TPRCE')
->where('PRCE_IDCE', '=', $catalogs['NUMERO_CATALAGO'])
->where('PRCE_NUPR', '=', $numeroProveedor)
->where('PRCE_NULI', '=', $line)
->update([
'PRCE_CATA' => $catalogs['CATALAGO'],
'PRCE_DESC' => $catalogs['DESCRIPCION'],
'PRCE_XURL' => $catalogs['URL_CATALAGO'],
'PRCE_USMO' => $user,
'PRCE_FEMO' => $currentDate,
'PRCE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD024: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateUpdateCatalog) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD025: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($catalogs['ESTADO'] == 'Nuevo'){
try {
$validateInsertCatalog = DB::table('S002V01TPRCE')->insert([
'PRCE_NUPR' => $numeroProveedor,
'PRCE_CATA' => $catalogs['CATALAGO'],
'PRCE_DESC' => $catalogs['DESCRIPCION'],
'PRCE_XURL' => $catalogs['URL_CATALAGO'],
'PRCE_NULI' => $line,
'PRCE_USRE' => $user,
'PRCE_FERE' => $currentDate,
'PRCE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD026: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateInsertCatalog) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD027: Ocurrió un error al obtener el contenido.", [], 500);
}
} else if ($catalogs['ESTADO'] == 'Eliminado'){
try {
$validateExists = DB::table('S002V01TPRCE')
->where('PRCE_IDCE', '=', $catalogs['NUMERO_CATALAGO'])
->where('PRCE_NUPR', '=', $numeroProveedor)
->where('PRCE_NULI', '=', $line)
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD028: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if ($validateExists) {
try {
$validateDelete = DB::table('S002V01TPRCE')
->where('PRCE_IDCE', '=', $catalogs['NUMERO_CATALAGO'])
->where('PRCE_NUPR', '=', $numeroProveedor)
->where('PRCE_NULI', '=', $line)
->update([
'PRCE_ESTA' => 'Eliminado',
'PRCE_USMO' => $user,
'PRCE_FEMO' => $currentDate,
'PRCE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD029: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if (!$validateDelete) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD030: Ocurrió un error al obtener el contenido.", [], 500);
}
}
}
}
$response = [ 'idProvider' => $numeroProveedor ];
try {
$getSubcontract = (array) DB::table('S002V01TPESU')
->where('PESU_NUPR', '=', $numeroProveedor)
->where('PESU_NULI', '=', $line)
->first();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD031: Ocurrió un error al válidar si existe en subcontratista.", $th->getMessage(), 500);
}
if ( !empty($getSubcontract)) {
try {
$updateSubcontract = DB::table('S002V01TPESU')
->where('PESU_NUPR', '=', $numeroProveedor)
->where('PESU_NULI', '=', $line)
->update([
'PESU_RASO' => $arrInformationPersonal['RAZON_SOCIAL'],
'PESU_REFI' => $arrInformationPersonal['REGIMEN_FISCAL'],
'PESU_XRFC' => $arrInformationPersonal['RFC'] != '' ? $arrInformationPersonal['RFC'] : null,
'PESU_TIPO' => $arrInformationPersonal['TIPO_CONTRIBUYENTE'],
'PESU_CORR' => $arrInformationPersonal['CORREO'],
'PESU_EXTR' => $arrInformationPersonal['TIPO'] === 'Nacional' ? 'No' : 'Si',
'PESU_TAID' => $arrInformationPersonal['TAXID'] != '' ? $arrInformationPersonal['TAXID'] : null,
'PESU_CALL' => $arrInformationPersonal['CALLE'],
'PESU_NUEX' => $arrInformationPersonal['EXTERIOR'],
'PESU_NUIN' => $arrInformationPersonal['INTERIOR'],
'PESU_COLO' => $arrInformationPersonal['COLONIA'],
'PESU_CIUD' => $arrInformationPersonal['MUNICIPIO'],
'PESU_LOCA' => $arrInformationPersonal['LOCALIDAD'] === 'Sin localidad' ? null : $arrInformationPersonal['LOCALIDAD'],
'PESU_COPO' => $arrInformationPersonal['CODIGO_POSTAL'],
'PESU_ENFE' => $arrInformationPersonal['ENTIDAD'],
'PESU_IDPA' => $arrInformationPersonal['PAIS'],
'PESU_TEL1' => $arrInformationPersonal['TELEFONO1'],
'PESU_LAT1' => $arrInformationPersonal['LADA1'],
'PESU_TEL2' => $arrInformationPersonal['TELEFONO2'] != '' ? $arrInformationPersonal['TELEFONO2'] : null,
'PESU_LAT2' => $arrInformationPersonal['LADA2'] != '' ? $arrInformationPersonal['LADA2'] : null,
'PESU_USMO' => $user,
'PESU_FEMO' => $currentDate,
]
);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD032: Ocurrió un error al modificar el subcontratista.", $th->getMessage(), 500);
}
if ( !$updateSubcontract ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_MOD033: No se pudo modificar el subcontratista.", [], 500);
}
$response['subcontract'] = $getSubcontract;
}
DB::commit();
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", $response);
}
public function registerProvider(Request $request) {
$validator = Validator::make($request->all(), [
'line' => 'required|integer',
'user' => 'required|string',
'obj_response' => 'required',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$line = $requestData['line'];
try {
$user = $this->encController->decrypt($requestData['user']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG001: Ocurrió un error al obtener el usuario.", $th->getMessage(), 500);
}
$arrInformationPersonal = (array) $requestData['obj_response']['INFORMACION'];
$arrReferences = (array) $requestData['obj_response']['REFERENCIAS'];
$arrContacts = (array) $requestData['obj_response']['CONTACTOS'];
$arrConditions = (array) $requestData['obj_response']['CONDICIONES'];
$arrPaymentMedia = (array) $requestData['obj_response']['METODOS_PAGO'];
$arrCatalogs = (array) $requestData['obj_response']['CATALAGOS'];
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$arrPaymentTemp = array();
foreach ($arrPaymentMedia as $payment) {
$arrPaymentTemp[$payment['ID_METODO_PAGO']] = $payment['C_FORMAPAGO'];
}
try {
$strPayment = json_encode($arrPaymentTemp);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG002: Ocurrió un error al obtener los métodos de pago del proveedor.", $th->getMessage(), 500);
}
$idSubcontract = null;
if (!is_null($arrInformationPersonal['ID_SUBCONTRACT'])) {
$idSubcontract = $arrInformationPersonal['ID_SUBCONTRACT'];
try {
$validateSubcontract = DB::table('S002V01TPESU')
->where('PESU_IDPS', '=', $idSubcontract)
->where('PESU_NULI', '=', $line)
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG003: Ocurrió un error al validar que el subcontratista exista.", $th->getMessage(), 500);
}
if (!$validateSubcontract) {
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG004: El subcontratista no existe.", [], 500);
}
}
try {
$idProdiver = DB::table('S002V01TPROV')->insertGetId([
'PROV_NOCO' => $arrInformationPersonal['RAZON_SOCIAL'],
'PROV_IDPS' => $idSubcontract,
'PROV_NOMB' => $arrInformationPersonal['NOMBRE'],
'PROV_APPA' => $arrInformationPersonal['PRIMER_APELLIDO'],
'PROV_APMA' => $arrInformationPersonal['SEGUNDO_APELLIDO'] != '' ? $arrInformationPersonal['SEGUNDO_APELLIDO'] : null,
'PROV_CORR' => $arrInformationPersonal['CORREO'],
'PROV_LAD1' => $arrInformationPersonal['LADA1'],
'PROV_TEL1' => $arrInformationPersonal['TELEFONO1'],
'PROV_LAD2' => $arrInformationPersonal['LADA2'],
'PROV_TEL2' => $arrInformationPersonal['TELEFONO2'] != '' ? $arrInformationPersonal['TELEFONO2'] : null,
'PROV_TICO' => $arrInformationPersonal['TIPO_CONTRIBUYENTE'],
'PROV_XRFC' => $arrInformationPersonal['RFC'],
'PROV_XTAX' => $arrInformationPersonal['TAXID'] != '' ? $arrInformationPersonal['TAXID'] : null,
'PROV_CRFI' => $arrInformationPersonal['REGIMEN_FISCAL'],
'PROV_TIPO' => $arrInformationPersonal['TIPO'],
'PROV_SIWE' => $arrInformationPersonal['SITIOWEB'],
'PROV_CALL' => $arrInformationPersonal['CALLE'],
'PROV_NUEX' => $arrInformationPersonal['EXTERIOR'],
'PROV_NUIN' => $arrInformationPersonal['INTERIOR'] != '' ? $arrInformationPersonal['INTERIOR'] : null,
'PROV_COPO' => $arrInformationPersonal['CODIGO_POSTAL'],
'PROV_COLO' => $arrInformationPersonal['COLONIA'],
'PROV_LOCA' => $arrInformationPersonal['LOCALIDAD'] === 'Sin localidad' ? null : $arrInformationPersonal['LOCALIDAD'],
'PROV_MUNI' => $arrInformationPersonal['MUNICIPIO'],
'PROV_ENTI' => $arrInformationPersonal['ENTIDAD'],
'PROV_PAIS' => $arrInformationPersonal['PAIS'],
'PROV_MEPA' => $strPayment,
'PROV_NULI' => $line,
'PROV_USRE' => $user,
'PROV_FERE' => $currentDate,
'PROV_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG005: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
if ( !is_null($idSubcontract )) {
try {
$validateUpdateSubcontract = DB::table('S002V01TPESU')
->where('PESU_IDPS', '=', $idSubcontract)
->where('PESU_NULI', '=', $line)
->update([
'PESU_NUPR' => $idProdiver,
'PESU_USMO' => $user,
'PESU_FEMO' => $currentDate,
'PESU_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG006: Ocurrió un error enlazar el proveedor con el subcontratista.", $th->getMessage(), 500);
}
if (!$validateUpdateSubcontract) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG007: No se pudo enlazar el proveedor con el subcontratista.", [], 500);
}
}
foreach ($arrReferences as $references) {
if ($references['ESTADO'] == 'Activo' || $references['ESTADO'] == 'Nuevo') {
$insertReferences = [
'PRRE_NUPR' => $idProdiver,
'PRRE_EMPR' => $references['RAZON_SOCIAL'],
'PRRE_CORR' => $references['CORREO'],
'PRRE_LADA' => $references['LADA'],
'PRRE_TELE' => $references['TELEFONO'],
'PRRE_XRFC' => $references['RFC'],
'PRRE_DIRE' => $references['DIRECCION'],
'PRRE_NULI' => $line,
'PRRE_USRE' => $user,
'PRRE_FERE' => $currentDate,
'PRRE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$resp = DB::table('S002V01TPRRE')->insert($insertReferences);
if (!$resp) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG008: Ocurrió un error al obtener el contenido.", [], 500);
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG009: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
}
}
foreach ($arrContacts as $contacts) {
if ($contacts['ESTADO'] == 'Activo' || $contacts['ESTADO'] == 'Nuevo') {
$insertContacts = [
'PRCO_NUPR' => $idProdiver,
'PRCO_NOMB' => $contacts['NOMBRE_CONTACTO'],
'PRCO_TIPO' => $contacts['TIPO_CONTACTO'],
'PRCO_CALL' => $contacts['CALLE'],
'PRCO_NUEX' => $contacts['NUMERO_EXTERIOR'],
'PRCO_NUIN' => $contacts['NUMERO_INTERIOR'] != '' ? $contacts['NUMERO_INTERIOR'] : null,
'PRCO_COPO' => $contacts['CODIGO_POSTAL'],
'PRCO_LOCA' => $contacts['LOCALIDAD'],
'PRCO_COLO' => $contacts['COLONIA'],
'PRCO_MUNI' => $contacts['MUNICIPIO'],
'PRCO_ENTI' => $contacts['ENTIDAD'],
'PRCO_PAIS' => $contacts['PAIS'],
'PRCO_LAD1' => $contacts['LADA1'],
'PRCO_TEL1' => $contacts['TELEFONO1'],
'PRCO_LAD2' => $contacts['LADA2'] != '' ? $contacts['LADA2'] : null,
'PRCO_TEL2' => $contacts['TELEFONO2'] != '' ? $contacts['TELEFONO2'] : null,
'PRCO_COR1' => $contacts['CORREO1'],
'PRCO_COR2' => $contacts['CORREO2'] != '' ? $contacts['CORREO2'] : null,
'PRCO_OBSE' => $contacts['OBSERVACIONES'],
'PRCO_NULI' => $line,
'PRCO_USRE' => $user,
'PRCO_FERE' => $currentDate,
'PRCO_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$resp = DB::table('S002V01TPRCO')->insert($insertContacts);
if (!$resp) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG010: Ocurrió un error al obtener el contenido.", [], 500);
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG011: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
}
}
foreach ($arrConditions as $conditions) {
if ($conditions['ESTADO'] == 'Activo') {
$insertConditions = [
'PRCN_NUPR' => $idProdiver,
'PRCN_TIPO' => $conditions['TIPO_CONDICION'],
'PRCN_INFO' => $conditions['INFORMACION'],
'PRCN_NULI' => $line,
'PRCN_USRE' => $user,
'PRCN_FERE' => $currentDate,
'PRCN_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$resp = DB::table('S002V01TPRCN')->insert($insertConditions);
if (!$resp) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG012: Ocurrió un error al obtener el contenido.", [], 500);
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG013: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
}
}
foreach ($arrCatalogs as $catalogs) {
if ($catalogs['ESTADO'] == 'Activo' || $catalogs['ESTADO'] == 'Nuevo') {
$insertCatalogs = [
'PRCE_NUPR' => $idProdiver,
'PRCE_CATA' => $catalogs['CATALAGO'],
'PRCE_DESC' => $catalogs['DESCRIPCION'],
'PRCE_XURL' => $catalogs['URL_CATALAGO'],
'PRCE_NULI' => $line,
'PRCE_USRE' => $user,
'PRCE_FERE' => $currentDate,
'PRCE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$resp = DB::table('S002V01TPRCE')->insert($insertCatalogs);
if (!$resp) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG014: Ocurrió un error al obtener el contenido.", [], 500);
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_REG015: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
}
}
$response = [ 'idProvider' => $idProdiver ];
DB::commit();
return $this->responseController->makeResponse(false, "EXITO: Registro Exitoso", $response);
}
public function deleteProvider(Request $request) {
$validator = Validator::make($request->all(), [
'line' => 'required|string',
'user' => 'required|string',
'numero_proveedor' => 'required|string'
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_DEL000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$line = $requestData['line'];
try {
$numeroProveedor = $this->encController->decrypt($requestData['numero_proveedor']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL001: Ocurrió un error al obtener el número del proveedor.", $th->getMessage(), 500);
}
try {
$user = $this->encController->decrypt($requestData['user']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL002: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
$update = [
'PROV_ESTA' => 'Eliminado',
'PROV_USMO' => $user,
'PROV_FEMO' => $currentDate,
'PROV_FEAR' => DB::raw('CURRENT_TIMESTAMP')
];
try {
$resp = DB::table('S002V01TPROV')->where('PROV_NUPR', '=', $numeroProveedor)->where('PROV_NULI', '=', $line)->update($update);
if (!$resp) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL003: Ocurrió un error al obtener el contenido. ", [], 500);
}
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL004: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
try {
$resp = DB::table('S002V01TPRRE')
->where('PRRE_NUPR', '=', $numeroProveedor)
->where('PRRE_NULI', '=', $line)
->update([
'PRRE_ESTA' => 'Eliminado',
'PRRE_USMO' => $user,
'PRRE_FEMO' => $currentDate,
'PRRE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL006: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
try {
$resp = DB::table('S002V01TPRCO')
->where('PRCO_NUPR', '=', $numeroProveedor)
->where('PRCO_NULI', '=', $line)
->update([
'PRCO_ESTA' => 'Eliminado',
'PRCO_USMO' => $user,
'PRCO_FEMO' => $currentDate,
'PRCO_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL008: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
try {
$resp = DB::table('S002V01TPRCN')
->where('PRCN_NUPR', '=', $numeroProveedor)
->where('PRCN_NULI', '=', $line)
->update([
'PRCN_ESTA' => 'Eliminado',
'PRCN_USMO' => $user,
'PRCN_FEMO' => $currentDate,
'PRCN_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL010: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
try {
$resp = DB::table('S002V01TPRCE')
->where('PRCE_NUPR', '=', $numeroProveedor)
->where('PRCE_NULI', '=', $line)
->update([
'PRCE_ESTA' => 'Eliminado',
'PRCE_USMO' => $user,
'PRCE_FEMO' => $currentDate,
'PRCE_FEAR' => DB::raw('CURRENT_TIMESTAMP')
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_PROVIDER_DEL012: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "EXITO: Eliminación correcta",);
}
public function getProviderByArtitle(Request $request) {
$validator = Validator::make($request->all(), [
'NUMERO_ARTICULO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_GETBYARTITLE000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
$response = $request->all();
$numeroArticulo = $this->encController->decrypt($response['NUMERO_ARTICULO']);
try {
$arrDescription = DB::table('S002V01TDEAR')
->where('DEAR_ESTA', '=', 'Activo')
->where('DEAR_IDAR', '=', $numeroArticulo)
->join('S002V01TPROV', 'DEAR_NUPR', '=', 'PROV_NUPR')
->get([
'DEAR_IDDE AS NUMERO_DESCRIPTION',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS RAZON_SOCIAL',
'PROV_NOMB AS NOMBRE',
'PROV_APPA AS PRIMER_APELLIDO',
'PROV_APMA AS SEGUNDO_APELLIDO',
'PROV_CORR AS CORREO',
'PROV_LAD1 AS LADA1',
'PROV_TEL1 AS TELEFONO1',
'PROV_LAD2 AS LADA2',
'PROV_TEL2 AS TELEFONO2',
'PROV_TICO AS TIPO_CONTRIBUYENTE',
'PROV_XRFC AS RFC',
'PROV_XTAX AS TAXID',
'PROV_CRFI AS REGIMEN_FISCAL',
'PROV_TIPO AS TIPO',
'PROV_SIWE AS SITIOWEB',
'PROV_MEPA AS METODO_PAGO',
'PROV_ESTA AS ESTADO',
'PROV_USRE AS USUARIO_REGISTRA',
'PROV_FERE AS FECHA_REGISTRA',
'PROV_USMO AS USUARIO_MODIFICA',
'PROV_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_PROVIDER_GETBYARTITLE001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO", $arrDescription);
}
public function getArtitlesByProvider($encProvider, $user, $line) {
DB::beginTransaction();
// Se obtiene el número del proveedor
try {
$provider = $this->encController->decrypt($encProvider);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ARTITLES_PROVIDER_GET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
// Verifica su existe el proveedor
try {
$validateExist = DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $provider)
->where('PROV_NULI', '=', $line)
->exists();
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ARTITLES_PROVIDER_GET001: Ocurrió un error al identificar el proveedor.",
$th->getMessage(),
500
);
}
// Valida si existe el proveedor
if (!$validateExist) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ARTITLES_PROVIDER_GET002: El proveedor no existe",
[],
500
);
}
// Obtiene todos las descripciones de los artículos del proveedor
try {
$getDescriptionArtitles = DB::table('S002V01TDEAR')
->where('DEAR_NUPR', '=', $provider)
->where('DEAR_NULI', '=', $line)
->where('DEAR_ESTA', '=', 'Activo')
->get([
'DEAR_IDDE', # Identificador de la descripción
'DEAR_IMAG', # Imagenes de los artículos
'DEAR_DESC', # Descripción del artículo
'DEAR_CARA', # Características del artículo
'DEAR_COWE', # Compra web
'DEAR_IDUN', # Identificador del tipo de unidad
'DEAR_IDAR', # Identificador del artículo principal
'DEAR_USRE', # Usuario de registro
'DEAR_FERE', # Fecha de registro
'DEAR_USMO', # Usuario de modificación
'DEAR_FEMO', # Fecha de modificación
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLES_PROVIDER_GET003: El proveedor no existe", $th->getMessage(), 500);
}
// El resultado pasa a ser un arreglo
$arrDescriptionArtitles = json_decode(json_encode($getDescriptionArtitles), true);
$arrDescription = array();
foreach ($arrDescriptionArtitles as $keyDescription => $descriptionArtitle) {
// Obtiene las imagenes y las pasa a un arreglo
$arrImages = json_decode($descriptionArtitle['DEAR_IMAG']);
$arrUrlImage = array();
foreach ($arrImages as $keyImages => $images) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($images, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "ERR_ARTITLES_PROVIDER_GET004: Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$descriptionArtitle['DEAR_IMAG'] = $arrUrlImage;
// Obtiene la información principal del artículo
try {
$objArtitle = DB::table('S002V01TARTI')
->where('ARTI_IDAR', '=', $descriptionArtitle['DEAR_IDAR'])
->where('ARTI_NULI', '=', $line)
->where('ARTI_ESTA', '=', 'Activo')
->join('S002V01TFAMI', 'ARTI_COFA', '=', 'FAMI_COFA')
->join('S002V01TSUBF', 'ARTI_COSU', '=', 'SUBF_COSU')
->first([
'ARTI_IDAR', # Identificador del artículo
'ARTI_COFA', # Identificador de la familia del artículo
'FAMI_NOFA', # Nombre de la familia del artículo
'ARTI_COSU', # Identificador de la subfamilia del artículo
'SUBF_NOSU', # Nombre de la subfamilia del artículo
'ARTI_CODI', # Código de barras del artículo
'ARTI_NOMB', # Nombre principal del artículo
// 'ARTI_USRE', # Usuario de registro
// 'ARTI_FERE', # Fecha de registro
// 'ARTI_USMO', # Usuario de modificación
// 'ARTI_FEMO', # Fecha de modificación
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_ARTITLES_PROVIDER_GET005: Ocurrió un error al obtener la información del artículo.", $th->getMessage(), 500);
}
// La información es guardada en el arreglo de respuesta
foreach ($objArtitle as $keyArtitle => $artitle) {
$descriptionArtitle[$keyArtitle] = $artitle;
}
// Se obtiene la unidad del artículo
try {
$objUnit = DB::table('S002V01TUNID')
->where('UNID_IDUN', '=', $descriptionArtitle['DEAR_IDUN'])
->where('UNID_NULI', '=', $line)
->where('UNID_ESTA', '=', 'Activo')
->first([
'UNID_IDUN', # Identificador de la unidad
'UNID_NOMB', # Nombre de la unidad
'UNID_ACRO', # Acrónimo de la unidad
'UNID_USRE', # Usuario de registro
'UNID_FERE', # Fecha de registro
'UNID_USMO', # Usuario de modificación
'UNID_FEMO', # Fecha de modificación
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ARTITLES_PROVIDER_GET006: Ocurrió un error al obtener el tipo de unidad.",
$th->getMessage(),
500
);
}
// La información es guardada en el arreglo de respuesta
$descriptionArtitle['DEAR_IDUN'] = $objUnit;
// Se obtienen los detalles de la descripción
try {
$getDetailsDescription = DB::table('S002V01TINAR')
->where('INAR_IDDE', '=', $descriptionArtitle['DEAR_IDDE'])
->where('INAR_NULI', '=', $line)
->where('INAR_ESTA', '=', 'Activo')
->get([
'INAR_IDIN', # Identificador de los detalles
'INAR_CODI', # Código del artículo
'INAR_MODE', # Módelo del artículo
'INAR_COMO', # Tipo de moneda
'INAR_PREC', # Precio unitario del artículo
'INAR_MOMI', # Mónto mínimo
'INAR_CARA', # Características
'INAR_USRE', # Usuario de registro
'INAR_FERE', # Fecha de registro
'INAR_USMO', # Usuario de modificación
'INAR_FEMO', # Fecha de modificación
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ARTITLES_PROVIDER_GET007: Ocurrió un error al obtener los detalles de la descripción del artículo.",
$th->getMessage(),
500
);
}
// La información es guardada en el arreglo de respuesta
$descriptionArtitle['DETAILS'] = $getDetailsDescription;
// Se almacen el arreglo de respuesta en el arreglo principal
$arrDescription[] = $descriptionArtitle;
}
DB::commit(); # Para guardar los cambios en la base de datos
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrDescription);
}
public function generateSheetProviderXLS($encProvider, $typeUser, $user, $line) {
try {
$idProvider = $this->encController->decrypt($encProvider);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
if ($typeUser === 'P') {
try {
$arrProvider = (array) DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $idProvider)
->where('PROV_NULI', '=', $line)
->where('REFI_NULI', '=', $line)
->where('REFI_ESTA', '=', 'Activo')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'PROV_ESTA',
'PROV_INEX',
'PROV_USRE',
'PROV_FERE',
'PROV_USMO',
'PROV_FEMO',
'PROV_FEAR',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET002: Ocurrió un error al obtener la información del proveedor.",
$th->getMessage(),
500
);
}
} else if ($typeUser === 'S') {
try {
$arrProvider = (array) DB::table('S002V01TPROV')
->where('PROV_IDPS', '=', $idProvider)
->where('PROV_NULI', '=', $line)
->where('REFI_NULI', '=', $line)
->where('REFI_ESTA', '=', 'Activo')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'PROV_ESTA',
'PROV_INEX',
'PROV_USRE',
'PROV_FERE',
'PROV_USMO',
'PROV_FEMO',
'PROV_FEAR',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET002: Ocurrió un error al obtener la información del proveedor.",
$th->getMessage(),
500
);
}
}
if ( empty($arrProvider) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET003: El proveedor seleccionado no existe.",
[],
500
);
}
if ($arrProvider['PROV_ESTA'] !== 'Activo') {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET004: El proveedor seleccionado no se encuentra activo.",
[],
500
);
}
try {
$arrReference = DB::table('S002V01TPRRE')
->where('PRRE_NUPR', '=', $idProvider)
->where('PRRE_NULI', '=', $line)
->where('PRRE_ESTA', '=', 'Activo')
->get([
'PRRE_IDRE',
'PRRE_EMPR',
'PRRE_CORR',
'PRRE_LADA',
'PRRE_TELE',
'PRRE_XRFC',
'PRRE_DIRE',
]);
$arrReference = json_decode( json_encode($arrReference), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET005: Ocurrió un error al obtener las referencias del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrContact = DB::table('S002V01TPRCO')
->where('PRCO_NUPR', '=', $idProvider)
->where('PRCO_NULI', '=', $line)
->where('PRCO_ESTA', '=', 'Activo')
->get([
'PRCO_IDCP',
'PRCO_NOMB',
'PRCO_TIPO',
'PRCO_CALL',
'PRCO_NUEX',
'PRCO_NUIN',
'PRCO_COPO',
'PRCO_COLO',
'PRCO_LOCA',
'PRCO_MUNI',
'PRCO_ENTI',
'PRCO_PAIS',
'PRCO_LAD1',
'PRCO_TEL1',
'PRCO_LAD2',
'PRCO_TEL2',
'PRCO_COR1',
'PRCO_COR2',
'PRCO_OBSE',
]);
$arrContact = json_decode( json_encode($arrContact), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET006: Ocurrió un error al obtener los contactos del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrCondition = DB::table('S002V01TPRCN')
->where('PRCN_NUPR', '=', $idProvider)
->where('PRCN_NULI', '=', $line)
->where('PRCN_ESTA', '=', 'Activo')
->get([
'PRCN_IDCM',
'PRCN_TIPO',
'PRCN_INFO',
]);
$arrCondition = json_decode( json_encode($arrCondition), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET007: Ocurrió un error al obtener las condiciones del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrCatalog = DB::table('S002V01TPRCE')
->where('PRCE_NUPR', '=', $idProvider)
->where('PRCE_NULI', '=', $line)
->where('PRCE_ESTA', '=', 'Activo')
->get([
'PRCE_IDCE',
'PRCE_CATA',
'PRCE_DESC',
'PRCE_XURL',
]);
$arrCatalog = json_decode( json_encode($arrCatalog), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET008: Ocurrió un error al obtener los catálogos del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrPayment = json_decode($arrProvider['PROV_MEPA']);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET009: El proveedor seleccionado no se encuentra activo.",
$th->getMessage(),
500
);
}
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrProvider['PROV_NUPR']);
$headerA1 = 'Número de Proveedor';
$contentA1 = $arrProvider['PROV_NUPR'];
$activeWorksheet->setCellValue("A1", $headerA1);
$activeWorksheet->setCellValue("B1", $contentA1);
$activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
$headerB1 = 'Número de Subcontratista';
$contentB1 = '';
if ( $arrProvider['PROV_IDPS'] === null || $arrProvider['PROV_IDPS'] === '' ) {
$contentB1 = 'Sin Subcontratista';
} else {
$contentB1 = $arrProvider['PROV_IDPS'];
}
$activeWorksheet->setCellValue("A2", $headerB1);
$activeWorksheet->setCellValue("B2", $contentB1);
$activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
$headerC1 = "Nombre Comercial";
$contentC1 = $arrProvider['PROV_NOCO'];
$activeWorksheet->setCellValue("A3", $headerC1);
$activeWorksheet->setCellValue("B3", $contentC1);
$activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
$headerD1 = 'Responsable';
$contentD1 = $arrProvider['PROV_NOMB'].' '.$arrProvider['PROV_APPA'].' '.$arrProvider['PROV_APMA'] === null ? '' : $arrProvider['PROV_APMA'];
$activeWorksheet->setCellValue("A4", $headerD1);
$activeWorksheet->setCellValue("B4", $contentD1);
$activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
$headerE1 = 'Correo electrónico';
$contentE1 = $arrProvider['PROV_CORR'];
$activeWorksheet->setCellValue("A5", $headerE1);
$activeWorksheet->setCellValue("B5", $contentE1);
$activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
$headerF1 = '';
$contentF1 = '';
if ($arrProvider['PROV_XRFC'] !== null && $arrProvider['PROV_XRFC'] !== '' && ($arrProvider['PROV_XTAX'] === '' || $arrProvider['PROV_XTAX'] === null)) {
$headerF1 = 'R.F.C';
$contentF1 = $arrProvider['PROV_XRFC'];
} else if ($arrProvider['PROV_XTAX'] !== null && $arrProvider['PROV_XTAX'] !== '' && ($arrProvider['PROV_XRFC'] === '' || $arrProvider['PROV_XRFC'] === null)) {
$headerF1 = 'TAX ID';
$contentF1 = $arrProvider['PROV_XTAX'];
} else {
$headerF1 = 'R.F.C / TAX ID';
$contentF1 = 'Sin contenido';
}
$activeWorksheet->setCellValue("A6", $headerF1);
$activeWorksheet->setCellValue("B6", $contentF1);
$activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
$headerF1 = 'Régimen fiscal';
$contentF1 = $arrProvider['REFI_DRFI'] . ' (' . $arrProvider['REFI_CRFI'] . ')';
$activeWorksheet->setCellValue("A7", "Régimen Fiscal");
$activeWorksheet->setCellValue("B7", $contentF1);
$activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
$headerH1 = 'Tipo de ciudadania';
$contentH1 = $arrProvider['PROV_TIPO'];
$activeWorksheet->setCellValue("A8", $headerH1);
$activeWorksheet->setCellValue("B8", $contentH1);
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerI1 = 'Tipo de contribuyente';
$contentI1 = $arrProvider['PROV_TICO'];
$activeWorksheet->setCellValue("A9", $headerI1);
$activeWorksheet->setCellValue("B9", $contentI1);
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerJ1 = 'Teléfono principal';
$contentJ1 = '('.$arrProvider['PROV_LAD1'] .') '. $arrProvider['PROV_TEL1'];
$activeWorksheet->setCellValue("A10", $headerJ1);
$activeWorksheet->setCellValue("B10", $contentJ1);
$activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
$headerK1 = 'Teléfono secundario';
$contentK1 = '';
if ($arrProvider['PROV_LAD2'] !== null && $arrProvider['PROV_LAD2'] !== '' && $arrProvider['PROV_TEL2'] !== null && $arrProvider['PROV_TEL2'] !== '') {
$contentK1 = '('.$arrProvider['PROV_LAD2'] .') '. $arrProvider['PROV_TEL2'];
} else {
$contentK1 = 'No aplica';
}
$activeWorksheet->setCellValue("A11", $headerK1);
$activeWorksheet->setCellValue("B11", $contentK1);
$activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
$headerL1 = 'Enlace de sitio web';
$contentL1 = '';
if ($arrProvider['PROV_SIWE'] !== null && $arrProvider['PROV_SIWE'] !== '') {
$contentL1 = $arrProvider['PROV_SIWE'];
} else {
$contentL1 = 'No aplica';
}
$activeWorksheet->setCellValue("A12", $headerL1);
$activeWorksheet->setCellValue("B12", $contentL1);
$activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
$headerM1 = 'Calle ';
$contentM1 = $arrProvider['PROV_CALL'];
$activeWorksheet->setCellValue("A13", $headerM1);
$activeWorksheet->setCellValue("B13", $contentM1);
$activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
$headerN1 = 'Número exterior';
$contentN1 = $arrProvider['PROV_NUEX'];
$activeWorksheet->setCellValue("A14", $headerN1);
$activeWorksheet->setCellValue("B14", $contentN1);
$activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
$headerO1 = 'Número interior';
$contentO1 = '';
if ($arrProvider['PROV_NUIN'] !== null && $arrProvider['PROV_NUIN'] !== '') {
$contentO1 = $arrProvider['PROV_NUIN'];
} else {
$contentO1 = 'No aplica';
}
$activeWorksheet->setCellValue("A15", $headerO1);
$activeWorksheet->setCellValue("B15", $contentO1);
$activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
$headerP1 = 'Código postal';
$contentP1 = $arrProvider['PROV_COPO'];
$activeWorksheet->setCellValue("A16", $headerP1);
$activeWorksheet->setCellValue("B16", $contentP1);
$activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
$headerQ1 = 'Colonia';
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrColony = (array) DB::table('S002V01TCOLO')
->where('COLO_NULI', '=', $line)
->where('COLO_COCO', '=', $arrProvider['PROV_COLO'])
->where('COLO_COPO', '=', $arrProvider['PROV_COPO'])
->where('COLO_ESTA', '=', 'Activo')
->first([ 'COLO_COCO', 'COLO_NOCO' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET010: Ocurrió un error al obtener la información de la colonia.",
$th->getMessage(),
500
);
}
if ( empty($arrColony) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET011: No se encontró la colonia asociada al proveedor.",
[],
500
);
}
$contentQ1 = $arrColony['COLO_NOCO'] . ' (' . $arrColony['COLO_COCO'] . ')';
} else {
$contentQ1 = $arrProvider['PROV_COLO'];
}
$activeWorksheet->setCellValue("A17", $headerQ1);
$activeWorksheet->setCellValue("B17", $contentQ1);
$activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
$headerR1 = 'Localidad';
$contentR1 = '';
if ($arrProvider['PROV_PAIS'] === 'MEX') {
if ( !is_null($arrProvider['PROV_LOCA']) && !empty($arrProvider['PROV_LOCA']) ) {
try {
$arrLocate = (array) DB::table('S002V01TLOCA')
->where('LOCA_NULI', '=', $line)
->where('LOCA_COLO', '=', $arrProvider['PROV_LOCA'])
->where('LOCA_COES', '=', $arrProvider['PROV_ENTI'])
->where('LOCA_ESTA', '=', 'Activo')
->first([ 'LOCA_COLO', 'LOCA_NOLO' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET012: Ocurrió un error al obtener la información de la localidad.",
$th->getMessage(),
500
);
}
if ( empty($arrLocate) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET013: No se encontró la localidad asociada al proveedor.",
[],
500
);
}
$contentR1 = $arrLocate['LOCA_NOLO'] . ' (' . $arrLocate['LOCA_NOLO'] . ')';
} else {
$contentR1 = 'Sin localidad';
}
} else {
if ( !is_null($arrProvider['PROV_LOCA']) && !empty($arrProvider['PROV_LOCA']) ) {
$contentR1 = $arrProvider['PROV_LOCA'];
} else {
$contentR1 = 'Sin localidad';
}
}
$activeWorksheet->setCellValue("A18", $headerR1);
$activeWorksheet->setCellValue("B18", $contentR1);
$activeWorksheet->getColumnDimension("R")->setAutoSize(true);
$activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
$headerS1 = 'Municipio';
$contentS1 = '';
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrMunicipality = (array) DB::table('S002V01TMUNI')
->where('MUNI_NULI', '=', $line)
->where('MUNI_COMU', '=', $arrProvider['PROV_MUNI'])
->where('MUNI_COES', '=', $arrProvider['PROV_ENTI'])
->where('MUNI_ESTA', '=', 'Activo')
->first([ 'MUNI_COMU', 'MUNI_NOMU' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET014: Ocurrió un error al obtener la información del municipio.",
$th->getMessage(),
500
);
}
if ( empty($arrMunicipality) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET015: No se encontró el municipio asociada al proveedor.",
[],
500
);
}
$contentS1 = $arrMunicipality['MUNI_NOMU'] . ' (' . $arrMunicipality['MUNI_COMU'] . ')';
} else {
$contentS1 = $arrProvider['PROV_MUNI'];
}
$activeWorksheet->setCellValue("A19", $headerS1);
$activeWorksheet->setCellValue("B19", $contentS1);
$activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
$headerT1 = 'Entidad Federativa';
$contentT1 = '';
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrEntity = (array) DB::table('S002V01TESTA')
->where('ESTA_NULI', '=', $line)
->where('ESTA_COES', '=', $arrProvider['PROV_ENTI'])
->where('ESTA_COPA', '=', $arrProvider['PROV_PAIS'])
->where('ESTA_ESTA', '=', 'Activo')
->first([ 'ESTA_COES', 'ESTA_NOES' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET016: Ocurrió un error al obtener la información de la entidad federativa.",
$th->getMessage(),
500
);
}
if ( empty($arrEntity) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET017: No se encontró la entidad federativa asociada al proveedor.",
[],
500
);
}
$contentT1 = $arrEntity['ESTA_NOES'] . ' (' . $arrEntity['ESTA_COES'] . ')';
} else {
$contentT1 = $arrProvider['PROV_ENTI'];
}
$activeWorksheet->setCellValue("A20", $headerT1);
$activeWorksheet->setCellValue("B20", $contentT1);
$activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
$headerU1 = 'País';
try {
$arrCountry = (array) DB::table('S002V01TPAIS')
->where('PAIS_NULI', '=', $line)
->where('PAIS_IDPA', '=', $arrProvider['PROV_PAIS'])
->first([ 'PAIS_IDPA', 'PAIS_NOMB' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET018: Ocurrió un error al obtener la información del país.",
$th->getMessage(),
500
);
}
if ( empty($arrCountry) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET019: No se encontró el país asociado al proveedor.",
[],
500
);
}
$contentU1 = $arrCountry['PAIS_NOMB'] . ' (' . $arrCountry['PAIS_IDPA'] . ')';
$activeWorksheet->setCellValue("A21", $headerU1);
$activeWorksheet->setCellValue("B21", $contentU1);
$activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
$activeWorksheet->getColumnDimension("A")->setAutoSize(true);
$activeWorksheet->getColumnDimension("B")->setAutoSize(true);
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$activeWorksheetContact = $spreadsheet->getActiveSheet()->setTitle('Contactos');
$arrHeaderContact = array(
'ID', // A
'Contacto', // B
'Tipo de Contacto', // C
'Correo Electrónico Principal', // D
'Correo Electrónico Secundario', // E
'Teléfono Principal', // F
'Teléfono Secundario', // G
'Calle', // H
'Número Exterior', // I
'Numero Interior', // J
'Código Postal', // K
'Colonia', // L
'Localidad', // M
'Municipio', // N
'Entidad Federativa', // O
'País', // P
'Observaciones' // Q
);
foreach ($arrContact as $key => $contact) {
$key = $key + 2;
$activeWorksheetContact->setCellValue("A".$key, $contact['PRCO_IDCP']);
$activeWorksheetContact->setCellValue("B".$key, $contact['PRCO_NOMB']);
$activeWorksheetContact->setCellValue("C".$key, $contact['PRCO_TIPO']);
$activeWorksheetContact->setCellValue("D".$key, $contact['PRCO_COR1']);
if ( !is_null( $contact['PRCO_COR2'] ) ) {
$activeWorksheetContact->setCellValue("E".$key, $contact['PRCO_COR2']);
} else {
$activeWorksheetContact->setCellValue("E".$key, 'No aplica' );
}
$activeWorksheetContact->setCellValue("F".$key, $contact['PRCO_LAD1'] . ' ' . $contact['PRCO_TEL1'] );
if ( !is_null( $contact['PRCO_LAD2'] ) && !is_null( $contact['PRCO_TEL2'] ) ) {
$activeWorksheetContact->setCellValue("G".$key, $contact['PRCO_LAD2'] . ' ' . $contact['PRCO_TEL2'] );
} else {
$activeWorksheetContact->setCellValue("G".$key, 'No aplica' );
}
$activeWorksheetContact->setCellValue("H".$key, $contact['PRCO_CALL'] );
$activeWorksheetContact->setCellValue("I".$key, $contact['PRCO_NUEX'] );
if ( !is_null( $contact['PRCO_NUIN'] ) ) {
$activeWorksheetContact->setCellValue("J".$key, $contact['PRCO_NUIN']);
} else {
$activeWorksheetContact->setCellValue("J".$key, 'No aplica' );
}
$activeWorksheetContact->setCellValue("K".$key, $contact['PRCO_COPO'] );
$activeWorksheetContact->setCellValue("L".$key, $contact['PRCO_COLO'] );
if ( !is_null($contact['PRCO_LOCA']) && $contact['PRCO_LOCA'] !== 'Sin localidad' ) {
$activeWorksheetContact->setCellValue("M".$key, $contact['PRCO_LOCA'] );
} else {
$activeWorksheetContact->setCellValue("M".$key, 'No aplica' );
}
$activeWorksheetContact->setCellValue("N".$key, $contact['PRCO_MUNI'] );
$activeWorksheetContact->setCellValue("O".$key, $contact['PRCO_ENTI'] );
$activeWorksheetContact->setCellValue("P".$key, $contact['PRCO_PAIS'] );
$activeWorksheetContact->setCellValue("Q".$key, $contact['PRCO_OBSE'] );
}
foreach ($arrHeaderContact as $keyHeaderContact => $headerContact) {
$activeWorksheetContact->setCellValue( $arrAlphabet[$keyHeaderContact]."1", $headerContact);
$activeWorksheetContact->getColumnDimension( $arrAlphabet[$keyHeaderContact] )->setAutoSize(true);
$activeWorksheetContact->getStyle( $arrAlphabet[$keyHeaderContact]."1" )->getFont()->setBold(true);
}
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(2);
$activeWorksheetReference = $spreadsheet->getActiveSheet()->setTitle('Referencias');
$arrHeaderReference = array(
'ID', // A
'Empresa', // B
'R.F.C.', // C
'Correo', // D
'Teléfono', // E
'Dirección', // F
);
foreach ($arrReference as $key => $reference) {
$key = $key + 2;
$activeWorksheetReference->setCellValue("A".$key, $reference['PRRE_IDRE']);
$activeWorksheetReference->setCellValue("B".$key, $reference['PRRE_EMPR']);
$activeWorksheetReference->setCellValue("C".$key, $reference['PRRE_XRFC']);
$activeWorksheetReference->setCellValue("D".$key, $reference['PRRE_CORR']);
$activeWorksheetReference->setCellValue("E".$key, $reference['PRRE_LADA'] .' '. $reference['PRRE_TELE']);
$activeWorksheetReference->setCellValue("F".$key, $reference['PRRE_DIRE']);
}
foreach ($arrHeaderReference as $keyHeaderReference => $headerReference) {
$activeWorksheetReference->setCellValue( $arrAlphabet[$keyHeaderReference]."1", $headerReference);
$activeWorksheetReference->getColumnDimension( $arrAlphabet[$keyHeaderReference] )->setAutoSize(true);
$activeWorksheetReference->getStyle( $arrAlphabet[$keyHeaderReference]."1" )->getFont()->setBold(true);
}
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(3);
$activeWorksheetCatalog = $spreadsheet->getActiveSheet()->setTitle('Catálogos');
$arrHeaderCatalog = array(
'ID', // A
'Catálogo', // B
'Descripción', // C
'URL', // D
);
foreach ($arrCatalog as $key => $catalog) {
$key = $key + 2;
$activeWorksheetCatalog->setCellValue("A".$key, $catalog['PRCE_IDCE']);
$activeWorksheetCatalog->setCellValue("B".$key, $catalog['PRCE_CATA']);
$activeWorksheetCatalog->setCellValue("C".$key, $catalog['PRCE_DESC']);
$activeWorksheetCatalog->setCellValue("D".$key, $catalog['PRCE_XURL']);
}
foreach ($arrHeaderCatalog as $keyHeaderCatalog => $headerCatalog) {
$activeWorksheetCatalog->setCellValue( $arrAlphabet[$keyHeaderCatalog]."1", $headerCatalog);
$activeWorksheetCatalog->getColumnDimension( $arrAlphabet[$keyHeaderCatalog] )->setAutoSize(true);
$activeWorksheetCatalog->getStyle( $arrAlphabet[$keyHeaderCatalog]."1" )->getFont()->setBold(true);
}
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(4);
$activeWorksheetPayment = $spreadsheet->getActiveSheet()->setTitle('Métodos de Pago');
$arrHeaderPayment = array(
'ID', // A
'Método de Pago', // B
);
$cont = 2;
$arrPayment = is_null($arrPayment) ? [] : $arrPayment;
foreach ($arrPayment as $key => $payment) {
$activeWorksheetPayment->setCellValue("A".$cont, $key);
$activeWorksheetPayment->setCellValue("B".$cont, $payment);
$cont++;
}
foreach ($arrHeaderPayment as $keyHeaderPayment => $headerPayment) {
$activeWorksheetPayment->setCellValue( $arrAlphabet[$keyHeaderPayment]."1", $headerPayment);
$activeWorksheetPayment->getColumnDimension( $arrAlphabet[$keyHeaderPayment] )->setAutoSize(true);
$activeWorksheetPayment->getStyle( $arrAlphabet[$keyHeaderPayment]."1" )->getFont()->setBold(true);
}
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(5);
$activeWorksheetCondition = $spreadsheet->getActiveSheet()->setTitle('Condiciones');
$arrHeaderCondition = array(
'ID', // A
'Tipo de Condición', // B
'Información', // C
);
foreach ($arrCondition as $key => $condition) {
$key = $key + 2;
$activeWorksheetCondition->setCellValue("A".$key, $condition['PRCN_IDCM']);
$activeWorksheetCondition->setCellValue("B".$key, $condition['PRCN_TIPO']);
$activeWorksheetCondition->setCellValue("C".$key, $condition['PRCN_INFO']);
}
foreach ($arrHeaderCondition as $keyHeaderCondition => $headerCondition) {
$activeWorksheetCondition->setCellValue( $arrAlphabet[$keyHeaderCondition]."1", $headerCondition);
$activeWorksheetCondition->getColumnDimension( $arrAlphabet[$keyHeaderCondition] )->setAutoSize(true);
$activeWorksheetCondition->getStyle( $arrAlphabet[$keyHeaderCondition]."1" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_proveedor_' . $arrProvider['PROV_NUPR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetProviderPDF($encProvider, $typeUser, $user, $line) {
try {
$idProvider = $this->encController->decrypt($encProvider);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
$arrProvider = [];
if ($typeUser === 'P') {
try {
$arrProvider = (array) DB::table('S002V01TPROV')
->where('PROV_NUPR', '=', $idProvider)
->where('PROV_NULI', '=', $line)
->where('REFI_NULI', '=', $line)
->where('REFI_ESTA', '=', 'Activo')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
// 'PROV_CRFI',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'PROV_ESTA',
'PROV_INEX',
'PROV_USRE',
'PROV_FERE',
'PROV_USMO',
'PROV_FEMO',
'PROV_FEAR',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET002: Ocurrió un error al obtener la información del proveedor.",
$th->getMessage(),
500
);
}
} else if ($typeUser === 'S') {
try {
$arrProvider = (array) DB::table('S002V01TPROV')
->where('PROV_IDPS', '=', $idProvider)
->where('PROV_NULI', '=', $line)
->where('REFI_NULI', '=', $line)
->where('REFI_ESTA', '=', 'Activo')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
// 'PROV_CRFI',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'PROV_ESTA',
'PROV_INEX',
'PROV_USRE',
'PROV_FERE',
'PROV_USMO',
'PROV_FEMO',
'PROV_FEAR',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET002: Ocurrió un error al obtener la información del proveedor.",
$th->getMessage(),
500
);
}
}
if ( empty($arrProvider) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET003: El proveedor seleccionado no existe.",
[],
500
);
}
if ($arrProvider['PROV_ESTA'] !== 'Activo') {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET004: El proveedor seleccionado no se encuentra activo.",
[],
500
);
}
try {
$arrReference = DB::table('S002V01TPRRE')
->where('PRRE_NUPR', '=', $idProvider)
->where('PRRE_NULI', '=', $line)
->where('PRRE_ESTA', '=', 'Activo')
->get([
'PRRE_IDRE',
'PRRE_EMPR',
'PRRE_CORR',
'PRRE_LADA',
'PRRE_TELE',
'PRRE_XRFC',
'PRRE_DIRE',
]);
$arrReference = json_decode( json_encode($arrReference), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET005: Ocurrió un error al obtener las referencias del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrContact = DB::table('S002V01TPRCO')
->where('PRCO_NUPR', '=', $idProvider)
->where('PRCO_NULI', '=', $line)
->where('PRCO_ESTA', '=', 'Activo')
->get([
'PRCO_IDCP',
'PRCO_NOMB',
'PRCO_TIPO',
'PRCO_CALL',
'PRCO_NUEX',
'PRCO_NUIN',
'PRCO_COPO',
'PRCO_COLO',
'PRCO_LOCA',
'PRCO_MUNI',
'PRCO_ENTI',
'PRCO_PAIS',
'PRCO_LAD1',
'PRCO_TEL1',
'PRCO_LAD2',
'PRCO_TEL2',
'PRCO_COR1',
'PRCO_COR2',
'PRCO_OBSE',
]);
$arrContact = json_decode( json_encode($arrContact), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET006: Ocurrió un error al obtener los contactos del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrCondition = DB::table('S002V01TPRCN')
->where('PRCN_NUPR', '=', $idProvider)
->where('PRCN_NULI', '=', $line)
->where('PRCN_ESTA', '=', 'Activo')
->get([
'PRCN_IDCM',
'PRCN_TIPO',
'PRCN_INFO',
]);
$arrCondition = json_decode( json_encode($arrCondition), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET007: Ocurrió un error al obtener las condiciones del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrCatalog = DB::table('S002V01TPRCE')
->where('PRCE_NUPR', '=', $idProvider)
->where('PRCE_NULI', '=', $line)
->where('PRCE_ESTA', '=', 'Activo')
->get([
'PRCE_IDCE',
'PRCE_CATA',
'PRCE_DESC',
'PRCE_XURL',
]);
$arrCatalog = json_decode( json_encode($arrCatalog), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET008: Ocurrió un error al obtener los catálogos del proveedor.",
$th->getMessage(),
500
);
}
try {
$arrPayment = json_decode($arrProvider['PROV_MEPA']);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET009: El proveedor seleccionado no se encuentra activo.",
$th->getMessage(),
500
);
}
$arrProvider['CONDITION'] = $arrCondition;
$arrProvider['CATALOG'] = $arrCatalog;
$arrProvider['PROV_MEPA'] = $arrPayment;
$html = '
Document
Número Proveedor:
'.$arrProvider['PROV_NUPR'].'
Nombre Comercial:
'.$arrProvider['PROV_NOCO'].'
Responsable:
'.$arrProvider['PROV_NOMB'].' '.$arrProvider['PROV_APPA'].' '.$arrProvider['PROV_APMA'].'
Correo electrónico:
'.$arrProvider['PROV_CORR'].'
';
if ($arrProvider['PROV_XRFC'] !== null && $arrProvider['PROV_XRFC'] !== '' && ($arrProvider['PROV_XTAX'] === '' || $arrProvider['PROV_XTAX'] === null)) {
$html.='
R.F.C:
'.$arrProvider['PROV_XRFC'].'
';
} else if ($arrProvider['PROV_XTAX'] !== null && $arrProvider['PROV_XTAX'] !== '' && ($arrProvider['PROV_XRFC'] === '' || $arrProvider['PROV_XRFC'] === null)) {
$html.='
TAX ID:
'.$arrProvider['PROV_XTAX'].'
';
} else {
$html.='
R.F.C / TAX ID:
Sin contenido
';
}
$html.='
Régimen fiscal:
'.$arrProvider['REFI_DRFI'] . ' (' . $arrProvider['REFI_CRFI'] . ')'.'
Tipo de ciudadania:
'.$arrProvider['PROV_TIPO'].'
Tipo de contribuyente:
'.$arrProvider['PROV_TICO'].'
Teléfono principal:
'.'('.$arrProvider['PROV_LAD1'] .') '. $arrProvider['PROV_TEL1'].'
';
if ($arrProvider['PROV_LAD2'] !== null && $arrProvider['PROV_LAD2'] !== '' && $arrProvider['PROV_TEL2'] !== null && $arrProvider['PROV_TEL2'] !== '') {
$html.='
Teléfono secundario:
'.'('.$arrProvider['PROV_LAD2'] .') '. $arrProvider['PROV_TEL2'].'
';
} else {
$html.='
Teléfono secundario:
No aplica
';
}
if ($arrProvider['PROV_SIWE'] !== null && $arrProvider['PROV_SIWE'] !== '') {
$html.='
Enlace de sitio web:
'.$arrProvider['PROV_SIWE'].'
';
} else {
$html.='
Enlace de sitio web:
No aplica
';
}
$address = $arrProvider['PROV_CALL'].' '.$arrProvider['PROV_NUEX'] . ' ';
if ($arrProvider['PROV_NUIN'] !== null && $arrProvider['PROV_NUIN'] !== '') {
$address .= $arrProvider['PROV_NUIN'] . ' ';
}
$address .= $arrProvider['PROV_COPO'] . ', ';
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrColony = (array) DB::table('S002V01TCOLO')
->where('COLO_NULI', '=', $line)
->where('COLO_COCO', '=', $arrProvider['PROV_COLO'])
->where('COLO_COPO', '=', $arrProvider['PROV_COPO'])
->where('COLO_ESTA', '=', 'Activo')
->first([ 'COLO_COCO', 'COLO_NOCO' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET010: Ocurrió un error al obtener la información de la colonia.",
$th->getMessage(),
500
);
}
if ( empty($arrColony) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET011: No se encontró la colonia asociada al proveedor.",
[],
500
);
}
$address .= $arrColony['COLO_NOCO'] . ', ';
} else {
$address .= $arrProvider['PROV_COLO'] . ', ';
}
if ($arrProvider['PROV_PAIS'] === 'MEX') {
if ( !is_null($arrProvider['PROV_LOCA']) && !empty($arrProvider['PROV_LOCA']) ) {
try {
$arrLocate = (array) DB::table('S002V01TLOCA')
->where('LOCA_NULI', '=', $line)
->where('LOCA_COLO', '=', $arrProvider['PROV_LOCA'])
->where('LOCA_COES', '=', $arrProvider['PROV_ENTI'])
->where('LOCA_ESTA', '=', 'Activo')
->first([ 'LOCA_COLO', 'LOCA_NOLO' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET012: Ocurrió un error al obtener la información de la localidad.",
$th->getMessage(),
500
);
}
if ( empty($arrLocate) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET013: No se encontró la localidad asociada al proveedor.",
[],
500
);
}
$address .= $arrLocate['LOCA_NOLO'] . ', ';
}
} else {
if ( !is_null($arrProvider['PROV_LOCA']) && !empty($arrProvider['PROV_LOCA']) ) {
$address .= $arrProvider['PROV_LOCA'] . ', ';
}
}
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrMunicipality = (array) DB::table('S002V01TMUNI')
->where('MUNI_NULI', '=', $line)
->where('MUNI_COMU', '=', $arrProvider['PROV_MUNI'])
->where('MUNI_COES', '=', $arrProvider['PROV_ENTI'])
->where('MUNI_ESTA', '=', 'Activo')
->first([ 'MUNI_COMU', 'MUNI_NOMU' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET014: Ocurrió un error al obtener la información del municipio.",
$th->getMessage(),
500
);
}
if ( empty($arrMunicipality) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET015: No se encontró el municipio asociada al proveedor.",
[],
500
);
}
$address .= $arrMunicipality['MUNI_NOMU'] . ', ';
} else {
$address .= $arrProvider['PROV_MUNI'] . ', ';
}
if ($arrProvider['PROV_PAIS'] === 'MEX') {
try {
$arrEntity = (array) DB::table('S002V01TESTA')
->where('ESTA_NULI', '=', $line)
->where('ESTA_COES', '=', $arrProvider['PROV_ENTI'])
->where('ESTA_COPA', '=', $arrProvider['PROV_PAIS'])
->where('ESTA_ESTA', '=', 'Activo')
->first([ 'ESTA_COES', 'ESTA_NOES' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET016: Ocurrió un error al obtener la información de la entidad federativa.",
$th->getMessage(),
500
);
}
if ( empty($arrEntity) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET017: No se encontró la entidad federativa asociada al proveedor.",
[],
500
);
}
$address .= $arrEntity['ESTA_NOES'] . ', ';
} else {
$address .= $arrProvider['PROV_ENTI'] . ', ';
}
try {
$arrCountry = (array) DB::table('S002V01TPAIS')
->where('PAIS_NULI', '=', $line)
->where('PAIS_IDPA', '=', $arrProvider['PROV_PAIS'])
->first([ 'PAIS_IDPA', 'PAIS_NOMB' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET018: Ocurrió un error al obtener la información del país.",
$th->getMessage(),
500
);
}
if ( empty($arrCountry) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET019: No se encontró el país asociado al proveedor.",
[],
500
);
}
$address .= $arrCountry['PAIS_NOMB'] . '.';
$html.='
Dirección:
'.$address.'
';
if ( !empty($arrContact) ) {
$html.='
Contactos
';
$html.='
| ID |
Contacto |
Tipo de Contacto |
Correo Electrónico |
Teléfono |
Direcciones |
Observaciones |
';
foreach ($arrContact as $keyContact => $contact) {
$html.= '
| '.$contact['PRCO_IDCP'].' |
'.$contact['PRCO_NOMB'].' |
'.$contact['PRCO_TIPO'].' |
'.$contact['PRCO_COR1'].' |
'.$contact['PRCO_LAD1'].' '.$contact['PRCO_TEL1'].' |
'.$contact['PRCO_CALL'].' |
'.$contact['PRCO_OBSE'].' |
';
}
$html.= '
';
}
if ( !empty($arrReference) ) {
$html.='
Referencias
';
$html.='
| ID |
Empresa |
R.F.C. |
Correo Electrónico |
Teléfono |
Dirección |
';
foreach ($arrReference as $keyReference => $reference) {
$html.= '
| '.$reference['PRRE_IDRE'].' |
'.$reference['PRRE_EMPR'].' |
'.$reference['PRRE_XRFC'].' |
'.$reference['PRRE_CORR'].' |
'.$reference['PRRE_LADA'].' '.$reference['PRRE_TELE'].' |
'.$reference['PRRE_DIRE'].' |
';
}
$html.= '
';
}
if ( !empty($arrPayment) ) {
$html.='
Métodos de Pago
';
$html.='';
foreach ($arrPayment as $keyPayment => $payment) {
$html.='- '.$payment.'
';
}
$html.='
';
}
if ( !empty($arrCatalog) ) {
$html.='
Catálogos
';
$html.='
| ID |
Catálogo |
Descripción |
URL |
';
foreach ($arrCatalog as $keyCatalog => $catalog) {
$html.= '
| '.$catalog['PRCE_IDCE'].' |
'.$catalog['PRCE_CATA'].' |
'.$catalog['PRCE_DESC'].' |
'.$catalog['PRCE_XURL'].' |
';
}
$html.= '
';
}
if ( !empty($arrCondition) ) {
foreach ($arrCondition as $keyCondition => $condition) {
$html.='
'.$condition['PRCN_TIPO'].'
';
$html.=''.$condition['PRCN_INFO'].'
';
}
}
$html.='';
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_proveedor_' . $arrProvider['PROV_NUPR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_proveedor_' . $arrProvider['PROV_NUPR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function getPartialDeliveries($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$getPartial = DB::table('S002V01THIOR')
->where('HIOR_ESOR', '=', 'Recibido Parcial')
->where('HIOR_NULI', '=', $line)
->get([
'HIOR_IDHO AS ID_HISTORIAL_ORDEN',
'HIOR_NUOR AS NUMERO_ORDEN',
'HIOR_ESOR AS ESTADO_ORDEN',
'HIOR_DESC AS DESCRIPCION',
'HIOR_EVID AS EVIDENCIA',
'HIOR_POEN AS PORCENTAJE_ENTREGA',
'HIOR_ESTA AS ESTADO',
'HIOR_USRE AS USUARIO_REGISTRA',
'HIOR_FERE AS FECHA_REGISTRA',
'HIOR_USMO AS USUARIO_MODIFICA',
'HIOR_FEMO AS FECHA_MODIFICA',
]);
$arrPartial = json_decode(json_encode($getPartial), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "Ocurrió un error al momento de obtener los registros.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrPartial, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrPartial = $responseCheckLatestUpdate['response'];
foreach ($arrPartial as $keyHistoryOrder => $historyOrder) {
if ( !is_null($historyOrder['EVIDENCIA']) ) {
$arrEvidence = json_decode($historyOrder['EVIDENCIA']);
$arrUrlImage = array();
foreach ($arrEvidence as $key => $imagen) {
$responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($responseDocument['error']) {
return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la URL de la imágen.", [], 500);
}
$arrUrlImage[] = $responseDocument['response']['public_uri'];
}
$historyOrder['EVIDENCIA'] = $arrUrlImage;
}
$arrPartial[$keyHistoryOrder] = $historyOrder;
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrPartial);
}
public function getDelayAnalysis($user, $line) {
try {
$getDelayAnalysis = DB::table('S002V01TANRE')
->where('ANRE_NULI', '=', $line)
->join('S002V01TORCO', 'ORCO_NUOR', '=', 'ANRE_NUOR')
->join('S002V01TLINE', 'LINE_NUPR', '=', 'ORCO_IDLI')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->get([
'ANRE_IDAR',
'ANRE_NUOR',
'ANRE_DESC',
'ANRE_TIPO',
'ANRE_FEEN',
'ANRE_ESTA',
'ANRE_USRE',
'ANRE_FERE',
'ANRE_USMO',
'ANRE_FEMO',
'ORCO_NUOR',
'ORCO_IDDE',
'PROV_NUPR',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'REFI_CRFI',
'REFI_DRFI',
'PROV_TIPO',
'PROV_SIWE',
'PROV_MEPA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_DELAY_ANALYSIS_GET000: Ocurrió un error al momento de obtener los registros", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getDelayAnalysis);
}
public function getDispatch($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrDispatch = DB::table('S002V01TDESP')
->where("DESP_NULI", "=", $line)
->get([
'DESP_IDDE AS ID_DESPACHO',
'DESP_NODE AS NOMBRE_DESPACHO',
'DESP_NOMB AS NOMBRE',
'DESP_APPA AS APELLIDO_PATERNO',
'DESP_APMA AS APELLIDO_MATERNO',
'DESP_CALL AS CALLE',
'DESP_NUEX AS NUMERO_EXTERIOR',
'DESP_NUIN AS NUMERO_INTERIOR',
'DESP_COPO AS CODIGO_POSTAL',
'DESP_COLO AS COLONIA',
'DESP_MUNI AS MUNICIPIO',
'DESP_ENTI AS ENTIDAD_FEDERATIVA',
'DESP_PAIS AS PAIS',
'DESP_ESTA AS ESTADO',
'DESP_USRE AS USUARIO_REGISTRA',
'DESP_FERE AS FECHA_REGISTRA',
'DESP_USMO AS USUARIO_MODIFICA',
'DESP_FEMO AS FECHA_MODIFICA',
]);
$arrDispatch = json_decode(json_encode($arrDispatch), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_DISPATCH_GET000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrDispatch, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrDispatch = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrDispatch);
}
public function getDispatchActive($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401);
}
try {
$arrDispatch = DB::table('S002V01TDESP')
->where("DESP_NULI", "=", $line)
->where("DESP_ESTA", "=", 'Activo')
->get([
'DESP_IDDE AS ID_DESPACHO', // Número de despacho
'DESP_NODE AS NOMBRE_DESPACHO', // Nombre del despacho
'DESP_NOMB AS NOMBRE', // Nombre del despacho
'DESP_APPA AS APELLIDO_PATERNO', // Apellido paterno del despacho
'DESP_APMA AS APELLIDO_MATERNO', // Apellido materno del despacho
'DESP_CALL AS CALLE', // Calle
'DESP_NUEX AS NUMERO_EXTERIOR', // Número exterior
'DESP_NUIN AS NUMERO_INTERIOR', // Número interior
'DESP_COPO AS CODIGO_POSTAL', // Código postal
'DESP_COLO AS COLONIA', // Colonia
'DESP_MUNI AS MUNICIPIO', // Municipio
'DESP_ENTI AS ENTIDAD_FEDERATIVA', // Entidad
'DESP_PAIS AS PAIS', // Pais
'DESP_USRE AS USUARIO_REGISTRA', // Usuario Registra
'DESP_FERE AS FECHA_REGISTRA', // Fecha Registra
'DESP_USMO AS USUARIO_MODIFICA', // Usuario Modifica
'DESP_FEMO AS FECHA_MODIFICA', // Fecha Modifica
]);
$arrDispatch = json_decode(json_encode($arrDispatch), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrDispatch, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrDispatch = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrDispatch);
}
public function getDispatchById($idDispatch, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrDispatch = (array) DB::table('S002V01TDESP')
->where("DESP_IDDE", "=", $idDispatch)
->where("DESP_NULI", "=", $line)
->where("DESP_ESTA", "=", "Activo")
->first([
'DESP_IDDE AS ID_DESPACHO',
'DESP_NODE AS NOMBRE_DESPACHO',
'DESP_NOMB AS NOMBRE',
'DESP_APPA AS APELLIDO_PATERNO',
'DESP_APMA AS APELLIDO_MATERNO',
'DESP_LADA AS LADA',
'DESP_TELE AS TELEFONO',
'DESP_CORR AS CORREO_ELECTRONICO',
'DESP_CALL AS CALLE',
'DESP_NUEX AS NUMERO_EXTERIOR',
'DESP_NUIN AS NUMERO_INTERIOR',
'DESP_COPO AS CODIGO_POSTAL',
'DESP_LOCA AS LOCALIDAD',
'DESP_COLO AS COLONIA',
'DESP_MUNI AS MUNICIPIO',
'DESP_ENTI AS ENTIDAD_FEDERATIVA',
'DESP_PAIS AS PAIS',
'DESP_COME AS COMENTARIOS',
'DESP_USRE AS USUARIO_REGISTRA',
'DESP_FERE AS FECHA_REGISTRA',
'DESP_USMO AS USUARIO_MODIFICA',
'DESP_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_DISPATCH_GETBYID000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate([$arrDispatch], $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrDispatch = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrDispatch[0]);
}
public function registerDispatch(Request $request) {
$validator = Validator::make($request->all(), [
// 'ID_DESPACHO' => 'required|string',
'NOMBRE_DESPACHO' => 'required|string',
'NOMBRE_RESPONSABLE' => 'required|string',
'APELLIDO_PATERNO' => 'required|string',
// 'APELLIDO_MATERNO' => 'required|string',
'LADA' => 'required|string',
'TELEFONO' => 'required|string',
'CORREO_ELECTRONICO' => 'required|string',
'CALLE' => 'required|string',
'NUMERO_EXTERIOR' => 'required|string',
// 'NUMERO_INTERIOR' => 'required|string',
'CODIGO_POSTAL' => 'required|string',
'COLONIA' => 'required|string',
'LOCALIDAD' => 'required|string',
'MUNICIPIO' => 'required|string',
'ENTIDAD_FEDERATIVA' => 'required|string',
'PAIS' => 'required|string',
// 'COMENTARIOS' => 'required|string',
'USUARIO' => 'required|string',
'LINE_NUMBER' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DISPATCH_REG000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_REG001: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$responseRequest = DB::table('S002V01TDESP')->insert([
'DESP_NULI' => $requestData['LINE_NUMBER'],
'DESP_NODE' => $requestData['NOMBRE_DESPACHO'],
'DESP_NOMB' => $requestData['NOMBRE_RESPONSABLE'],
'DESP_APPA' => $requestData['APELLIDO_PATERNO'],
'DESP_APMA' => $requestData['APELLIDO_MATERNO'],
'DESP_LADA' => $requestData['LADA'],
'DESP_TELE' => $requestData['TELEFONO'],
'DESP_CORR' => $requestData['CORREO_ELECTRONICO'],
'DESP_CALL' => $requestData['CALLE'],
'DESP_NUEX' => $requestData['NUMERO_EXTERIOR'],
'DESP_NUIN' => $requestData['NUMERO_INTERIOR'],
'DESP_COPO' => $requestData['CODIGO_POSTAL'],
'DESP_COLO' => $requestData['COLONIA'],
'DESP_LOCA' => $requestData['LOCALIDAD'],
'DESP_MUNI' => $requestData['MUNICIPIO'],
'DESP_ENTI' => $requestData['ENTIDAD_FEDERATIVA'],
'DESP_PAIS' => $requestData['PAIS'],
'DESP_COME' => $requestData['COMENTARIOS'],
'DESP_USRE' => $user,
'DESP_FERE' => $currentDate,
'DESP_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_REG002: Ocurrió un error al momento de insertar los datos en la base de datos.", $th->getMessage(), 500);
}
if ( !$responseRequest ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_REG003: Ocurrió un error al insertar el despacho", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
public function updateDispatch(Request $request) {
$validator = Validator::make($request->all(), [
'ID_DESPACHO' => 'required|string',
'NOMBRE_DESPACHO' => 'required|string',
'NOMBRE_RESPONSABLE' => 'required|string',
'APELLIDO_PATERNO' => 'required|string',
// 'APELLIDO_MATERNO' => 'required|string',
'LADA' => 'required|string',
'TELEFONO' => 'required|string',
'CORREO_ELECTRONICO' => 'required|string',
'CALLE' => 'required|string',
'NUMERO_EXTERIOR' => 'required|string',
// 'NUMERO_INTERIOR' => 'required|string',
'CODIGO_POSTAL' => 'required|string',
'COLONIA' => 'required|string',
'LOCALIDAD' => 'required|string',
'MUNICIPIO' => 'required|string',
'ENTIDAD_FEDERATIVA' => 'required|string',
'PAIS' => 'required|string',
// 'COMENTARIOS' => 'required|string',
'USUARIO' => 'required|string',
'LINE_NUMBER' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DISPATCH_UPD000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_UPD001: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$responseRequest = DB::table('S002V01TDESP')
->where('DESP_IDDE', '=', $requestData['ID_DESPACHO'],)
->where('DESP_NULI', '=', $requestData['LINE_NUMBER'])
->update([
'DESP_NODE' => $requestData['NOMBRE_DESPACHO'],
'DESP_NOMB' => $requestData['NOMBRE_RESPONSABLE'],
'DESP_APPA' => $requestData['APELLIDO_PATERNO'],
'DESP_APMA' => $requestData['APELLIDO_MATERNO'],
'DESP_LADA' => $requestData['LADA'],
'DESP_TELE' => $requestData['TELEFONO'],
'DESP_CORR' => $requestData['CORREO_ELECTRONICO'],
'DESP_CALL' => $requestData['CALLE'],
'DESP_NUEX' => $requestData['NUMERO_EXTERIOR'],
'DESP_NUIN' => $requestData['NUMERO_INTERIOR'],
'DESP_COPO' => $requestData['CODIGO_POSTAL'],
'DESP_LOCA' => $requestData['LOCALIDAD'],
'DESP_COLO' => $requestData['COLONIA'],
'DESP_MUNI' => $requestData['MUNICIPIO'],
'DESP_ENTI' => $requestData['ENTIDAD_FEDERATIVA'],
'DESP_PAIS' => $requestData['PAIS'],
'DESP_COME' => $requestData['COMENTARIOS'],
'DESP_USMO' => $user,
'DESP_FEMO' => $currentDate,
'DESP_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_UPD002: Ocurrió un error al momento de modificar los datos en la base de datos.", $th->getMessage(), 500);
}
if ( !$responseRequest ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_UPD003: Ocurrió un error al modificar el despacho", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitoso");
}
public function deleteDispatch(Request $request) {
$validator = Validator::make($request->all(), [
'ID_DESPACHO' => 'required|integer',
'USUARIO' => 'required|string',
'NUMERO_LINEA' => 'required|integer',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_DISPATCH_DEL000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
DB::beginTransaction();
$requestData = $request->all();
try {
$user = $this->encController->decrypt($requestData['USUARIO']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_DEL001: Ocurrió un error al obtener el contenido.", $th->getMessage(), 500);
}
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$responseRequest = DB::table('S002V01TDESP')
->where('DESP_IDDE', '=', $requestData['ID_DESPACHO'],)
->where('DESP_NULI', '=', $requestData['NUMERO_LINEA'])
->update([
'DESP_ESTA' => 'Eliminado',
'DESP_USMO' => $user,
'DESP_FEMO' => $currentDate,
'DESP_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_DEL002: Ocurrió un error al momento de eliminar los datos en la base de datos.", $th->getMessage(), 500);
}
if ( !$responseRequest ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_DISPATCH_DEL003: Ocurrió un error al eliminar el despacho", [], 500);
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa");
}
public function getOrderReception($user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$getOrderReception = DB::table('S002V01TORCO')
->where('ORCO_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('ORCO_ESTA', '=', 'Recibido')
->orWhere('ORCO_ESTA', '=', 'Facturado')
->orWhere('ORCO_ESTA', '=', 'Devuelto')
->join('S002V01TDESP','DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TLINE','LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TPROV','PROV_NUPR', '=', 'LINE_NUPR')
->get([
'ORCO_NUOR AS NUMERO_ORDEN',
'ORCO_ESTA AS ESTADO',
'ORCO_USRE AS USUARIO_REGISTRA',
'ORCO_FERE AS FECHA_REGISTRA',
'ORCO_USMO AS USUARIO_MODIFICA',
'ORCO_FEMO AS FECHA_MODIFICA',
'LINE_IDLI AS NUMERO_SOLICITUD_COMPRA',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS NOMBRE_COMERCIAL',
'DESP_IDDE AS ID_DESPACHO',
'DESP_NODE AS NOMBRE_DESPACHO',
]);
$arrOrderReception = json_decode(json_encode($getOrderReception), true);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_ORDER_RECEPTION_GET000: Ocurrió un error al obtener los datos.", $th->getMessage(), 500);
}
$responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrOrderReception, $line);
if ($responseCheckLatestUpdate['error']) {
return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500);
}
$arrOrderReception = $responseCheckLatestUpdate['response'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrOrderReception);
}
public function getListArtitleReception($orderNumber, $user, $line) {
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, 'ERR_RECEPTION_GET001:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$orderNumber = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET002: Ocurrió un error el número de la orden de compra.", $th->getMessage(), 500);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $orderNumber)
->where('ORCO_NULI', '=', $line)
->where('ORCO_ESTA', '=', 'Recibido')
->orWhere('ORCO_ESTA', '=', 'Facturado')
->first([
'ORCO_IDDE',
'ORCO_IDLI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET003: Ocurrió un error al obtener los datos de la orden de compra.", $th->getMessage(), 500);
}
if (empty($arrOrder)) {
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET004: No se pudo encontrar la información de la orden de compra. ", [], 500);
}
try {
$arrListOrder = DB::table('S002V01TARSE')
->where('ARSE_IDLI', '=', $arrOrder['ORCO_IDLI'])
->where('ARSE_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARSE_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->join('S002V01TARTI','ARTI_IDAR','=','ARSE_IDAR')
->join('S002V01TFAMI','ARTI_COFA','=','FAMI_COFA')
->join('S002V01TSUBF','ARTI_COSU','=','SUBF_COSU')
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->get([
'FAMI_COFA AS CODIGO_FAMILIA',
'FAMI_NOFA AS NOMBRE_FAMILIA',
'SUBF_COSU AS CODIGO_SUBFAMILIA',
'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
'ARTI_IDAR AS ID_ARTICULO',
'ARTI_CODI AS CODIGO_ARTICULO',
'ARTI_NOMB AS NOMBRE_ARTICULO',
'DEAR_IDDE AS ID_DESCRIPCION',
'DEAR_IMAG AS IMAGENES',
'DEAR_DESC AS DESCRIPCION',
'DEAR_CARA AS CARACTERISTICAS',
'DEAR_COWE AS COMPRA_WEB',
'INAR_IDIN AS ID_INFORMACION',
'INAR_CODI AS CODIGO_INFORMACION',
'INAR_MODE AS MODELO_INFORMACION',
'INAR_COMO AS CODIGO_MONEDA',
'INAR_PREC AS PRECIO_UNITARIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTICAS_INFORMACION',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET005: Ocurrió un error al obtener los datos de los artículos", $th->getMessage(), 500);
}
try {
foreach ($arrListOrder as $listOrder) {
$arrImagen = json_decode($listOrder->IMAGENES);
$arrUrlImage = array();
foreach ($arrImagen as $key => $imagen) {
$arrResponse = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if ($arrResponse['error']) {
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET006: Ocurrió un error al obtener la URL de la imágen.", $arrResponse['msg'], 500);
}
$arrUrlImage[] = $arrResponse['response']['public_uri'];
}
$listOrder->IMAGENES = $arrUrlImage;
}
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_RECEPTION_GET007: Ocurrió un error al obtener las imangenes de los artículos 1.",
$th->getMessage(),
500
);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrListOrder);
}
public function getInformartionArtitleToEquipment($orderNumber, $idInformation, $user, $line) {
try {
$orderNumber = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET000: Ocurrió un error al obtener el número de orden de compra.", $th->getMessage(), 500);
}
try {
$idInformation = $this->encController->decrypt($idInformation);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET001: Ocurrió un error al obtener el número de información.", $th->getMessage(), 500);
}
$arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line);
if ($arrResponseCheckUser['error']) {
return $this->responseController->makeResponse(true, 'ERR_INFORMATION_GET002:'.$arrResponseCheckUser['msg'], [], 401);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $orderNumber)
->where('ORCO_NULI', '=', $line)
->where('ORCO_ESTA', '=', 'Recibido')
->first([
'ORCO_IDDE AS ID_DESPACHO',
'ORCO_IDLI AS ID_LINEA_SOLICITUD',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET003: Ocurrió un error al obtener los datos de la orden de compra.", $th->getMessage(), 500);
}
if (empty($arrOrder)) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET004: El número de orden no existe o no se encuentra entregado.", [], 500);
}
try {
$arrHistoryOrder = DB::table('S002V01THIOR')
->where('HIOR_NUOR', '=', $orderNumber)
->where('HIOR_ESTA', '=', 'Activo')
->where('HIOR_ESOR', '=', 'Recibido')
->get([
'HIOR_FERE AS FECHA_REGISTRA',
'HIOR_FEMO AS FECHA_MODIFICA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET005: Ocurrió un error al obtener los del historial.", $th->getMessage(), 500);
}
$arrHistoryOrder = json_decode(json_encode($arrHistoryOrder), true);
if (empty($arrHistoryOrder)) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET006: No se pudo encontrar la información del historial.", [], 500);
}
$dateAdquisition = null;
foreach ($arrHistoryOrder as $key => $historyOrder) {
$tempDateAdquisition = $historyOrder['FECHA_MODIFICA'] !== null ? $historyOrder['FECHA_MODIFICA'] : $historyOrder['FECHA_REGISTRA'];
if (is_null($dateAdquisition)) {
$dateAdquisition = $tempDateAdquisition;
} else {
$carDateAdquisition = new Carbon($dateAdquisition);
$carTempDateAdquisition = new Carbon($tempDateAdquisition);
if ($carTempDateAdquisition->greaterThan($carDateAdquisition)) {
$dateAdquisition = $tempDateAdquisition;
}
}
}
if (is_null($dateAdquisition)) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET007: Ocurrió un error al obtener la fecha de adquisición.", [], 500);
}
try {
$arrListOrder = (array) DB::table('S002V01TARSE')
->where('ARSE_IDLI', '=', $arrOrder['ID_LINEA_SOLICITUD'])
->where('ARSE_IDIN', '=', $idInformation)
->where('ARSE_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARSE_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->join('S002V01TARTI','ARTI_IDAR','=','ARSE_IDAR')
->join('S002V01TFAMI','ARTI_COFA','=','FAMI_COFA')
->join('S002V01TSUBF','ARTI_COSU','=','SUBF_COSU')
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TPROV','PROV_NUPR','=','ARSE_NUPR')
->first([
'FAMI_COFA AS CODIGO_FAMILIA',
'FAMI_NOFA AS NOMBRE_FAMILIA',
'SUBF_COSU AS CODIGO_SUBFAMILIA',
'SUBF_NOSU AS NOMBRE_SUBFAMILIA',
'ARTI_IDAR AS ID_ARTICULO',
'ARTI_CODI AS CODIGO_ARTICULO',
'ARTI_NOMB AS NOMBRE_ARTICULO',
'DEAR_IDDE AS ID_DESCRIPCION',
'DEAR_IMAG AS IMAGENES',
'DEAR_DESC AS DESCRIPCION',
'DEAR_CARA AS CARACTERISTICAS',
'DEAR_COWE AS COMPRA_WEB',
'INAR_IDIN AS ID_INFORMACION',
'INAR_CODI AS CODIGO_INFORMACION',
'INAR_MODE AS MODELO_INFORMACION',
'INAR_COMO AS CODIGO_MONEDA',
'INAR_PREC AS PRECIO_UNITARIO',
'INAR_MOMI AS MONTO_MINIMO',
'INAR_CARA AS CARACTERISTICAS_INFORMACION',
'PROV_NUPR AS NUMERO_PROVEEDOR',
'PROV_NOCO AS NOMBRE_PROVEEDOR',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET008: Ocurrió un error al obtener los datos de los artículos", $th->getMessage(), 500);
}
if (empty($arrListOrder)) {
return $this->responseController->makeResponse(true, "ERR_INFORMATION_GET009: No existen artículos regitrados en la orden de compra.", [], 500);
}
try {
$arrImagen = json_decode($arrListOrder['IMAGENES']);
$arrUrlImage = array();
foreach ($arrImagen as $key => $imagen) {
$arrResponse = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line);
if($arrResponse['error']){
return $this->responseController->makeResponse(true, "ERR_RECEPTION_GET006: Ocurrió un error al obtener la URL de la imágen.", $arrResponse['msg'], 500);
}
$arrUrlImage[] = $arrResponse['response']['public_uri'];
}
$arrListOrder['IMAGENES'] = $arrUrlImage;
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_RECEPTION_GET007: Ocurrió un error al obtener las imangenes de los artículos.",
$th->getMessage(),
500
);
}
$arrListOrder['FECHA_ADQUISICION'] = $dateAdquisition;
$arrListOrder['ID_LINEA_SOLICITUD'] = $arrOrder['ID_LINEA_SOLICITUD'];
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrListOrder);
}
public function generateSheetDeliveryListXLS( $orderNumber, $user, $line ) {
try {
$idOrder = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
$headerA1 = 'Número de orden';
$contentB1 = $arrOrder['ORCO_NUOR'];
$activeWorksheet->setCellValue("A1", $headerA1);
$activeWorksheet->setCellValue("B1", $contentB1);
$activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
$headerA2 = 'Estado de la orden';
$contentB2 = $arrOrder['ORCO_ESTA'];
$activeWorksheet->setCellValue("A2", $headerA2);
$activeWorksheet->setCellValue("B2", $contentB2);
$activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
$headerA3 = 'Numero de línea de solicitud';
$contentB3 = $arrOrder['LINE_IDLI'];
$activeWorksheet->setCellValue("A3", $headerA3);
$activeWorksheet->setCellValue("B3", $contentB3);
$activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
$headerA4 = '';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Preventivo';
$contentB4 = $arrOrder['LINE_OTPR'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Correctivo';
$contentB4 = $arrOrder['LINE_OTCO'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
} else {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
}
$activeWorksheet->setCellValue("A4", $headerA4 );
$activeWorksheet->setCellValue("B4", $contentB4 );
$activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
$headerA5 = 'ID Despacho';
$contentB5 = $arrOrder['DESP_IDDE'];
$activeWorksheet->setCellValue("A5", $headerA5 );
$activeWorksheet->setCellValue("B5", $contentB5 );
$activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
$headerA6 = 'Despacho';
$contentB6 = $arrOrder['DESP_NODE'];
$activeWorksheet->setCellValue("A6", $headerA6 );
$activeWorksheet->setCellValue("B6", $contentB6 );
$activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
$headerA7 = 'Responsable del despacho';
$contentB7 = $arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'];
$activeWorksheet->setCellValue("A7", $headerA7 );
$activeWorksheet->setCellValue("B7", $contentB7 );
$activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
$headerA8 = 'Teléfono del despacho';
$contentB8 = $arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'];
$activeWorksheet->setCellValue("A8", $headerA8 );
$activeWorksheet->setCellValue("B8", $contentB8 );
$activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
$headerA9 = 'Correo electrónico del despacho';
$contentB9 = $arrOrder['DESP_CORR'];
$activeWorksheet->setCellValue("A9", $headerA9 );
$activeWorksheet->setCellValue("B9", $contentB9 );
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerA10 = 'Calle del despacho';
$contentB10 = $arrOrder['DESP_CALL'];
$activeWorksheet->setCellValue("A10", $headerA10 );
$activeWorksheet->setCellValue("B10", $contentB10 );
$activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
$headerA11 = 'Número exterior';
$contentB11 = $arrOrder['DESP_NUEX'];
$activeWorksheet->setCellValue("A11", $headerA11 );
$activeWorksheet->setCellValue("B11", $contentB11 );
$activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
$headerA12 = 'Número interior';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$contentB12 = $arrOrder['DESP_NUIN'];
} else {
$contentB12 = 'No aplica';
}
$activeWorksheet->setCellValue("A12", $headerA12 );
$activeWorksheet->setCellValue("B12", $contentB12 );
$activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
$headerA13 = 'Código postal';
$contentB13 = $arrOrder['DESP_COPO'];
$activeWorksheet->setCellValue("A13", $headerA13 );
$activeWorksheet->setCellValue("B13", $contentB13 );
$activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
$headerA14 = 'Colonia';
$contentB14 = $arrOrder['DESP_COLO'];
$activeWorksheet->setCellValue("A14", $headerA14 );
$activeWorksheet->setCellValue("B14", $contentB14 );
$activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
$headerA15 = 'Localidad';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$contentB15 = $arrOrder['DESP_LOCA'];
} else {
$contentB15 = 'No aplica';
}
$activeWorksheet->setCellValue("A15", $headerA15 );
$activeWorksheet->setCellValue("B15", $contentB15 );
$activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
$headerA16 = 'Municipio';
$contentB16 = $arrOrder['DESP_MUNI'];
$activeWorksheet->setCellValue("A16", $headerA16 );
$activeWorksheet->setCellValue("B16", $contentB16 );
$activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
$headerA17 = 'Entidad Federativa';
$contentB17 = $arrOrder['DESP_ENTI'];
$activeWorksheet->setCellValue("A17", $headerA17 );
$activeWorksheet->setCellValue("B17", $contentB17 );
$activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
$headerA18 = 'País';
$contentB18 = $arrOrder['DESP_PAIS'];
$activeWorksheet->setCellValue("A18", $headerA18 );
$activeWorksheet->setCellValue("B18", $contentB18 );
$activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
$headerA19 = 'Número de proveedor';
$contentB19 = $arrOrder['PROV_NUPR'];
$activeWorksheet->setCellValue("A19", $headerA19 );
$activeWorksheet->setCellValue("B19", $contentB19 );
$activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
$headerA20 = 'Número de subcontratista';
$contentB20 = $arrOrder['PROV_IDPS'];
$activeWorksheet->setCellValue("A20", $headerA20 );
$activeWorksheet->setCellValue("B20", $contentB20 );
$activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
$headerA21 = 'Nombre comercial del proveedor';
$contentB21 = $arrOrder['PROV_NOCO'];
$activeWorksheet->setCellValue("A21", $headerA21 );
$activeWorksheet->setCellValue("B21", $contentB21 );
$activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
$headerA22 = 'Referencia fiscal del proveedor';
$contentB22 = $arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')';
$activeWorksheet->setCellValue("A22", $headerA22 );
$activeWorksheet->setCellValue("B22", $contentB22 );
$activeWorksheet->getStyle( "A22" )->getFont()->setBold(true);
$headerA23 = 'Responsable del proveedor';
$contentB23 = $arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'];
$activeWorksheet->setCellValue("A23", $headerA23 );
$activeWorksheet->setCellValue("B23", $contentB23 );
$activeWorksheet->getStyle( "A23" )->getFont()->setBold(true);
$headerA24 = 'Correo electrónico del proveedor';
$contentB24 = $arrOrder['PROV_CORR'];
$activeWorksheet->setCellValue("A24", $headerA24 );
$activeWorksheet->setCellValue("B24", $contentB24 );
$activeWorksheet->getStyle( "A24" )->getFont()->setBold(true);
$headerA25 = 'Teléfono del proveedor';
$contentB25 = $arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'];
$activeWorksheet->setCellValue("A25", $headerA25 );
$activeWorksheet->setCellValue("B25", $contentB25 );
$activeWorksheet->getStyle( "A25" )->getFont()->setBold(true);
$headerA26 = '';
$contentB26 = '';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'R.F.C. del proveedor';
$contentB26 = $arrOrder['PROV_XRFC'];
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'TAX ID. del proveedor';
$contentB26 = $arrOrder['PROV_XTAX'];
} else {
$headerA26 = 'R.F.C. / TAX ID';
$contentB26 = 'No aplica';
}
$activeWorksheet->setCellValue("A26", $headerA26 );
$activeWorksheet->setCellValue("B26", $contentB26 );
$activeWorksheet->getStyle( "A26" )->getFont()->setBold(true);
$activeWorksheet->getColumnDimension("A")->setAutoSize(true);
$activeWorksheet->getColumnDimension("B")->setAutoSize(true);
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$activeWorksheetArtitle = $spreadsheet->getActiveSheet()->setTitle('Artículos de la orden');
$arrHeaderArtitle = array(
/* A */ 'ID Artículo',
/* B */ 'Código del Artíulo',
/* C */ 'Artículo',
/* D */ 'Familia',
/* E */ 'Subfamilia',
/* F */ 'Descripción',
/* G */ 'Características',
/* H */ 'Unidad',
/* I */ 'Código',
/* J */ 'Modelo',
/* L */ 'Precio Unitario',
/* M */ 'Cantidad',
/* N */ 'Precio Total',
/* O */ 'No. de selección',
);
foreach ($arrArtitle as $key => $artitle) {
$key = $key + 2;
$activeWorksheetArtitle->setCellValue("A".$key, $artitle['ARTI_IDAR']);
$activeWorksheetArtitle->setCellValue("B".$key, $artitle['ARTI_CODI']);
$activeWorksheetArtitle->setCellValue("C".$key, $artitle['ARTI_NOMB']);
$activeWorksheetArtitle->setCellValue("D".$key, $artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')');
$activeWorksheetArtitle->setCellValue("E".$key, $artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')');
$activeWorksheetArtitle->setCellValue("F".$key, $artitle['DEAR_DESC']);
$activeWorksheetArtitle->setCellValue("G".$key, $artitle['DEAR_CARA']);
$activeWorksheetArtitle->setCellValue("H".$key, $artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')');
$activeWorksheetArtitle->setCellValue("I".$key, $artitle['INAR_CODI']);
$activeWorksheetArtitle->setCellValue("J".$key, $artitle['INAR_MODE']);
$activeWorksheetArtitle->setCellValue("K".$key, '$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("L".$key, $artitle['CANTIDAD']);
$activeWorksheetArtitle->setCellValue("M".$key, '$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD']) . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("N".$key, $artitle['ARSE_IDAS']);
}
foreach ($arrHeaderArtitle as $keyHeaderArtitle => $headerArtitle) {
$activeWorksheetArtitle->setCellValue( $arrAlphabet[$keyHeaderArtitle]."1", $headerArtitle);
$activeWorksheetArtitle->getColumnDimension( $arrAlphabet[$keyHeaderArtitle] )->setAutoSize(true);
$activeWorksheetArtitle->getStyle( $arrAlphabet[$keyHeaderArtitle]."1" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetDeliveryListPDF( $orderNumber, $user, $line ) {
try {
$idOrder = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$index = 0;
$arrArtitlesTemp = array();
foreach ($arrArtitle as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitlesTemp, 'INAR_IDIN'));
$arrArtitlesTemp[$indexArtitle]['CANTIDAD'] = $arrArtitlesTemp[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitlesTemp[$index] = $artitles;
$arrArtitlesTemp[$index]['CANTIDAD'] = 1;
}
}
}
$arrArtitle = $arrArtitlesTemp;
$html = '
Document
Número de Orden de Compra:
'.$arrOrder['ORCO_NUOR'].'
Estado de la orden:
'.$arrOrder['ORCO_ESTA'].'
Numero de línea de solicitud:
'.$arrOrder['LINE_IDLI'].'
';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Preventivo:
'.$arrOrder['LINE_OTPR'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Correctivo:
'.$arrOrder['LINE_OTCO'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo:
No aplica
';
} else {
$html.='
Orden de Trabajo:
No aplica
';
}
$html.='
ID Despacho:
'.$arrOrder['DESP_IDDE'].'
Despacho:
'.$arrOrder['DESP_NODE'].'
Responsable del despacho:
'.$arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'].'
Teléfono del despacho:
'.$arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'].'
Correo electrónico del despacho:
'.$arrOrder['DESP_CORR'].'
Calle del despacho:
'.$arrOrder['DESP_CALL'].'
Número exterior:
'.$arrOrder['DESP_NUEX'].'
';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$html.='
Número interior:
'.$arrOrder['DESP_NUIN'].'
';
} else {
$html.='
Número interior:
No aplica
';
}
$html.='
Código postal:
'.$arrOrder['DESP_COPO'].'
Colonia:
'.$arrOrder['DESP_COLO'].'
';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$html.='
Localidad:
'.$arrOrder['DESP_LOCA'].'
';
} else {
$html.='
Localidad:
No aplica
';
}
$html.='
Municipio:
'.$arrOrder['DESP_MUNI'].'
Entidad Federativa:
'.$arrOrder['DESP_ENTI'].'
País:
'.$arrOrder['DESP_PAIS'].'
Número de proveedor:
'.$arrOrder['PROV_NUPR'].'
Número de subcontratista:
'.$arrOrder['PROV_IDPS'].'
Nombre comercial del proveedor:
'.$arrOrder['PROV_NOCO'].'
Referencia fiscal del proveedor:
'.$arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')'.'
Responsable del proveedor:
'.$arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'].'
Correo electrónico del proveedor:
'.$arrOrder['PROV_CORR'].'
Teléfono del proveedor:
'.$arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'].'
';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
R.F.C. del proveedor:
'.$arrOrder['PROV_XRFC'].'
';
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
TAX ID. del proveedor:
'.$arrOrder['PROV_XTAX'].'
';
} else {
$html.='
R.F.C. / TAX ID:
No aplica
';
}
if ( !empty($arrArtitle) ) {
$html.='
Artículos
';
$html.='
| ID Artículo |
Código del artíulo |
Artículo |
Familia |
Subfamilia |
Unidad |
Código |
Modelo |
Precio Unitario |
Cantidad |
Precio Total |
No. de selección |
';
foreach ($arrArtitle as $keyArtitle => $artitle) {
$html.= '
| '.$artitle['ARTI_IDAR'].' |
'.$artitle['ARTI_CODI'].' |
'.$artitle['ARTI_NOMB'].' |
'.$artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')'.' |
'.$artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')'.' |
'.$artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')'.' |
'.$artitle['INAR_CODI'].' |
'.$artitle['INAR_MODE'].' |
'.'$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] .' |
'.$artitle['CANTIDAD'].' |
'.'$'. ($artitle['INAR_PREC'] * $artitle['CANTIDAD'] ) . ' ' . $artitle['CAMO_COMO'] .' |
'.$artitle['ARSE_IDAS'].' |
';
}
$html.= '
';
}
$html.='';
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = $this->resourcesController->pathService.'\\public\\public_files\\'; // API JEAN
} else {
$filePath = $this->resourcesController->pathService.'\\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
} else {
$ubic = $this->resourcesController->pathService."\\storage\\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function getCompareInvoice($user, $line) {
try {
$getInvoice = DB::table('S002V01TFALS')
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->join('S002V01TLINE','LINE_IDLI','=','FALS_IDLI')
->join('S002V01TDLSC','FALS_IDFA','=','DLSC_IDFA')
->get([
'FALS_IDFA',
'FALS_IDLI',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_ESTA',
'FALS_USRE',
'FALS_FERE',
'FALS_USMO',
'FALS_FEMO',
'LINE_NUPR',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_DESC',
'DLSC_ESTA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_GET000: Ocurrió un error al obtener las facturas.", $th->getMessage(), 500);
}
$arrInvoice = json_decode(json_encode($getInvoice), true);
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrInvoice);
}
public function getInvoicePayment($user, $line ){
try {
$getInvoice = DB::table('S002V01TFALS')
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DLSC_TIPO', '=', 'Abono')
->join('S002V01TLINE','LINE_IDLI','=','FALS_IDLI')
->join('S002V01TDLSC','FALS_IDFA','=','DLSC_IDFA')
->get([
'FALS_IDFA',
'FALS_IDLI',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_ESTA',
'FALS_USRE',
'FALS_FERE',
'FALS_USMO',
'FALS_FEMO',
'LINE_NUPR',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_DESC',
'DLSC_ESTA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_GET000: Ocurrió un error al obtener las facturas.", $th->getMessage(), 500);
}
$arrInvoice = json_decode(json_encode($getInvoice), true);
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrInvoice);
}
public function getInvoiceById($idInvoice, $user, $line) {
try {
$idInvoice = $this->encController->decrypt($idInvoice);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_GETBYID000: Ocurrió un error al obtener el identificador de la factura.", $th->getMessage(), 500);
}
try {
$arrInvoice = (array) DB::table('S002V01TFALS')
->where('FALS_IDFA', '=', $idInvoice)
->where('FALS_NULI', '=', $line)
->where('FALS_ESTA', '=', 'Activo')
->first([
'FALS_IDFA',
'FALS_NULI',
'FALS_IDLI',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_GETBYID001: Ocurrió un error al obtener la factura.", $th->getMessage(), 500);
}
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrInvoice);
}
public function getBudgetManagement($user, $line) {
try {
$getInvoice = DB::table('S002V01TFALS')
->where('FALS_NULI', '=', $line)
->where('DLSC_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->whereNotNull('LINE_OTPR')
->orWhereNotNull('LINE_OTCO')
->join('S002V01TLINE','LINE_IDLI','=','FALS_IDLI')
->join('S002V01TDLSC','FALS_IDFA','=','DLSC_IDFA')
->get([
'FALS_IDFA',
'FALS_IDLI',
'FALS_CODO',
'FALS_UUID',
'FALS_VERS',
'FALS_FEEM',
'FALS_RFCE',
'FALS_RFCR',
'FALS_FOLI',
'FALS_SERI',
'FALS_FOPA',
'FALS_MEPA',
'FALS_TICA',
'FALS_MONE',
'FALS_COPA',
'FALS_ESTA',
'FALS_USRE',
'FALS_FERE',
'FALS_USMO',
'FALS_FEMO',
'LINE_NUPR',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DLSC_IDDO',
'DLSC_CODO',
'DLSC_TIPO',
'DLSC_DESC',
'DLSC_ESTA',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_GET000: Ocurrió un error al obtener las facturas.", $th->getMessage(), 500);
}
$arrInvoice = json_decode(json_encode($getInvoice), true);
return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrInvoice);
}
public function generateSheetInvoiceXLSInvoice( $orderNumber, $user, $line ) {
try {
$idOrder = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet()->setTitle($arrOrder['ORCO_NUOR']);
$headerA1 = 'Número de orden';
$contentB1 = $arrOrder['ORCO_NUOR'];
$activeWorksheet->setCellValue("A1", $headerA1);
$activeWorksheet->setCellValue("B1", $contentB1);
$activeWorksheet->getStyle( "A1" )->getFont()->setBold(true);
$headerA2 = 'Estado de la orden';
$contentB2 = $arrOrder['ORCO_ESTA'];
$activeWorksheet->setCellValue("A2", $headerA2);
$activeWorksheet->setCellValue("B2", $contentB2);
$activeWorksheet->getStyle( "A2" )->getFont()->setBold(true);
$headerA3 = 'Numero de línea de solicitud';
$contentB3 = $arrOrder['LINE_IDLI'];
$activeWorksheet->setCellValue("A3", $headerA3);
$activeWorksheet->setCellValue("B3", $contentB3);
$activeWorksheet->getStyle( "A3" )->getFont()->setBold(true);
$headerA4 = '';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Preventivo';
$contentB4 = $arrOrder['LINE_OTPR'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo Correctivo';
$contentB4 = $arrOrder['LINE_OTCO'];
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
} else {
$headerA4 = 'Orden de Trabajo';
$contentB4 = 'No aplica';
}
$activeWorksheet->setCellValue("A4", $headerA4 );
$activeWorksheet->setCellValue("B4", $contentB4 );
$activeWorksheet->getStyle( "A4" )->getFont()->setBold(true);
$headerA5 = 'ID Despacho';
$contentB5 = $arrOrder['DESP_IDDE'];
$activeWorksheet->setCellValue("A5", $headerA5 );
$activeWorksheet->setCellValue("B5", $contentB5 );
$activeWorksheet->getStyle( "A5" )->getFont()->setBold(true);
$headerA6 = 'Despacho';
$contentB6 = $arrOrder['DESP_NODE'];
$activeWorksheet->setCellValue("A6", $headerA6 );
$activeWorksheet->setCellValue("B6", $contentB6 );
$activeWorksheet->getStyle( "A6" )->getFont()->setBold(true);
$headerA7 = 'Responsable del despacho';
$contentB7 = $arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'];
$activeWorksheet->setCellValue("A7", $headerA7 );
$activeWorksheet->setCellValue("B7", $contentB7 );
$activeWorksheet->getStyle( "A7" )->getFont()->setBold(true);
$headerA8 = 'Teléfono del despacho';
$contentB8 = $arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'];
$activeWorksheet->setCellValue("A8", $headerA8 );
$activeWorksheet->setCellValue("B8", $contentB8 );
$activeWorksheet->getStyle( "A8" )->getFont()->setBold(true);
$headerA9 = 'Correo electrónico del despacho';
$contentB9 = $arrOrder['DESP_CORR'];
$activeWorksheet->setCellValue("A9", $headerA9 );
$activeWorksheet->setCellValue("B9", $contentB9 );
$activeWorksheet->getStyle( "A9" )->getFont()->setBold(true);
$headerA10 = 'Calle del despacho';
$contentB10 = $arrOrder['DESP_CALL'];
$activeWorksheet->setCellValue("A10", $headerA10 );
$activeWorksheet->setCellValue("B10", $contentB10 );
$activeWorksheet->getStyle( "A10" )->getFont()->setBold(true);
$headerA11 = 'Número exterior';
$contentB11 = $arrOrder['DESP_NUEX'];
$activeWorksheet->setCellValue("A11", $headerA11 );
$activeWorksheet->setCellValue("B11", $contentB11 );
$activeWorksheet->getStyle( "A11" )->getFont()->setBold(true);
$headerA12 = 'Número interior';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$contentB12 = $arrOrder['DESP_NUIN'];
} else {
$contentB12 = 'No aplica';
}
$activeWorksheet->setCellValue("A12", $headerA12 );
$activeWorksheet->setCellValue("B12", $contentB12 );
$activeWorksheet->getStyle( "A12" )->getFont()->setBold(true);
$headerA13 = 'Código postal';
$contentB13 = $arrOrder['DESP_COPO'];
$activeWorksheet->setCellValue("A13", $headerA13 );
$activeWorksheet->setCellValue("B13", $contentB13 );
$activeWorksheet->getStyle( "A13" )->getFont()->setBold(true);
$headerA14 = 'Colonia';
$contentB14 = $arrOrder['DESP_COLO'];
$activeWorksheet->setCellValue("A14", $headerA14 );
$activeWorksheet->setCellValue("B14", $contentB14 );
$activeWorksheet->getStyle( "A14" )->getFont()->setBold(true);
$headerA15 = 'Localidad';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$contentB15 = $arrOrder['DESP_LOCA'];
} else {
$contentB15 = 'No aplica';
}
$activeWorksheet->setCellValue("A15", $headerA15 );
$activeWorksheet->setCellValue("B15", $contentB15 );
$activeWorksheet->getStyle( "A15" )->getFont()->setBold(true);
$headerA16 = 'Municipio';
$contentB16 = $arrOrder['DESP_MUNI'];
$activeWorksheet->setCellValue("A16", $headerA16 );
$activeWorksheet->setCellValue("B16", $contentB16 );
$activeWorksheet->getStyle( "A16" )->getFont()->setBold(true);
$headerA17 = 'Entidad Federativa';
$contentB17 = $arrOrder['DESP_ENTI'];
$activeWorksheet->setCellValue("A17", $headerA17 );
$activeWorksheet->setCellValue("B17", $contentB17 );
$activeWorksheet->getStyle( "A17" )->getFont()->setBold(true);
$headerA18 = 'País';
$contentB18 = $arrOrder['DESP_PAIS'];
$activeWorksheet->setCellValue("A18", $headerA18 );
$activeWorksheet->setCellValue("B18", $contentB18 );
$activeWorksheet->getStyle( "A18" )->getFont()->setBold(true);
$headerA19 = 'Número de proveedor';
$contentB19 = $arrOrder['PROV_NUPR'];
$activeWorksheet->setCellValue("A19", $headerA19 );
$activeWorksheet->setCellValue("B19", $contentB19 );
$activeWorksheet->getStyle( "A19" )->getFont()->setBold(true);
$headerA20 = 'Número de subcontratista';
$contentB20 = $arrOrder['PROV_IDPS'];
$activeWorksheet->setCellValue("A20", $headerA20 );
$activeWorksheet->setCellValue("B20", $contentB20 );
$activeWorksheet->getStyle( "A20" )->getFont()->setBold(true);
$headerA21 = 'Nombre comercial del proveedor';
$contentB21 = $arrOrder['PROV_NOCO'];
$activeWorksheet->setCellValue("A21", $headerA21 );
$activeWorksheet->setCellValue("B21", $contentB21 );
$activeWorksheet->getStyle( "A21" )->getFont()->setBold(true);
$headerA22 = 'Referencia fiscal del proveedor';
$contentB22 = $arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')';
$activeWorksheet->setCellValue("A22", $headerA22 );
$activeWorksheet->setCellValue("B22", $contentB22 );
$activeWorksheet->getStyle( "A22" )->getFont()->setBold(true);
$headerA23 = 'Responsable del proveedor';
$contentB23 = $arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'];
$activeWorksheet->setCellValue("A23", $headerA23 );
$activeWorksheet->setCellValue("B23", $contentB23 );
$activeWorksheet->getStyle( "A23" )->getFont()->setBold(true);
$headerA24 = 'Correo electrónico del proveedor';
$contentB24 = $arrOrder['PROV_CORR'];
$activeWorksheet->setCellValue("A24", $headerA24 );
$activeWorksheet->setCellValue("B24", $contentB24 );
$activeWorksheet->getStyle( "A24" )->getFont()->setBold(true);
$headerA25 = 'Teléfono del proveedor';
$contentB25 = $arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'];
$activeWorksheet->setCellValue("A25", $headerA25 );
$activeWorksheet->setCellValue("B25", $contentB25 );
$activeWorksheet->getStyle( "A25" )->getFont()->setBold(true);
$headerA26 = '';
$contentB26 = '';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'R.F.C. del proveedor';
$contentB26 = $arrOrder['PROV_XRFC'];
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$headerA26 = 'TAX ID. del proveedor';
$contentB26 = $arrOrder['PROV_XTAX'];
} else {
$headerA26 = 'R.F.C. / TAX ID';
$contentB26 = 'No aplica';
}
$activeWorksheet->setCellValue("A26", $headerA26 );
$activeWorksheet->setCellValue("B26", $contentB26 );
$activeWorksheet->getStyle( "A26" )->getFont()->setBold(true);
$activeWorksheet->getColumnDimension("A")->setAutoSize(true);
$activeWorksheet->getColumnDimension("B")->setAutoSize(true);
$arrAlphabet = $this->resourcesController->arrAlphabet;
$spreadsheet->createSheet();
$spreadsheet->setActiveSheetIndex(1);
$activeWorksheetArtitle = $spreadsheet->getActiveSheet()->setTitle('Artículos de la orden');
$arrHeaderArtitle = array(
/* A */ 'ID Artículo',
/* B */ 'Código del artíulo',
/* C */ 'Artículo',
/* D */ 'Familia',
/* E */ 'Subfamilia',
/* F */ 'Descripción',
/* G */ 'Características',
/* H */ 'Unidad',
/* I */ 'Código',
/* J */ 'Modelo',
/* K */ 'Precio Unitario',
// /* L */ 'Cantidad',
// /* M */ 'Precio Total',
/* N */ 'No. de selección',
);
foreach ($arrArtitle as $key => $artitle) {
$key = $key + 2;
$activeWorksheetArtitle->setCellValue("A".$key, $artitle['ARTI_IDAR']);
$activeWorksheetArtitle->setCellValue("B".$key, $artitle['ARTI_CODI']);
$activeWorksheetArtitle->setCellValue("C".$key, $artitle['ARTI_NOMB']);
$activeWorksheetArtitle->setCellValue("D".$key, $artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')');
$activeWorksheetArtitle->setCellValue("E".$key, $artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')');
$activeWorksheetArtitle->setCellValue("F".$key, $artitle['DEAR_DESC']);
$activeWorksheetArtitle->setCellValue("G".$key, $artitle['DEAR_CARA']);
$activeWorksheetArtitle->setCellValue("H".$key, $artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')');
$activeWorksheetArtitle->setCellValue("I".$key, $artitle['INAR_CODI']);
$activeWorksheetArtitle->setCellValue("J".$key, $artitle['INAR_MODE']);
$activeWorksheetArtitle->setCellValue("K".$key, '$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] );
// $activeWorksheetArtitle->setCellValue("L".$key, $artitle['ARSE_CANT']);
// $activeWorksheetArtitle->setCellValue("M".$key, '$'. $artitle['ARSE_PRTO'] . ' ' . $artitle['CAMO_COMO'] );
$activeWorksheetArtitle->setCellValue("N".$key, $artitle['ARSE_IDAS']);
}
foreach ($arrHeaderArtitle as $keyHeaderArtitle => $headerArtitle) {
$activeWorksheetArtitle->setCellValue( $arrAlphabet[$keyHeaderArtitle]."1", $headerArtitle);
$activeWorksheetArtitle->getColumnDimension( $arrAlphabet[$keyHeaderArtitle] )->setAutoSize(true);
$activeWorksheetArtitle->getStyle( $arrAlphabet[$keyHeaderArtitle]."1" )->getFont()->setBold(true);
}
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'xlsx';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = 'C:/ITTEC/SAM/Dev/SistemaMantenimiento/sistema-mantenimiento-back/public/public_files/'; // API JEAN
} else {
$filePath = 'C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath.$fileName;
if ( file_exists( $tempFile ) ) {
if ( !unlink( $tempFile ) ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET021: Ocurrió un error al eliminar el siguiente archivo: " . $tempFile,
[],
500
);
}
}
try {
$writer = new Xlsx($spreadsheet);
ob_start();
$writer->save('php://output');
$base64 = base64_encode(ob_get_clean());
$validate = \File::put( $tempFile, base64_decode($base64));
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET022: Ocurrió un error al guardar el documento.",
$th->getMessage(),
500
);
}
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
} else {
$ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function generateSheetInvoicePDFInvoice( $orderNumber, $user, $line ) {
try {
$idOrder = $this->encController->decrypt($orderNumber);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET000: Ocurrió un error al obtener el número del proveedor.",
$th->getMessage(),
500
);
}
try {
$user = $this->encController->decrypt($user);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET001: Ocurrió un error al obtener el usuario.",
$th->getMessage(),
500
);
}
try {
$arrOrder = (array) DB::table('S002V01TORCO')
->where('ORCO_NUOR', '=', $idOrder)
->where('ORCO_NULI', '=', $line)
->where('LINE_NULI', '=', $line)
->where('DESP_NULI', '=', $line)
->where('PROV_NULI', '=', $line)
->where('DESP_ESTA', '=', 'Activo')
->where('PROV_ESTA', '=', 'Activo')
->join('S002V01TLINE', 'LINE_IDLI', '=', 'ORCO_IDLI')
->join('S002V01TDESP', 'DESP_IDDE', '=', 'ORCO_IDDE')
->join('S002V01TPROV', 'PROV_NUPR', '=', 'LINE_NUPR')
->join('S002V01TREFI', 'REFI_CRFI', '=', 'PROV_CRFI')
->first([
'ORCO_NUOR',
'ORCO_ESTA',
'LINE_IDLI',
'LINE_OTPR',
'LINE_OTCO',
'LINE_ESTA',
'DESP_IDDE',
'DESP_NODE',
'DESP_NOMB',
'DESP_APPA',
'DESP_APMA',
'DESP_LADA',
'DESP_TELE',
'DESP_CORR',
'DESP_CALL',
'DESP_NUEX',
'DESP_NUIN',
'DESP_COPO',
'DESP_COLO',
'DESP_LOCA',
'DESP_MUNI',
'DESP_ENTI',
'DESP_PAIS',
'DESP_COME',
'PROV_NUPR',
'PROV_IDPS',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
'REFI_CRFI',
'REFI_DRFI',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
try {
$arrArtitle = DB::table('S002V01TARSE')
->where('ARSE_NULI', '=', $line)
->where('INAR_NULI', '=', $line)
->where('CAMO_NULI', '=', $line)
->where('DEAR_NULI', '=', $line)
->where('UNID_NULI', '=', $line)
->where('ARTI_NULI', '=', $line)
->where('FAMI_NULI', '=', $line)
->where('SUBF_NULI', '=', $line)
->where('ARSE_ESTA', '=', 'Activo')
->where('INAR_ESTA', '=', 'Activo')
->where('CAMO_ESTA', '=', 'Activo')
->where('DEAR_ESTA', '=', 'Activo')
->where('UNID_ESTA', '=', 'Activo')
->where('ARTI_ESTA', '=', 'Activo')
->where('FAMI_ESTA', '=', 'Activo')
->where('SUBF_ESTA', '=', 'Activo')
->where('ARSE_IDLI', '=', $arrOrder['LINE_IDLI'])
->where('ARSE_NUPR', '=', $arrOrder['PROV_NUPR'])
->join('S002V01TINAR','INAR_IDIN','=','ARSE_IDIN')
->join('S002V01TCAMO','CAMO_COMO','=','INAR_COMO')
->join('S002V01TDEAR','DEAR_IDDE','=','INAR_IDDE')
->join('S002V01TUNID','UNID_IDUN','=','DEAR_IDUN')
->join('S002V01TARTI','ARTI_IDAR','=','DEAR_IDAR')
->join('S002V01TFAMI','FAMI_COFA','=','ARTI_COFA')
->join('S002V01TSUBF','SUBF_COSU','=','ARTI_COSU')
->get([
'ARSE_IDAS',
'ARSE_IDLI',
'ARSE_CANT',
'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'ARTI_IDAR',
'ARTI_CODI',
'ARTI_NOMB',
'FAMI_COFA',
'FAMI_NOFA',
'SUBF_COSU',
'SUBF_NOSU',
]);
$arrArtitle = json_decode( json_encode( $arrArtitle ), true );
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_ORDER_SHEET002: Ocurrió un error al obtener la información de la orden de compra.",
$th->getMessage(),
500
);
}
$html = '
Document
Número de Orden de Compra:
'.$arrOrder['ORCO_NUOR'].'
Estado de la orden:
'.$arrOrder['ORCO_ESTA'].'
Numero de línea de solicitud:
'.$arrOrder['LINE_IDLI'].'
';
if ( !is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Preventivo:
'.$arrOrder['LINE_OTPR'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && !is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo Correctivo:
'.$arrOrder['LINE_OTCO'].'
';
} else if ( is_null( $arrOrder['LINE_OTPR'] ) && is_null( $arrOrder['LINE_OTCO'] ) ) {
$html.='
Orden de Trabajo:
No aplica
';
} else {
$html.='
Orden de Trabajo:
No aplica
';
}
$html.='
ID Despacho:
'.$arrOrder['DESP_IDDE'].'
Despacho:
'.$arrOrder['DESP_NODE'].'
Responsable del despacho:
'.$arrOrder['DESP_NOMB'] . ' ' . $arrOrder['DESP_APPA'] . ' ' . $arrOrder['DESP_APMA'].'
Teléfono del despacho:
'.$arrOrder['DESP_LADA'] . ' ' . $arrOrder['DESP_TELE'].'
Correo electrónico del despacho:
'.$arrOrder['DESP_CORR'].'
Calle del despacho:
'.$arrOrder['DESP_CALL'].'
Número exterior:
'.$arrOrder['DESP_NUEX'].'
';
if ( !is_null($arrOrder['DESP_NUIN']) ) {
$html.='
Número interior:
'.$arrOrder['DESP_NUIN'].'
';
} else {
$html.='
Número interior:
No aplica
';
}
$html.='
Código postal:
'.$arrOrder['DESP_COPO'].'
Colonia:
'.$arrOrder['DESP_COLO'].'
';
if ( !is_null($arrOrder['DESP_LOCA']) && !empty($arrOrder['DESP_LOCA']) ) {
$html.='
Localidad:
'.$arrOrder['DESP_LOCA'].'
';
} else {
$html.='
Localidad:
No aplica
';
}
$html.='
Municipio:
'.$arrOrder['DESP_MUNI'].'
Entidad Federativa:
'.$arrOrder['DESP_ENTI'].'
País:
'.$arrOrder['DESP_PAIS'].'
Número de proveedor:
'.$arrOrder['PROV_NUPR'].'
Número de subcontratista:
'.$arrOrder['PROV_IDPS'].'
Nombre comercial del proveedor:
'.$arrOrder['PROV_NOCO'].'
Referencia fiscal del proveedor:
'.$arrOrder['REFI_DRFI'] . ' (' . $arrOrder['REFI_CRFI'] . ')'.'
Responsable del proveedor:
'.$arrOrder['PROV_NOMB'] . ' ' . $arrOrder['PROV_APPA'] . ' ' . $arrOrder['PROV_APMA'].'
Correo electrónico del proveedor:
'.$arrOrder['PROV_CORR'].'
Teléfono del proveedor:
'.$arrOrder['PROV_LAD1'] . ' ' . $arrOrder['PROV_TEL1'].'
';
if ( !is_null( $arrOrder['PROV_XRFC'] ) && is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
R.F.C. del proveedor:
'.$arrOrder['PROV_XRFC'].'
';
} else if ( is_null( $arrOrder['PROV_XRFC'] ) && !is_null( $arrOrder['PROV_XRFC'] )) {
$html.='
TAX ID. del proveedor:
'.$arrOrder['PROV_XTAX'].'
';
} else {
$html.='
R.F.C. / TAX ID:
No aplica
';
}
if ( !empty($arrArtitle) ) {
$html.='
Artículos
';
$html.='
| ID Artículo |
Código del artíulo |
Artículo |
Familia |
Subfamilia |
Unidad |
Código |
Modelo |
Precio Unitario |
Cantidad |
Precio Total |
No. de selección |
';
foreach ($arrArtitle as $keyArtitle => $artitle) {
$html.= '
| '.$artitle['ARTI_IDAR'].' |
'.$artitle['ARTI_CODI'].' |
'.$artitle['ARTI_NOMB'].' |
'.$artitle['FAMI_NOFA'] . ' (' . $artitle['FAMI_COFA'] . ')'.' |
'.$artitle['SUBF_NOSU'] . ' (' . $artitle['SUBF_COSU'] . ')'.' |
'.$artitle['UNID_NOMB'] . ' (' . $artitle['UNID_IDUN'] . ')'.' |
'.$artitle['INAR_CODI'].' |
'.$artitle['INAR_MODE'].' |
'.'$'. $artitle['INAR_PREC'] . ' ' . $artitle['CAMO_COMO'] .' |
'.$artitle['ARSE_CANT'].' |
'.$artitle['ARSE_IDAS'].' |
';
}
$html.= '
';
}
$html.='';
// return $html;
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$nuli = $this->resourcesController->formatSecuence($line, 2);
$como = 'GEAD'; // Código del módulo
$cldo = 'IN'; // Código de la clasificación
$fecr = date('ymd'); // Fecha en la se carga el archivo
try {
$arrSecuence = (array) DB::table('S002V01TAFAL')
->where('AFAL_COMO', '=', $como)
->where('AFAL_CLDO', '=', $cldo)
->where('AFAL_NULI', '=', $line)
->orderBy('AFAL_NUSE', 'desc')
->first([ 'AFAL_NUSE' ]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET020: Ocurrió un error al obtener la información de la secuencia.",
$th->getMessage(),
500
);
}
$nuse = 1; // Secuencia del documento
if ( !empty( $arrSecuence ) && !is_null( $arrSecuence ) ) {
$nuse = intval( $arrSecuence['AFAL_NUSE'] ) + 1;
}
$nuse = $this->resourcesController->formatSecuence($nuse, 6);
$nuve = $this->resourcesController->formatSecuence('1', 2);
$noar = 'ficha_de_adquisición_' . $arrOrder['ORCO_NUOR'];
$exte = 'pdf';
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$filePath = 'C:/ITTEC/SAM/Dev/SistemaMantenimiento/sistema-mantenimiento-back/public/public_files/'; // API JEAN
} else {
$filePath = 'C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\public_files\\'; // API QA
}
$fileName = $nuli.'-'.$como.'-'.$cldo.'-'.$fecr.'-'.$nuse.'='.$nuve.'='.$noar.'.'.$exte;
$tempFile = $filePath . $fileName;
$dompdf = new Dompdf();
$dompdf ->loadHtml($html);
$dompdf->setPaper('A4', 'landscape');
$dompdf->render();
$output = $dompdf->output();
file_put_contents($tempFile, $output);
$ubic = Storage::putFile('files', new File($tempFile));
$ubic = str_replace("/", "\\", $ubic);
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
} else {
$ubic = "C:\ITTEC\SAM\Dev\SistemaMantenimiento\sistema-mantenimiento-back\storage\app\\" . $ubic;
}
$tama = filesize($ubic);
$usac = json_encode([$user]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
try {
$validateInsert = DB::table('S002V01TAFAL')->insert([
'AFAL_NULI' => $line,
'AFAL_COMO' => $como,
'AFAL_CLDO' => $cldo,
'AFAL_FECR' => $fecr,
'AFAL_NUSE' => $nuse,
'AFAL_NUVE' => $nuve,
'AFAL_NOAR' => $noar,
'AFAL_EXTE' => $exte,
'AFAL_TAMA' => $tama,
'AFAL_UBIC' => $ubic,
'AFAL_USAC' => $usac,
'AFAL_USRE' => $user,
'AFAL_FERE' => $currentDate,
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET023: Ocurrió un error guardar los datos a la tabla final de archivos.",
$th->getMessage(),
500
);
}
if ( !$validateInsert ) {
return $this->responseController->makeResponse(
true,
"ERR_PROVIDER_SHEET024: No se pudo guardar la ficha del proveedor en la base de datos.",
[],
500
);
}
if ($_SERVER['SERVER_NAME'] === '192.168.100.105') {
$urlPublic = 'http://192.168.100.105:8000/public_files/' . $fileName;
} else {
$urlPublic = $this->functionsController->getApiURI().'sam/public_files/' . $fileName;
}
return $this->responseController->makeResponse(false, "EXITO: Modificación Exitosa", [ 'url' => $urlPublic ]);
}
public function compareInvoice(Request $request) {
$validator = Validator::make($request->all(), [
'IDARCHIVOPDF' => 'required|string',
'IDARCHIVOXML' => 'required|string',
'TYPE_INVOICE' => 'required|string',
// 'DESCRIPTION' => '',
// 'ID_DOCUMENT' => 'required|string',
'USER' => 'required|string',
'LINE_NUMBER' => 'required|integer',
'REQUEST_LINE' => 'required|string',
]);
if ($validator->fails()) {
return $this->responseController->makeResponse(
true,
"ERR_INVOICE_COMPARE000: Se encontraron uno o más errores.",
$this->responseController->makeErrors($validator->errors()->messages()),
401
);
}
$responseData = $request->all();
DB::beginTransaction();
try {
$idArchivoPDF = $this->encController->decrypt($responseData['IDARCHIVOPDF']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE001: Ocurrió un error al recuperar el archivo PDF.", $th->getMessage(), 500);
}
try {
$idArchivoXML = $this->encController->decrypt($responseData['IDARCHIVOXML']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE002: Ocurrió un error al recuperar el archivo XML.", $th->getMessage(), 500);
}
try {
$user = $this->encController->decrypt($responseData['USER']);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE003: Ocurrió un error al recuperar el usuario.", $th->getMessage(), 500);
}
try {
$fileTempDataXML = DB::table('S002V01TARTE')
->where('ARTE_NULI', '=', $responseData['LINE_NUMBER'])
->where('ARTE_IDAR', '=', $idArchivoXML)
->where('ARTE_ESTA', '=', 'Activo')
->first([
'ARTE_IDAR',
'ARTE_NULI',
'ARTE_NOAR',
'ARTE_EXTE',
'ARTE_TAMA',
'ARTE_UBTE',
'ARTE_ESTA',
'ARTE_USRE',
'ARTE_FERE',
'ARTE_USMO',
'ARTE_FEMO',
'ARTE_FEAR',
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true,"ERR_INVOICE_COMPARE004: Ocurrió un error al obtener la información de la base de datos del documento.",$th->getMessage(),500);
}
if (is_null($fileTempDataXML)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE005: No se pudo obtener la información del documento.", [], 401);
}
if($fileTempDataXML->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_INVOICE_COMPARE006: El archivo consultado está eliminado', [], 404);
}
if ( !file_exists($fileTempDataXML->ARTE_UBTE) ) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE007: No se pudo obtener el documento.", [], 401);
}
try {
$arrLineRequestData = DB::table('S002V01TLINE')
->where('LINE_NULI', '=', $responseData['LINE_NUMBER'])
->where('LINE_IDLI', '=', $responseData['REQUEST_LINE'])
// ->where('LINE_ESTA', '=', 'En espera')
->where('ARSE_ESTA', '=', 'Activo')
->where('ARSE_NULI', '=', $responseData['LINE_NUMBER'])
->join('S002V01TARSE', 'ARSE_IDLI','=', 'LINE_IDLI')
->join('S002V01TINAR', 'INAR_IDIN','=', 'ARSE_IDIN')
->join('S002V01TCAMO', 'CAMO_COMO','=', 'INAR_COMO')
->join('S002V01TDEAR', 'DEAR_IDDE','=', 'INAR_IDDE')
->join('S002V01TARTI', 'ARTI_IDAR','=', 'DEAR_IDAR')
->join('S002V01TUNID', 'UNID_IDUN','=', 'DEAR_IDUN')
->join('S002V01TPROV', 'PROV_NUPR','=', 'ARSE_NUPR')
->get([
'LINE_IDLI',
// 'LINE_NUOR',
'LINE_OTPR',
'LINE_OTCO',
'ARSE_IDAS',
// 'ARSE_CANT',
// 'ARSE_PRTO',
'INAR_IDIN',
'INAR_CODI',
'INAR_MODE',
'INAR_COMO',
'INAR_PREC',
'INAR_MOMI',
'INAR_CARA',
'CAMO_COMO',
'CAMO_DESC',
// 'CAMO_DECI',
// 'CAMO_POVA',
// 'CAMO_FEIN',
// 'CAMO_FEFI',
'DEAR_IDDE',
'DEAR_IMAG',
'DEAR_DESC',
'DEAR_CARA',
'DEAR_COWE',
'ARTI_IDAR',
'ARTI_COFA',
'ARTI_COSU',
'ARTI_CODI',
'ARTI_NOMB',
'UNID_IDUN',
'UNID_NOMB',
'UNID_ACRO',
'PROV_NUPR',
'PROV_NOCO',
'PROV_NOMB',
'PROV_APPA',
'PROV_APMA',
'PROV_CORR',
'PROV_LAD1',
'PROV_TEL1',
'PROV_LAD2',
'PROV_TEL2',
'PROV_XRFC',
'PROV_XTAX',
'PROV_CRFI',
'PROV_TIPO',
'PROV_TICO',
'PROV_SIWE',
'PROV_MEPA',
'PROV_CALL',
'PROV_NUEX',
'PROV_NUIN',
'PROV_COPO',
'PROV_COLO',
'PROV_MUNI',
'PROV_LOCA',
'PROV_ENTI',
'PROV_PAIS',
]);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true,"ERR_INVOICE_COMPARE008: Ocurrió un error al obtener la información de la base de datos del documento.",$th->getMessage(),500);
}
$arrLineRequestData = json_decode(json_encode($arrLineRequestData),true);
if (empty($arrLineRequestData)) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE009: No se pudo obtener la información de la línea de solicitud de compra.", [], 401);
}
$index = 0;
$arrArtitles = array();
foreach ($arrLineRequestData as $keyArtitle => $artitles) {
if ($keyArtitle === 0) {
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
} else {
if (
in_array($artitles['INAR_IDIN'], array_column($arrArtitles, 'INAR_IDIN'))
) {
$indexArtitle = array_search($artitles['INAR_IDIN'], array_column($arrArtitles, 'INAR_IDIN'));
$arrArtitles[$indexArtitle]['CANTIDAD'] = $arrArtitles[$indexArtitle]['CANTIDAD'] + 1;
} else {
$index = $index + 1;
$arrArtitles[$index] = $artitles;
$arrArtitles[$index]['CANTIDAD'] = 1;
}
}
}
$arrLineRequestData = $arrArtitles;
try {
$xml = simplexml_load_file($fileTempDataXML->ARTE_UBTE, 'SimpleXMLElement', LIBXML_NOCDATA);
$ns = $xml->getNamespaces(true);
$xml->registerXPathNamespace('c', $ns['cfdi']);
$xml->registerXPathNamespace('t', $ns['tfd']);
} catch (\Throwable $th) {
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE010: Ocurrió un error al obtener la información del documento.", $th->getMessage(), 500);
}
$arrXml = json_decode(json_encode($xml), true)['@attributes'];
$arrResponseComprobante = $this->validateComprobante($xml, $arrLineRequestData, $responseData['LINE_NUMBER']);
if ($arrResponseComprobante['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE011: Ocurrió un error al válidar el documento: ".$arrResponseComprobante['msg'], $arrResponseComprobante['errors'], 401);
}
$arrComprobante = $arrResponseComprobante['response'];
$arrResponseEmisor = $this->validateEmisor($xml, $arrLineRequestData, $responseData['LINE_NUMBER']);
if ($arrResponseEmisor['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE012: Ocurrió un error al válidar el documento: ".$arrResponseEmisor['msg'], $arrResponseEmisor['errors'], 401);
}
$arrEmisor = $arrResponseEmisor['response'];
$arrResponseReceptor = $this->validateReceptor($xml, $arrLineRequestData[0], $responseData['LINE_NUMBER']);
if ($arrResponseReceptor['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE013: Ocurrió un error al válidar el documento: ".$arrResponseReceptor['msg'], $arrResponseReceptor['errors'], 401);
}
$arrReceptor = $arrResponseReceptor['response'];
$arrConceptos = [];
if ($arrXml['TipoDeComprobante'] != 'P') {
$arrResponseConceptos = $this->validateConceptos($xml, $arrLineRequestData, $responseData['LINE_NUMBER']);
if ($arrResponseConceptos['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE014: Ocurrió un error al válidar el documento: ".$arrResponseConceptos['msg'], $arrResponseConceptos['errors'], 401);
}
$arrConceptos = $arrResponseConceptos['response'];
}
$totalPrice = 0;
foreach ($arrConceptos as $keyConceptos => $conceptos) {
$totalPrice += floatval($conceptos['Importe']);
}
$arrResponseTimbreFiscal = $this->validateTimbreFiscal($xml);
if ($arrResponseTimbreFiscal['error']) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE015: Ocurrió un error al válidar el documento: ".$arrResponseTimbreFiscal['msg'], $arrResponseTimbreFiscal['errors'], 401);
}
$arrTimbreFiscal = $arrResponseTimbreFiscal['response'];
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($responseData['LINE_NUMBER']),
'GEAD',
'FA',
$fileTempDataXML,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_INVOICE_COMPARE016: '.$fileResponse[1], [], 400);
}
$encCodeXML = $this->encController->encrypt($fileResponse[1]);
$now = $this->functionsController->now();
$currentDate = $now->toDateTimeString();
$versionInvoice = '';
if ( array_key_exists('Version', $arrComprobante) ) {
$versionInvoice = $arrComprobante['Version'];
}
$fechaInvoice = '';
if ( array_key_exists('Fecha', $arrComprobante) ) {
$fechaInvoice = $arrComprobante['Fecha'];
}
$folioInvoice = '';
if( array_key_exists('Folio', $arrComprobante)) {
$folioInvoice = $arrComprobante['Folio'];
}
$serieInvoice = '';
if( array_key_exists('Serie', $arrComprobante)) {
$serieInvoice = $arrComprobante['Serie'];
}
$formaPagoInvoice = '';
if( array_key_exists('FormaPago', $arrComprobante)) {
$formaPagoInvoice = $arrComprobante['FormaPago'];
}
$metodoPagoInvoice = '';
if( array_key_exists('MetodoPago', $arrComprobante)) {
$metodoPagoInvoice = $arrComprobante['MetodoPago'];
}
$tipoCambioInvoice = null;
if( array_key_exists('TipoCambio', $arrComprobante)) {
$tipoCambioInvoice = $arrComprobante['TipoCambio'];
}
$monedaInvoice = '';
if( array_key_exists('Moneda', $arrComprobante)) {
$monedaInvoice = $arrComprobante['Moneda'];
}
$condicionesDePagoInvoice = '';
if( array_key_exists('CondicionesDePago', $arrComprobante)) {
$condicionesDePagoInvoice = $arrComprobante['CondicionesDePago'];
}
try {
$idFacturaXml = DB::table('S002V01TFALS')->insertGetId([
'FALS_NULI' => $responseData['LINE_NUMBER'],
'FALS_IDLI' => $responseData['REQUEST_LINE'],
'FALS_CODO' => $encCodeXML,
'FALS_UUID' => $arrTimbreFiscal['UUID'],
'FALS_VERS' => $versionInvoice,
'FALS_FEEM' => $fechaInvoice,
'FALS_RFCE' => $arrEmisor['Rfc'],
'FALS_RFCR' => $arrReceptor['Rfc'],
'FALS_FOLI' => $folioInvoice,
'FALS_SERI' => $serieInvoice,
'FALS_FOPA' => $formaPagoInvoice,
'FALS_MEPA' => $metodoPagoInvoice,
'FALS_TICA' => $tipoCambioInvoice,
'FALS_MONE' => $monedaInvoice,
'FALS_CAAR' => count($arrConceptos),
'FALS_PRTO' => $totalPrice,
'FALS_COPA' => $condicionesDePagoInvoice,
'FALS_USRE' => $responseData['LINE_NUMBER'],
'FALS_FERE' => $currentDate,
'FALS_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE017: Ocurrió un error al registrar la factura.", $th->getMessage(), 401);
}
if (!$idFacturaXml) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE018: No se pudo registrar la factura.", 401);
}
$fileTempDataPDF = DB::table('S002V01TARTE')->where([
['ARTE_NULI', '=', $responseData['LINE_NUMBER']],
['ARTE_IDAR', '=', $idArchivoPDF],
])->first();
if(is_null($fileTempDataPDF)){
return $this->responseController->makeResponse(true, 'ERR_INVOICE_COMPARE019: El archivo consultado no está registrado', [], 404);
}else if($fileTempDataPDF->ARTE_ESTA == 'Eliminado'){
return $this->responseController->makeResponse(true, 'ERR_INVOICE_COMPARE020: El archivo consultado está eliminado', [], 404);
}
$fileResponse = $this->documentManagementController->moveFinalFile(
intval($responseData['LINE_NUMBER']),
'GEAD',
'FA',
$fileTempDataPDF,
$user,
);
if(!$fileResponse[0]){
return $this->responseController->makeResponse(true, 'ERR_INVOICE_COMPARE021: '.$fileResponse[1], [], 400);
}
$encCodePDF = $this->encController->encrypt($fileResponse[1]);
if (is_null($responseData['ID_DOCUMENT'])) {
try {
$validateInsert = DB::table('S002V01TDLSC')
->insert([
'DLSC_NULI' => $responseData['LINE_NUMBER'],
'DLSC_IDLI' => $responseData['REQUEST_LINE'],
'DLSC_IDFA' => $idFacturaXml,
'DLSC_CODO' => $encCodePDF,
'DLSC_TIPO' => $responseData['TYPE_INVOICE'],
'DLSC_TIAR' => 'FA',
'DLSC_DESC' => $responseData['DESCRIPTION'],
'DLSC_USRE' => $user,
'DLSC_FERE' => $currentDate,
'DLSC_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE022: Ocurrió un error al registrar la factura.", $th->getMessage(), 401);
}
if (!$validateInsert) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE023: No se pudo registrar la factura.", 401);
}
try {
$validateUpdate = DB::table('S002V01TLINE')
->where('LINE_IDLI', '=', $responseData['REQUEST_LINE'])
->where('LINE_ESTA', '=', 'En espera')
->where('LINE_NULI', '=', $responseData['LINE_NUMBER'])
->update([
'LINE_ESTA' => 'Factura Cotizada',
'LINE_USMO' => $user,
'LINE_FEMO' => $currentDate,
'LINE_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE024: Ocurrió un error al modificar la solicitud la factura.", $th->getMessage(), 401);
}
} else {
try {
$validateUpdate = DB::table('S002V01TDLSC')
->where('DLSC_NULI', '=', $responseData['LINE_NUMBER'])
->where('DLSC_IDLI', '=', $responseData['REQUEST_LINE'])
->where('DLSC_IDDO', '=', $responseData['ID_DOCUMENT'])
->update([
'DLSC_IDFA' => $idFacturaXml,
'DLSC_CODO' => $encCodePDF,
'DLSC_TIPO' => $responseData['TYPE_INVOICE'],
'DLSC_DESC' => $responseData['DESCRIPTION'],
'DLSC_USMO' => $user,
'DLSC_FEMO' => $currentDate,
'DLSC_FEAR' => DB::raw('CURRENT_TIMESTAMP'),
]);
} catch (\Throwable $th) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE026: Ocurrió un error al registrar la factura.", $th->getMessage(), 401);
}
if (!$validateUpdate) {
DB::rollBack();
return $this->responseController->makeResponse(true, "ERR_INVOICE_COMPARE027: No se pudo registrar la factura.", 401);
}
}
DB::commit();
return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso");
}
private function validateComprobante($xml, $arrLineRequestData, $line) {
$arrResponseFunction = array('error' => false, 'msg' => '', 'response' => [], 'errors' => []);
$arrComprobante = json_decode(json_encode($xml), true);
$arrComprobante = $arrComprobante['@attributes'];
if ($arrComprobante['Version'] != '4.0') {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'La versión de la factura no es 4.0.';
}
foreach ($arrLineRequestData as $keyLineRequestData => $lineRequestData) {
if ($arrComprobante['Moneda'] != $lineRequestData['INAR_COMO']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'El tipo de moneda es diferente.';
}
}
$arrResponseFunction['response'] = $arrComprobante;
fin_validateComprobante:
return $arrResponseFunction;
}
private function validateEmisor($xml, $arrLineRequestData, $line) {
$arrResponseFunction = array('error' => false, 'msg' => '', 'response' => [], 'errors' => []);
try {
$arrEmisor = $xml->xpath('//cfdi:Comprobante//cfdi:Emisor');
$arrEmisor = json_decode(json_encode($arrEmisor), true);
$arrEmisor = $arrEmisor[0]['@attributes'];
} catch (\Throwable $th) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error a obtener el contenido de la factura.';
$arrResponseFunction['response'] = $th->getMessage();
goto fin_validateEmisor;
}
try {
$arrTaxInformation = (array) DB::table('S002V01TINFI')
->where('INFI_NULI', '=', $line)
->where('INFI_ESTA', '=', 'Activo')
->first([
'INFI_XRFC',
'INFI_NOFI',
'INFI_CORF',
]);
} catch (\Throwable $th) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error a obtener los datos de la información fiscal';
$arrResponseFunction['response'] = $th->getMessage();
goto fin_validateEmisor;
}
if (empty($arrTaxInformation)) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'No existen datos fiscales registrados en el SAM.';
goto fin_validateEmisor;
}
if ($arrTaxInformation['INFI_XRFC'] != $arrEmisor['Rfc']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el R.F.C del emisor.';
}
if ($arrTaxInformation['INFI_NOFI'] != $arrEmisor['Nombre']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Nombre del emisor.';
}
if ($arrTaxInformation['INFI_CORF'] != $arrEmisor['RegimenFiscal']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Regimen Fiscal del emisor.';
}
$arrResponseFunction['response'] = $arrEmisor;
fin_validateEmisor:
return $arrResponseFunction;
}
private function validateReceptor($xml, $arrLineRequestData, $line) {
$arrResponseFunction = array('error' => false, 'msg' => '', 'response' => [], 'errors' => []);
try {
$arrReceptor = $xml->xpath('//cfdi:Comprobante//cfdi:Receptor');
$arrReceptor = json_decode(json_encode($arrReceptor), true);
$arrReceptor = $arrReceptor[0]['@attributes'];
} catch (\Throwable $th) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error a obtener el contenido de la factura.';
$arrResponseFunction['response'] = $th->getMessage();
goto fin_validateReceptor;
}
$federalRegister = '';
if ($arrLineRequestData['PROV_TIPO'] === 'Extranjero') {
$federalRegister = $arrLineRequestData['PROV_XTAX'];
} else {
$federalRegister = $arrLineRequestData['PROV_XRFC'];
}
if (strtoupper($arrReceptor['Rfc']) != strtoupper($federalRegister)) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el R.F.C de la factura del receptor.';
}
if (strtolower($arrReceptor['Nombre']) != strtolower($arrLineRequestData['PROV_NOCO'])) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar Nombre de la factura del receptor.';
}
if ($arrReceptor['DomicilioFiscalReceptor'] != $arrLineRequestData['PROV_COPO']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Domicilio Fiscal de la factura del receptor.';
}
if ($arrReceptor['RegimenFiscalReceptor'] != $arrLineRequestData['PROV_CRFI']) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Régimen Fiscal de la factura del receptor.';
}
$arrResponseFunction['response'] = $arrReceptor;
fin_validateReceptor:
return $arrResponseFunction;
}
private function validateConceptos($xml, $arrLineRequestData, $line) {
$arrResponseFunction = array('error' => false, 'msg' => '', 'response' => [], 'errors' => []);
try {
$arrConceptos = $xml->xpath('//cfdi:Comprobante//cfdi:Conceptos//cfdi:Concepto');
$arrConceptos = json_decode(json_encode($arrConceptos), true);
} catch (\Throwable $th) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error a obtener el contenido de la factura.';
$arrResponseFunction['response'] = $th->getMessage();
goto fin_valdiateConcepto;
}
foreach ($arrConceptos as $keyConceptos => $conceptos) {
if (array_key_exists('@attributes', $conceptos)) {
$conceptos = $conceptos['@attributes'];
$arrConceptos[$keyConceptos] = $conceptos;
}
foreach ($arrLineRequestData as $keyLineRequestData => $lineRequestData) {
$countErrors = 0;
if($conceptos['Cantidad'] != $lineRequestData['CANTIDAD']){
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar la Cantidad del concepto.';
$countErrors++;
}
if($conceptos['Unidad'] != $lineRequestData['UNID_NOMB']){
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar la Unidad del concepto.';
$countErrors++;
}
if($conceptos['Descripcion'] != $lineRequestData['INAR_CODI']){
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar la Descripción del concepto.';
$countErrors++;
}
if($conceptos['ValorUnitario'] != $lineRequestData['INAR_PREC']){
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Valor Unitario del concepto.';
$countErrors++;
}
/* if($conceptos['Importe'] != $lineRequestData['ARSE_PRTO']){
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error al válidar los atributuos de la factura.';
$arrResponseFunction['errors'][] = 'Ocurrió un error al válidar el Importe del concepto.';
$countErrors++;
} */
if ($countErrors == 0) {
$arrResponseFunction['error'] = false;
$arrResponseFunction['msg'] = '';
$arrResponseFunction['errors'] = [];
break;
}
}
if ($arrResponseFunction['error']) {
goto fin_valdiateConcepto;
}
}
$arrResponseFunction['response'] = $arrConceptos;
fin_valdiateConcepto:
return $arrResponseFunction;
}
private function validateTimbreFiscal($xml) {
$arrResponseFunction = array('error' => false, 'msg' => '', 'response' => [], 'errors' => []);
try {
$arrTimbreFiscal = $xml->xpath('//t:TimbreFiscalDigital');
$arrTimbreFiscal = json_decode(json_encode($arrTimbreFiscal), true);
$arrTimbreFiscal = $arrTimbreFiscal[0]['@attributes'];
} catch (\Throwable $th) {
$arrResponseFunction['error'] = true;
$arrResponseFunction['msg'] = 'Ocurrió un error a obtener el contenido de la factura.';
$arrResponseFunction['response'] = $th->getMessage();
goto fin_validateTimbreFiscal;
}
$arrResponseFunction['response'] = $arrTimbreFiscal;
fin_validateTimbreFiscal:
return $arrResponseFunction;
}
}