Index: src/app/customer/create-order/create-order.component.html
===================================================================
--- src/app/customer/create-order/create-order.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/customer/create-order/create-order.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -104,9 +104,11 @@
     <tbody>
       <tr *ngFor="let it of orderItems; let i = index">
-        <td>{{ it.article.name }}</td>
-        <td>${{ it.article.price.toFixed(2) }}</td>
-        <td>{{ it.article.manufacturer }}</td>
+        <td>{{ it.article?.art_name }}</td>
+        <td>${{ it.article?.currentPrice }}</td>
+        <td>{{ it.article?.manufacturer }}</td>
         <td>{{ it.quantity }}</td>
-        <td>${{ (it.article.price * it.quantity).toFixed(2) }}</td>
+        <td>
+          <!-- ${{ ((it.article?.currentPrice ?? 0) * (it.quantity ? Number(it.quantity) : 0)).toFixed(2) }} -->
+        </td>
         <td>
           <button class="btn btn-danger btn-sm" (click)="removeItem(i)">
Index: src/app/customer/create-order/create-order.component.ts
===================================================================
--- src/app/customer/create-order/create-order.component.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/customer/create-order/create-order.component.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -5,5 +5,5 @@
 import { Router } from '@angular/router';
 import { NavbarComponent } from '../../navbar/navbar.component';
-import { Category, Manufacturer, Article, OrderItem } from '../../models';
+import { Category, Manufacturer, Article, OrderItem, adaptArticle } from '../../models';
 import { OrderService } from '../../services/order.service';
 import { PagedModel } from '../../models/paged-model';
