#5🏗 Procurement Management System For Construction Industry
Published: 2021-10-21 04:47:59

This is my individual part of the Case Study implementation of the 3rd Year 2nd Semester - Case Studies in Software Engineering (CSSE) module. Here we try to solve the difficulties faced in the procurement procedures in the construction industry. As a solution we have created a Web application and a mobile application, whereas this is a the `Mobile Application`, implemented with React-Native, NodeJS, ExpressJS and MongoDB.

**Here I have implemented the part:**
Once a Site Manager add a purchase order, it should be sent for Procurement Department for approval. Once it's approved they make a quotation and send it to the Supplier. Supplier can view those quotations, make a invoice and send back it to Procurement Department. Those invoices view and find the best one by Procurement Department and change the status accordingly. If the status is approved the Supplier can add delivery details. Those details can be viewed by Site Manager and then he/she can make a relevent payment.

## Language 

![JavaScript](https://img.shields.io/badge/Language-JavaScript-orange)
![HTML](https://img.shields.io/badge/Language-HTML-green)
![CSS](https://img.shields.io/badge/Language-CSS-blue)
<!-- ![Design](https://img.shields.io/badge/Design-MaterialUI-blue) -->

## Technology 
* ![React-Native](https://img.shields.io/badge/FrontEnd-React_Native-purple)
* ![NodeJs](https://img.shields.io/badge/BackEnd-Node_JS-green) ![ExpressJs](https://img.shields.io/badge/BackEnd-Express_JS-green)
* ![MongoDB](https://img.shields.io/badge/Database-MongoDB-green)

## My Contribution:
* Login to the app as a `Site Manager` or `Supplier`
* Register to the app as a `Site Manager` or `Supplier`
* Create an Order by Site Manager 
* View all created Orders by Site Manager
* View delivery details 
* Make a payment by looking the delivery details
* View quotations by Supplier which send by procurement department
* Create invoices for quotations
* View created invoices
* Add delivery details

## Screenshots of woring project:

| <img alt="1PNG" src="https://user-images.githubusercontent.com/57215584/138205597-08911193-b42d-430e-9972-b1d9e8c4fa5d.png"> |<img  alt="2PNG" a src="https://user-images.githubusercontent.com/57215584/138205745-3b9478a2-1242-4a65-9c78-72a175000335.png">| <img  alt="2PNG" a src="https://user-images.githubusercontent.com/57215584/138205897-e245c865-499d-458b-8550-a3b859a0cf5c.png">| <img  alt="2PNG" a src="https://user-images.githubusercontent.com/57215584/138206064-785c3402-26b7-4bea-841b-f3369bd88844.png">
|:--:|:--:|:--:|:--:|
| *`figure 1.1: Splash Screen`* | *`figure 1.2: Register Now Screen`* | *`figure 1.3: Log In Screen`* |*`figure 1.4: Site Manager Dashboard`* |

| <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138206605-9f06f8be-f3ad-47e0-8fdc-bc0118cc4312.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138206741-da620513-9a27-4697-9809-32df054234c0.png"> | <img alt="2PNG"  src="https://user-images.githubusercontent.com/57215584/138206986-dedae83a-f2f2-42eb-8f79-18df3f760b29.png">| <img alt="2PNG"  src="https://user-images.githubusercontent.com/57215584/138207107-4d02d421-50d2-4eac-bbd4-8c8053956511.png">
|:--:|:--:|:--:|:--:|
| *`figure 1.5: New Order`* |*`figure 1.6: Summary of Order`* |*`figure 1.7: All Orders`* |*`figure 1.8: All Orders`* |

| <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138207187-ddac1ddd-a8c2-4d40-b578-ac460be7a32c.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138207935-2d6171f5-8aac-4b93-b06b-1ac33bccfaae.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208096-88ede3b5-8600-47bb-afa0-e6c1d8aaeaa1.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208342-fdbbf1b1-39c9-4f78-b14b-e281ddbb25cf.png">
|:--:|:--:|:--:|:--:|
|*`figure 1.9: Delivery Details`* |*`figure 1.10: Make A Payment`* |*`figure 1.11: Supplier Dashboard`* |*`figure 1.12: View Quotations`* |

| <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208492-ad5e1870-9426-4672-aa14-e360ea14e26a.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208636-f867d897-30ff-4cba-98de-3b21ee9dca44.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208744-db7a586c-7ffd-448f-829f-8688b82a9aca.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138208875-d256c736-2400-4f46-9fac-cf48643aca20.png">
|:--:|:--:|:--:|:--:|
|*`figure 1.13: New Invoice`* |*`figure 1.14: All Invoices`* |*`figure 1.15: New Delivery Details`* |*`figure 1.16: View Delivery Details`* |

## Project Unit Testing 

| <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138209496-26702b6b-fc43-43c5-b2f3-dae9dedf7c11.png"> | <img  alt="2PNG" src="https://user-images.githubusercontent.com/57215584/138209650-75da8444-6e7e-4efb-86df-bd3d6ac7e0a3.png"> 
|:--:|:--:|
|*`figure 1.1: Frontend Unit Testing`* |*`figure 1.2: Backend Unit Testing`* |

## Configuration

#### APP DEVELOPMENT ENVIRONMENT SETUP (Both Backend & Frontend)
  - Setting up android development environment [reference](https://reactnative.dev/docs/environment-setup) (One time setup for frontend only)
  - npm module installation  
    - run ```npm install```

#### STEPS TO RUN APP IN DEBUG MODE
  - Windows
    - ```npx react-native run-android```
    - If any app build failure
      - Clean gradle and run the project again ```cd android && gradlew clean```
    - If any js bundle issues are occurred try one of the bellow steps
      - Reset npm cache and run project again ```npx react-native start --reset-cache```
      - If above didn't work, start separate js bundler and run project ```npx react-native start```

  - Mac and Linux
    - ```npx react-native run-android```
    - If any app build or js bundler issues are occurred, follow the same steps for  **Windows**