def modificar(self): """ Modifica los datos de la presentación seleccionada. :return: """ presActual = self.tablaPresentacion.currentItem() if presActual != None: if ValidarDatos.validarCamposVacios(self.camposRequeridos): if self.validarFracciones(): row = presActual.row() tipo = str(self.tablaPresentacion.item(row, 0).text()) self.presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setUnidadMedida(str(self.lineUnidad_Medida.text())) self.presentacion.setCantidadFracciones(str(self.spinCantidad.value())) self.presentacion.setSubPresentacion(self.subPresentacion) if self.subPresentacion != None: self.setSuperPresentacion(str(self.lineTipo.text())) if self.subPresentacionOld != None: self.subPresentacion = self.subPresentacionOld self.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) QtGui.QMessageBox.information(self, 'Info', 'La Presentación fue modificada.', 'Aceptar') self.objectModified.emit() self.actualizar() else: QtGui.QMessageBox.warning(self, 'Atención', 'Seleccione la Presentación en la ' 'cual puede fraccionarse la Presentación actual.', 'Aceptar') else: QtGui.QMessageBox.warning(self, 'Atención', 'Hay datos obligatorios que no ' 'fueron completados.', 'Aceptar') else: QtGui.QMessageBox.warning(self, 'Atención', 'No se ha seleccionado una Presentación de la tabla', 'Aceptar')
def cargarPresentaciones(self): """ Carga la tabla de las presentaciones con los datos de todos las presentaciones disponibles. :return: """ self.cargarObjetos(self.tablaPresentacion, PresentacionModel.buscarTodos("tipo", self.sesion).all(), ("tipo", "unidad_medida", "cantidad_fracciones", "sub_presentacion") )
def cargarFraccionables(self): """ Carga los datos de las presentaciones que pueden fraccionarse en la tabla de la ventana. :return: """ self.cargarObjetos( self.tablaFraccionable, PresentacionModel.listarFraccionables(self.sesion).all(), ("tipo", "unidad_medida", "cantidad_fracciones"))
def cargarFraccionables(self): """ Carga los datos de las presentaciones que pueden fraccionarse en la tabla de la ventana. :return: """ self.cargarObjetos(self.tablaFraccionable, PresentacionModel.listarFraccionables(self.sesion).all(), ("tipo", "unidad_medida", "cantidad_fracciones") )
def cargarPresentaciones(self): """ Carga los datos de las presentaciones en la tabla de la ventana. :return: """ self.cargarObjetos( self.tablaPresentacion, PresentacionModel.buscarTodos("tipo", self.sesion).all(), ("tipo", "unidad_medida", "cantidad_fracciones", "sub_presentacion", "super_presentacion"))
def eliminar(self): """ Da de baja la presentación seleccionada. :return: """ itemActual = self.tablaPresentacion.currentItem() if itemActual == None: self.showMsjEstado( "No se ha seleccionado ninguna Presentación de la tabla") else: row = itemActual.row() tipo = str(self.tablaPresentacion.item(row, 0).text()) if self.bajaValida(ProductoModel, ProductoModel.id_presentacion, tipo): self.presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.borrar(self.sesion) self.showMsjEstado("La Presentación ha sido eliminada") tipo = self.presentacion.getSubPresentacion() if tipo: self.presentacion.setSubPresentacion(None) self.presentacion.modificar(self.sesion) self.presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) tipo = self.presentacion.getSuperPresentacion() if tipo: self.presentacion.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) self.presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setSubPresentacion(None) self.presentacion.modificar(self.sesion) self.tablaPresentacion.removeRow(row) self.objectDeleted.emit() self.actualizar() else: QtGui.QMessageBox.critical( self, 'Error', 'La Presentación no puede ser dada de baja, ' 'esta asignada a 1 ó más productos', 'Aceptar')
def setSuperPresentacion(self, superPresentacion): """ Setea la referencia a la presentación fraccionable. :param superPresentacion: referencia a la presentación fraccionable. :return: """ presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, self.subPresentacion).first() presentacion.setSuperPresentacion(superPresentacion) presentacion.modificar(self.sesion) self.objectModified.emit()
def buscarPresentacion(self): """ Busca y carga en la tabla los datos de una presentación para un tipo ingresado. :return: """ self.limpiarTabla(self.tablaPresentacion) self.cargarObjetos(self.tablaPresentacion, PresentacionModel.buscarLike(PresentacionModel.tipo, self.sesion, str(self.lineTipo_Pres.text())).all(), ("tipo", "unidad_medida", "cantidad_fracciones", "sub_presentacion") )
def setSuperPresentacion(self, superPresentacion): """ Setea la referencia a la presentación fraccionable. :param superPresentacion: referencia a la presentación fraccionable. :return: """ presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, self.subPresentacion).first() presentacion.setSuperPresentacion(superPresentacion) presentacion.modificar(self.sesion) self.objectModified.emit()
def buscar(self): """ Busca y carga en la tabla los datos de una presentación para un tipo ingresado. :return: """ self.limpiarTabla(self.tablaPresentacion) self.cargarObjetos( self.tablaPresentacion, PresentacionModel.buscarLike(PresentacionModel.tipo, self.sesion, str(self.lineTipo.text())).all(), ("tipo", "unidad_medida", "cantidad_fracciones", "sub_presentacion", "super_presentacion"))
def cantidadFracciones(self, codigo, cantidad): """ Calcula y devuelve la cantidad del poducto (subproducto, fracciones del producto fraccionable), número de fracciones * cantidad a fraccionar. :param codigo: Código del producto a fraccionar. :param cantidad: Cantidad a fraccionar. :return: resultado """ producto = ProductoModel.buscarAlta(ProductoModel.codigo_barra, self.sesion, codigo).first() presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, producto.id_presentacion).first() resultado = int(presentacion.getCantidadFracciones()) * cantidad return resultado
def eliminar(self): """ Da de baja la presentación seleccionada. :return: """ itemActual = self.tablaPresentacion.currentItem() if itemActual == None: QtGui.QMessageBox.warning(self, 'Atención', 'No se ha seleccionado ninguna Presentación de la tabla.', 'Aceptar') else: row = itemActual.row() tipo = str(self.tablaPresentacion.item(row, 0).text()) if self.bajaValida(ProductoModel, ProductoModel.id_presentacion, tipo): self.presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.borrar(self.sesion) QtGui.QMessageBox.information(self, 'Info', 'La Presentación ha sido eliminada.', 'Aceptar') tipo = self.presentacion.getSubPresentacion() if tipo: self.presentacion.setSubPresentacion(None) self.presentacion.modificar(self.sesion) self.presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) tipo = self.presentacion.getSuperPresentacion() if tipo: self.presentacion.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) self.presentacion = PresentacionModel.buscarAlta(PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setSubPresentacion(None) self.presentacion.modificar(self.sesion) self.tablaPresentacion.removeRow(row) self.objectDeleted.emit() self.actualizar() else: QtGui.QMessageBox.critical(self, 'Error', 'La Presentación no puede ser dada de baja, ' 'esta asignada a 1 ó más productos', 'Aceptar')
def cantidadFracciones(self, codigo, cantidad): """ Calcula y devuelve la cantidad del poducto (subproducto, fracciones del producto fraccionable), número de fracciones * cantidad a fraccionar. :param codigo: Código del producto a fraccionar. :param cantidad: Cantidad a fraccionar. :return: resultado """ producto = ProductoModel.buscarAlta(ProductoModel.codigo_barra, self.sesion, codigo).first() presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, producto.id_presentacion).first() resultado = int(presentacion.getCantidadFracciones()) * cantidad return resultado
def modificar(self): """ Modifica los datos de la presentación seleccionada. :return: """ presActual = self.tablaPresentacion.currentItem() if presActual != None: if ValidarDatos.validarCamposVacios(self.camposRequeridos): if self.validarFracciones(): row = presActual.row() tipo = str(self.tablaPresentacion.item(row, 0).text()) self.presentacion = PresentacionModel.buscarAlta( PresentacionModel.tipo, self.sesion, tipo).first() self.presentacion.setUnidadMedida( str(self.lineUnidad_Medida.text())) self.presentacion.setCantidadFracciones( str(self.spinCantidad.value())) self.presentacion.setSubPresentacion(self.subPresentacion) if self.subPresentacion != None: self.setSuperPresentacion(str(self.lineTipo.text())) if self.subPresentacionOld != None: self.subPresentacion = self.subPresentacionOld self.setSuperPresentacion(None) self.presentacion.modificar(self.sesion) self.showMsjEstado("La Presentación fue modificada") self.objectModified.emit() self.actualizar() else: self.showMsjEstado( "Seleccione la Presentación en la cual puede fraccionarse la Presentación actual." ) else: self.showMsjEstado( "Hay datos obligatorios que no fueron completados.") else: self.showMsjEstado( "No se ha seleccionado una Presentación de la tabla")
def crear(self): """ Da de alta una presentación nueva y la almacena en la base de datos. :return: """ if ValidarDatos.validarCamposVacios(self.camposRequeridos): if self.validarFracciones(): presentacion = PresentacionModel( str(self.lineTipo.text()), str(self.lineUnidad_Medida.text()), str(self.spinCantidad.value()), self.subPresentacion, self.superPresentacion) if presentacion.guardar(self.sesion): self.showMsjEstado("La Presentación fue dada de alta.") if self.subPresentacion != None: self.setSuperPresentacion(str(self.lineTipo.text())) self.objectCreated.emit() self.actualizar() else: presentacion = PresentacionModel.buscar( PresentacionModel.tipo, self.sesion, str(self.lineTipo.text())).first() if presentacion.getBaja(): if presentacion.getCantidadFracciones() > 1: item = self.tablaFraccionable.currentItem() if item: self.subPresentacion = str( self.tablaFraccionable.item(item.row(), 0).text()) presentacion.setBaja(False) presentacion.setSubPresentacion( self.subPresentacion) presentacion.modificar(self.sesion) superPres = presentacion.getTipo() presentacion = PresentacionModel.buscar( PresentacionModel.tipo, self.sesion, self.subPresentacion).first() presentacion.setSuperPresentacion(superPres) presentacion.modificar(self.sesion) self.showMsjEstado( "La Presentación fue dada de alta.") self.limpiarCampos() self.objectCreated.emit() else: self.showMsjEstado( "Seleccione la Presentación en la cual puede " "fraccionarse la Presentación actual.") else: presentacion.setBaja(False) presentacion.modificar(self.sesion) self.showMsjEstado( "La Presentación fue dada de alta.") self.limpiarCampos() self.objectCreated.emit() else: QtGui.QMessageBox.critical( self, 'Error', 'La Presentación ya existe.', 'Aceptar') else: self.showMsjEstado( "Seleccione la Presentación en la cual puede fraccionarse la Presentación actual." ) else: self.showMsjEstado( "Hay datos obligatorios que no fueron completados.")
def crear(self): """ Da de alta una presentación nueva y la almacena en la base de datos. :return: """ if ValidarDatos.validarCamposVacios(self.camposRequeridos): if self.validarFracciones(): presentacion = PresentacionModel(str(self.lineTipo.text()), str(self.lineUnidad_Medida.text()), str(self.spinCantidad.value()), self.subPresentacion, self.superPresentacion) if presentacion.guardar(self.sesion): QtGui.QMessageBox.information(self, 'Info', 'La Presentación fue dada de alta.', 'Aceptar') if self.subPresentacion != None: self.setSuperPresentacion(str(self.lineTipo.text())) self.objectCreated.emit() self.actualizar() else: presentacion = PresentacionModel.buscar(PresentacionModel.tipo, self.sesion, str(self.lineTipo.text())).first() if presentacion.getBaja(): if presentacion.getCantidadFracciones() > 1: item = self.tablaFraccionable.currentItem() if item: self.subPresentacion = str(self.tablaFraccionable.item(item.row(), 0).text()) presentacion.setBaja(False) presentacion.setSubPresentacion(self.subPresentacion) presentacion.modificar(self.sesion) superPres = presentacion.getTipo() presentacion = PresentacionModel.buscar(PresentacionModel.tipo, self.sesion, self.subPresentacion).first() presentacion.setSuperPresentacion(superPres) presentacion.modificar(self.sesion) QtGui.QMessageBox.information(self, 'Info', 'La Presentación fue dada de alta.', 'Aceptar') self.limpiarCampos() self.objectCreated.emit() else: QtGui.QMessageBox.warning(self, 'Atención', 'Seleccione la Presentación en la cual puede' 'fraccionarse la Presentación actual.', 'Aceptar') else: presentacion.setBaja(False) presentacion.modificar(self.sesion) QtGui.QMessageBox.information(self, 'Info', 'La Presentación fue dada de alta.', 'Aceptar') self.limpiarCampos() self.objectCreated.emit() else: QtGui.QMessageBox.critical(self, 'Error', 'La Presentación ya existe.', 'Aceptar') else: QtGui.QMessageBox.warning(self, 'Atención', 'Seleccione la Presentación en la cual puede' 'fraccionarse la Presentación actual.', 'Aceptar') else: QtGui.QMessageBox.warning(self, 'Atención', 'Hay datos obligatorios que no fueron completados.', 'Aceptar')