Coverage for backend \ app \ Productos \ services \ proveedorService.py: 100.00%

40 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-29 16:13 -0500

1from app.Productos.repositories.proveedorRepository import ProveedorRepository 

2from app.configuracionGeneral.schemasGenerales import respuestaApi 

3from fastapi import HTTPException 

4from app.Productos.schemas.proveedorSchemas import * 

5 

6class ProveedorService: 

7 def __init__(self, dbSession): 

8 self.dbSession = dbSession 

9 self.proveedorRepository = ProveedorRepository(dbSession) 

10 

11 def listarProveedores(self): 

12 proveedores = self.proveedorRepository.listarProveedores() 

13 if proveedores is None: 

14 return respuestaApi(success=True, message="No se encontraron proveedores", data=[]) 

15 proveedores = [ProveedorRespuestaSchema.from_orm(p) for p in proveedores] 

16 return respuestaApi(success=True, message="Proveedores encontrados", data=proveedores) 

17 

18 def obtenerPorId(self, idProveedor: int): 

19 proveedor = self.proveedorRepository.obtenerPorId(idProveedor) 

20 if proveedor is None: 

21 raise HTTPException(status_code=404, detail="Proveedor no encontrado") 

22 proveedor = ProveedorRespuestaSchema.from_orm(proveedor) 

23 return respuestaApi(success=True, message="Proveedor encontrado", data=proveedor) 

24 

25 def crearProveedor(self, proveedor: ProveedorCrearSchema): 

26 creado = self.proveedorRepository.crearProveedor(proveedor) 

27 if creado is None: 

28 raise HTTPException(status_code=400, detail="El RUC ya está registrado") 

29 creado = ProveedorRespuestaSchema.from_orm(creado) 

30 return respuestaApi(success=True, message="Proveedor creado", data=creado) 

31 

32 def modificarProveedor(self, idProveedor: int, proveedor: ProveedorActualizarSchema): 

33 actualizado = self.proveedorRepository.modificarProveedor(idProveedor, proveedor) 

34 if actualizado is None: 

35 raise HTTPException(status_code=404, detail="Proveedor no encontrado") 

36 actualizado = ProveedorRespuestaSchema.from_orm(actualizado) 

37 return respuestaApi(success=True, message="Proveedor actualizado", data=actualizado) 

38 

39 def deshabilitarProveedor(self, idProveedor: int): 

40 des = self.proveedorRepository.deshabilitarProveedor(idProveedor) 

41 if des is None: 

42 raise HTTPException(status_code=404, detail="Proveedor no encontrado") 

43 if des is False: 

44 raise HTTPException(status_code=400, detail="No se puede deshabilitar el proveedor: existen productos activos asociados") 

45 des = ProveedorRespuestaSchema.from_orm(des) 

46 return respuestaApi(success=True, message="Proveedor deshabilitado", data=des)