@@ -57,5 +57,6 @@
       .subscribe((resp: PagedModel<Article>) => {
         const listKey = Object.keys(resp._embedded)[0];
-        this.displayed = resp._embedded[listKey];
+        // Apply adapter to each article
+        this.displayed = resp._embedded[listKey].map(adaptArticle);
         this.currentPage = resp.page.number;
         this.totalPages = resp.page.totalPages;
@@ -72,15 +73,18 @@
   }
   trackByArticle(_: number, a: Article) {
-    return a.id;
+    return a.art_id || a.id;
   }
 
   addArticle(a: Article) {
-    const qty = Number(prompt(`Quantity for ${a.name}:`, '1'));
+    const qty = Number(prompt(`Quantity for ${a.art_name}:`, '1'));
 
-    if (!qty || qty < 1 || qty > a.quantity) {
+    if (!qty || qty < 1 || qty > (a.quantity ?? 0)) {
       alert('invalid quantity');
       return;
     }
     this.orderItems.push({
+      ord_id: 0,
+      art_id: a.art_id ?? a.id ?? 0,
+      unit_price: typeof a.price === 'number' ? a.price : (typeof a.currentPrice === 'number' ? a.currentPrice : (a.currentPrice?.price ?? 0)),
       article: a,
       quantity: qty,
@@ -97,5 +101,17 @@
   updateTotal() {
     this.totalSum = this.orderItems.reduce(
-      (sum, it) => sum + it.article.price * it.quantity,
+      (sum, it) => {
+        let price = 0;
+        if (it.article) {
+          if (typeof it.article.price === 'number') {
+            price = it.article.price;
+          } else if (typeof it.article.currentPrice === 'number') {
+            price = it.article.currentPrice;
+          } else if (it.article.currentPrice && typeof it.article.currentPrice.price === 'number') {
+            price = it.article.currentPrice.price;
+          }
+        }
+        return sum + (price * it.quantity);
+      },
       0
     );
Index: src/app/customer/customer-dashboard/customer-dashboard.component.html
===================================================================
--- src/app/customer/customer-dashboard/customer-dashboard.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/customer/customer-dashboard/customer-dashboard.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -17,7 +17,7 @@
         <tbody>
           <tr *ngFor="let order of orders; trackBy: trackByOrder">
-            <td>{{ order.ordDate | date: "shortDate" }}</td>
-            <td>{{ order.ordSum | currency }}</td>
-            <td>{{ order.ordComment }}</td>
+            <td>{{ order.ord_date | date: "shortDate" }}</td>
+            <td>{{ order.ord_sum | currency }}</td>
+            <td>{{ order.ord_comment }}</td>
           </tr>
         </tbody>
@@ -37,7 +37,7 @@
         <tbody>
           <tr *ngFor="let del of deliveries; trackBy: trackByDelivery">
-            <td>{{ del.delDate | date: "shortDate" }}</td>
+            <td>{{ del.del_date | date: "shortDate" }}</td>
             <td>{{ del.driverName }}</td>
-            <td>{{ del.delStatus }}</td>
+            <td>{{ del.d_status_id }}</td>
           </tr>
         </tbody>
Index: src/app/customer/customer-dashboard/customer-dashboard.component.ts
===================================================================
--- src/app/customer/customer-dashboard/customer-dashboard.component.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/customer/customer-dashboard/customer-dashboard.component.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -31,9 +31,9 @@
 
   trackByOrder(_: number, o: Order) {
-    return o.ordDate + o.ordSum;
+    return o.ord_date + o.ord_sum;
   }
 
   trackByDelivery(_: number, d: Delivery) {
-    return d.delDate + d.driverName;
+    return d.del_date + (d.driverName ?? 'Driver name unavailable');
   }
 }
Index: src/app/manager/create-delivery/create-delivery.component.css
===================================================================
--- src/app/manager/create-delivery/create-delivery.component.css	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/create-delivery/create-delivery.component.css	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,38 @@
+.progress {
+  height: 25px;
+}
+
+.progress-bar {
+  font-weight: bold;
+  line-height: 25px;
+}
+
+.table td {
+  vertical-align: middle;
+}
+
+.form-check {
+  margin-bottom: 10px;
+}
+
+.card {
+  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
+}
+
+.spinner-border-sm {
+  width: 1rem;
+  height: 1rem;
+}
+
+.table-responsive {
+  max-height: 400px;
+}
+
+tr:hover {
+  background-color: #f8f9fa;
+}
+
+.form-control-plaintext {
+  padding-top: 0.375rem;
+  padding-bottom: 0.375rem;
+}
Index: src/app/manager/create-delivery/create-delivery.component.html
===================================================================
--- src/app/manager/create-delivery/create-delivery.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/create-delivery/create-delivery.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,1 +1,219 @@
-<p>create-delivery works!</p>
+<app-navbar></app-navbar>
+
+<div class="container-fluid mt-4">
+  <div class="row">
+    <div class="col-12">
+      <h2>Create New Delivery</h2>
+
+      <div *ngIf="errorMessage" class="alert alert-danger">
+        {{ errorMessage }}
+      </div>
+
+      <form [formGroup]="deliveryForm" (ngSubmit)="onCreateDelivery()">
+        <!-- Step 1: Select Cities -->
+        <div class="card mb-4">
+          <div class="card-header">
+            <h4>Step 1: Select Cities</h4>
+          </div>
+          <div class="card-body">
+            <div class="row">
+              <div class="col-md-4" *ngFor="let city of cities">
+                <div class="form-check">
+                  <input
+                    class="form-check-input"
+                    type="checkbox"
+                    [value]="city.city_id"
+                    (change)="onCitySelectionChange($event)"
+                    [id]="'city-' + city.city_id"
+                  />
+                  <label
+                    class="form-check-label"
+                    [for]="'city-' + city.city_id"
+                  >
+                    {{ city.city_name }}
+                  </label>
+                </div>
+              </div>
+            </div>
+
+            <div *ngIf="selectedCities.length > 0" class="mt-3">
+              <strong>Selected Cities:</strong> {{ getSelectedCityNames() }}
+            </div>
+          </div>
+        </div>
+
+        <!-- Step 2: Select Vehicle and Driver -->
+        <div class="card mb-4">
+          <div class="card-header">
+            <h4>Step 2: Select Vehicle & Driver</h4>
+          </div>
+          <div class="card-body">
+            <div class="row">
+              <div class="col-md-6">
+                <label for="vehicle-select" class="form-label"
+                  >Select Vehicle:</label
+                >
+                <select
+                  class="form-select"
+                  id="vehicle-select"
+                  (change)="onVehicleChange($event)"
+                >
+                  <option value="">Choose a vehicle...</option>
+                  <option
+                    *ngFor="let vehicle of vehicles"
+                    [value]="vehicle.veh_id"
+                  >
+                    {{ vehicle.veh_plate }} - {{ vehicle.veh_carry_weight }}kg
+                    capacity
+                  </option>
+                </select>
+              </div>
+
+              <div class="col-md-6" *ngIf="selectedVehicle">
+                <label class="form-label">Assigned Driver:</label>
+                <div class="form-control-plaintext">
+                  <strong>{{
+                    selectedVehicle.driver?.name || "No driver assigned"
+                  }}</strong>
+                </div>
+              </div>
+            </div>
+
+            <!-- Weight Progress Bar -->
+            <div *ngIf="selectedVehicle" class="mt-3">
+              <label class="form-label"
+                >Vehicle Load: {{ currentWeight }}kg / {{ maxWeight }}kg</label
+              >
+              <div class="progress">
+                <div
+                  class="progress-bar"
+                  [class]="getWeightBarClass()"
+                  role="progressbar"
+                  [style.width.%]="getWeightPercentage()"
+                  [attr.aria-valuenow]="currentWeight"
+                  [attr.aria-valuemin]="0"
+                  [attr.aria-valuemax]="maxWeight"
+                >
+                  {{ getWeightPercentage().toFixed(1) }}%
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <!-- Step 3: Select Orders -->
+        <div class="card mb-4" *ngIf="availableOrders.length > 0">
+          <div class="card-header">
+            <h4>
+              Step 3: Select Orders ({{ availableOrders.length }} available)
+            </h4>
+          </div>
+          <div class="card-body">
+            <div class="table-responsive">
+              <table class="table table-striped">
+                <thead>
+                  <tr>
+                    <th>Select</th>
+                    <th>Order #</th>
+                    <th>Date</th>
+                    <th>Customer</th>
+                    <th>City</th>
+                    <th>Address</th>
+                    <th>Weight</th>
+                    <th>Sum</th>
+                    <th>Items</th>
+                  </tr>
+                </thead>
+                <tbody>
+                  <tr *ngFor="let order of availableOrders">
+                    <td>
+                      <input
+                        type="checkbox"
+                        class="form-check-input"
+                        (change)="onOrderSelectionChange(order, $event)"
+                        [disabled]="
+                          currentWeight + (order.totalWeight || 0) >
+                            maxWeight && !selectedOrders.includes(order)
+                        "
+                      />
+                    </td>
+                    <td>{{ order.ord_id }}</td>
+                    <td>{{ order.ord_date | date: "short" }}</td>
+                    <td>{{ order.customerName }}</td>
+                    <td>{{ order.cityName }}</td>
+                    <td>{{ order.customerAddress }}</td>
+                    <td>{{ order.totalWeight || 0 }}kg</td>
+                    <td>{{ order.ord_sum | currency }}</td>
+                    <td>
+                      <small>{{ order.orderItems?.length || 0 }} items</small>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </div>
+          </div>
+        </div>
+
+        <!-- Step 4: Delivery Details -->
+        <div class="card mb-4">
+          <div class="card-header">
+            <h4>Step 4: Delivery Details</h4>
+          </div>
+          <div class="card-body">
+            <div class="row">
+              <div class="col-md-4">
+                <label for="delivery-date" class="form-label">
+                  Delivery Date:
+                </label>
+                <input
+                  type="date"
+                  class="form-control"
+                  id="delivery-date"
+                  formControlName="deliveryDate"
+                  (change)="onDeliveryDateChange($event)"
+                />
+              </div>
+              <div class="col-md-4">
+                <label class="form-label">Selected Orders:</label>
+                <div class="form-control-plaintext">
+                  <strong>{{ selectedOrders.length }} orders</strong>
+                </div>
+              </div>
+              <div class="col-md-4">
+                <label class="form-label">Total Weight:</label>
+                <div class="form-control-plaintext">
+                  <strong>{{ currentWeight }}kg</strong>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+
+        <!-- Action Buttons -->
+        <div class="d-flex justify-content-between">
+          <button
+            type="button"
+            class="btn btn-secondary"
+            (click)="navigateToDeliveries()"
+          >
+            Cancel
+          </button>
+
+          <button
+            type="submit"
+            class="btn btn-primary"
+            [disabled]="
+              deliveryForm.invalid || selectedOrders.length === 0 || isLoading
+            "
+          >
+            <span
+              *ngIf="isLoading"
+              class="spinner-border spinner-border-sm me-2"
+            ></span>
+            Create Delivery
+          </button>
+        </div>
+      </form>
+    </div>
+  </div>
+</div>
Index: src/app/manager/create-delivery/create-delivery.component.ts
===================================================================
--- src/app/manager/create-delivery/create-delivery.component.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/create-delivery/create-delivery.component.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,11 +1,255 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { Order } from '../../models';
+import { ManagerService } from '../../services/manager.service';
+import { NavbarComponent } from '../../navbar/navbar.component';
+import { CommonModule } from '@angular/common';
+import {
+  FormBuilder,
+  FormGroup,
+  ReactiveFormsModule,
+  Validators,
+} from '@angular/forms';
+import { Router } from '@angular/router';
+import { Vehicle } from '../../models/vehicle.model';
+import { City } from '../../models/city.model';
 
 @Component({
   selector: 'app-create-delivery',
-  imports: [],
+  imports: [NavbarComponent, CommonModule, ReactiveFormsModule],
   templateUrl: './create-delivery.component.html',
-  styleUrl: './create-delivery.component.css'
+  styleUrl: './create-delivery.component.css',
 })
-export class CreateDeliveryComponent {
-
+export class CreateDeliveryComponent implements OnInit {
+  deliveryForm: FormGroup;
+  cities: City[] = [];
+  vehicles: Vehicle[] = [];
+  availableOrders: Order[] = [];
+  selectedOrders: Order[] = [];
+  warehouseStock: any[] = [];
+
+  selectedCities: number[] = [];
+  selectedVehicle: Vehicle | null = null;
+  currentWeight: number = 0;
+  maxWeight: number = 0;
+
+  isLoading = false;
+  errorMessage = '';
+
+  constructor(
+    private fb: FormBuilder,
+    private managerService: ManagerService,
+    private router: Router,
+  ) {
+    this.deliveryForm = this.fb.group({
+      selectedCities: [[], Validators.required],
+      selectedVehicle: [null, Validators.required],
+      deliveryDate: [
+        new Date().toISOString().split('T')[0],
+        Validators.required,
+      ],
+      selectedOrders: [[]],
+    });
+  }
+
+  ngOnInit() {
+    this.loadInitialData();
+    this.deliveryForm.get('deliveryDate')?.valueChanges.subscribe((date) => {
+      if (date) {
+        this.loadAvailableVehicles(date);
+      }
+    });
+  }
+
+  loadInitialData() {
+    this.isLoading = true;
+
+    this.managerService.getAvailableCities().subscribe({
+      next: (cities) => (this.cities = cities),
+      error: (error) => this.handleError('Failed to load cities', error),
+    });
+
+    const initialDate = this.deliveryForm.get('deliveryDate')?.value;
+    if (initialDate) {
+      this.loadAvailableVehicles(initialDate);
+    }
+
+    this.managerService.getWarehouseStock().subscribe({
+      next: (stock) => (this.warehouseStock = stock),
+      error: (error) =>
+        this.handleError('Failed to load warehouse stock', error),
+    });
+
+    this.isLoading = false;
+  }
+
+  onCitySelectionChange(event: any) {
+    const cityId = parseInt(event.target.value);
+    const isChecked = event.target.checked;
+
+    if (isChecked) {
+      this.selectedCities.push(cityId);
+    } else {
+      this.selectedCities = this.selectedCities.filter((id) => id !== cityId);
+    }
+
+    this.deliveryForm.patchValue({ selectedCities: this.selectedCities });
+
+    if (this.selectedCities.length > 0) {
+      this.loadOrdersForSelectedCities();
+    } else {
+      this.availableOrders = [];
+    }
+  }
+
+  onVehicleChange(event: any) {
+    const vehicleId = parseInt(event.target.value);
+    this.selectedVehicle =
+      this.vehicles.find((v) => v.veh_id === vehicleId) || null;
+
+    if (this.selectedVehicle) {
+      this.maxWeight = this.selectedVehicle.veh_carry_weight;
+      this.deliveryForm.patchValue({ selectedVehicle: vehicleId });
+    }
+  }
+
+  loadAvailableVehicles(deliveryDate: string) {
+    this.managerService.getAvailableVehicles(deliveryDate).subscribe({
+      next: (vehicles) => {
+        this.vehicles = vehicles;
+        // Reset selected vehicle if it's no longer available
+        if (
+          this.selectedVehicle &&
+          !vehicles.find((v) => v.veh_id === this.selectedVehicle!.veh_id)
+        ) {
+          this.selectedVehicle = null;
+          this.maxWeight = 0;
+          this.deliveryForm.patchValue({ selectedVehicle: null });
+        }
+      },
+      error: (error) => this.handleError('Failed to load vehicles', error),
+    });
+  }
+
+  loadOrdersForSelectedCities() {
+    if (this.selectedCities.length === 0) return;
+
+    this.isLoading = true;
+    this.managerService
+      .getUnassignedOrdersByCities(this.selectedCities)
+      .subscribe({
+        next: (orders) => {
+          this.availableOrders = orders.sort(
+            (a, b) =>
+              new Date(a.ord_date).getTime() - new Date(b.ord_date).getTime(),
+          );
+        },
+        error: (error) => this.handleError('Failed to load orders', error),
+        complete: () => (this.isLoading = false),
+      });
+  }
+
+  onDeliveryDateChange(event: any) {
+    const selectedDate = event.target.value;
+    if (selectedDate) {
+      this.loadAvailableVehicles(selectedDate);
+    }
+  }
+
+  onOrderSelectionChange(order: Order, event: any) {
+    const isChecked = event.target.checked;
+
+    if (isChecked) {
+      const newWeight = this.currentWeight + (order.totalWeight || 0);
+      if (newWeight > this.maxWeight) {
+        event.target.checked = false;
+        alert(
+          `Adding this order would exceed vehicle capacity (${this.maxWeight}kg)`,
+        );
+        return;
+      }
+
+      if (!this.checkStockAvailability(order)) {
+        event.target.checked = false;
+        alert('Insufficient stock for this order');
+        return;
+      }
+
+      this.selectedOrders.push(order);
+      this.currentWeight = newWeight;
+    } else {
+      this.selectedOrders = this.selectedOrders.filter(
+        (o) => o.ord_id !== order.ord_id,
+      );
+      this.currentWeight -= order.totalWeight || 0;
+    }
+
+    this.deliveryForm.patchValue({
+      selectedOrders: this.selectedOrders.map((o) => o.ord_id),
+    });
+  }
+
+  checkStockAvailability(order: Order): boolean {
+    if (!order.orderItems) return true;
+
+    return order.orderItems.every((item) => {
+      const stockItem = this.warehouseStock.find(
+        (s) => s.art_id === item.art_id,
+      );
+      return stockItem && stockItem.available_quantity >= item.quantity;
+    });
+  }
+
+  getSelectedCityNames(): string {
+    return this.cities
+      .filter((city) => this.selectedCities.includes(city.city_id))
+      .map((city) => city.city_name)
+      .join(', ');
+  }
+
+  getWeightPercentage(): number {
+    return this.maxWeight > 0 ? (this.currentWeight / this.maxWeight) * 100 : 0;
+  }
+
+  getWeightBarClass(): string {
+    const percentage = this.getWeightPercentage();
+    if (percentage < 50) return 'bg-success';
+    if (percentage < 80) return 'bg-warning';
+    return 'bg-danger';
+  }
+
+  onCreateDelivery() {
+    if (this.deliveryForm.invalid || this.selectedOrders.length === 0) {
+      this.errorMessage =
+        'Please fill all required fields and select at least one order';
+      return;
+    }
+
+    const deliveryData = {
+      del_date: this.deliveryForm.value.deliveryDate,
+      del_date_created: new Date(),
+      veh_id: this.selectedVehicle?.veh_id,
+      d_status_id: 1,
+      orderIds: this.selectedOrders.map((o) => o.ord_id),
+    };
+
+    this.isLoading = true;
+    this.managerService.createDelivery(deliveryData).subscribe({
+      next: (delivery) => {
+        console.log('Delivery created successfully:', delivery);
+        this.router.navigate(['/manager/deliveries']);
+      },
+      error: (error) => this.handleError('Failed to create delivery', error),
+      complete: () => (this.isLoading = false),
+    });
+  }
+
+  private handleError(message: string, error: any) {
+    console.error(message, error);
+    this.errorMessage = message;
+    this.isLoading = false;
+  }
+
+  public navigateToDeliveries(): void {
+    this.router.navigate(['/manager/deliveries']);
+  }
 }
Index: src/app/manager/manager-dashboard/manager-dashboard.component.html
===================================================================
--- src/app/manager/manager-dashboard/manager-dashboard.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/manager-dashboard/manager-dashboard.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -18,5 +18,5 @@
         <tbody>
           <tr *ngFor="let order of unassignedOrders">
-            <td>{{ order.id }}</td>
+            <td>{{ order.ord_id }}</td>
             <!-- <td>{{ order.customerName }}</td>
             <td>{{ order.date | date: "shortDate" }}</td>
@@ -40,8 +40,8 @@
         <tbody>
           <tr *ngFor="let delivery of activeDeliveries">
-            <!-- <td>{{ delivery.id }}</td> -->
+            <td>{{ delivery.del_id }}</td> 
             <td>{{ delivery.driverName }}</td>
-            <!-- <td>{{ delivery.status }}</td>
-            <td>{{ delivery.orderCount }}</td> -->
+            <td>{{ delivery.deliveryStatus }}</td>
+            <td>{{ delivery.orderCount }}</td>
           </tr>
         </tbody>
Index: src/app/manager/manager-warehouse/manager-warehouse.component.html
===================================================================
--- src/app/manager/manager-warehouse/manager-warehouse.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/manager-warehouse/manager-warehouse.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -3,5 +3,5 @@
 <div class="container-fluid mt-4">
   <h1>Warehouse Management</h1>
-  
+
   <!-- Summary Cards -->
   <div class="row mb-4">
@@ -61,17 +61,38 @@
               </thead>
               <tbody>
-                <tr *ngFor="let article of availableArticles" 
-                    [class]="'stock-' + getStockLevel(article.quantity, article.minQuantity)">
-                  <td>{{ article.name }}</td>
-                  <td>{{ article.quantity }}</td>
-                  <td>{{ article.unitPrice | currency }}</td>
-                  <td>{{ (article.quantity * article.unitPrice) | currency }}</td>
-                  <td>
-                    <span class="badge" 
-                          [class]="'badge-' + getStockLevel(article.quantity, article.minQuantity)">
-                      {{ getStockLevel(article.quantity, article.minQuantity) | titlecase }}
+                <tr
+                  *ngFor="let stock of availableArticles"
+                  [class]="
+                    'stock-' +
+                    getStockLevel(
+                      stock.quantity,
+                      getMinQuantity(stock)
+                    )
+                  "
+                >
+                  <td>{{ stock.article.art_name }}</td>
+                  <td>{{ stock.quantity }}</td>
+                  <td>{{ stock.article.price | currency }}</td>
+                  <td>{{ stock.quantity * (stock.sellingPrice) | currency }}</td>
+                  <td>
+                    <span
+                      class="badge"
+                      [class]="
+                        'badge-' +
+                        getStockLevel(
+                          stock.quantity,
+                          getMinQuantity(stock)
+                        )
+                      "
+                    >
+                      {{
+                        getStockLevel(
+                          stock.quantity,
+                          getMinQuantity(stock)
+                        ) | titlecase
+                      }}
                     </span>
                   </td>
-                  <td>{{ article.expirationDate | date }}</td>
+                  <td>{{ stock.nearestExpirationDate | date }}</td>
                 </tr>
               </tbody>
@@ -104,9 +125,9 @@
               <tbody>
                 <tr *ngFor="let article of pendingDeliveryArticles">
-                  <td>{{ article.name }}</td>
+                  <td>{{ article.article.art_name }}</td>
                   <td>{{ article.quantity }}</td>
-                  <td>{{ article.deliveryId }}</td>
-                  <td>{{ article.customerName }}</td>
-                  <td>{{ article.scheduledDate | date }}</td>
+                  <!-- <td>{{ article.deliveryId }}</td>
+                  <td>{{ article. }}</td>
+                  <td>{{ article.scheduledDate | date }}</td> -->
                 </tr>
               </tbody>
@@ -138,14 +159,17 @@
               </thead>
               <tbody>
-                <tr *ngFor="let article of nearExpirationArticles" class="table-warning">
-                  <td>{{ article.name }}</td>
+                <tr
+                  *ngFor="let article of nearExpirationArticles"
+                  class="table-warning"
+                >
+                  <td>{{ article.article.art_name }}</td>
                   <td>{{ article.quantity }}</td>
                   <td>
                     <span class="badge bg-warning text-dark">
-                      {{ getDaysUntilExpiration(article.expirationDate) }} days
+                      {{ getDaysUntilExpiration(article.nearestExpirationDate) }} days
                     </span>
                   </td>
-                  <td>{{ article.expirationDate | date }}</td>
-                  <td>{{ (article.quantity * article.unitPrice) | currency }}</td>
+                  <td>{{ article.nearestExpirationDate | date }}</td>
+                  <td>{{ article.quantity * (article.sellingPrice) | currency }}</td>
                 </tr>
               </tbody>
@@ -178,16 +202,24 @@
               </thead>
               <tbody>
-                <tr *ngFor="let article of expiredArticles" class="table-danger">
-                  <td>{{ article.name }}</td>
+                <tr
+                  *ngFor="let article of expiredArticles"
+                  class="table-danger"
+                >
+                  <td>{{ article.article.art_name }}</td>
                   <td>{{ article.quantity }}</td>
-                  <td>{{ article.expirationDate | date }}</td>
+                  <td>{{ article.nearestExpirationDate | date }}</td>
                   <td>
                     <span class="badge bg-danger">
-                      {{ Math.abs(getDaysUntilExpiration(article.expirationDate)) }} days ago
+                      {{
+                        Math.abs(getDaysUntilExpiration(article.nearestExpirationDate))
+                      }}
+                      days ago
                     </span>
                   </td>
-                  <td>{{ (article.quantity * article.unitPrice) | currency }}</td>
-                  <td>
-                    <button class="btn btn-sm btn-outline-danger">Mark for Disposal</button>
+                  <td>{{ article.quantity * (article.sellingPrice) | currency }}</td>
+                  <td>
+                    <button class="btn btn-sm btn-outline-danger">
+                      Mark for Disposal
+                    </button>
                   </td>
                 </tr>
@@ -221,14 +253,28 @@
               </thead>
               <tbody>
-                <tr *ngFor="let forecast of stockForecast" 
-                    [class]="forecast.daysRemaining <= 7 ? 'table-danger' : 
-                             forecast.daysRemaining <= 14 ? 'table-warning' : 'table-success'">
+                <tr
+                  *ngFor="let forecast of stockForecast"
+                  [class]="
+                    forecast.daysRemaining <= 7
+                      ? 'table-danger'
+                      : forecast.daysRemaining <= 14
+                        ? 'table-warning'
+                        : 'table-success'
+                  "
+                >
                   <td>{{ forecast.articleName }}</td>
                   <td>{{ forecast.currentStock }}</td>
                   <td>{{ forecast.dailyUsage }}</td>
                   <td>
-                    <span class="badge" 
-                          [class]="forecast.daysRemaining <= 7 ? 'bg-danger' : 
-                                   forecast.daysRemaining <= 14 ? 'bg-warning' : 'bg-success'">
+                    <span
+                      class="badge"
+                      [class]="
+                        forecast.daysRemaining <= 7
+                          ? 'bg-danger'
+                          : forecast.daysRemaining <= 14
+                            ? 'bg-warning'
+                            : 'bg-success'
+                      "
+                    >
                       {{ forecast.daysRemaining }} days
                     </span>
@@ -236,7 +282,22 @@
                   <td>{{ forecast.estimatedRefillDate | date }}</td>
                   <td>
-                    <span *ngIf="forecast.daysRemaining <= 7" class="badge bg-danger">Urgent</span>
-                    <span *ngIf="forecast.daysRemaining > 7 && forecast.daysRemaining <= 14" class="badge bg-warning">Soon</span>
-                    <span *ngIf="forecast.daysRemaining > 14" class="badge bg-success">OK</span>
+                    <span
+                      *ngIf="forecast.daysRemaining <= 7"
+                      class="badge bg-danger"
+                      >Urgent</span
+                    >
+                    <span
+                      *ngIf="
+                        forecast.daysRemaining > 7 &&
+                        forecast.daysRemaining <= 14
+                      "
+                      class="badge bg-warning"
+                      >Soon</span
+                    >
+                    <span
+                      *ngIf="forecast.daysRemaining > 14"
+                      class="badge bg-success"
+                      >OK</span
+                    >
                   </td>
                 </tr>
Index: src/app/manager/manager-warehouse/manager-warehouse.component.ts
===================================================================
--- src/app/manager/manager-warehouse/manager-warehouse.component.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/manager/manager-warehouse/manager-warehouse.component.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -2,7 +2,7 @@
 import { NavbarComponent } from '../../navbar/navbar.component';
 import { CommonModule } from '@angular/common';
-import { Article } from '../../models';
 import { StockForecast } from '../../models/stock-forecast.model';
 import { WarehouseService } from '../../services/warehouse.service';
+import { WarehouseStock } from '../../models/warehouse-stock.model';
 
 @Component({
@@ -13,11 +13,10 @@
 })
 export class ManagerWarehouseComponent {
-  availableArticles: Article[] = [];
-  pendingDeliveryArticles: Article[] = [];
-  nearExpirationArticles: Article[] = [];
-  expiredArticles: Article[] = [];
+  availableArticles: WarehouseStock[] = [];
+  pendingDeliveryArticles: WarehouseStock[] = [];
+  nearExpirationArticles: WarehouseStock[] = [];
+  expiredArticles: WarehouseStock[] = [];
   stockForecast: StockForecast[] = [];
   totalLoss: number = 0;
-  warehouseId: number = 1;
 
   public Math = Math;
@@ -31,17 +30,17 @@
   loadWarehouseData() {
     this.warehouseService
-      .getAvailableArticles(this.warehouseId)
+      .getAvailableArticles()
       .subscribe((articles) => (this.availableArticles = articles));
     this.warehouseService
-      .getPendingDeliveryArticles(this.warehouseId)
+      .getPendingDeliveryArticles()
       .subscribe((articles) => (this.pendingDeliveryArticles = articles));
     this.warehouseService
-      .getNearExpirationArticles(this.warehouseId)
+      .getNearExpirationArticles()
       .subscribe((articles) => (this.nearExpirationArticles = articles));
     this.warehouseService
-      .getExpiredArticles(this.warehouseId)
+      .getExpiredArticles()
       .subscribe((articles) => (this.expiredArticles = articles));
     this.warehouseService
-      .getStockForecast(this.warehouseId)
+      .getStockForecast()
       .subscribe((forecast) => (this.stockForecast = forecast));
   }
@@ -49,6 +48,5 @@
   calculateTotalLoss() {
     this.totalLoss = this.expiredArticles.reduce(
-      (sum, article) => sum + article.quantity * article.unitPrice,
-      0,
+      (sum, stock) => sum + stock.quantity * (stock.article.price || 0), 0
     );
   }
@@ -62,8 +60,14 @@
 
   getStockLevel(quantity: number, minQuantity: number): string {
+      const minQty = minQuantity ?? 10;
+
     if (quantity <= 0) return 'out-of-stock';
-    if (quantity <= minQuantity) return 'low-stock';
-    if (quantity <= minQuantity * 2) return 'medium-stock';
+    if (quantity <= minQty) return 'low-stock';
+    if (quantity <= minQty * 2) return 'medium-stock';
     return 'high-stock';
   }
+
+  getMinQuantity(stock: WarehouseStock): number {
+  return stock.article?.minQuantity ?? 10;
 }
+}
Index: src/app/models/article-unit.model.ts
===================================================================
--- src/app/models/article-unit.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/article-unit.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,31 @@
+import { Article } from "./article.model";
+import { Order } from "./order.model";
+import { Price } from "./price.model";
+import { Warehouse } from "./warehouse.model";
+
+export interface ArticleUnit {
+  unit_id?: number;
+  id?: number;
+  unit_expiration_date: string;
+  expiryDate?: string;
+  unit_serial_number: string;  
+  serialNo?: string;
+  unit_batch_number: string;
+  batchNo?: string;
+  unit_manufacture_date: string;
+  manufactureDate?: string;
+  unit_cost_price?: number;
+  costPrice?: number;
+  wh_id: number;
+  whId?: number;
+  art_id: number;
+  artId?: number;
+  ord_id?: number;
+  ordId?: number;
+  
+  // Joined properties from DTOs
+  artName?: string;
+  whRegion?: string;
+  whCity?: string;
+  customerEmail?: string;
+}
Index: src/app/models/article.model.ts
===================================================================
--- src/app/models/article.model.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/models/article.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,19 +1,51 @@
+import { Category } from './category.model';
+import { Manufacturer } from './manufacturer.model';
+import { Price } from './price.model';
+
 export interface Article {
-  id: number;
-  name: string;
-  manufacturer: string;
-  quantity: number;
-  manufacturerId: number;
-  price: number;
-  category: string;
-  categoryId: number;
-  weight: number;
+  art_id?: number;
+  id?: number;
+  art_name: string;
+  name?: string;
+  art_image: string;
   image?: string;
-  // --
-  unitPrice: number;
-  expirationDate: string;
-  minQuantity: number;
-  deliveryId: number;
-  customerName: string;
-  scheduledDate: Date;
+  art_weight: number;
+  weight?: number;
+  ctg_id: number;
+  categoryId?: number;
+  man_id: number;
+  manufacturerId?: number;
+  
+  category?: Category | string;
+  manufacturer?: Manufacturer | string;
+  currentPrice?: Price | number;
+  quantity?: number;
+  price?: number;
+  minQuantity?: number;
 }
+
+export function adaptArticle(backendArticle: any): Article {
+  return {
+    art_id: backendArticle.id || backendArticle.art_id,
+    id: backendArticle.id || backendArticle.art_id,
+    art_name: backendArticle.name || backendArticle.art_name,
+    name: backendArticle.name || backendArticle.art_name,
+    art_image: backendArticle.image || backendArticle.art_image,
+    image: backendArticle.image || backendArticle.art_image,
+    art_weight: backendArticle.weight || backendArticle.art_weight,
+    weight: backendArticle.weight || backendArticle.art_weight,
+    ctg_id: backendArticle.categoryId || backendArticle.ctg_id,
+    categoryId: backendArticle.categoryId || backendArticle.ctg_id,
+    man_id: backendArticle.manufacturerId || backendArticle.man_id,
+    manufacturerId: backendArticle.manufacturerId || backendArticle.man_id,
+    
+    category: backendArticle.category,
+    manufacturer: backendArticle.manufacturer,
+    currentPrice: backendArticle.price || backendArticle.currentPrice,
+    price: backendArticle.price || 
+           (typeof backendArticle.currentPrice === 'object' ? 
+             backendArticle.currentPrice.price : 
+             backendArticle.currentPrice),
+    quantity: backendArticle.quantity
+  };
+}
Index: src/app/models/city.model.ts
===================================================================
--- src/app/models/city.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/city.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,4 @@
+export interface City {
+    city_id: number;
+    city_name: string;
+}
Index: src/app/models/delivery-status.model.ts
===================================================================
--- src/app/models/delivery-status.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/delivery-status.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,5 @@
+export interface DeliveryStatus {
+  d_status_id: number;
+  d_status_name: string;
+  d_status_desc: string;
+}
Index: src/app/models/delivery.model.ts
===================================================================
--- src/app/models/delivery.model.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/models/delivery.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,5 +1,20 @@
+import { Order } from "./order.model";
+
 export interface Delivery {
-    delDate: string;
-    driverName: string;
-    delStatus: string;
+  del_id?: number;
+  del_date_created: Date;
+  del_date: Date;
+  del_start_time?: string;
+  del_end_time?: string;
+  del_start_km?: number;
+  del_end_km?: number;
+  d_status_id: number;
+  veh_id: number;
+  orders?: Order[];
+
+  driverId?: number;
+  driverName?: string;
+  driverImage?: string;
+  deliveryStatus?: string;
+  orderCount?: number;
 }
Index: src/app/models/order-item.model.ts
===================================================================
--- src/app/models/order-item.model.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/models/order-item.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,6 +1,12 @@
-import { Article } from "./article.model";
+import { Article } from './article.model';
 
 export interface OrderItem {
-  article: Article;
+  item_id?: number;
+  ord_id: number;
+  art_id: number;
   quantity: number;
+  unit_price: number;
+  total_price?: number;
+
+  article?: Article;
 }
Index: src/app/models/order-status.model.ts
===================================================================
--- src/app/models/order-status.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/order-status.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,5 @@
+export interface OrderStatus {
+    o_status_id: number;
+    o_status_name: string;
+    o_status_desc: string;
+}
Index: src/app/models/order.model.ts
===================================================================
--- src/app/models/order.model.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/models/order.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,11 +1,22 @@
+import { ArticleUnit } from './article-unit.model';
+import { Customer } from './customer.model';
+import { OrderItem } from './order-item.model';
+import { OrderStatus } from './order-status.model';
+
 export interface Order {
-  id: number;
-  ordDate: string;
-  ordSum: number;
-  ordFulfillmentDate: string;
-  ordComment: string;
-  oStatusId: number;
-  customerId: number;
-  deliveryId: number;
-  pfId: number;
+  ord_id: number;
+  ord_date: string;
+  ord_sum: number;
+  ord_fulfillment_date?: string;
+  ord_comment?: string;
+  user_id: number;
+  o_status_id: number;
+  wh_id: number;
+  city_id: number;
+  
+  customerName?: string;
+  customerAddress?: string;
+  cityName?: string;
+  orderItems?: OrderItem[];
+  totalWeight?: number;
 }
Index: src/app/models/price.model.ts
===================================================================
--- src/app/models/price.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/price.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,6 @@
+export interface Price {
+    price_id?: number;
+    price: number;
+    price_eff_date: Date;
+    art_id: number;
+}
Index: src/app/models/vehicle-availability.model.ts
===================================================================
--- src/app/models/vehicle-availability.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/vehicle-availability.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,6 @@
+import { Vehicle } from './vehicle.model';
+
+export interface VehicleAvailability extends Vehicle {
+  isAvailable: boolean;
+  conflictingDeliveryId?: number;
+}
Index: src/app/models/vehicle.model.ts
===================================================================
--- src/app/models/vehicle.model.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/models/vehicle.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,8 +1,16 @@
+import { Driver } from "./driver.model";
+import { Warehouse } from "./warehouse.model";
+
 export interface Vehicle {
-  id: number;
-  make: string;
-  model: string;
-  year?: number;
-  licensePlate: string;
-  capacity?: number;
+  veh_id: number;
+  veh_carry_weight: number;
+  veh_kilometers: number;
+  veh_service_interval: number;
+  veh_last_service?: string;
+  veh_last_service_km?: number;
+  veh_vin: string;
+  veh_plate: string;
+  veh_reg_date: string;
+  
+  driver?: Driver;
 }
Index: src/app/models/warehouse-stock.model.ts
===================================================================
--- src/app/models/warehouse-stock.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/warehouse-stock.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,53 @@
+import { Article } from "./article.model";
+
+export interface WarehouseStock {
+  article: Article;
+  quantity: number;
+  nearestExpirationDate: string;
+  sellingPrice: number;
+  costPrice: number;
+  manufacturerName: string;
+  categoryName: string;
+
+  profit?: number;
+  profitMargin?: number;
+  daysToExpiration?: number;
+  expirationStatus?: 'ok' | 'near' | 'expired';
+}
+
+export function getMinQuantity(stock: WarehouseStock): number {
+  return stock.article?.minQuantity ?? 10;
+}
+
+export function calculateProfitMargin(stock: WarehouseStock): number {
+  if (!stock.sellingPrice || !stock.costPrice || stock.costPrice === 0)
+    return 0;
+
+  return ((stock.sellingPrice - stock.costPrice) / stock.costPrice) * 100;
+}
+
+export function calculateDaysToExpiration(
+  stock: WarehouseStock,
+): number | null {
+  if (!stock.nearestExpirationDate) return null;
+
+  const expDate = new Date(stock.nearestExpirationDate);
+  const today = new Date();
+
+  expDate.setHours(0, 0, 0, 0);
+  today.setHours(0, 0, 0, 0);
+
+  const diffTime = expDate.getTime() - today.getTime();
+  return Math.ceil(diffTime / (1000 * 60 * 60 * 24));
+}
+
+export function getExpirationStatus(
+  stock: WarehouseStock,
+): 'ok' | 'near' | 'expired' {
+  const daysToExpiration = calculateDaysToExpiration(stock);
+
+  if (daysToExpiration === null) return 'ok';
+  if (daysToExpiration < 0) return 'expired';
+  if (daysToExpiration <= 7) return 'near';
+  return 'ok';
+}
Index: src/app/models/warehouse.model.ts
===================================================================
--- src/app/models/warehouse.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
+++ src/app/models/warehouse.model.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -0,0 +1,5 @@
+export interface Warehouse {
+    wh_id?: number;
+    wh_adr: string;
+    city_id: number;
+}
Index: src/app/navbar/navbar.component.html
===================================================================
--- src/app/navbar/navbar.component.html	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/navbar/navbar.component.html	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -2,13 +2,6 @@
   <div class="container-fluid">
     <a class="navbar-brand" routerLink="/">DistributorApp</a>
-    <button
-      class="navbar-toggler"
-      type="button"
-      data-bs-toggle="collapse"
-      data-bs-target="#nav"
-      aria-controls="nav"
-      aria-expanded="false"
-      aria-label="Toggle navigation"
-    >
+    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#nav" aria-controls="nav"
+      aria-expanded="false" aria-label="Toggle navigation">
       <span class="navbar-toggler-icon"></span>
     </button>
@@ -25,12 +18,8 @@
           </li>
           <li class="nav-item">
-            <a class="nav-link" routerLink="/customer/deliveries"
-              >My Deliveries</a
-            >
+            <a class="nav-link" routerLink="/customer/deliveries">My Deliveries</a>
           </li>
           <li class="nav-item">
-            <a class="nav-link" routerLink="/customer/proformas"
-              >My Pro-Formas</a
-            >
+            <a class="nav-link" routerLink="/customer/proformas">My Pro-Formas</a>
           </li>
           <li class="nav-item">
@@ -38,7 +27,5 @@
           </li>
           <li class="nav-item">
-            <a class="nav-link" routerLink="/customer/orders/create"
-              >Create Order</a
-            >
+            <a class="nav-link" routerLink="/customer/orders/create">Create Order</a>
           </li>
         </ng-container>
@@ -53,7 +40,5 @@
           </li>
           <li class="nav-item">
-            <a class="nav-link" routerLink="/manager/deliveries"
-              >All Deliveries</a
-            >
+            <a class="nav-link" routerLink="/manager/deliveries">All Deliveries</a>
           </li>
           <li class="nav-item">
@@ -67,7 +52,5 @@
           </li>
           <li class="nav-item">
-            <a class="nav-link" routerLink="/manager/create-delivery">
-              Create Delivery
-            </a>
+            <a class="nav-link" routerLink="/manager/create-delivery">Create Delivery</a>
           </li>
           <li class="nav-item">
@@ -89,33 +72,20 @@
         <ng-container *ngIf="userRole === 'ROLE_ADMIN'">
           <li class="nav-item dropdown">
-            <a
-              class="nav-link dropdown-toggle"
-              id="createDropdown"
-              role="button"
-              data-bs-toggle="dropdown"
-              aria-expanded="false"
-            >
+            <a class="nav-link dropdown-toggle" id="createDropdown" role="button" data-bs-toggle="dropdown"
+              aria-expanded="false">
               Create
             </a>
             <ul class="dropdown-menu" aria-labelledby="createDropdown">
               <li>
-                <a class="dropdown-item" routerLink="/admin/driver/add"
-                  >Driver</a
-                >
+                <a class="dropdown-item" routerLink="/admin/driver/add">Driver</a>
               </li>
               <li>
-                <a class="dropdown-item" routerLink="/admin/manager/add"
-                  >Manager</a
-                >
+                <a class="dropdown-item" routerLink="/admin/manager/add">Manager</a>
               </li>
               <li>
-                <a class="dropdown-item" routerLink="/admin/warehouse/add"
-                  >Warehouse</a
-                >
+                <a class="dropdown-item" routerLink="/admin/warehouse/add">Warehouse</a>
               </li>
               <li>
-                <a class="dropdown-item" routerLink="/admin/vehicle/add"
-                  >Vehicle</a
-                >
+                <a class="dropdown-item" routerLink="/admin/vehicle/add">Vehicle</a>
               </li>
             </ul>
Index: src/app/services/manager.service.ts
===================================================================
--- src/app/services/manager.service.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/services/manager.service.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -1,10 +1,20 @@
-import { HttpClient } from '@angular/common/http';
+import { HttpClient, HttpParams } from '@angular/common/http';
 import { Injectable } from '@angular/core';
-import { Observable } from 'rxjs';
+import { map, Observable } from 'rxjs';
 import { environment } from '../../environment';
 import { Manager } from '../models/manager.model';
 import { FinancialSummary } from '../models/financial-summary.model';
-import { ProForma, ProFormaResponseDto } from '../models/pro-forma-dtos.model';
+import { ProFormaResponseDto } from '../models/pro-forma-dtos.model';
 import { Driver } from '../models/driver.model';
+import { Vehicle } from '../models/vehicle.model';
+import { City } from '../models/city.model';
+import { Order } from '../models';
+import { Delivery } from '../models/delivery.model';
+import {
+  calculateDaysToExpiration,
+  calculateProfitMargin,
+  getExpirationStatus,
+  WarehouseStock,
+} from '../models/warehouse-stock.model';
 
 @Injectable({
@@ -12,5 +22,5 @@
 })
 export class ManagerService {
-  constructor(private http: HttpClient) { }
+  constructor(private http: HttpClient) {}
 
   getProfile(): Observable<Manager> {
@@ -35,21 +45,80 @@
 
   getAllProFormas(): Observable<ProFormaResponseDto[]> {
-    return this.http.get<ProFormaResponseDto[]>(`${environment.apiUrl}/pro-forma/manager/all`);
+    return this.http.get<ProFormaResponseDto[]>(
+      `${environment.apiUrl}/pro-forma/manager/all`,
+    );
   }
 
   getMonthlyFinancialSummary(): Observable<FinancialSummary> {
-    return this.http.get<FinancialSummary>(`${environment.apiUrl}/manager/finances/monthly-report`);
+    return this.http.get<FinancialSummary>(
+      `${environment.apiUrl}/manager/finances/monthly-report`,
+    );
   }
 
   getQuarterlyFinancialSummary(): Observable<FinancialSummary> {
-    return this.http.get<FinancialSummary>(`${environment.apiUrl}/manager/finances/quarterly-report`);
+    return this.http.get<FinancialSummary>(
+      `${environment.apiUrl}/manager/finances/quarterly-report`,
+    );
   }
 
   createProForma(proForma: number): Observable<ProFormaResponseDto> {
-    return this.http.post<ProFormaResponseDto>(`${environment.apiUrl}/manager/pro-formas`, proForma);
+    return this.http.post<ProFormaResponseDto>(
+      `${environment.apiUrl}/manager/pro-formas`,
+      proForma,
+    );
   }
 
   getDrivers(): Observable<Driver[]> {
-    return this.http.get<Driver[]>(`${environment.apiUrl}/driver/manager/list-all`);
+    return this.http.get<Driver[]>(
+      `${environment.apiUrl}/driver/manager/list-all`,
+    );
+  }
+
+  getAvailableCities(): Observable<City[]> {
+    return this.http.get<City[]>(
+      `${environment.apiUrl}/city/manager/available-cities`,
+    );
+  }
+
+  getAvailableVehicles(deliveryDate?: string): Observable<Vehicle[]> {
+    let params = new HttpParams();
+    if (deliveryDate) {
+      params = params.set('deliveryDate', deliveryDate);
+    }
+    return this.http.get<Vehicle[]>(
+      `${environment.apiUrl}/vehicle/manager/available-vehicles`,
+      { params },
+    );
+  }
+
+  getUnassignedOrdersByCities(cityIds: number[]): Observable<Order[]> {
+    const params = new HttpParams().set('cityIds', cityIds.join(','));
+    return this.http.get<Order[]>(
+      `${environment.apiUrl}/orders/manager/unassigned-by-city`,
+      { params },
+    );
+  }
+
+  getWarehouseStock(): Observable<WarehouseStock[]> {
+    return this.http
+      .get<WarehouseStock[]>(`${environment.apiUrl}/warehouse/manager/stock`)
+      .pipe(
+        map((stocks) =>
+          stocks.map((stock) => ({
+            ...stock,
+            profi: stock.sellingPrice - stock.costPrice,
+            profitMargin: calculateProfitMargin(stock),
+            daysToExpiration: calculateDaysToExpiration(stock) ?? undefined,
+            expirationStatus: getExpirationStatus(stock),
+          })),
+        ),
+      );
+  }
+
+  createDelivery(deliveryData: any): Observable<Delivery> {
+    return this.http.post<Delivery>(
+      `${environment.apiUrl}/delivery/manager/create`,
+      deliveryData,
+    );
   }
 }
Index: src/app/services/order.service.ts
===================================================================
--- src/app/services/order.service.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/services/order.service.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -50,14 +50,14 @@
       orderItems: orderItems.map((it) => ({
         article: {
-          id: it.article.id,
-          name: it.article.name,
-          manufacturer: it.article.manufacturer,
-          quantity: it.article.quantity,
-          manufacturerId: it.article.manufacturerId,
-          price: it.article.price,
-          category: it.article.category,
-          categoryId: it.article.categoryId,
-          weight: it.article.weight,
-          image: it.article.image || null,
+          id: it.article?.id ?? null,
+          name: it.article?.name ?? '',
+          manufacturer: it.article?.manufacturer ?? null,
+          quantity: it.article?.quantity ?? 0,
+          manufacturerId: it.article?.manufacturerId ?? null,
+          price: it.article?.price ?? 0,
+          category: it.article?.category ?? null,
+          categoryId: it.article?.categoryId ?? null,
+          weight: it.article?.weight ?? 0,
+          image: it.article?.image ?? null,
         },
         quantity: it.quantity,
Index: src/app/services/warehouse.service.ts
===================================================================
--- src/app/services/warehouse.service.ts	(revision c51774242064fe9a1b2d8bcbfc40aaa4ed3b8bab)
+++ src/app/services/warehouse.service.ts	(revision 0c6e947eb4611c6e4fc6291c79595547748ae3df)
@@ -3,4 +3,7 @@
 import { StockForecast } from '../models/stock-forecast.model';
 import { Article } from '../models';
+import { WarehouseStock } from '../models/warehouse-stock.model';
+import { environment } from '../../environment';
+import { Observable } from 'rxjs';
 
 @Injectable({
@@ -10,31 +13,37 @@
   constructor(private http: HttpClient) {}
 
-  getAvailableArticles(warehouseId: number) {
-    return this.http.get<Article[]>(
-      `/api/warehouses/${warehouseId}/articles/available`,
+  getWarehouseStock(): Observable<WarehouseStock[]> {
+    return this.http.get<WarehouseStock[]>(
+      `${environment.apiUrl}/warehouse/stock`,
     );
   }
 
-  getPendingDeliveryArticles(warehouseId: number) {
-    return this.http.get<Article[]>(
-      `/api/warehouses/${warehouseId}/articles/pending-delivery`,
+  getAvailableArticles(): Observable<WarehouseStock[]> {
+    return this.http.get<WarehouseStock[]>(
+      `${environment.apiUrl}/warehouse/articles/available`,
     );
   }
 
-  getNearExpirationArticles(warehouseId: number) {
-    return this.http.get<Article[]>(
-      `/api/warehouses/${warehouseId}/articles/near-expiration`,
+  getPendingDeliveryArticles(): Observable<WarehouseStock[]> {
+    return this.http.get<WarehouseStock[]>(
+      `${environment.apiUrl}/warehouse/articles/pending-delivery`,
     );
   }
 
-  getExpiredArticles(warehouseId: number) {
-    return this.http.get<Article[]>(
-      `/api/warehouses/${warehouseId}/articles/expired`,
+  getNearExpirationArticles(): Observable<WarehouseStock[]> {
+    return this.http.get<WarehouseStock[]>(
+      `${environment.apiUrl}/warehouse/articles/near-expiration`,
     );
   }
 
-  getStockForecast(warehouseId: number) {
+  getExpiredArticles(): Observable<WarehouseStock[]> {
+    return this.http.get<WarehouseStock[]>(
+      `${environment.apiUrl}/warehouse/articles/expired`,
+    );
+  }
+
+  getStockForecast(): Observable<StockForecast[]> {
     return this.http.get<StockForecast[]>(
-      `/api/warehouses/${warehouseId}/stock-forecast`,
+      `${environment.apiUrl}/warehouse/stock-forecast`,
     );
   }
