def __init__(self):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_FormInfSem()
        self.ui.setupUi(self)

        self.mostrar = True
        self.rellenaCBox()
        self.show()
        self.setSignal()
        self.rellenaCBoxComuna()
        self.ventana = FormAgregarComentario()
        self.ventana.setVisible(False)
class FormInformeSemestral(QtGui.QWidget):

    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_FormInfSem()
        self.ui.setupUi(self)

        self.mostrar = True
        self.rellenaCBox()
        self.show()
        self.setSignal()
        self.rellenaCBoxComuna()
        self.ventana = FormAgregarComentario()
        self.ventana.setVisible(False)
        

    def setSignal(self):
        self.ui.pushButton_Guardar.clicked.connect(self.creaInforme)
        self.ui.pushButton_Cancelar.clicked.connect(self.salir)
        self.ui.pushButton_AgreComentario.clicked.connect(self.agregarComentario)
        self.ui.radioButton_Semestral.toggled.connect(self.actualizaSemestral)
        self.ui.radioButton_Mensual.toggled.connect(self.actualizaMensual)
        self.ui.radioButton_Anual.toggled.connect(self.actualizaAnual)
        self.ui.comboBox_Comuna.currentIndexChanged.connect(self.rellenaCBoxEstablecimientos)
        self.ui.comboBox_Establecimiento.currentIndexChanged.connect(self.actualizaCombobox)
        self.ui.radioButton_Establecimiento.toggled.connect(self.actualizaEstablecimiento)
        self.ui.radioButton_Comuna.toggled.connect(self.actualizaComuna)
        self.ui.radioButton_Region.toggled.connect(self.actualizaRegion)
        self.ui.pushButton_Email.clicked.connect(self.enviarInforme)


    def rellenaCBox(self):
        if(self.ui.radioButton_Establecimiento.isChecked() == True and self.ui.comboBox_Establecimiento.currentText() != "-----"):
            lista_anios = list()
            idEstablecimiento = controlador_generacion_informe.obtenerIdEstablecimiento(self.ui.comboBox_Establecimiento.currentText())
            registros = controlador_generacion_informe.obtenerAnios(idEstablecimiento)
            for i in range(len(registros)):
                lista_anios.append(registros[0].anho)
            lista_anios_unicos = list(set(lista_anios))
            if not registros:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
            else:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
                for i, registro in enumerate(lista_anios_unicos):
                    self.ui.comboBox_Anio.addItem(str(registro),i)

        elif(self.ui.radioButton_Comuna.isChecked() == True and self.ui.comboBox_Comuna.currentText() != "-----"):
            lista_anios = list()
            lista_registros = list()
            id_comuna = controlador_generacion_informe.obtenerIdComuna(self.ui.comboBox_Comuna.currentText())
            idEstablecimiento = controlador_generacion_informe.obtenerEstablecimiento(id_comuna)
            
            for j in range(len(idEstablecimiento)):
                registros = controlador_generacion_informe.obtenerAnios(idEstablecimiento[j].id_establecimiento)
                if(len(registros) != 0):
                    lista_registros.append(registros[0].anho)

            for i in range(len(lista_registros)):
                lista_anios.append(lista_registros[i])

            lista_anios_unicos = list(set(lista_anios))
            if not registros:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
            else:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
                for i, registro in enumerate(lista_anios_unicos):
                    self.ui.comboBox_Anio.addItem(str(registro),i)

        elif(self.ui.radioButton_Region.isChecked() == True):
            lista_anios = list()
            lista_registros = list()
            nom_comunas = controlador_generacion_informe.obtenerTodasComunas()
            for i in range(len(nom_comunas)):
                id_comuna = controlador_generacion_informe.obtenerIdComuna(nom_comunas[i].nombre)
                idEstablecimiento = controlador_generacion_informe.obtenerEstablecimiento(id_comuna)
                for j in range(len(idEstablecimiento)):
                    registros = controlador_generacion_informe.obtenerAnios(idEstablecimiento[j].id_establecimiento)
                    if(len(registros) != 0):
                        lista_registros.append(registros[0].anho)

            for i in range(len(lista_registros)):
                lista_anios.append(lista_registros[i])

            lista_anios_unicos = list(set(lista_anios))
            if not registros:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
            else:
                self.ui.comboBox_Anio.clear()
                self.ui.comboBox_Anio.addItem("-----")
                for i, registro in enumerate(lista_anios_unicos):
                    self.ui.comboBox_Anio.addItem(str(registro),i)


    def rellenaCBoxMeses(self):

        if(self.ui.radioButton_Establecimiento.isChecked() ==True and self.ui.radioButton_Semestral.isChecked() == False and self.ui.comboBox_Establecimiento.currentText() != "-----"):
            lista_mes = list()
            idEstablecimiento = controlador_generacion_informe.obtenerIdEstablecimiento(self.ui.comboBox_Establecimiento.currentText())
            registros = controlador_generacion_informe.obtenerMeses(idEstablecimiento)
            for i in range(len(registros)):
                lista_mes.append(registros[0].mes)
            lista_mes_unicos = list(set(lista_mes))
            if not registros:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
            else:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
                for i, registro in enumerate(lista_mes_unicos):
                    self.ui.comboBox_Sem_Mes.addItem(str(registro),i)

        elif(self.ui.radioButton_Comuna.isChecked() == True and self.ui.comboBox_Comuna.currentText() != "-----" and self.ui.radioButton_Semestral.isChecked() == False):
            lista_mes = list()
            lista_registros = list()
            id_comuna = controlador_generacion_informe.obtenerIdComuna(self.ui.comboBox_Comuna.currentText())
            idEstablecimiento = controlador_generacion_informe.obtenerEstablecimiento(id_comuna)
            
            for j in range(len(idEstablecimiento)):
                registros = controlador_generacion_informe.obtenerMeses(idEstablecimiento[j].id_establecimiento)
                if(len(registros) != 0):
                    lista_registros.append(registros[0].mes)

            for i in range(len(lista_registros)):
                lista_mes.append(lista_registros[i])

            lista_mes_unicos = list(set(lista_mes))
            if not registros:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
            else:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
                for i, registro in enumerate(lista_mes_unicos):
                    self.ui.comboBox_Sem_Mes.addItem(str(registro),i)

        elif(self.ui.radioButton_Region.isChecked() == True and self.ui.radioButton_Semestral.isChecked() == False):
            lista_mes = list()
            lista_registros = list()
            nom_comunas = controlador_generacion_informe.obtenerTodasComunas()
            for i in range(len(nom_comunas)):
                id_comuna = controlador_generacion_informe.obtenerIdComuna(nom_comunas[i].nombre)
                idEstablecimiento = controlador_generacion_informe.obtenerEstablecimiento(id_comuna)
                for j in range(len(idEstablecimiento)):
                    registros = controlador_generacion_informe.obtenerMeses(idEstablecimiento[j].id_establecimiento)
                    if(len(registros) != 0):
                        lista_registros.append(registros[0].mes)

            for i in range(len(lista_registros)):
                lista_mes.append(lista_registros[i])

            lista_mes_unicos = list(set(lista_mes))
            if not registros:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
            else:
                self.ui.comboBox_Sem_Mes.clear()
                self.ui.comboBox_Sem_Mes.addItem("-----")
                for i, registro in enumerate(lista_mes_unicos):
                    self.ui.comboBox_Sem_Mes.addItem(str(registro),i)
        else:
            self.ui.comboBox_Sem_Mes.clear()
            self.ui.comboBox_Sem_Mes.addItem("-----")
        # self.ui.comboBox_Sem_Mes.addItem("-----")
        # self.ui.comboBox_Sem_Mes.addItem("Enero")
        # self.ui.comboBox_Sem_Mes.addItem("Febrero")
        # self.ui.comboBox_Sem_Mes.addItem("Marzo")
        # self.ui.comboBox_Sem_Mes.addItem("Abril")
        # self.ui.comboBox_Sem_Mes.addItem("Mayo")
        # self.ui.comboBox_Sem_Mes.addItem("Junio")
        # self.ui.comboBox_Sem_Mes.addItem("Julio")
        # self.ui.comboBox_Sem_Mes.addItem("Agosto")
        # self.ui.comboBox_Sem_Mes.addItem("Septiembre")
        # self.ui.comboBox_Sem_Mes.addItem("Octubre")
        # self.ui.comboBox_Sem_Mes.addItem("Noviembre")
        # self.ui.comboBox_Sem_Mes.addItem("Diciembre")

    def actualizaCombobox(self):
        if(self.ui.radioButton_Establecimiento.isChecked() == True):
            if(self.ui.radioButton_Semestral.isChecked() == False):
                try:
                    self.rellenaCBox()
                    self.rellenaCBoxMeses()
                except:
                    pass
            else:
                self.rellenaCBoxSem()
                self.rellenaCBox()
        elif(self.ui.radioButton_Comuna.isChecked() == True):
            if(self.ui.radioButton_Semestral.isChecked() == False):
                try:
                    self.rellenaCBox()
                    self.rellenaCBoxMeses()
                except:
                    pass
            else:
                self.rellenaCBoxSem()
                self.rellenaCBox()
        elif(self.ui.radioButton_Region.isChecked() == True):
            if(self.ui.radioButton_Semestral.isChecked() == False):
                try:
                    self.rellenaCBox()
                    self.rellenaCBoxMeses()
                except:
                    pass
            else:
                self.rellenaCBoxSem()
                self.rellenaCBox()

    def rellenaCBoxSem(self):
        self.ui.comboBox_Sem_Mes.clear()
        self.ui.label_Sem_Mes.setText("Semestre")
        self.ui.comboBox_Sem_Mes.addItem("-----")
        self.ui.comboBox_Sem_Mes.addItem(str(1))
        self.ui.comboBox_Sem_Mes.addItem(str(2))

    def rellenaCBoxEstablecimientos(self, index):
        if(index != 0):
            idComuna = controlador_generacion_informe.obtenerIdComuna(self.ui.comboBox_Comuna.currentText())
            establecimientos = controlador_generacion_informe.obtenerEstablecimiento(idComuna)
            self.ui.comboBox_Establecimiento.clear()
            for i, establecimiento in enumerate(establecimientos):
                self.ui.comboBox_Establecimiento.addItem(establecimiento.nombre, i)
            self.actualizaCombobox()
        else:
            self.ui.comboBox_Establecimiento.clear()
            self.ui.comboBox_Establecimiento.addItem("--------")      

    def rellenaCBoxComuna(self):
        comunas = controlador_generacion_informe.obtenerTodasComunas()
        for i, comuna in enumerate(comunas):
            self.ui.comboBox_Comuna.addItem(comuna.nombre, i)

    def agregarComentario(self):
        self.ventana.show()


    def obtenerAnio(self):
        if(self.ui.comboBox_Anio.currentText() == "-----"):
            anio = str(datetime.date.today().year)
        else:
            anio = self.ui.comboBox_Anio.currentText()
        return anio

    def obtenerSemestre(self):
        if((self.ui.comboBox_Sem_Mes.currentText() == "-----") or (self.ui.comboBox_Sem_Mes.currentText() == "1")):
            semestre = "1"
        else:
            semestre = "2"
        return semestre

    def obtenerMes(self):
        if(self.ui.comboBox_Sem_Mes.currentText() == "-----"):
            mes = "Enero"
        else:
            mes = self.ui.comboBox_Sem_Mes.currentText()
        return mes

    def obtenerComuna(self):
        if(self.ui.comboBox_Comuna.currentText() == "-----"):
            comuna = "Valdivia"
        else:
            comuna = self.ui.comboBox_Comuna.currentText()
        return comuna

    def obtenerEstablecimiento(self):
        if(self.ui.comboBox_Establecimiento.currentText() == "-----"):
            establecimiento = "Valdivia"
        else:
            establecimiento = self.ui.comboBox_Establecimiento.currentText()
        return establecimiento

    def informeMensual(self):
        semestre = "ninguno"
        mes = self.obtenerMes()
        anio = self.obtenerAnio()
        est_ok = 1
        com_ok = 1
        if(self.ui.radioButton_Establecimiento.isChecked() == True):
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                est_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if(self.ui.comboBox_Establecimiento.currentText() == "-----"):
                com_ok = 0
            else:
                establecimiento = self.ui.comboBox_Establecimiento.currentText()
            if (est_ok == 0 or com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        elif(self.ui.radioButton_Comuna.isChecked() == True):
            establecimiento = "ninguno"
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                com_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if(com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)
       
        elif(self.ui.radioButton_Region.isChecked() == True):
            establecimiento = "ninguno"
            comuna = "ninguno"
            self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        else:
            self.nom_archivo = "---"
            self.errorMessage(u"Debe seleccionar todos los campos")


    def informeSemestral(self):
        semestre = self.obtenerSemestre()
        anio = self.obtenerAnio()
        mes = "ninguno"
        est_ok = 1
        com_ok = 1
        if(self.ui.radioButton_Establecimiento.isChecked() == True):
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                est_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if(self.ui.comboBox_Establecimiento.currentText() == "-----"):
                com_ok = 0
            else:
                establecimiento = self.ui.comboBox_Establecimiento.currentText()
            if (est_ok == 0 or com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        elif(self.ui.radioButton_Comuna.isChecked() == True):
            establecimiento = "ninguno"
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                com_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if (com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)
       
        elif(self.ui.radioButton_Region.isChecked() == True):
            establecimiento = "ninguno"
            comuna = "ninguno"
            self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        else:
            self.nom_archivo = "---"
            self.errorMessage(u"Debe seleccionar todos los campos")


    def informeAnual(self):
        mes = "ninguno"
        semestre = "ninguno"
        anio = self.obtenerAnio()
        est_ok = 1
        com_ok = 1
        if(self.ui.radioButton_Establecimiento.isChecked() == True):
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                est_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if(self.ui.comboBox_Establecimiento.currentText() == "-----"):
                com_ok = 0
            else:
                establecimiento = self.ui.comboBox_Establecimiento.currentText()
            if (est_ok == 0 or com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        elif(self.ui.radioButton_Comuna.isChecked() == True):
            establecimiento = "ninguno"
            if(self.ui.comboBox_Comuna.currentText() == "-----"):
                com_ok = 0
            else:
                comuna = self.ui.comboBox_Comuna.currentText()
            if (com_ok == 0):
                self.nom_archivo = "---"
                self.errorMessage(u"Debe seleccionar todos los campos")
            else:
                self.generarInforme(mes, semestre, anio, establecimiento, comuna)
       
        elif(self.ui.radioButton_Region.isChecked() == True):
            establecimiento = "ninguno"
            comuna = "ninguno"
            self.generarInforme(mes, semestre, anio, establecimiento, comuna)

        else:
            self.nom_archivo = "---"
            self.errorMessage(u"Debe seleccionar todos los campos")

    def actualizaMensual(self):
        self.ui.comboBox_Sem_Mes.setEnabled(True)
        self.ui.label_Sem_Mes.setText("Mes")
        self.rellenaCBox()
        self.rellenaCBoxMeses()

    def actualizaSemestral(self):
        self.ui.comboBox_Sem_Mes.setEnabled(True)
        self.rellenaCBoxSem()
        self.rellenaCBox()

    def actualizaAnual(self):
        self.ui.comboBox_Sem_Mes.setEnabled(False)
        self.rellenaCBox()

    def actualizaEstablecimiento(self):
        self.ui.comboBox_Establecimiento.setEnabled(True)
        self.ui.comboBox_Comuna.setEnabled(True)

    def actualizaComuna(self):
        self.ui.comboBox_Establecimiento.setEnabled(False)
        self.ui.comboBox_Comuna.setEnabled(True)

    def actualizaRegion(self):
        self.ui.comboBox_Comuna.setEnabled(False)
        self.ui.comboBox_Establecimiento.setEnabled(False)
        if(self.ui.radioButton_Semestral.isChecked() == False):  
            self.rellenaCBox()
            self.rellenaCBoxMeses()
        else:
            self.rellenaCBoxSem()

    def creaInforme(self):
        if(self.ui.radioButton_Semestral.isChecked() == True):
            self.informeSemestral()
        elif(self.ui.radioButton_Mensual.isChecked() == True):
            self.informeMensual()
        elif(self.ui.radioButton_Anual.isChecked() == True):
            self.informeAnual()
        else:
            self.nom_archivo = "---"
            self.errorMessage(u"Debe seleccionar todos los campos")
            

    def enviarInforme(self):
        self.mostrar = False
        self.creaInforme()
        if(self.nom_archivo != "---"):
            self.enviarMail = Enviar_informe_email(self.nom_archivo)
            self.enviarMail.show()
        else:
            pass


    def generarInforme(self, mes, semestre, anio, establecimiento, comuna):
        """
        Genera el informe que corresponde al mes o semestre, año, establecimiento y comuna ingresado.
        """
        carga = 0
        cargandoInforme = Cargando_informe(carga)
        cargandoInforme.show()
        comentario = self.ventana.texto
        if(mes == "ninguno" and semestre != "ninguno"):
            if(semestre == "-----"):
                mesHoy = str(datetime.date.today().month)
                if(mesHoy == "Enero" or mesHoy == "Febrero" or mesHoy == "Marzo" or mesHoy == "Abril" or mesHoy == "Mayo" or mesHoy == "Junio"):
                    entrada = "PRIMER SEMESTRE"
                    semestre = "1"
                else:
                    entrada = "SEGUNDO SEMESTRE"
                    semestre = "2"
            else:
                if(semestre == "1"):
                    entrada = "PRIMER SEMESTRE"
                else:
                    entrada = "SEGUNDO SEMESTRE"
        elif(mes != "ninguno" and semestre == "ninguno"):
            entrada = mes
        elif(mes == "ninguno" and semestre == "ninguno"):
            entrada = ""
        imprime_establecimiento = establecimiento
        if(imprime_establecimiento == "ninguno"):
            imprime_establecimiento = ""
        imprime_comuna = comuna
        if(imprime_comuna == "ninguno"):
            imprime_comuna = "Regional"

        aux = canvas.Canvas("INFORME "+imprime_establecimiento.upper()+" "+imprime_comuna.upper()+" - "+entrada.upper()+" "+anio+".pdf", pagesize = A4)

        aux.drawImage(os.getcwd()+"/generacion_informe/imagenes/logoSS.jpg", 81, 742, width=57, height=57)

        aux.setFont('Helvetica-Bold', 8)
        aux.drawString(66,721, "MINISTERIO DE SALUD")
        aux.drawString(35,708, "SUBSECRETARÍA DE SALUD PÚBLICA")

        aux.setFont('Helvetica', 8)
        aux.drawString(50,695, "DIVISIÓN POLÍTICAS PÚBLICAS")
        aux.drawString(38,682, "DPTO. DE NUTRICIÓN Y ALIMENTOS")

        aux.setFont('Helvetica-Bold', 12)
        aux.drawString(220,716, "INFORME RESUMEN")
        aux.setFont('Helvetica-Bold', 10)
        aux.drawString(220,703, "REGION DE LOS RIOS "+entrada.upper()+" "+anio)

        aux.drawString(75,659, "COBERTURA CORRESPONDIENTE A:")
        aux.drawString(75,646,  imprime_establecimiento+" "+imprime_comuna+" "+anio)

        #TABLA 1
        #colores fondo tabla 1
        aux.setFillColorRGB(0.78,0.54,0.74)
        aux.rect(75,603,485,31, fill=1) #MORADO OSCURO
        aux.setFillColorRGB(0.87,0.72,0.84)
        aux.rect(75,603,485,-26, fill=1) #MORADO POCO MAS CLARO
        aux.rect(75,407,485,-22, fill=1)
        aux.rect(75,288,485,25, fill=1)

        #Bordes externos tabla 1
        aux.line(75,633,560,633) 
        aux.line(75,633,75,180)
        aux.line(75,180,560,180)
        aux.line(560,180,560,633)

        #Lineas Horizontales tabla 1
        aux.setFont('Helvetica', 10)
        aux.line(75,603,560,603)
        aux.line(75,577,560,577)
        aux.line(75,552,560,552)
        aux.line(75,529,560,529)
        aux.line(75,504,560,504)
        aux.line(75,480,560,480)
        aux.line(75,456,560,456)
        aux.line(75,431,560,431)
        aux.line(75,407,560,407)
        aux.line(75,385,560,385)
        aux.line(75,337,560,337)
        aux.line(75,313,560,313)
        aux.line(75,288,560,288)
        aux.line(75,252,560,252)
        aux.line(75,215,560,215)

        #Lineas Verticales tabla 1
        aux.line(194,633,194,603)
        aux.line(194,577,194,407)
        aux.line(194,385,194,313)
        aux.line(194,288,194,180)

        aux.line(397,633,397,603)
        aux.line(397,577,397,407)
        aux.line(397,385,397,313)
        aux.line(397,288,397,180)

        aux.setFillColorRGB(0,0,0)
        aux.setFont('Helvetica-Bold', 9)

        #Titulos fila 1
        aux.drawString(120,617,"EDAD")
        aux.drawString(230,620,"TOTAL PERSONAS")
        aux.drawString(230,608,entrada+" "+anio)
        aux.drawString(422,620,"KG. ENTREGADOS")
        aux.drawString(422,608,entrada+" "+anio)

        #Titulos Columna 1
        aux.drawString(194,586,"MENORES DE 6 AÑOS")
        aux.drawString(85,561,"0 - 2 meses")
        aux.drawString(85,537,"3 - 5 meses")
        aux.drawString(85,513,"6 - 11 meses")
        aux.drawString(85,489,"12 - 17 meses")
        aux.drawString(85,464,"18 - 23 meses")
        aux.drawString(85,440,"24 - 47 meses")
        aux.drawString(85,416,"48 - 71 meses")
        aux.drawString(194,391,"GESTANTES")
        aux.drawString(85,369,"Normal,")
        aux.drawString(85,357,"Sobrepeso y")
        aux.drawString(85,343,"Obesas (NSO)")
        aux.drawString(85,321,"Bajo Peso (BP)")
        aux.drawString(194,297,"NODRIZAS")
        aux.drawString(85,272,"Lactancia Materna")
        aux.drawString(85,259,"exclusiva (LME)")
        aux.drawString(85,235,"Lactancia Materna")
        aux.drawString(85,225,"predominante (LMP)")
        aux.drawString(85,200,"Fórmula predominante")
        aux.drawString(85,188,"o exclusiva (FPE)")

        #Agregar datos obtendos de BD a las celdas
        #Hasta el momento solo son datos de prueba


        aux.drawString(281,561, str(controlador_generacion_informe.celda1x1(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(3)
        aux.drawString(470,561, str(controlador_generacion_informe.celda2x1(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(6)

        aux.drawString(281,537, str(controlador_generacion_informe.celda1x2(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(9)
        aux.drawString(470,537, str(controlador_generacion_informe.celda2x2(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(12)

        aux.drawString(281,513, str(controlador_generacion_informe.celda1x3(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(15)
        aux.drawString(470,513, str(controlador_generacion_informe.celda2x3(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(18)

        aux.drawString(281,489, str(controlador_generacion_informe.celda1x4(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(21)
        aux.drawString(470,489, str(controlador_generacion_informe.celda2x4(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(24)

        aux.drawString(281,464, str(controlador_generacion_informe.celda1x5(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(27)
        aux.drawString(470,464, str(controlador_generacion_informe.celda2x5(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(30)

        aux.drawString(281,440, str(controlador_generacion_informe.celda1x6(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(33)
        aux.drawString(470,440, str(controlador_generacion_informe.celda2x6(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(36)

        aux.drawString(281,416, str(controlador_generacion_informe.celda1x7(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(39)
        aux.drawString(470,416, str(controlador_generacion_informe.celda2x7(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(42)
#----
        aux.drawString(281,354, str(controlador_generacion_informe.celda1x8(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(45)
        aux.drawString(470,354, str(controlador_generacion_informe.celda2x8(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(48)

        aux.drawString(281,321, str(controlador_generacion_informe.celda1x9(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(51)
        aux.drawString(470,321, str(controlador_generacion_informe.celda2x9(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(54)

        aux.drawString(281,264, str(controlador_generacion_informe.celda1x10(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(57)
        aux.drawString(470,264, str(controlador_generacion_informe.celda2x10(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(60)

        aux.drawString(281,228, str(controlador_generacion_informe.celda1x11(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(63)
        aux.drawString(470,228, str(controlador_generacion_informe.celda2x11(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(66)

        aux.drawString(281,191, str(controlador_generacion_informe.celda1x12(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(69)
        aux.drawString(470,191, str(controlador_generacion_informe.celda2x12(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(72)

        #TABLA DE TOTALES
        aux.setFont('Helvetica', 10)
        aux.setFillColorRGB(0.87,0.72,0.84)
        aux.rect(145,156,351,-36,fill=1)
        aux.rect(63,120,82,-65,fill=1)
        aux.setFillColorRGB(0.78,0.54,0.74)
        aux.rect(493,156,67,-36,fill=1)


        aux.line(145,156,560,156)
        aux.line(63,120,560,120)
        aux.line(63,90,560,90)
        aux.line(63,55,560,55)

        aux.line(261,156,261,55)
        aux.line(377,156,377,55)
        aux.line(493,156,493,55)
        aux.line(560,156,560,55)

        aux.setFont('Helvetica-Bold', 9)
        aux.setFillColorRGB(0,0,0)
        aux.drawString(76,101,"PERSONAS")
        aux.drawString(96,75,"KG.")
        aux.drawString(69,63,"DISTRIBUIDOS")
        aux.drawString(169,146,"TOTAL NIÑOS")
        aux.drawString(166,133,"MENORES DE 6")
        aux.drawString(188,122,"NIÑOS")

        aux.drawString(270,133,"TOTAL GESTANTES")
        aux.drawString(391,133,"TOTAL NODRIZAS")

        aux.setFont('Helvetica-Bold', 12)
        aux.drawString(503,131,"TOTAL")
        
        #Agregar datos de BD a INFORME
        aux.drawString(195,101,str(controlador_generacion_informe.menores6(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(75)
        aux.drawString(313,101,str(controlador_generacion_informe.totalGestantes(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(78)
        aux.drawString(430,101,str(controlador_generacion_informe.totalNodrizas(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(81)

        aux.drawString(195,66,str(controlador_generacion_informe.menores6_kg(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(84)
        aux.drawString(313,66,str(controlador_generacion_informe.totalGestantes_kg(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(87)
        aux.drawString(430,66,str(controlador_generacion_informe.totalNodrizas_kg(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(90)

        aux.drawString(522,101,str(controlador_generacion_informe.totalPoblacion(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(92)
        aux.drawString(522,66,str(controlador_generacion_informe.totalKgRepartidos(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(94)


        aux.showPage()

        #TABLA ADULTOS MAYORES
        aux.line(55,767,544,767) 
        aux.line(55,767,55,674)
        aux.line(55,674,544,674)
        aux.line(544,674,544,767)

        aux.line(55,739,544,739)
        aux.line(55,711,544,711)

        aux.line(194,767,194,674)
        aux.line(397,767,397,674)


        aux.setFillColorRGB(0.78,0.54,0.74)
        aux.rect(55,767,489,-28, fill=1) #MORADO OSCURO
        aux.setFillColorRGB(0.87,0.72,0.84)
        aux.rect(55,739,489,-28, fill=1) #MORADO POCO MAS CLARO

        aux.setFillColorRGB(0,0,0)
        aux.setFont('Helvetica-Bold', 10)
        aux.drawString(100,749,"EDAD")
        aux.drawString(232,749,"TOTAL PERSONAS")
        aux.drawString(417,749,"KG. ENTREGADOS")

        aux.drawString(249,721,"ADULTOS MAYORES")

        aux.setFont('Helvetica', 10)
        aux.drawString(75,688,"De 70 y más años")

        aux.drawString(266,688,str(controlador_generacion_informe.totalPoblacionAdultosMayores(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(97)
        aux.drawString(451,688,str(controlador_generacion_informe.totalKgRepartidosAdultosMayores(mes, semestre, anio, establecimiento, comuna)))
        cargandoInforme.cargar(100)

        #Cuadro para agregar comentario
        aux.setFont('Helvetica-Bold', 10)
        aux.drawString(55,619,"ANÁLISIS")
        aux.line(55,604,544,604)
        aux.line(544,604,544,100)
        aux.line(55,100,544,100)
        aux.line(55,100,55,604)

        txt = ""
        linea = 585
        j = 0
        if(len(comentario) > 64):
            for i in range(len(comentario)):
                txt = txt + comentario[i]
                j = j + 1
                if(j == 65):
                    print txt
                    aux.drawString(85, linea, txt)
                    linea = linea-13
                    txt = txt + "\n"
                    txt = ""   
                    j = 0 
        else:
            aux.drawString(85,linea,comentario)


        aux.save()
    
        nombre_archivo = "INFORME "+imprime_establecimiento.upper()+" "+imprime_comuna.upper()+" - "+entrada.upper()+" "+anio+".pdf"
        self.nom_archivo = nombre_archivo
        if(os.path.exists(os.getcwd()+ "/INFORMES/" +nombre_archivo)):
            os.remove(os.getcwd()+"/INFORMES/"+nombre_archivo)
            shutil.move(nombre_archivo, os.getcwd()+"/INFORMES/")
        else:
            shutil.move(nombre_archivo, os.getcwd()+"/INFORMES/")

        if(self.mostrar == True):
            os.startfile(os.getcwd()+"/INFORMES/INFORME "+imprime_establecimiento.upper()+" "+imprime_comuna.upper()+" - "+entrada.upper()+" "+anio+".pdf")

            lista = ""
            listaInexistentes = list(set(controlador_generacion_informe.registrosInexistentes))
            if(len(listaInexistentes) == 0):
                pass
            else:
                for elemento in listaInexistentes:
                    lista = lista + elemento+"<br>"
                self.correctMessage(u"<font size = '4'><b> Registros Inexistentes </b></font> <br><br>"+lista.decode('cp1252'))
        else:
            self.mostrar = True


    def salir(self):
        self.setVisible(False)

    def correctMessage(self, message):
        """Función que despliega un mensaje de operacion correcta.
        @param message"""
        QtGui.QMessageBox.information(self, "Resgistro Inexistentes", message)

    def errorMessage(self, message):
        """Función que despliega un mensaje de error.
        @param message"""
        QtGui.QMessageBox.warning(self,u"ERROR!",message)