Пример #1
0
	def empleado(documento):
		
		e = Empleado()
		
		consulta = "SELECT * FROM empleado WHERE documento = " + str(documento)
		
		Conexion.ejecutar(consulta)
		
		resultset = Conexion.fetchone()
		
		Conexion.cerrar()
		
		if resultset is not None:
			
			e._id = resultset[0]
			e.documento = resultset[1]
			e.nombre = resultset[2]
			e.apellido = resultset[3]
			e.fecha_nacimiento = resultset[4]
			e.genero = resultset[5]
			e.domicilio = resultset[6]
			e.telefono = resultset[7]
			e.fecha_ingreso = resultset[8]
			e.cuil = resultset[9]
			e.nro_legajo = resultset[10]
			e.sit_revista = resultset[11]
			e.cargo = resultset[12]
			e.observaciones = resultset[13]
			e._cambios = False
			e._nuevo = False
		
		return e
Пример #2
0
	def __init__(self, id_bbdd=0):
		
		if id_bbdd < 1:
			return
		
		consulta = "SELECT id, id_empleado, desde, hasta, dias_tomados, tipo, comentario\
					FROM licencia WHERE id = " + str(id_bbdd)
		
		Conexion.ejecutar(consulta)
		
		resultset = Conexion.fetchone()
		
		Conexion.cerrar()
		
		if resultset is None:
			return
		
		self._id = resultset[0]
		self.id_empleado = resultset[1]
		self.desde = resultset[2]
		self.hasta = resultset[3]
		self.dias_tomados = resultset[4]
		self.tipo = resultset[5]
		self.comentario = resultset[6]
		self._cambios = False
		self._nuevo = False
Пример #3
0
	def licencia(id_empleado, desde, ):
		
		l = Licencia()
		
		consulta = "SELECT id, id_empleado, desde, hasta, dias_tomados, tipo, comentario\
					FROM licencia WHERE id_empleado = " + str(id_empleado) + " AND desde = cast('" + str(desde) + "' as date)"
		
		Conexion.ejecutar(consulta)
		
		resultset = Conexion.fetchone()
		
		Conexion.cerrar()
		
		if resultset is None:
			return
		
		l._id = resultset[0]
		l.id_empleado = resultset[1]
		l.desde = resultset[2]
		l.hasta = resultset[3]
		l.dias_tomados = resultset[4]
		l.tipo = resultset[5]
		l.comentario = resultset[6]
		l._cambios = False
		l._nuevo = False
		
		return l
Пример #4
0
	def guardar(self):
		
		if not self._cambios:
			return
		
		if self.documento == 0:
			raise Exception("El campo 'documento' no puede estar vacío.")
		
		if self.nombre == "":
			raise Exception("El campo 'nombre' no puede estar vacío.")
		
		if self.apellido == "":
			raise Exception("El campo 'apellido' no puede estar vacío.")
		
		if self.fecha_nacimiento == "":
			raise Exception("El campo 'fecha de nacimiento' no puede estar vacío.")
		
		if self.genero == "":
			raise Exception("El campo 'género' no puede estar vacío.")
		
		if self.domicilio == "":
			raise Exception("El campo 'domicilio' no puede estar vacío.")
		
		if self.fecha_ingreso == "":
			raise Exception("El campo 'fecha de ingreso' no puede estar vacío.")
		
		if self.nro_legajo == "":
			raise Exception("El campo 'número de legajo' no puede estar vacío.")
		
		if self.sit_revista == "":
			raise Exception("El campo 'situación de revista' no puede estar vacío.")
		
		if self.cargo == "":
			raise Exception("El campo 'cargo' no puede estar vacío.")
		
		dic  = {"a1" : "documento", 
				"a2" : "nombre", 
				"a3" : "apellido", 
				"a4" : "fecha_nacimiento", 
				"a5" : "genero", 
				"a6" : "domicilio", 
				"a7" : "telefono", 
				"a8" : "fecha_ingreso", 
				"a9" : "cuil", 
				"a10" : "nro_legajo", 
				"a11" : "sit_revista", 
				"a12" : "cargo", 
				"a13" : "observaciones", 
				}
		
		vals = {"v1" : self._documento, 
				"v2" : self._nombre, 
				"v3" : self._apellido, 
				"v4" : self._fecha_nacimiento, 
				"v5" : self._genero, 
				"v6" : self._domicilio, 
				"v7" : self._telefono, 
				"v8" : self._fecha_ingreso, 
				"v9" : self._cuil, 
				"v10" : self._nro_legajo, 
				"v11" : self._sit_revista, 
				"v12" : self._cargo, 
				"v13" : self._observaciones, 
				}
		
		if self._nuevo:
			
			consulta = "SELECT id FROM empleado WHERE documento = " + str(self.documento)
			
			Conexion.ejecutar(consulta)
			
			id_bbdd = Conexion.fetchone()
			
			Conexion.cerrar()
			
			if id_bbdd is not None:
				raise Exception("Ya existe un empleado con ese documento: " + str(self.documento))
			
			consulta = "INSERT INTO empleado('a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12') \
						VALUES('v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7', 'v8', 'v9', 'v10', 'v11', 'v12', 'v13') RETURNING id"
			
			for i in range(1, 14):
				
				if vals["v" + str(i)]:
					
					consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)]))
					
					if isinstance(vals["v" + str(i)], int):
						consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)]))
					else:
						if '/' in str(vals["v" + str(i)]):
							consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)")
						else:
							consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'")
				else:
					if "'v" + str(i) + "', " in consulta:
						consulta = consulta.replace("'a" + str(i) + "', ", "")
						consulta = consulta.replace("'v" + str(i) + "', ", "")
					elif ", " + "'v" + str(i) + "')" in consulta:
						consulta = consulta.replace(", " + "'a" + str(i) + "'", "")
						consulta = consulta.replace(", " + "'v" + str(i) + "'", "")
			
		else:
			
			consulta = "SELECT id FROM empleado WHERE documento = " + str(self.documento)
			
			Conexion.ejecutar(consulta)
			
			resultset = Conexion.fetchone()
			
			Conexion.cerrar()
			
			if resultset is not None:
				for id_bbdd in resultset:
					if id_bbdd != self.id:
						print id_bbdd, "", self.id
						raise Exception("Ya existe un empleado con ese documento: ", self.documento)
						
			
			consulta = "UPDATE empleado SET 'a1' = 'v1',\
											'a2' = 'v2',\
											'a3' = 'v3',\
											'a4' = 'v4',\
											'a5' = 'v5',\
											'a6' = 'v6',\
											'a7' = 'v7',\
											'a8' = 'v8',\
											'a9' = 'v9',\
											'a10' = 'v10',\
											'a11' = 'v11',\
											'a12' = 'v12',\
											'a13' = 'v13'\
											WHERE id = " + str(self.id)
			
			for i in range(1, 14):
				
				consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)]))
				
				if isinstance(vals["v" + str(i)], int) or isinstance(vals["v" + str(i)], float):
					consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)]))
				else:
					if '/' in str(vals["v" + str(i)]):
						consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)")
					else:
						consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'")
		
		Conexion.ejecutar(consulta)
		
		self._cambios = False
		
		if self._nuevo:
			self._id = Conexion.fetchone()[0]
			self._nuevo = False
		
		Conexion.cerrar()
