Skip to content

NaveenKumarReddy21/Vendor-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vendor Management System using Django & Rest API

A Vendor Management System using Django and Django REST Framework. This system manages vendor profiles, tracks purchase orders, and calculates vendor performance metrics.

Django REST API Setup

This repository contains a Django project with a RESTful API using Django REST Framework.

Setup Instructions

Install Dependencies:

  • Django (latest stable version)
  • Django REST Framework (latest stable version)
  • Token-based authentication
  • PEP 8 compliant code
  • Comprehensive data validations
  • Django ORM for database interactions

installation:

  1. Clone Repo: (copy below git clone to cmd)
    git clone https://github.com/NaveenKumarReddy21/Vendor-Management-System.git
    cd C:\Users\your_user_name\Vendor-Management-System
    
  2. Create and activate a virtual environment:
    python -m venv venv
    .\venv\Scripts\activate
    
    
  3. Install dependencies:
     pip install -r requirements.txt
    
  4. Run migrations:
    python manage.py makemigrations
    python manage.py migrate
    
  5. Create Superuser and Token:
    python manage.py createsuperuser
    curl -X POST -d "username=your_superuser_username&password=your_superuser_password" http://localhost:8000/
    
    
  6. Run :
    python manage.py runserver
    
    

Access Django Admin:

Open the Django admin at http://127.0.0.1:8000/admin/ and log in using the superuser credentials. this is to access the database as a admin user.

how to run a api endpoint:

  • first we need to make sure that we migrated the models to database
  • then we need to start the server using "python manage.py runserver" command.
  • then we need to open another cmd prompt and open virtual environment and open the project folder and provide curl or http i.e commands.

Testing or Using the API endpoints.

  • we can test API endpoints using curl or http i.e commands.

Create a vendor:

using curl:

  • curl -H "Authorization: Token your_obtained_token" -X POST http://127.0.0.1:8000/api/vendors/ -d "vendor_code=01&name=Vendor+1&contact_details=Contact+1&address=Address+1"

using http i.e:

About this API endpoint:

  • here this endpoint is used to create a vendor by providing the vendor details.

List all Vendors details:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to get the details of all vendors.

Retrieve a specific vendor's details:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to get the details of vendor with vendor_id which was mentioned in the command.

Update a vendor's details:

using curl:

PUT method:

PATCH method:

using http i.e:

PUT method:

PATCH method:

About this API endpoint:

  • here this endpoint we have two commands with different http methods (PUT,PATCH).As we have a primary key in the model the PUT method works as POST method (which means it creates a new vendor with given details). The PATCH method is used to update the vendor's details except vendor's id. here PUT handles updates by replacing the entire entity, so it creates a new entity. but where the PATCH handles by only updating the given fields.

Delete a vendor:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to delete the vendor with given vendor_id.

Create a purchase_order:

using curl:

  • curl -H "Authorization: Token your_obtained_token" -X POST http://127.0.0.1:8000/api/purchase_orders/ -d "po_number=01&vendor=01&order_date=2023-01-01T12:00:00&delivery_date=2023-01-10T12:00:00&items=[{"item_name":"Item 1","quantity": 10 },{"item_name": 10 }]&quality_rating=4.5&issue_date=2023-01-01T12:00:00&status=updated&acknowledgment_date=2023-01-02T12:00:00"

using http i.e:

  • http POST http://127.0.0.1:8000/api/purchase_orders/ po_number="01" vendor=01 order_date="2023-01-01" delivery_date="2023-01-10" items='[{"item_name": 20 }]' quality_rating=4.5 issue_date="2023-01-01" status="Pending" acknowledgment_date="2023-01-02" "Authorization: Token your_obtained_token"

About this API endpoint:

  • here this endpoint is used to create a purchase_order with given details.

List all purchase_orders details:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to get the details of all purchase_orders.

Retrieve a specific purchase_order's details:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to get the details of purchase_order with given po_id.

Update a purchase_order's details:

using curl:

PUT method:

  • curl -H "Authorization: Token your_obtained_token" -X PUT http://127.0.0.1:8000/api/purchase_orders/{po_id}/ -d "po_number=updatedno&vendor=updatedvno&order_date=2023-01-02T12:00:00&delivery_date=2023-01-15T12:00:00&items=[{"item_name": 10 },{"item_name":10}]&quality_rating=5&issue_date=2023-01-01T12:00:00&status=updated&acknowledgment_date=2023-01-01T12:00:00"

PATCH method:

using http i.e:

PUT method:

  • http PUT http://127.0.0.1:8000/api/purchase_orders/{po_id}/ po_number="UpdatedPO001" vendor="updatedid" order_date="2023-01-02T12:00:00" delivery_date="2023-01-15T12:00:00" items:='[{"item_name": 20 }]' quality_rating:=4.8 issue_date="2023-01-01" status="updated" acknowledgment_date="2023-01-02" "Authorization: Token your_obtained_token"

PATCH method:

  • http PATCH http://127.0.0.1:8000/api/purchase_orders/{po_id}/ order_date="2023-01-02T12:00:00" delivery_date="2023-01-15T12:00:00" items:='[{"item_name": "Updated Item", "quantity": 20 }]' quality_rating:=4.8 status="updated" "Authorization: Token your_obtained_token"

About this API endpoint:

  • here this endpoint we have two commands with different http methods (PUT,PATCH).As we have a primary key in the model the PUT method works as POST method (which means it creates a new purchase_order with given details). The PATCH method is used to update the purchase_order's details except purchase_order's number. here PUT handles updates by replacing the entire entity, so it creates a new entity. but where the PATCH handles by only updating the given fields.(we can provide any no of fields in PATCH mathod.)

Delete a purchase_order:

using curl:

using httpie:

About this API endpoint:

  • here this endpoint is used to delete a purchase_order with given po_id.

Retrieve a vendor's performance metrics:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to retrieve the performance metrics of a vendor with given vendor_id. this performance metrics contains on_time Delivery rate, quality rating average, average response time, fulfilment rate
  • On time delivery rate is calculated each time a PO status changes to "completed". this is the average of no of po delivered before the delivery_date and no of total po's delivered.
  • quality rating average is calculated after every po completion and it is the average of all ratings given to that specific vendor.
  • average response time is calculated each time a po is acknowledged by the vendor. it is the time difference between issue_date and acknowledgment_date for each po, and then the average of these times for all po's of the vendor.
  • fulfillment rate is calculated when po status is set to "completed". this is the average of no of successfully fulfilled pos (status = "completed" without issues) by the total no of pos issued to the vendor.

Update acknowledgment_data and trigger the recalculation of average_response_time:

using curl:

using http i.e:

About this API endpoint:

  • here this endpoint is used to acknowledge the purchase_order with given po_id and trigger the recalculation of average_reponse_time.

About

A Vendor Management System using Django and Django REST Framework. This system manages vendor profiles, tracks purchase orders, and calculates vendor performance metrics.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages