Esempio n. 1
0
 def fraccionar(self):
     """
     Fracciona un producto. Da de alta y almacena un nuevo producto en la base de datos
     de acuerdo al producto seleccionado para fraccionar, o si ya existe actualiza la cantidad.
     :return:
     """
     itemActual = self.tablaProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             if self.tablaFraccionable.rowCount() > 0:
                 itemFracc = self.tablaFraccionable.currentItem()
                 if itemFracc != None:
                     row = itemActual.row()
                     codigo_barra = str(self.tablaProducto.item(row, 0).text())
                     codigo_lote = str(self.tablaProducto.item(row, 3).text())
                     self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion, codigo_barra,
                                                                               codigo_lote).first()
                     if int(self.spinCantidad.value()) > int(self.loteProducto.getCantidad()):
                         QtGui.QMessageBox.warning(self, 'Atención', 'La cantidad ingresada no puede ser mayor a la '
                                                     'cantidad del Producto.', 'Aceptar')
                     else:
                         resto = int(self.loteProducto.getCantidad()) - int(self.spinCantidad.value())
                         self.loteProducto.setCantidad(resto)
                         self.loteProducto.modificar(self.sesion)
                         cantidadFracciones = self.cantidadFracciones(codigo_barra,
                                                                      int(self.spinCantidad.value()))
                         row = itemFracc.row()
                         codigo_barra = str(self.tablaFraccionable.item(row, 0).text())
                         self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion,
                                                                                  codigo_barra,
                                                                                   codigo_lote).first()
                         if self.loteProducto:
                             suma = int(self.loteProducto.cantidad) + int(cantidadFracciones)
                             self.loteProducto.setCantidad(suma)
                             self.loteProducto.modificar(self.sesion)
                         else:
                             loteProducto = LoteProductoModel(codigo_lote, codigo_barra,
                                                                  int(cantidadFracciones))
                             if loteProducto.guardar(self.sesion):
                                 QtGui.QMessageBox.information(self, 'Info', 'Lote/Producto fue dado de alta.', 'Aceptar')
                             else:
                                 QtGui.QMessageBox.critical(self, 'Error', 'Lote/Producto ya existe.', 'Aceptar')
                         QtGui.QMessageBox.information(self, 'Info', 'La cantidad fue modificada.', 'Aceptar')
                         self.actualizar()
                         self.objectModified.emit()
                 else:
                     QtGui.QMessageBox.warning(self, 'Atención', 'No se ha seleccionado un Fraccionable de la tabla.', 'Aceptar')
             else:
                 QtGui.QMessageBox.critical(self, 'Error', 'El Producto seleccionado no puede fraccionarse.', '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 un Producto de la tabla.', 'Aceptar')
Esempio n. 2
0
 def fraccionar(self):
     """
     Fracciona un producto. Da de alta y almacena un nuevo producto en la base de datos
     de acuerdo al producto seleccionado para fraccionar, o si ya existe actualiza la cantidad.
     :return:
     """
     itemActual = self.tablaProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             if self.tablaFraccionable.rowCount() > 0:
                 itemFracc = self.tablaFraccionable.currentItem()
                 if itemFracc != None:
                     row = itemActual.row()
                     codigo_barra = str(self.tablaProducto.item(row, 0).text())
                     codigo_lote = str(self.tablaProducto.item(row, 3).text())
                     self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion, codigo_barra,
                                                                               codigo_lote).first()
                     if int(self.spinCantidad.value()) > int(self.loteProducto.getCantidad()):
                         self.showMsjEstado("La cantidad ingresada no puede ser mayor a la "
                                            "cantidad del Producto.")
                     else:
                         resto = int(self.loteProducto.getCantidad()) - int(self.spinCantidad.value())
                         self.loteProducto.setCantidad(resto)
                         self.loteProducto.modificar(self.sesion)
                         cantidadFracciones = self.cantidadFracciones(codigo_barra,
                                                                      int(self.spinCantidad.value()))
                         row = itemFracc.row()
                         codigo_barra = str(self.tablaFraccionable.item(row, 0).text())
                         self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion,
                                                                                  codigo_barra,
                                                                                   codigo_lote).first()
                         if self.loteProducto:
                             suma = int(self.loteProducto.cantidad) + int(cantidadFracciones)
                             self.loteProducto.setCantidad(suma)
                             self.loteProducto.modificar(self.sesion)
                         else:
                             loteProducto = LoteProductoModel(codigo_lote, codigo_barra,
                                                                  int(cantidadFracciones))
                             if loteProducto.guardar(self.sesion):
                                 self.showMsjEstado("Lote/Producto fue dado de alta.")
                             else:
                                 self.showMsjEstado("Lote/Producto ya existe.")
                         self.showMsjEstado("La cantidad fue modificada")
                         self.actualizar()
                 else:
                     self.showMsjEstado("No se ha seleccionado un Fraccionable de la tabla.")
             else:
                 self.showMsjEstado("El Producto seleccionado no puede fraccionarse.")
         else:
             self.showMsjEstado("Hay datos obligatorios que no fueron completados.")
     else:
         self.showMsjEstado("No se ha seleccionado un Producto de la tabla")
