Migración

Buenos días. Estamos comenzando el proceso de migración de G2 a G3. Tenemos un sistema de facturación externo que alimentamos con una vista del Informix que debería traducirse a Postgres. No tanto por la sintaxis del SQL sino por el origen de los campos habida cuenta de los cambios que realizados en la estructura. Adjunto una imagen de la vista con la intención que un algún usuario más avezado pueda asistirme con el reemplazo del origen de los datos. Los campos marcados en rojo corresponden a aquellos que tengo dudas en cuanto al reemplazo.
Desde ya muchas gracias.

Buenas tardes Raúl, le falto adjuntar la imagen.

Saludos.

Perdón juraría que lo había hecho !

La vuelvo a adjuntar, 296K es demasiado ?

Gracias


Vista.jpg

Vista.png

  • El concepto de Unidad Academica de G2 podria traducirse en la Responsable Academica de tipo “Facultad” que se genera en Guarani 3
    (sga_responsables_academicas)

  • El nro de inscripción no existe mas en Guarani 3. Podria ser la identificacion de la persona (mdp_personas.persona)
    o lo que usamos en Guarani 3 como identificacion es el nro de documento.
    Podes usar la vista vw_personas, y de alli sacar el campo “nro_documento” o “tipo_nro_documento”

  • Carrera seria la propuesta. De alli no se si necesitas el id de propuesta o el codigo visible que es el dato “carrera” de Guarani2.
    Tabla: sga_propuestas
    Campos: propuesta o codigo (carrera de G2)

  • Legajo del alumno. sga_alumnos.legajo

  • Año academico: Veo que lo sacas de la comision.
    Si usas la vista de comisiones (vw_comisiones), podes sacar de alli el campo “anio_academico”.

  • Materia / Nombre Reducido: lo sacas de la tabla de elementos (sga_elementos). Aqui lo mismo que propuesta. Si necesitas el codigo o el id interno
    sga_elementos.elemento o sga_elementos.codigo, sga_elementos.nombre_reducido

    Podes usar la vista vw_actividades. Alli tenes el codigo de la materia, el nombre, el nombre reducido, etc.

  • El año de cursada lo sacas de los datos de la materia en el plan. (Tabla sga_elementos_plan)
    Podes usar la vista vw_elementos_plan. Aqui deberas hacer join por los datos: elemento y plan_version.
    La version del plan la sacas de la tabla de inscripcion a cursada que es la version del plan del alumno cuando se inscribio, y la actividad (elemento)
    lo sacas de la comision (vista vw_comisiones, campo elemento)

Si te parece envianos el codigo de esa vista y la traducimos a G3.

¿Esta vista es de algun reporte que tenian en Guarani 2?

“Si te parece envianos el codigo de esa vista y la traducimos a G3.
¿Esta vista es de algun reporte que tenian en Guarani 2?”

Gracias por tu respuesta.
Cuál sería la vista de la cual necesitás el código ? Yo la envié como imagen pero si es la misma también la puedo enviar como texto.
No es de ningún reporte, la vista alimenta un sistema de facturación externo al SIU-Guaraní que desarrollamos aquí.


CREATE VIEW “Dba”.Vw_Alumnos_Cursadas_Iuc ( Unidad_Academica, Apellido, Nombres,
Nro_Inscripcion, Tipo_Documento, Nro_Documento, Numero_Cuil, Carrera, Legajo,
Calidad, Regular, Fecha_Relevamiento, Calle_Per_Lect, Numero_Per_Lect,
Piso_Per_Lect, Dpto_Per_Lect, Unidad_Per_Lect, Cp_Per_Lect, E_Mail, Te_Per_Lect,
Loc_Per_Lect, Dpto_Partido, Provincia, Anio_Academico, Materia, Nombre_Reducido,
Anio_De_Cursada)

AS

SELECT
Personas.Unidad_Academica, Upper(Personas.Apellido ), Upper(Personas.Nombres ),
Personas.Nro_Inscripcion, Personas.Tipo_Documento, Personas.Nro_Documento,
Personas.Numero_Cuil, Alumnos.Carrera, Alumnos.Legajo, Alumnos.Calidad, Alumnos.Regular,
Datos_Censales.Fecha_Relevamiento, Upper(Datos_Censales.Calle_Per_Lect ),
Datos_Censales.Numero_Per_Lect, Datos_Censales.Piso_Per_Lect, Datos_Censales.Dpto_Per_Lect,
Datos_Censales.Unidad_Per_Lect, Datos_Censales.Cp_Per_Lect, Datos_Censales.E_Mail, Datos_Censales.Te_Per_Lect,
Nvl (Datos_Censales.Loc_Per_Lect, 5498998 ), Nvl (Localidades.Dpto_Partido, 5498998 ),
Nvl (Provincias.Provincia, 5498 ), Comisiones.Anio_Academico, Materias.Materia,
Materias.Nombre_Reducido, Atrib_Mat_Plan.Anio_De_Cursada

