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')
Esempio n. 2
0
 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")
     )
Esempio n. 3
0
 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")
     )
Esempio n. 5
0
 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"))
Esempio n. 6
0
 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')
Esempio n. 7
0
 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()
Esempio n. 8
0
 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()
Esempio n. 10
0
 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"))
Esempio n. 11
0
 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
Esempio n. 12
0
 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')
Esempio n. 13
0
 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
Esempio n. 14
0
 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")
Esempio n. 15
0
 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.")
Esempio n. 16
0
 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')