Esempio n. 3
0
 def ajuste(self):
     """
     Actualiza la cantidad del producto seleccionado para realizar el ajuste negativo de stock.
     :return:
     """
     itemActual = self.tablaLoteProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             row = itemActual.row()
             codigo_barra = str(self.tablaLoteProducto.item(row, 0).text())
             codigo_lote = str(self.tablaLoteProducto.item(row, 3).text())
             self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion, codigo_barra,
                                                                      codigo_lote).first()
             resto = int(self.loteProducto.getCantidad()) - int(self.spinCantidad.value())
             if resto < 0:
                 QtGui.QMessageBox.critical(self, 'Error', 'La cantidad ingresada no puede ser mayor '
                                                             'a la cantidad del Producto.', 'Aceptar')
             else:
                 self.loteProducto.setCantidad(resto)
                 self.loteProducto.modificar(self.sesion)
                 QtGui.QMessageBox.information(self, 'Info', 'La cantidad fue modificada.', 'Aceptar')
                 self.objectModified.emit()
                 self.actualizar()
         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 un Lote/Producto de la tabla.', 'Aceptar')
Esempio n. 4
0
 def ajuste(self):
     """
     Actualiza la cantidad del producto seleccionado para realizar el ajuste negativo de stock.
     :return:
     """
     itemActual = self.tablaLoteProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             row = itemActual.row()
             codigo_barra = str(self.tablaLoteProducto.item(row, 0).text())
             codigo_lote = str(self.tablaLoteProducto.item(row, 3).text())
             self.loteProducto = LoteProductoModel.buscarLoteProducto(
                 self.sesion, codigo_barra, codigo_lote).first()
             resto = int(self.loteProducto.getCantidad()) - int(
                 self.spinCantidad.value())
             if resto < 0:
                 self.showMsjEstado(
                     "La cantidad ingresada no puede ser mayor a la cantidad del Producto"
                 )
             else:
                 self.loteProducto.setCantidad(resto)
                 self.loteProducto.modificar(self.sesion)
                 self.showMsjEstado("La cantidad fue modificada")
                 self.actualizar()
         else:
             self.showMsjEstado(
                 "Hay datos obligatorios que no fueron completados.")
     else:
         self.showMsjEstado(
             "No se ha seleccionado un Lote/Producto de la tabla")
Esempio n. 5
0
 def ajuste(self):
     """
     Actualiza la cantidad del producto seleccionado para realizar el ajuste negativo de stock.
     :return:
     """
     itemActual = self.tablaLoteProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             row = itemActual.row()
             codigo_barra = str(self.tablaLoteProducto.item(row, 0).text())
             codigo_lote = str(self.tablaLoteProducto.item(row, 3).text())
             self.loteProducto = LoteProductoModel.buscarLoteProducto(self.sesion, codigo_barra,
                                                                      codigo_lote).first()
             resto = int(self.loteProducto.getCantidad()) - int(self.spinCantidad.value())
             if resto < 0:
                 self.showMsjEstado("La cantidad ingresada no puede ser mayor a la cantidad del Producto")
             else:
                 self.loteProducto.setCantidad(resto)
                 self.loteProducto.modificar(self.sesion)
                 self.showMsjEstado("La cantidad fue modificada")
                 self.actualizar()
         else:
             self.showMsjEstado("Hay datos obligatorios que no fueron completados.")
     else:
         self.showMsjEstado("No se ha seleccionado un Lote/Producto de la tabla")
Esempio n. 6
0
 def fraccionar(self):
     """
     Fracciona un producto. Da de alta y almacena un nuevo producto en la base de datos
     de acuerdo al producto seleccionado para fraccionar, o si ya existe actualiza la cantidad.
     :return:
     """
     itemActual = self.tablaProducto.currentItem()
     if itemActual != None:
         if ValidarDatos.validarCamposVacios(self.camposRequeridos):
             if self.tablaFraccionable.rowCount() > 0:
                 itemFracc = self.tablaFraccionable.currentItem()
                 if itemFracc != None:
                     row = itemActual.row()
                     codigo_barra = str(
                         self.tablaProducto.item(row, 0).text())
                     codigo_lote = str(
                         self.tablaProducto.item(row, 3).text())
                     self.loteProducto = LoteProductoModel.buscarLoteProducto(
                         self.sesion, codigo_barra, codigo_lote).first()
                     if int(self.spinCantidad.value()) > int(
                             self.loteProducto.getCantidad()):
                         self.showMsjEstado(
                             "La cantidad ingresada no puede ser mayor a la "
                             "cantidad del Producto.")
                     else:
                         resto = int(self.loteProducto.getCantidad()) - int(
                             self.spinCantidad.value())
                         self.loteProducto.setCantidad(resto)
                         self.loteProducto.modificar(self.sesion)
                         cantidadFracciones = self.cantidadFracciones(
                             codigo_barra, int(self.spinCantidad.value()))
                         row = itemFracc.row()
                         codigo_barra = str(
                             self.tablaFraccionable.item(row, 0).text())
                         self.loteProducto = LoteProductoModel.buscarLoteProducto(
                             self.sesion, codigo_barra,
                             codigo_lote).first()
                         if self.loteProducto:
                             suma = int(self.loteProducto.cantidad) + int(
                                 cantidadFracciones)
                             self.loteProducto.setCantidad(suma)
                             self.loteProducto.modificar(self.sesion)
                         else:
                             loteProducto = LoteProductoModel(
                                 codigo_lote, codigo_barra,
                                 int(cantidadFracciones))
                             if loteProducto.guardar(self.sesion):
                                 self.showMsjEstado(
                                     "Lote/Producto fue dado de alta.")
                             else:
                                 self.showMsjEstado(
                                     "Lote/Producto ya existe.")
                         self.showMsjEstado("La cantidad fue modificada")
                         self.actualizar()
                 else:
                     self.showMsjEstado(
                         "No se ha seleccionado un Fraccionable de la tabla."
                     )
             else:
                 self.showMsjEstado(
                     "El Producto seleccionado no puede fraccionarse.")
         else:
             self.showMsjEstado(
                 "Hay datos obligatorios que no fueron completados.")
     else:
         self.showMsjEstado("No se ha seleccionado un Producto de la tabla")