FROM
(((((((((“Dba”.Sga_Personas Personas
INNER JOIN
“Dba”.Sga_Alumnos Alumnos
ON
((Alumnos.Unidad_Academica = Personas.Unidad_Academica ) And
(Alumnos.Nro_Inscripcion = Personas.Nro_Inscripcion )))
INNER JOIN
“Dba”.Sga_Datos_Censales Datos_Censales
ON
((Datos_Censales.Unidad_Academica = Personas.Unidad_Academica ) AND
(Datos_Censales.Nro_Inscripcion = Personas.Nro_Inscripcion )))
INNER JOIN
“Dba”.Mug_Localidades Localidades
ON
(Localidades.Localidad = Datos_Censales.Loc_Per_Lect ))
INNER JOIN
“Dba”.Mug_Dptos_Partidos Dptos_Partidos
ON
(Dptos_Partidos.Dpto_Partido = Localidades.Dpto_Partido ))
INNER JOIN
“Dba”.Mug_Provincias Provincias
ON
(Provincias.Provincia = Dptos_Partidos.Provincia ))
INNER JOIN
“Dba”.Sga_Insc_Cursadas Insc_Cursadas
ON
(((Insc_Cursadas.Unidad_Academica = Personas.Unidad_Academica ) AND
(Insc_Cursadas.Carrera = Alumnos.Carrera )) AND (Insc_Cursadas.Legajo = Alumnos.Legajo)))
INNER JOIN

        "Dba".Sga_Comisiones Comisiones                                                                                     

ON
(Comisiones.Comision = Insc_Cursadas.Comision ))
INNER JOIN
“Dba”.Sga_Materias Materias
ON
((Materias.Unidad_Academica = Personas.Unidad_Academica ) AND
(Materias.Materia = Comisiones.Materia )))
INNER JOIN
“Dba”.sga_atrib_mat_plan atrib_mat_plan
ON
(((((Atrib_Mat_Plan.Unidad_Academica = Insc_Cursadas.Unidad_Academica) AND
(Atrib_Mat_Plan.Carrera = Insc_Cursadas.Carrera )) AND
(Atrib_Mat_Plan.Plan = Insc_Cursadas.Plan )) AND
(Atrib_Mat_Plan.Version = Insc_Cursadas.Version )) AND
(Atrib_Mat_Plan.Materia = Comisiones.Materia )));


Saludos.

SELECT
– Personas.Unidad_Academica,
Upper(Personas.Apellido ), Upper(Personas.Nombres ),
Personas.persona, DOC.Tipo_Documento, DOC.Nro_Documento,
CUIL.nro_documento as CUIL_CUIT,
– Alumnos.propuesta,
Propuesta.Codigo, Alumnos.Legajo, Alumnos.Calidad, Alumnos.Regular,
Datos_Censales.Fecha_Relevamiento,
Upper(DP.periodo_lectivo_calle), DP.periodo_lectivo_numero, DP.periodo_lectivo_piso, DP.periodo_lectivo_departamento, DP.periodo_lectivo_unidad, DP.periodo_lectivo_codigo_postal,
Mail.email,
(SELECT COALESCE(telefono_codigo_area,‘’) || ’ ’ || COALESCE(T.telefono_numero,‘’)
FROM mdp_personas_contactos as T WHERE T.persona = Personas.persona AND T.contacto_tipo IN (‘C’,‘T’,‘L’,‘F’)
LIMIT 1
) as telefono,
COALESCE(DP.periodo_lectivo_localidad, 5498998 ) as localidad,
COALESCE(Localidades.Dpto_Partido, 5498998 ) as depto_partido,
COALESCE(Provincias.Provincia, 5498 ) as provincia,
comisiones.anio_academico,
Materias.codigo,
Materias.nombre_abreviado,
EP.anio_de_cursada

FROM mdp_personas as Personas
JOIN mdp_personas_documentos as DOC ON DOC.documento = Personas.documento_principal
LEFT JOIN mdp_personas_documentos as CUIL ON (CUIL.persona = Personas.persona AND CUIL.tipo_documento = 3)
– LEFT JOIN mdp_personas_contactos as Mail ON (Mail.persona = Personas.persona AND Mail.contacto_tipo = ‘MP’)
JOIN mdp_configuracion as Mail ON (Mail.persona = Personas.persona)
JOIN sga_alumnos as Alumnos ON Alumnos.persona = Personas.persona
JOIN sga_propuestas as Propuesta ON Propuesta.propuesta = Alumnos.propuesta
JOIN mdp_datos_censales as Datos_Censales ON Datos_Censales.persona = Personas.persona
JOIN mdp_datos_personales as DP ON DP.dato_censal = Datos_Censales.dato_censal
LEFT JOIN mug_Localidades as Localidades ON Localidades.localidad = DP.periodo_lectivo_localidad
LEFT JOIN Mug_Dptos_Partidos as Dptos_Partidos ON Dptos_Partidos.Dpto_Partido = Localidades.Dpto_Partido
LEFT JOIN Mug_Provincias as Provincias ON Provincias.Provincia = Dptos_Partidos.Provincia
JOIN sga_insc_cursada as Insc_Cursadas ON Insc_Cursadas.alumno = Alumnos.alumno
JOIN vw_comisiones as comisiones ON comisiones.Comision = Insc_Cursadas.Comision
JOIN vw_elementos_plan as Materias ON (Materias.elemento = comisiones.elemento AND Materias.plan_version = Insc_cursadas.plan_version)
JOIN sga_elementos_plan as EP ON EP.elemento_plan = Materias.elemento_plan
– WHERE Personas.persona = 3430
;

Muchas gracias Alejandro !

Saludos.

Buenas tardes. Estoy ejecutando la consulta recibida en el postgres, pero me da error. A la vez me resultan extraños los nombres de las tablas ya que nada tienen que ver con los de la consulta. Les paso una imagen.
Gracias


Error Select.jpg

Error Select.png

La vista la crearon en una base de Guarani 3 en Postgres, no?

Ahi dice que no encuentra la tabla “mdp_personas” porque seguramente no esta seteada la variable search_path con el esquema donde se encuentras las tablas de negocio de Guarani. Si esto no esta entonces realiza la consulta sobre el esquema “public” que es el esquema de la base de postgres por defecto y como no ecuentra esa tabla da ese error.
Deberian correr lo siguiente:

SET search_path = ‘negocio’; – si al esquema donde estan las tablas de Guarani 3 le pusieron este nombre
SELECT * FROM …;

Gracias.