Пример #5
0
	def guardar(self, ):
		
		if not self._cambios:
			return
		
		if self.id_empleado == 0:
			raise Exception("El empleado no es válido.")
		
		if self.desde == "":
			raise Exception("La fecha desde no es válida.")
		
		if self.hasta == "":
			raise Exception("La fecha hasta no es válida.")
		
		if self.dias_tomados < 1:
			raise Exception("Las fechas no son válidas.")
		
		if self.tipo == "":
			raise Exception("El tipo de licencia no es válido.")
		
		if self._id_empleado == 0:
			raise Exception("El empleado no es válido.")
		
		dic  = {"a1" : "id_empleado", 
				"a2" : "desde", 
				"a3" : "hasta", 
				"a4" : "dias_tomados", 
				"a5" : "tipo", 
				"a6" : "comentario", 
				}
		
		vals = {"v1" : self.id_empleado, 
				"v2" : self.desde, 
				"v3" : self.hasta, 
				"v4" : self.dias_tomados, 
				"v5" : self.tipo, 
				"v6" : self.comentario, 
				}
		
		#VALIDO QUE EXISTA EL EMPLEADO
		consulta = "SELECT id FROM empleado WHERE id = " + str(self.id_empleado)
		
		Conexion.ejecutar(consulta)
		
		resultset = Conexion.fetchone()
		
		Conexion.cerrar()
		
		if resultset is None:
			raise Exception("El empleado no es válido.")
		
		#VALIDO QUE NO EXISTA UNA LICENCIA EN EL MISMO PERIODO DE TIEMPO
		consulta = "SELECT id FROM licencia " +\
					"WHERE (desde <= cast('" + str(self.desde) + "' as date) AND hasta >= cast('" + str(self.desde) + "' as date) " + \
					"OR desde <= cast('" + str(self.hasta) + "' as date) AND hasta >= cast('" + str(self.hasta) + "' as date) " +\
					"OR desde >= cast('" + str(self.desde) + "' as date) AND hasta <= cast('" + str(self.hasta) + "' as date)) " +\
					"AND id != " + str(self.id) +\
					" AND id_empleado = " + str(self.id_empleado)
		
		Conexion.ejecutar(consulta)
		
		resultset = Conexion.fetchone()
		
		Conexion.cerrar()
		
		if resultset is not None:
			raise Exception("El empleado ya se está tomando una licencia en esta fecha.")
		
		if self.tipo == "58":
			
			if self.dias_tomados > 1:
				raise Exception("La cantidad de días no es válida para una licencia de tipo 58.")
			
			ls = Licencia.de_empleado(self.id_empleado, "58")
			
			cant_por_anio = 0
			for l in ls:
				anio = l.desde.split('/')[2]
				if anio == self.desde.split('/')[2] and l.id != self.id:
					cant_por_anio = cant_por_anio + 1
			
			if cant_por_anio >= 6:
				raise Exception("El empleado ya se tomó 6 artículos 58 este año.")
			
			cant_por_mes = 0
			for l in ls:
				mes = l.desde.split('/')[1]
				if mes == self.desde.split('/')[1] and l.id != self.id:
					cant_por_mes = cant_por_mes + 1
			
			if cant_por_mes >= 2:
				raise Exception("El empleado ya se tomó 2 artículos 58 este mes.")
		
		if self._nuevo:
			
			consulta = "INSERT INTO licencia('a1', 'a2', 'a3', 'a4', 'a5', 'a6')\
						VALUES('v1', 'v2', 'v3', 'v4', 'v5', 'v6') RETURNING id"
			
			for i in range(1, 7):
				
				if vals["v" + str(i)]:
					
					consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)]))
					
					if isinstance(vals["v" + str(i)], int):
						consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)]))
					else:
						if '/' in str(vals["v" + str(i)]):
							consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)")
						else:
							consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'")
				else:
					if "'v" + str(i) + "', " in consulta:
						consulta = consulta.replace("'a" + str(i) + "', ", "")
						consulta = consulta.replace("'v" + str(i) + "', ", "")
					elif ", " + "'v" + str(i) + "')" in consulta:
						consulta = consulta.replace(", " + "'a" + str(i) + "'", "")
						consulta = consulta.replace(", " + "'v" + str(i) + "'", "")
			
		else:
			
			consulta = "SELECT id FROM licencia WHERE desde = cast('" + str(self.desde) + "' as date) AND id_empleado = " + str(self.id_empleado)
			
			Conexion.ejecutar(consulta)
			
			resultset = Conexion.fetchone()
			
			Conexion.cerrar()
			
			if resultset is not None:
				for id_bbdd in resultset:
					if id_bbdd != self.id:
						raise Exception("Ya existe esta licencia para este empleado.")
			
			consulta = "UPDATE licencia SET 'a1' = 'v1',\
											'a2' = 'v2',\
											'a3' = 'v3',\
											'a4' = 'v4',\
											'a5' = 'v5',\
											'a6' = 'v6'\
											WHERE id = " + str(self.id)
			
			for i in range(1, 7):
				
				consulta = consulta.replace("'a" + str(i) + "'", str(dic["a" + str(i)]))
				
				if isinstance(vals["v" + str(i)], int) or isinstance(vals["v" + str(i)], float):
					consulta = consulta.replace("'v" + str(i) + "'", str(vals["v" + str(i)]))
				else:
					if '/' in str(vals["v" + str(i)]):
						consulta = consulta.replace("'v" + str(i) + "'", "cast('" + str(vals["v" + str(i)]) + "' as date)")
					else:
						consulta = consulta.replace("'v" + str(i) + "'", "'" + str(vals["v" + str(i)]) + "'")
		
		Conexion.ejecutar(consulta)
		
		if self._nuevo:
			self._id = Conexion.fetchone()[0]
			self._nuevo = False
			self._cambios = False
		
		Conexion.cerrar()