Add role-based filtering and imporve code
This commit is contained in:
@@ -464,4 +464,33 @@ class PurchaseOrderService:
|
||||
"""Get most purchased inventory products"""
|
||||
return self.item_repository.get_top_purchased_inventory_products(
|
||||
tenant_id, days_back, limit
|
||||
)
|
||||
)
|
||||
|
||||
async def delete_purchase_order(self, po_id: UUID) -> bool:
|
||||
"""
|
||||
Delete (soft delete) a purchase order
|
||||
Only allows deletion of draft orders
|
||||
"""
|
||||
logger.info("Deleting purchase order", po_id=str(po_id))
|
||||
|
||||
po = self.repository.get_by_id(po_id)
|
||||
if not po:
|
||||
return False
|
||||
|
||||
# Only allow deletion of draft orders
|
||||
if po.status not in [PurchaseOrderStatus.DRAFT, PurchaseOrderStatus.CANCELLED]:
|
||||
raise ValueError(
|
||||
f"Cannot delete purchase order with status {po.status.value}. "
|
||||
"Only draft and cancelled orders can be deleted."
|
||||
)
|
||||
|
||||
# Perform soft delete
|
||||
try:
|
||||
self.repository.delete(po_id)
|
||||
self.db.commit()
|
||||
logger.info("Purchase order deleted successfully", po_id=str(po_id))
|
||||
return True
|
||||
except Exception as e:
|
||||
self.db.rollback()
|
||||
logger.error("Failed to delete purchase order", po_id=str(po_id), error=str(e))
|
||||
raise
|
||||
Reference in New Issue
Block a user