Ejemplo n.º 1
0
class AgregarDocumentoModal(QtGui.QDialog):
    
    def __init__(self, tipo, datos):
        super(AgregarDocumentoModal, self).__init__()
        self.setWindowFlags(QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowTitleHint)
        self.ui=Ui_Dialog_nuevoDocumento()
        self.ui.setupUi(self)
        # Tipo de documento
        self.tipo = tipo
        titulo = ""
        if(tipo==0):
            titulo = "Nuevo Documento Compra"
            self.ui.cuentaProveedoresClienteLabel.setText("Cuenta Proveedor")
        elif(tipo==1):
            titulo =  "Nuevo Documento Venta"
            self.ui.cuentaProveedoresClienteLabel.setText("Cuenta Cliente")
        self.setWindowTitle(titulo)
        #Fecha actual

        rx = QtCore.QRegExp("[0-9]*")
        qr = QtGui.QRegExpValidator(rx)
        self.ui.sucursalLineEdit.setValidator( qr )

        self.ui.cuentaProveedoresClienteLineEdit.setValidator( qr )
        self.ui.contracuentaLineEdit.setValidator( qr )
        self.ui.correlativoLineEdit.setValidator( qr)
        
        self.datos = datos
        self.llenarDatos()
        self.resultado = False
        self.exec_()
        
    def accept(self):
        # Datos
        # Limitar a numeros o alfanumerico
        
        self.datos["Numero Documento"] = unicode(self.ui.labelNDocumento.text())
        self.datos["RS Emisor"] = unicode(self.ui.labelEmisor.text())
        self.datos["RS Receptor"] = unicode(self.ui.labelReceptor.text())
        self.datos["Fecha"] = unicode(self.ui.fechaDateEdit.text())
        self.datos["Sucursal"] =unicode( self.ui.sucursalLineEdit.text())
        self.datos["Glosa"] = unicode(self.ui.glosaLineEdit.text())
        self.datos["Monto Exento"] = unicode(self.ui.montoExcentoSpinBox.value())
        self.datos["Cuenta"] = unicode(self.ui.cuentaProveedoresClienteLineEdit.text())
        self.datos["Contracuenta"] = unicode(self.ui.contracuentaLineEdit.text())
        self.datos["Correlativo"] = unicode(self.ui.correlativoLineEdit.text())
        if(self.ui.activoFijoCheckBox.checkState () == QtCore.Qt.Checked):
            self.datos["Activo Fijo"] = 1
        else:
            self.datos["Activo Fijo"] = 0
        # Si uno de los datos esta vacio
        # TODO: Cambiar color al encontrar error
        fallas = []
        for key, value in self.datos.items():
            if(not ("%s"%value)):
                fallas.append(key)
        error = ""
        for i in fallas:
            error = error+"%s\n"%i
        if(len(fallas)!=0):
            QtGui.QMessageBox.about(self, "Datos incompletos", "Faltan datos a ingresar en los siguientes campos:\n%s"%error)
        else:
            # Guardando
            
            DBController.guardarFactura(self.datos, self.tipo)
            self.resultado = True
            self.close()
    def llenarDatos(self):
        self.ui.montoExcentoSpinBox.setMaximum(2**53)
        
        if(self.tipo == 0):
            self.ui.cuentaProveedoresClienteLineEdit.setText("21070100")
        elif(self.tipo == 1):
            self.ui.cuentaProveedoresClienteLineEdit.setText("11040100")
        self.llenarUltima()
        self.ui.montoTotalLabel.setText("$ %s"%self.datos["Monto Total"])
        self.ui.labelNDocumento.setText(self.datos["Numero Documento"])
        self.ui.labelEmisor.setText(self.datos["RS Emisor"])
        self.ui.labelReceptor.setText(self.datos["RS Receptor"])

        if(self.datos["Fecha"] == None):
            self.ui.fechaDateEdit.setDateTime(QtCore.QDateTime.currentDateTime())
            self.ui.fechaDateEdit.setReadOnly(False)
            self.ui.fechaDateEdit.setFocus()
            
            qm = QtGui.QMessageBox(self)
            qm.setWindowTitle('Advertencia')
            qm.setText('''La fecha no pudo ser encontrada, debe ingresar \nla fecha correcta en el campo correspondiente''')
            qm.addButton(QtGui.QMessageBox.Yes).setText("Aceptar")
            qm.setIcon(QtGui.QMessageBox.Warning)
            reply = qm.exec_()
        else:
            self.ui.fechaDateEdit.setDate(QtCore.QDate.fromString(self.datos["Fecha"], "yyyy-MM-dd"))
            self.ui.contracuentaLineEdit.setFocus()
        
        if(self.datos["Tipo Documento"] == "34"):
            self.ui.montoExcentoSpinBox.setValue(float(self.datos["Monto Total"]))
            self.ui.montoExcentoSpinBox.setReadOnly(True)

        self.ui.activoFijoCheckBox.setCheckState(QtCore.Qt.Unchecked)
        if(self.datos["Activo Fijo"]):
            self.ui.activoFijoCheckBox.setCheckState(QtCore.Qt.Checked)
        
        self.ui.montoExcentoSpinBox.setMaximum(int(self.datos["Monto Total"]))
        
    def llenarUltima(self):
        
        fact = DBController.ultimaFactura(self.datos["Rut Emisor"])
        if(fact):
            self.datos["Sucursal"] = unicode(fact.sucursal)
            self.datos["Cuenta"] = unicode(fact.cuentaProveedores)
            self.datos["Glosa"] = unicode(fact.Glosa)
            self.datos["Contracuenta"] = unicode(fact.contracuenta)
            self.datos["Activo Fijo"] = fact.activoFijo
            self.datos["RS Emisor"] = fact.empresaEmisor.rS
            self.datos["RS Receptor"] = fact.empresaReceptor.rS
            self.ui.sucursalLineEdit.setText(self.datos["Sucursal"])
            self.ui.glosaLineEdit.setText(self.datos["Glosa"])
            self.ui.contracuentaLineEdit.setText(self.datos["Contracuenta"])
            self.ui.cuentaProveedoresClienteLineEdit.setText(self.datos["Cuenta"])