コード例 #1
0
ファイル: devolucion.py プロジェクト: armonge/EsquipulasPy
 def data( self, index, role = Qt.DisplayRole ):
     """
     Esta funcion redefine data en la clase base, es el metodo que se utiliza para mostrar los datos del modelo
     """
     value = QSqlQueryModel.data( self, index, role )
     exchangeRate = Decimal( QSqlQueryModel.data( self, index.model().index( index.row(), TASA ) ).toString() )
     if value.isValid() and role in ( Qt.DisplayRole, Qt.EditRole ):
         if index.column() in ( TOTAL, SUBTOTAL, COSTO, IMPUESTOS ):
             return moneyfmt( Decimal( value.toString() ), 2, "US$" ) + " / " + moneyfmt( Decimal( value.toString() ) * exchangeRate, 2 , "C$" )
     return value
コード例 #2
0
ファイル: conciliacion.py プロジェクト: armonge/EsquipulasPy
    def data( self, index, role = Qt.DisplayRole ):
        """
        Esta funcion redefine data en la clase base, es el metodo 
        que se utiliza para mostrar los datos del modelo
        """

        if not index.isValid():
            return None

        column = index.column()

        value = QSqlQueryModel.data( self, index, role )

        if column == CONCILIADO:
            if role == Qt.CheckStateRole and index.row() > 0:
                value = QSqlQueryModel.data( self, self.index( index.row(), 4 ), Qt.DisplayRole ).toInt()[0]
                return QVariant( Qt.Checked ) if value == 1 else QVariant( Qt.Unchecked )
            elif role == Qt.EditRole:
                return QSqlQueryModel.data( self, self.index( index.row(), 4 ), Qt.DisplayRole ).toInt()[0]
            else:
                return None
        elif column == SALDO:
            if role == Qt.DisplayRole:
                value = QSqlQueryModel.data( self, self.index( index.row(), 3 ), Qt.DisplayRole )
                value = Decimal( value.toString() )
                return moneyfmt( value, 4, "C$" )
        elif column == DEBE:
            if role == Qt.DisplayRole:
                value = Decimal( value.toString() )
                return moneyfmt( value, 4, "C$" ) if value > 0 else ""
            elif role == Qt.EditRole:
                return value
        elif column == HABER:
            if role == Qt.DisplayRole:
                value = Decimal( QSqlQueryModel.data( self, self.index( index.row(), DEBE ), role ).toString() )
                return moneyfmt( value * -1, 4, "C$" ) if value < 0 else ""
        elif column == CONCEPTO:
            if role == Qt.ToolTipRole:
                value = QSqlQueryModel.data( self, self.index( index.row(), 7 ), Qt.DisplayRole )
                return value
            elif role == Qt.DisplayRole:
                return value
            else:
                return None
        elif column == DELBANCO:
            if role == Qt.EditRole:
                value = QSqlQueryModel.data( self, self.index( index.row(), 5 ), Qt.DisplayRole )
                return value
            elif role == Qt.DisplayRole and index.row() > 0:
                value = QSqlQueryModel.data( self, self.index( index.row(), 5 ), Qt.DisplayRole )
                return "Si" if value == 1 else "No"
        elif column == IDTIPODOC:
            if role == Qt.EditRole:
                value = QSqlQueryModel.data( self, self.index( index.row(), 6 ), Qt.DisplayRole )
                return value
        elif column == FECHA:
            return value
        return None
コード例 #3
0
ファイル: articulos.py プロジェクト: armonge/EsquipulasPy
 def data( self, index, role = Qt.DisplayRole ):
     if role == Qt.CheckStateRole and index.column() == ACTIVO:
         if index.column() == ACTIVO:
             return  QVariant( Qt.Checked ) if index.data( Qt.EditRole ).toBool() else QVariant( Qt.Unchecked )
     elif role == Qt.DisplayRole and index.column() == ACTIVO:
         return None
     return QSqlQueryModel.data( self, index, role )
コード例 #4
0
ファイル: conciliacion.py プロジェクト: armonge/EsquipulasPy
 def data( self, index, role = Qt.DisplayRole ):
     """
     Esta funcion redefine data en la clase base, es el metodo 
     que se utiliza para mostrar los datos del modelo
     """
     if not index.isValid():
         return None
     value = QSqlQueryModel.data( self, index, role )
     if index.column() == FECHA and role == Qt.DisplayRole:
         value = value.toDate().toString( "MMMM yyyy" )
     return value
コード例 #5
0
 def data(self, index, int_role=None):
     """
     Reimplementation of data method if is col 1 (street type)
     :param index: model index
     :param int_role: Display role/User role etc
     :return: Modified value with Type prefix
     """
     value = QSqlQueryModel.data(self, index, int_role)
     if value and int_role == Qt.DisplayRole:
         if index.column() == 1:
             value = "Type " + str(value)
     return value
