def listarDepartamentos(self): sql="SELECT * FROM departamentos;" self.cursor.execute(sql) qry=self.cursor.fetchall() if qry !=None: ut.entablar(self.tablaDeps,qry,['id','Nombre'])
def continuar(self): current=self.stack.currentIndex() if (current+1==1): #Si es el primer paso selecciona los departamentos self.lbStatus.setText("Preparacion de la tabla de conteo") lista=self.tablaDeps.selectedItems() self.deps=[] for item in lista: #Agrupa en una lista los id de los departamentos tomando de la listWidget los que fueron seleccionados if self.tablaDeps.column(item)==0: self.deps.append(str(item.text())) self.stack.setCurrentIndex(current+1) elif (current+1==2): #Si es el segundo paso ordena las columnas y prepara el query self.lbStatus.setText("Vista previa de los productos") self.cols="" lista=self.lsColumnas.selectedItems() for i in range(int(self.lsColumnas.count())): if self.lsColumnas.item(i).checkState()==2: if len(self.cols)>0:self.cols+="," # Coma inteligente para evitar que sobren o falten self.cols+=self.columnas[str(self.lsColumnas.item(i).text())] #convierte en texto las columnas for val,radio in self.ordenes.iteritems(): #Por cada radiobutton si este esta checado toma su valor para ordenar if radio.isChecked()==True: self.orden=val #print "columnas %s\nordenadas por %s"%(self.cols,self.orden) #Lo siguiente es para comprobar que todos los productos tienen una existencia asociada y si no la tiene la crean self.setCursor(QtGui.QCursor(16)) sql="INSERT INTO existencia SELECT ref,1,0,0,0 FROM productos WHERE ref NOT IN (SELECT producto from existencia)" self.cursor.execute(sql) qry=self.cursor.fetchall() if qry !=None: #for prod in qry: #self.cursor.execute("INSERT INTO existencia VALUES(%s,1,0,0,0)"%prod[0]) self.ui.conexion.commit() #Hasta este punto si todo sale bien registra los cambios en la base de datos self.filde='' if len(self.deps)>0: rcv=str(self.deps.pop()) self.filde=' AND (departamento='+rcv for dep in self.deps: self.filde+=' OR departamento=%s'%dep self.deps.append(rcv) self.filde+=') ' self.query="SELECT %s from productos, familias as f, existencia as e where familia=f.id and e.producto=ref %s order by %s "%(self.cols,self.filde,self.orden) #print self.query self.cursor.execute(self.query) resul=self.cursor.fetchall() if resul !=None: ut.entablar(self.tablaProductos,resul,self.cols.split(',')) #self.tablaProductos.setColumnCount (self.tablaProductos.columnCount()+1) #Pone una columna extra en la tabla self.setCursor(QtGui.QCursor(0)) self.stack.setCurrentIndex(self.stack.currentIndex()+1) #Al pasar a la etapa de conteo elif current+1==3: self.lbStatus.setText("Etapa de conteo") msgBox=QtGui.QMessageBox(QtGui.QMessageBox.Question,"Confirmacion","A continuacion se procedera a contar y no sera posible cancelar o editar las configuraciones del inventario hasta que se de por terminado.<h3>Desea continuar?</h3>",QtGui.QMessageBox.Yes|QtGui.QMessageBox.No,self) if msgBox.exec_()==QtGui.QMessageBox.Yes: self.tbCancelar.setEnabled(False) self.tbAtras.setEnabled(False) try: sql="INSERT INTO inventarios VALUES(Null, Now(),0,'%s','%s',1,%s,%s)"%(','.join(self.deps),self.orden,self.auditor,self.gerente) self.cursor.execute(sql) except : print "Error, %s"%(sql) else: self.ui.conexion.commit() sql=self.ui.conexion.lastId() self.cursor.execute(sql) self.inventario=self.cursor.fetchone()[0] sql="UPDATE existencia as e,productos, familias as f set inconsistencia=0, stock_fisico=stock_logico where familia=f.id and e.producto=ref %s ;"%(self.filde) self.cursor.execute(sql) self.ui.conexion.commit() self.iniConteo() self.stack.setCurrentIndex(self.stack.currentIndex()+1) #Al terminar de contar elif (current+1==4): msgBox=QtGui.QMessageBox(QtGui.QMessageBox.Question,"Confirmacion","En este punto, todos los productos deben estar contabilizados, y se procedera a cerrar el inventario.<h3>Desea seguro que desea terminar el inventario?</h3>",QtGui.QMessageBox.Yes|QtGui.QMessageBox.No,self) self.gerente=self.autentificacion(2) if msgBox.exec_()==QtGui.QMessageBox.Yes and self.gerente!=False: self.stack.setCurrentIndex(self.stack.currentIndex()+1) self.setCursor(QtGui.QCursor(16)) sql="UPDATE existencia set stock_logico=stock_fisico where inventario=%s"%(self.inventario) self.curser.execute(sql) self.curser.execute("UPDATE inventarios set estado=0,auditor=%s, gerente=%s, saldo=(select round(sum(costo*inconsistencia),3) from existencia,productos where producto=ref and inventario=id_inventario) where id_inventario=%s"%(self.auditor,self.gerente['id_usuario'],self.inventario)) self.ui.conexion.commit() self.setCursor(QtGui.QCursor(0)) self.cursor.execute("select count(*),round(sum(costo*inconsistencia),3) as balance,round(sum(costo*stock_logico),3) as valor from existencia,productos where producto=ref and inventario=%s;"%self.inventario) data=self.cursor.fetchone() self.cursor.execute("select count(*) from existencia,productos where producto=ref and inventario=%s and inconsistencia!=0;"%self.inventario) data2=self.cursor.fetchone() filde=self.filde.replace('departamento','id') self.cursor.execute("select nombre from departamentos where id>0 %s ;"%filde) data3=self.cursor.fetchall() depa='' for item in data3: depa+=" %s "%(item) campos={'$fecha':self.fecha,'$empresa':'','$deps':'','$nacontados':'','$invalor':'','$naicon':'','$baincon':''} campos['$deps']=depa campos['$empresa']=str(self.cfg.getDato('empresa','nombre')) if data!=None: campos['$nacontados']=str(data[0]) campos['$invalor']=str(data[2]) campos['$naicon']=str(data2[0]) campos['$baincon']=str(data[1]) html=str(self.qteResumen.toHtml()) for key,item in campos.iteritems(): html=html.replace(key,str(item)) self.qteResumen.setHtml(html) elif (current+1==5): self.listarIncon() self.tbAdelante.setText("Finalizar") elif (current+1==6): self.done(1)