_
This commit is contained in:
parent
cd9fb1a85d
commit
c20986931a
85
funtions.js
85
funtions.js
@ -187,41 +187,68 @@ async function ConsultaClaves(cedula, chang = null) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function ConsultaTasaRecoleccion(documento, type = 2) {
|
||||||
const fs = require('fs');
|
return new Promise((resolve, reject) => {
|
||||||
async function ConsultaTasaRecoleccion(cedula, index) {
|
var array = { 'ok': false, 'data': [], 'msg': 'Consulta exitosa' };
|
||||||
return new Promise((resolve) => {
|
var _ur = 'consulta_trb';
|
||||||
const result = { ok: false, data: [], msg: null };
|
let params = {
|
||||||
|
boot: true,
|
||||||
try {
|
tipo_doc: type,
|
||||||
const data = fs.readFileSync('trb.json', 'utf8');
|
valor: documento,
|
||||||
const json = JSON.parse(data);
|
|
||||||
|
|
||||||
if (!Array.isArray(json)) {
|
|
||||||
result.msg = 'El JSON no es un arreglo';
|
|
||||||
return resolve(result);
|
|
||||||
}
|
}
|
||||||
|
AxiosPOST(_ur, params, API_TOKEN_PORTAL).then(function (result) {
|
||||||
const response = json.filter(
|
if(result.length > 0){
|
||||||
item => String(item.documento).trim() === String(cedula).trim()
|
array['ok'] = true;
|
||||||
);
|
array['data'] = result;
|
||||||
|
|
||||||
if (response.length > 0) {
|
|
||||||
result.ok = true;
|
|
||||||
result.data = response; // ← ahora es un array
|
|
||||||
result.msg = 'Consulta exitosa';
|
|
||||||
}else{
|
}else{
|
||||||
result.msg = 'No se encontraron valores disponibles';
|
array['msg'] = 'No se encontrarón valores pendientes de pago'
|
||||||
}
|
|
||||||
|
|
||||||
resolve(result);
|
|
||||||
} catch (error) {
|
|
||||||
result.msg = error.message;
|
|
||||||
resolve(result);
|
|
||||||
}
|
}
|
||||||
|
resolve(array);
|
||||||
|
}).catch(function (error) {
|
||||||
|
array['msg'] = error;
|
||||||
|
resolve(array);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// const fs = require('fs');
|
||||||
|
// async function ConsultaTasaRecoleccion(cedula, index) {
|
||||||
|
// return new Promise((resolve) => {
|
||||||
|
// const result = { ok: false, data: [], msg: null };
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// const data = fs.readFileSync('trb.json', 'utf8');
|
||||||
|
// const json = JSON.parse(data);
|
||||||
|
|
||||||
|
// if (!Array.isArray(json)) {
|
||||||
|
// result.msg = 'El JSON no es un arreglo';
|
||||||
|
// return resolve(result);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const response = json.filter(
|
||||||
|
// item => String(item.documento).trim() === String(cedula).trim()
|
||||||
|
// );
|
||||||
|
|
||||||
|
// if (response.length > 0) {
|
||||||
|
// result.ok = true;
|
||||||
|
// result.data = response; // ← ahora es un array
|
||||||
|
// result.msg = 'Consulta exitosa';
|
||||||
|
// } else {
|
||||||
|
// result.msg = 'No se encontraron valores disponibles';
|
||||||
|
// }
|
||||||
|
|
||||||
|
// resolve(result);
|
||||||
|
// } catch (error) {
|
||||||
|
// result.msg = error.message;
|
||||||
|
// resolve(result);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
|
||||||
async function ConsultaComprobantes(cedula, index) {
|
async function ConsultaComprobantes(cedula, index) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
var array = { 'ok': false, 'data': [], 'msg': null };
|
var array = { 'ok': false, 'data': [], 'msg': null };
|
||||||
|
|||||||
32
index.js
32
index.js
@ -134,9 +134,28 @@ app.post("/webhook", express.json(), function (req, res) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/********** TRB **********/
|
/********** TRB **********/
|
||||||
function TasaRecoleccionBasura(){
|
function TasaRecoleccionBasura() { //menu principal
|
||||||
|
return metodos.Fun_ConfirmarTasaRecoleccionBasura(agent, req, res);
|
||||||
|
}
|
||||||
|
function MisValoresTasaRecoleccionBasura() { //menu principal
|
||||||
return metodos.Func_MiTasaRecoleccionBasura(agent, req, res);
|
return metodos.Func_MiTasaRecoleccionBasura(agent, req, res);
|
||||||
}
|
}
|
||||||
|
function TRB_num_cedula_Recolectar() {
|
||||||
|
return metodos.Fun_ConsultarTRB(agent, req, res, 1);
|
||||||
|
}
|
||||||
|
function TRB_num_condigoRecolectar() {
|
||||||
|
return metodos.Fun_ConsultarTRB(agent, req, res, 3);
|
||||||
|
}
|
||||||
|
function TRB_num_cedula_Consultar() {
|
||||||
|
return metodos.Fun_ConsultarTRB(agent, req, res, 2);
|
||||||
|
}
|
||||||
|
function TRB_num_condigoConsultarr() {
|
||||||
|
return metodos.Fun_ConsultarTRB(agent, req, res, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
// function ConfirmarConsultarClavesCatastrales(){
|
||||||
|
// return metodos.Fun_ConfirmarConsultarClavesCatastrales(agent, req, res);
|
||||||
|
// }
|
||||||
|
|
||||||
let intentMap = new Map();
|
let intentMap = new Map();
|
||||||
|
|
||||||
@ -183,8 +202,15 @@ app.post("/webhook", express.json(), function (req, res) {
|
|||||||
intentMap.set('0 - Bienvenida - Mis Tramites - fallback', MistramitesFallback);
|
intentMap.set('0 - Bienvenida - Mis Tramites - fallback', MistramitesFallback);
|
||||||
intentMap.set('0 - Bienvenida - Mis Tramites - previous', MistramitesPrevious);
|
intentMap.set('0 - Bienvenida - Mis Tramites - previous', MistramitesPrevious);
|
||||||
|
|
||||||
//******** Menu 1 - Mis tramites **************/
|
//******** Menu 2 - Tasa de recoleccion de basura **************/
|
||||||
intentMap.set('0 - Bienvenida - TRB', TasaRecoleccionBasura);
|
intentMap.set('0 - Bienvenida - TRB', TasaRecoleccionBasura);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - Mis valores', MisValoresTasaRecoleccionBasura);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - documento Requiere', TRB_num_cedula_Recolectar);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - documento Requiere - next', TRB_num_cedula_Consultar);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - cod requiere', TRB_num_condigoRecolectar);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - cod requiere - next', TRB_num_condigoConsultarr);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - previous', ConsultarCCAtras);
|
||||||
|
intentMap.set('0 - Bienvenida - TRB - fallback', TasaRecoleccionBasura);
|
||||||
|
|
||||||
|
|
||||||
/***** Menu 1 - Informacion de tramites *****/
|
/***** Menu 1 - Informacion de tramites *****/
|
||||||
@ -204,5 +230,5 @@ app.post("/webhook", express.json(), function (req, res) {
|
|||||||
|
|
||||||
let port = process.env.port || 3092;
|
let port = process.env.port || 3092;
|
||||||
app.listen(port, "0.0.0.0", () => {
|
app.listen(port, "0.0.0.0", () => {
|
||||||
console.log("Estamos ejecutando el servidor en el puerto " + port);
|
console.log("Estamos ejecutando el servidor en el puerto " + port + ' exec: ngrok http 3092');
|
||||||
});
|
});
|
||||||
@ -30,6 +30,12 @@ function mensaje(name, username = null, massager = null) {
|
|||||||
'Ayúdeme con la clave catastral del propietario(a).'
|
'Ayúdeme con la clave catastral del propietario(a).'
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case 'sol_codido_trb':
|
||||||
|
jsom_interaciones = [
|
||||||
|
'Por favor ingrese con número de contrato',
|
||||||
|
'Ayúdeme ingresando el número de contrato'
|
||||||
|
];
|
||||||
|
break;
|
||||||
case 'sol_data_codigo':
|
case 'sol_data_codigo':
|
||||||
jsom_interaciones = [
|
jsom_interaciones = [
|
||||||
'Por favor ingrese el código de barras del documento',
|
'Por favor ingrese el código de barras del documento',
|
||||||
@ -90,6 +96,12 @@ function mensaje(name, username = null, massager = null) {
|
|||||||
'¿Qué acción desea realizar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.",
|
'¿Qué acción desea realizar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.",
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case 'trb_menu':
|
||||||
|
var menu = "\n1. Mí número de cédeula \n2. Otro número de cédula \n3. Consultar por número de contrato \n0. Atrás";
|
||||||
|
jsom_interaciones = [
|
||||||
|
'TRB: ¿Como desea consultar?\n' + menu + "\n\n -Ingrese el número de la opción que desee.",
|
||||||
|
];
|
||||||
|
break;
|
||||||
case 'info_tramites':
|
case 'info_tramites':
|
||||||
var menu = "1. Certificado de solvencia \n2. Certificado de no poseer bienes \n0. Ir al menú anterior";
|
var menu = "1. Certificado de solvencia \n2. Certificado de no poseer bienes \n0. Ir al menú anterior";
|
||||||
jsom_interaciones = [
|
jsom_interaciones = [
|
||||||
|
|||||||
175
metodos.js
175
metodos.js
@ -429,6 +429,19 @@ async function Fun_ConfirmarConsultarClavesCatastrales(agent, req, res) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function Fun_ConfirmarTasaRecoleccionBasura(agent, req, res) {
|
||||||
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
|
if (data_context) {
|
||||||
|
agent.context.set({
|
||||||
|
name: '0-Bienvenida-TRB-seguimiento',
|
||||||
|
lifespan: 1
|
||||||
|
});
|
||||||
|
return agent.add(dialog.mensaje('trb_menu'));
|
||||||
|
} else {
|
||||||
|
return Fun_WelcomeAgent(agent, req, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async function Fun_ConsultaPredios(agent, req, res) {
|
async function Fun_ConsultaPredios(agent, req, res) {
|
||||||
let data_context = await ValidateDataUserContext(agent);
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
@ -521,6 +534,68 @@ async function Fun_ConsultarOtrasClavesCatastrales(agent, req, res, tipo) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function Fun_ConsultarTRB(agent, req, res, tipo) {
|
||||||
|
try {
|
||||||
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
|
console.log("agemte")
|
||||||
|
console.log(data_context)
|
||||||
|
console.log(tipo)
|
||||||
|
if (data_context) {
|
||||||
|
if (tipo == 1) {
|
||||||
|
agent.context.set({
|
||||||
|
name: 'data_predios',
|
||||||
|
lifespan: 1
|
||||||
|
});
|
||||||
|
return agent.add(dialog.mensaje('sol_data_cedula'));
|
||||||
|
} else if (tipo == 2) {
|
||||||
|
console.log("entre al segundo contesto")
|
||||||
|
var Contx = agent.context.get('data_predios');
|
||||||
|
if (Contx == null || Contx == NaN || Contx == undefined) {
|
||||||
|
console.log("no existe contexto")
|
||||||
|
Contx = ExistParamtContext(agent, 'data_predios');
|
||||||
|
}
|
||||||
|
if (Contx != null && Contx != NaN && Contx != undefined) {
|
||||||
|
console.log("exostedd 2222")
|
||||||
|
if (Contx.parameters.cedula_otro != null && Contx.parameters.cedula_otro != "") {
|
||||||
|
return Func_MiTasaRecoleccionBasura(agent, req, res, 2, Contx.parameters.cedula_otro);
|
||||||
|
} else {
|
||||||
|
return TasaRecoleccionBasura(agent, req, res);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return TasaRecoleccionBasura(agent, req, res);
|
||||||
|
}
|
||||||
|
} else if (tipo == 3) {
|
||||||
|
agent.context.set({
|
||||||
|
name: 'data_predios',
|
||||||
|
lifespan: 1
|
||||||
|
});
|
||||||
|
return agent.add(dialog.mensaje('sol_codido_trb'));
|
||||||
|
} else if (tipo == 4) {
|
||||||
|
var Contx = agent.context.get('data_predios');
|
||||||
|
if (Contx == null || Contx == NaN || Contx == undefined) {
|
||||||
|
Contx = ExistParamtContext(agent, 'data_predios');
|
||||||
|
}
|
||||||
|
if (Contx != null && Contx != NaN && Contx != undefined) {
|
||||||
|
if (Contx.parameters.codigo != null && Contx.parameters.codigo != "") {
|
||||||
|
console.log("no hay ca " + Contx.parameters.codigo)
|
||||||
|
return Func_MiTasaRecoleccionBasura(agent, req, res, 2, Contx.parameters.codigo);
|
||||||
|
} else {
|
||||||
|
return TasaRecoleccionBasura(agent, req, res);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return TasaRecoleccionBasura(agent, req, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return Fun_WelcomeAgent(agent, req, res);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return ResolveDefauld(agent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function Fun_ValidarDocumentos(agent, req, res, tipo) {
|
async function Fun_ValidarDocumentos(agent, req, res, tipo) {
|
||||||
try {
|
try {
|
||||||
let data_context = await ValidateDataUserContext(agent);
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
@ -594,8 +669,7 @@ function Func_FallbackInfoTramites(agent, req, res) {
|
|||||||
return agent.add(dialog.mensaje('info_tramites'));
|
return agent.add(dialog.mensaje('info_tramites'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function Func_MiTasaRecoleccionBasura(agent, req, res, lery = 1, data = null) {
|
||||||
async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) {
|
|
||||||
try {
|
try {
|
||||||
let data_context = await ValidateDataUserContext(agent);
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
if (data_context) {
|
if (data_context) {
|
||||||
@ -603,37 +677,34 @@ async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) {
|
|||||||
return Fun_ConsultarCCAtras(agent, req, res);
|
return Fun_ConsultarCCAtras(agent, req, res);
|
||||||
}
|
}
|
||||||
if (data_context != null && data_context != "") {
|
if (data_context != null && data_context != "") {
|
||||||
let legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula, lery);
|
let legion = [];
|
||||||
console.log(legion);
|
if (lery == 1) {
|
||||||
|
legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula);
|
||||||
|
} else if (lery == 2) {
|
||||||
|
console.log("consulte ser")
|
||||||
|
legion = await funcion.ConsultaTasaRecoleccion(data, 1);
|
||||||
|
}
|
||||||
if (legion['ok'] == true) {
|
if (legion['ok'] == true) {
|
||||||
let count = legion['data'].length;
|
let count = legion['data'].length;
|
||||||
var msger = '';
|
var msger = '*TASA DE RECOLECCIÓN DE BASURA*\n';
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
legion['data'].forEach(elem_legio => {
|
legion['data'].forEach(elem_legio => {
|
||||||
let suma = 0;
|
let suma = 0;
|
||||||
console.log(elem_legio);
|
|
||||||
msger = msger + '\n*Tasa de recolección de basura CC: ' + elem_legio.cc + '* (' + elem_legio.direccion + ') \n';
|
msger = msger + '\n🏠 Contrato *' + elem_legio.numero_contrato + '* (' + funcion.conver_capitalice(elem_legio.direccion) + ') \n';
|
||||||
let meses_arr = ['Enero 2026', 'Feberero 2026', 'Marzo 2026'];
|
elem_legio.facturas_usadas_para_promedio.forEach(elem_omega => {
|
||||||
meses_arr.forEach(element => {
|
if (elem_omega.estado_proceso != 'GENERADA POR CNEL') {
|
||||||
suma += Number(elem_legio.promedio);
|
suma += Number(elem_omega.monto_total);
|
||||||
msger = msger + '🚛 ' + element + ' : *$' + elem_legio.promedio + '*\n';
|
msger = msger + '🚛 ' + elem_omega.mes + ' : *$' + elem_omega.monto_total + '*\n';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
msger = msger + '💵 *Total a pagar: $' + suma.toFixed(2) + '*\n';
|
msger = msger + '💵 Total a pagar: *$' + suma.toFixed(2) + '*\n';
|
||||||
|
msger = msger + '\nPara ver mas detalles revise: https://portalciudadano.manta.gob.ec/consulta_trb';
|
||||||
});
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
msger = msger + "No se encontrarón valores pendientes de pago";
|
||||||
}
|
}
|
||||||
// console.log(count);
|
|
||||||
// if (legion['data'].documento != undefined) {
|
|
||||||
// meses_arr.forEach(element => {
|
|
||||||
// suma += Number(legion['data'].promedio);
|
|
||||||
// msger = msger + '🚛 ' + element + ' : *$' + legion['data'].promedio + '*\n';
|
|
||||||
// });
|
|
||||||
// msger = msger + '\n💵 *Total a pagar: $' + suma.toFixed(2) + '*';
|
|
||||||
// } else {
|
|
||||||
// msger = msger + "No se encontrarón valores pendientes de pago";
|
|
||||||
// }
|
|
||||||
agent.add(msger);
|
agent.add(msger);
|
||||||
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
||||||
} else {
|
} else {
|
||||||
@ -649,6 +720,62 @@ async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// async function Func_MiTasaRecoleccionBasura(agent, req, res, lery) {
|
||||||
|
// try {
|
||||||
|
// let data_context = await ValidateDataUserContext(agent);
|
||||||
|
// if (data_context) {
|
||||||
|
// if (lery == 3) {
|
||||||
|
// return Fun_ConsultarCCAtras(agent, req, res);
|
||||||
|
// }
|
||||||
|
// if (data_context != null && data_context != "") {
|
||||||
|
// let legion = await funcion.ConsultaTasaRecoleccion(data_context.cedula, lery);
|
||||||
|
// console.log(legion);
|
||||||
|
// if (legion['ok'] == true) {
|
||||||
|
// let count = legion['data'].length;
|
||||||
|
// var msger = '';
|
||||||
|
// if (count > 0) {
|
||||||
|
// legion['data'].forEach(elem_legio => {
|
||||||
|
// let suma = 0;
|
||||||
|
// console.log(elem_legio);
|
||||||
|
// msger = msger + '\n*Tasa de recolección de basura CC: ' + elem_legio.cc + '* (' + elem_legio.direccion + ') \n';
|
||||||
|
// let meses_arr = ['Enero 2026', 'Feberero 2026', 'Marzo 2026'];
|
||||||
|
// meses_arr.forEach(element => {
|
||||||
|
// suma += Number(elem_legio.promedio);
|
||||||
|
// msger = msger + '🚛 ' + element + ' : *$' + elem_legio.promedio + '*\n';
|
||||||
|
// });
|
||||||
|
// msger = msger + '💵 *Total a pagar: $' + suma.toFixed(2) + '*\n';
|
||||||
|
// });
|
||||||
|
|
||||||
|
// } else {
|
||||||
|
|
||||||
|
// }
|
||||||
|
// // console.log(count);
|
||||||
|
// // if (legion['data'].documento != undefined) {
|
||||||
|
// // meses_arr.forEach(element => {
|
||||||
|
// // suma += Number(legion['data'].promedio);
|
||||||
|
// // msger = msger + '🚛 ' + element + ' : *$' + legion['data'].promedio + '*\n';
|
||||||
|
// // });
|
||||||
|
// // msger = msger + '\n💵 *Total a pagar: $' + suma.toFixed(2) + '*';
|
||||||
|
// // } else {
|
||||||
|
// // msger = msger + "No se encontrarón valores pendientes de pago";
|
||||||
|
// // }
|
||||||
|
// agent.add(msger);
|
||||||
|
// return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
||||||
|
// } else {
|
||||||
|
// agent.add(funcion.conver_name(data_context.name) + ', ' + legion['msg']);
|
||||||
|
// return Fun_RetornarAlinicio(agent, req, res, funcion.conver_name(data_context.name));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// return Fun_WelcomeAgent(agent, req, res);
|
||||||
|
// }
|
||||||
|
// } catch (error) {
|
||||||
|
// return ResolveDefauld(agent);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
async function Func_MisComprobantesPago(agent, req, res, lery) {
|
async function Func_MisComprobantesPago(agent, req, res, lery) {
|
||||||
try {
|
try {
|
||||||
let data_context = await ValidateDataUserContext(agent);
|
let data_context = await ValidateDataUserContext(agent);
|
||||||
@ -754,6 +881,8 @@ module.exports = {
|
|||||||
"Fun_CerrarSesionAgent": Fun_CerrarSesionAgent,
|
"Fun_CerrarSesionAgent": Fun_CerrarSesionAgent,
|
||||||
"Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent,
|
"Fun_ConfirmarCerrarSesionAgent": Fun_ConfirmarCerrarSesionAgent,
|
||||||
"Fun_ConfirmarConsultarClavesCatastrales": Fun_ConfirmarConsultarClavesCatastrales,
|
"Fun_ConfirmarConsultarClavesCatastrales": Fun_ConfirmarConsultarClavesCatastrales,
|
||||||
|
"Fun_ConfirmarTasaRecoleccionBasura": Fun_ConfirmarTasaRecoleccionBasura,
|
||||||
|
"Fun_ConsultarTRB": Fun_ConsultarTRB,
|
||||||
"Fun_ConsultarOtrasClavesCatastrales": Fun_ConsultarOtrasClavesCatastrales,
|
"Fun_ConsultarOtrasClavesCatastrales": Fun_ConsultarOtrasClavesCatastrales,
|
||||||
"Fun_ConsultaPredios": Fun_ConsultaPredios,
|
"Fun_ConsultaPredios": Fun_ConsultaPredios,
|
||||||
"Fun_ConsultarCCAtras": Fun_ConsultarCCAtras,
|
"Fun_ConsultarCCAtras": Fun_ConsultarCCAtras,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user