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
« 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 *
6class ProveedorService:
7 def __init__(self, dbSession):
8 self.dbSession = dbSession
9 self.proveedorRepository = ProveedorRepository(dbSession)
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)
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)
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)
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)
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)