def on_btnApertura_clicked( self ): """ Llamar a el formulario apertura para intentar crear una nueva sesión de caja ó continuar con una sesión anterior """ self.datosSesion.usuarioId = self.user.uid estado = not self.abierto query = QSqlQuery() if estado: # try: if not self.database.isOpen(): if not self.database.open(): raise UserWarning( u"No se pudo abrir la conexión con la"\ + " base de datos" ) q = """ SELECT apertura.iddocumento, apertura.idtipocambio, tc.fecha, tc.tasa, IFNULL(tc.tasabanco,tc.tasa) as tasabanco, apertura.idcaja FROM `esquipulasdb`.`documentos` apertura JOIN tiposcambio tc ON tc.idtc = apertura.idtipocambio JOIN personasxdocumento pd ON pd.iddocumento = apertura.iddocumento AND pd.idaccion=%d LEFT JOIN docpadrehijos ph ON apertura.iddocumento=ph.idpadre LEFT JOIN documentos cierre ON cierre.iddocumento = ph.idhijo AND cierre.idtipodoc=%d WHERE apertura.idtipodoc=%d AND pd.idpersona=%d GROUP BY apertura.iddocumento HAVING SUM(IFNULL(cierre.idtipodoc,0)) = 0; """ % ( constantes.AUTOR, constantes.IDARQUEO, constantes.IDAPERTURA, self.datosSesion.usuarioId ) if not query.prepare( q ): raise Exception( u"No se pudo preparar la consulta para "\ + "recuperar la información de la sesión" ) if not query.exec_(): raise Exception( u"No se pudo ejecutar la consulta para"\ + " recuperar la información de la sesión" ) # Si existe al menos una sesion abierta no muestra el dialogo # de iniciar caja if query.size() > 0: reply = QMessageBox.question( self, qApp.organizationName(), u"Usted tiene una sesión de caja"\ + " abierta. Desea continuar?", QMessageBox.Yes, QMessageBox.No ) if reply == QMessageBox.Yes: query.first() self.datosSesion.usuarioId = self.user.uid self.datosSesion.sesionId = query.value( 0 ).toInt()[0] self.datosSesion.tipoCambioId = query.value( 1 ).toInt()[0] self.datosSesion.fecha = query.value( 2 ).toDate() self.datosSesion.tipoCambioOficial = Decimal ( query.value( 3 ).toString() ) self.datosSesion.tipoCambioBanco = Decimal ( query.value( 4 ).toString() ) self.datosSesion.cajaId = query.value( 5 ).toInt()[0] if self.datosSesion.valid: self.status = estado logging.info( u"El usuario %s ha continuado una sesión de caja" % self.user.user ) else: QMessageBox.critical( self, qApp.organizationName(), u"No fue posible abrir la " + "sesión anterior. Por favor" + " contacte al administrador" + " del sistema" ) logging.error( u"No se pudo continuar con la sesión" + " de caja del usuario" ) else: apertura = DlgApertura( self ) if apertura.exec_() == QDialog.Accepted: self.status = estado if self.database.isOpen(): self.database.close() else: arqueo = FrmArqueo( self.datosSesion, self,True ) arqueo.show()
def on_btnArqueo_clicked( self ): """ Activar el formulario de arqueo """ arqueo = FrmArqueo( self.datosSesion, self ) arqueo.show()