Exemple #1
0
    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()
Exemple #2
0
 def on_btnArqueo_clicked( self ):
     """
     Activar el formulario de arqueo
     """
     arqueo = FrmArqueo( self.datosSesion, self )
     arqueo.show()