コード例 #6
0
    def data( self, index, role = Qt.DisplayRole ):
        """
        Esta funcion redefine data en la clase base, es el metodo que se 
        utiliza para mostrar los datos del modelo
        """
        value = QSqlQueryModel.data( self, index, role )
        if not value.isValid():
            return None

        if index.column() in ( SALDO, TOTAL ):
            if role == Qt.DisplayRole:
                value = value.toString()
                value = moneyfmt( Decimal( value ), 4, "C$" ) if value != "" else ""


        return value
コード例 #7
0
 def data(self, index, role=None):
     """get score table from view"""
     if role is None:
         role = Qt.DisplayRole
     if role == Qt.DisplayRole:
         unformatted = unicode(
             self.record(index.row()).value(index.column()).toString())
         if index.column() == 2:
             # we do not yet use this for listing remote games but if we do
             # this translation is needed for robot players
             names = [m18n(name) for name in unformatted.split('///')]
             return QVariant(', '.join(names))
         elif index.column() == 1:
             dateVal = datetime.datetime.strptime(unformatted,
                                                  '%Y-%m-%dT%H:%M:%S')
             return QVariant(dateVal.strftime('%c').decode('utf-8'))
     return QSqlQueryModel.data(self, index, role)
コード例 #8
0
ファイル: queryModel.py プロジェクト: liumin0/stockii_client
 def setQuery(self,  str,  db=None):
     if db == None:
         self.query = QSqlQuery(str)
     else:
         self.query = str
     QSqlQueryModel.setQuery(self,  str)
     del self.data
     self.data = []
     self.rCount = QSqlQueryModel.rowCount(self)
     if self.rCount > 10000:
         self.rCount = 10000
     self.cCount = QSqlQueryModel.columnCount(self)
     for i in range(self.rCount ):
         row = []
         for j in range(self.cCount):
             row.append(QSqlQueryModel.data(self, QSqlQueryModel.index(self, i, j)))
         self.data.append(row)
     self.clear()
     print self.rowCount(), self.columnCount()
コード例 #9
0
 def setQuery(self, str, db=None):
     if db == None:
         self.query = QSqlQuery(str)
     else:
         self.query = str
     QSqlQueryModel.setQuery(self, str)
     del self.data
     self.data = []
     self.rCount = QSqlQueryModel.rowCount(self)
     if self.rCount > 10000:
         self.rCount = 10000
     self.cCount = QSqlQueryModel.columnCount(self)
     for i in range(self.rCount):
         row = []
         for j in range(self.cCount):
             row.append(
                 QSqlQueryModel.data(self, QSqlQueryModel.index(self, i,
                                                                j)))
         self.data.append(row)
     self.clear()
     print self.rowCount(), self.columnCount()
コード例 #10
0
ファイル: apertura.py プロジェクト: armonge/EsquipulasPy
class DlgApertura ( QDialog, Ui_dlgApertura ):
    def __init__( self, parent, cerrar = False ):
        """
        Constructor para agregar un nuevo articulo
        """
        super( DlgApertura, self ).__init__( parent )
        self.parentWindow = parent
        self.setupUi( self )
        
        self.fechaApertura = None
        self.capitalMaximo = Decimal(0)
        self.editmodel = AperturaModel( parent.datosSesion )
        
        self.cerrar = cerrar


        self.txtUsuario.setText( parent.user.user )
        self.txtUsuario.setReadOnly( True )

#        self.txtUser.setFocus()
        self.txtPassword.setEchoMode( QLineEdit.Password )
        self.setWindowIcon( QIcon( ":/icons/res/logo.png" ) )


        self.txtSaldoC.setAlignment( Qt.AlignRight )
        self.txtSaldoD.setAlignment( Qt.AlignRight )
        self.txtSaldoC.setPrefix("C$")
        self.txtSaldoD.setPrefix("US$")
        
        self.supervisor = None

        if cerrar:
            self.swcaja.setCurrentIndex( 1 )
            self.txtcaja.setText( parent.cajaNombre )
            self.txtcaja.setReadOnly( True )
            self.editmodel.cajaId = parent.datosSesion.cajaId

        else:
            self.swcaja.setCurrentIndex( 0 )
            self.cajasmodel = QSqlQueryModel()
            try:
                if not QSqlDatabase.database().isOpen():
                    if not QSqlDatabase.database().open():
                        raise UserWarning( u"No se pudo abrir la conexión "
                                           + "con la base de datos" )

                
                q = """
                SELECT
                    d.idcaja,
                    c.descripcion,
                    SUM(IF(m.idtipomoneda = %d,m.monto,0)) AS totalC,
                    SUM(IF(m.idtipomoneda = %d,m.monto,0)) AS totalD
                FROM
                movimientoscaja m
                JOIN documentos d ON d.iddocumento = m.iddocumento
                JOIN cajas c ON c.idcaja = d.idcaja
                WHERE d.idcaja is not null AND m.idtipomovimiento=%d
                GROUP BY  d.idcaja;""" % ( constantes.IDCORDOBAS,
                        constantes.IDDOLARES, constantes.IDPAGOEFECTIVO)
                self.cajasmodel.setQuery( q )
                if self.cajasmodel.rowCount() == 0:
                    q = """
                    SELECT
                        c.idcaja,
                        c.descripcion,
                        0 AS totalC,
                        0 AS totalD
                    FROM cajas c;
                    """
                    self.cajasmodel.setQuery( q )
#                    FIXME:Esto no funciona en el caso de que hallan varias cajas y solo 
                    if self.cajasmodel.rowCount() == 0:
                        QMessageBox.critical( self, qApp.organizationName(),
                                         "No existe ninguna caja en la base de datos" )

                query = QSqlQuery( """
                SELECT
                    fechacreacion
                    FROM esquipulasdb.documentos d
                    LEFT JOIN personasxdocumento pd ON pd.iddocumento = d.iddocumento
                    WHERE pd.idpersona = %d AND idtipodoc =%d;
                    """ % ( self.editmodel.datosSesion.usuarioId,
                            constantes.IDARQUEO ) )
                query.first()
                self.fechaApertura = query.value( 0 ).toDate()
                
                

            except UserWarning as inst:
                QMessageBox.critical( self, qApp.organizationName(),
                                      unicode( inst ) )
                logging.error( unicode( inst ) )
            except Exception as inst:
                logging.critical( unicode( inst ) )
            finally:
                if QSqlDatabase.database().isOpen():
                    QSqlDatabase.database().close()

            self.dtFechaTime.setDisplayFormat( 'dd/MM/yyyy' )
            self.dtFechaTime.setMaximumDateTime( QDateTime.currentDateTime() )
            if self.fechaApertura is not None:
                self.dtFechaTime.setMinimumDate( self.fechaApertura )


            self.cbcaja.setModel( self.cajasmodel )
            self.cbcaja.setModelColumn( 1 )
            self.cbcaja.setCurrentIndex( -1 )
            self.dtFechaTime.setDateTime( QDateTime.currentDateTime() )

            self.buttonBox.rejected.connect( self.reject )

    def accept( self ):
        if not self.cerrar:
            self.editmodel.datosSesion.cajaId = self.cajasmodel.record( self.cbcaja.currentIndex() ).value( "idcaja" ).toInt()[0]

        if self.editmodel.valid:
            supervisor = User( self.txtUser.text(), self.txtPassword.text() )
            if supervisor.valid:
                if not supervisor.hasRole( 'gerencia' ):
                    QMessageBox.critical( self, qApp.organizationName() + u": Autenticación", "El usuario %s no tiene permisos para autorizar la apertura de caja" % supervisor.user )
                    logging.info( u"El usuario %s intento autorizar la apertura de una sesión" % supervisor.user )
                    return


                self.editmodel.supervisorId = supervisor.uid
                self.editmodel.datosSesion.fecha = self.dtFechaTime.date()

                if not self.editmodel.save():
                    QMessageBox.warning( self,
                                         qApp.organizationName(),
                                         self.editmodel.error )
                    logging.error( self.editmodel.error )
                    #else:
                        #QMessageBox.warning( None, u"La sesión no fue abierta", u"La sesión no fue abierta. Por favor Contacte al administrador del sistema")
                else:
                    QMessageBox.information( self,
                                             qApp.organizationName(),
                                              u"La sesión fue abierta exitosamente" )
                    logging.info( u"El usuario %s ha abierto una sesión de caja autorizada por el usuario %s " % ( self.parentWindow.user.user, supervisor.user ) )
                    super( DlgApertura, self ).accept()
            else:
                QMessageBox.critical( self,
                                      qApp.organizationName() + u": Autenticación",
                                      supervisor.error )
                self.txtUser.setFocus()
                self.txtPassword.setText( "" )
        else:
            self.cbcaja.setFocus()
            QMessageBox.warning( self, qApp.organizationName(),
                                  self.editmodel.error )
            #self.editmodel.errorId =0

    @pyqtSlot()
    def on_txtSaldoC_editingFinished( self ):
        if self.editmodel != None:
            self.editmodel.saldoCordoba = Decimal( str( self.txtSaldoC.value() ) )


    @pyqtSlot()
    def on_txtSaldoD_editingFinished( self ):
        if self.editmodel != None:
            self.editmodel.saldoDolar = Decimal( str( self.txtSaldoD.value() ) )
            
    @pyqtSlot(int)
    def on_cbcaja_currentIndexChanged(self,indice):
        if indice ==-1:
            self.txtSaldoC.setValue(0)
            self.txtSaldoD.setValue(0)
        else:
            self.txtSaldoC.setValue( Decimal( self.cajasmodel.data(self.cajasmodel.index(indice,2)).toString()))
            self.txtSaldoD.setValue( Decimal( self.cajasmodel.data(self.cajasmodel.index(indice,3)).toString()))
       

    @property
    def idsesion( self ):
        return self.sesion

    @property
    def fecha( self ):
        return self.dtFechaTime.date()