- Fix Docker build issues: * Add missing system dependencies (build-essential, python3-dev, libpq-dev) * Fix requirements.txt formatting (separate Flask-Session and openpyxl) * Update openpyxl version to 3.1.5 (3.10.0 was invalid) - Set proper folder permissions for Docker write access (app/ and data/) - Add comprehensive test data for labels module: * 8 sample orders (TEST-ORD-001 through TEST-ORD-008) * Mix of printed/unprinted orders for testing * Various product types, customers, and delivery dates * Ready for QZ Tray printing functionality testing - Include test data generation scripts for future use - Application now fully containerized and ready for labels/printing testing
168 lines
6.9 KiB
HTML
Executable File
168 lines
6.9 KiB
HTML
Executable File
{% extends "base.html" %}
|
|
|
|
{% block title %}Warehouse Module - Quality App v2{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container-fluid py-5">
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<h1 class="mb-2">
|
|
<i class="fas fa-warehouse"></i> Warehouse Module
|
|
</h1>
|
|
<p class="text-muted">Manage warehouse operations, inventory, and locations</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- Set Boxes Locations Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-cube text-danger"></i>
|
|
</div>
|
|
<h5 class="card-title">Set Boxes Locations</h5>
|
|
<p class="card-text text-muted">Add or update articles in the warehouse inventory.</p>
|
|
<a href="{{ url_for('warehouse.set_boxes_locations') }}" class="btn btn-danger btn-sm">
|
|
<i class="fas fa-arrow-right"></i> Go to Set Boxes
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Set Orders on Boxes Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-archive text-secondary"></i>
|
|
</div>
|
|
<h5 class="card-title">Set Orders on Boxes</h5>
|
|
<p class="card-text text-muted">Assign, move, or view orders on boxes and manage order-to-box relationships.</p>
|
|
<a href="{{ url_for('warehouse.set_orders_on_boxes') }}" class="btn btn-secondary btn-sm">
|
|
<i class="fas fa-arrow-right"></i> Manage Orders
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Create Warehouse Locations Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-map-pin text-primary"></i>
|
|
</div>
|
|
<h5 class="card-title">Create Warehouse Locations</h5>
|
|
<p class="card-text text-muted">Define and manage storage locations in the warehouse.</p>
|
|
<a href="{{ url_for('warehouse.locations') }}" class="btn btn-primary btn-sm">
|
|
<i class="fas fa-arrow-right"></i> Go to Locations
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Manage Boxes/Crates Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-box text-success"></i>
|
|
</div>
|
|
<h5 class="card-title">Manage Boxes/Crates</h5>
|
|
<p class="card-text text-muted">Track and manage boxes and crates in the warehouse.</p>
|
|
<a href="{{ url_for('boxes.manage_boxes') }}" class="btn btn-success btn-sm">
|
|
<i class="fas fa-arrow-right"></i> Go to Boxes
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- View Inventory Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-list text-info"></i>
|
|
</div>
|
|
<h5 class="card-title">View Inventory</h5>
|
|
<p class="card-text text-muted">Search and view products, boxes, and their warehouse locations.</p>
|
|
<a href="{{ url_for('warehouse.inventory') }}" class="btn btn-info btn-sm">
|
|
<i class="fas fa-arrow-right"></i> View Inventory
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Warehouse Reports Card -->
|
|
<div class="col-md-6 col-lg-4 mb-4">
|
|
<div class="card shadow-sm h-100 module-launcher">
|
|
<div class="card-body text-center">
|
|
<div class="launcher-icon mb-3">
|
|
<i class="fas fa-chart-bar text-warning"></i>
|
|
</div>
|
|
<h5 class="card-title">Warehouse Reports</h5>
|
|
<p class="card-text text-muted">View and export warehouse activity and inventory reports.</p>
|
|
<a href="{{ url_for('warehouse.reports') }}" class="btn btn-warning btn-sm">
|
|
<i class="fas fa-arrow-right"></i> Go to Reports
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Module Overview Section -->
|
|
<div class="row mt-5">
|
|
<div class="col-12">
|
|
<div class="card shadow-sm">
|
|
<div class="card-header bg-light">
|
|
<h5 class="mb-0"><i class="fas fa-info-circle"></i> Module Overview</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<h6><i class="fas fa-check-circle text-success"></i> Key Features:</h6>
|
|
<ul class="text-muted">
|
|
<li>Create and manage warehouse locations</li>
|
|
<li>Track boxes and crates</li>
|
|
<li>Assign products to boxes</li>
|
|
<li>Search inventory by location</li>
|
|
</ul>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<h6><i class="fas fa-chart-pie text-primary"></i> Reports & Analytics:</h6>
|
|
<ul class="text-muted">
|
|
<li>Inventory reports</li>
|
|
<li>Location utilization</li>
|
|
<li>Box status tracking</li>
|
|
<li>Export data to CSV</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.module-launcher {
|
|
transition: transform 0.2s, box-shadow 0.2s;
|
|
}
|
|
|
|
.module-launcher:hover {
|
|
transform: translateY(-5px);
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
|
|
}
|
|
|
|
.launcher-icon {
|
|
font-size: 48px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.launcher-icon i {
|
|
display: inline-block;
|
|
}
|
|
</style>
|
|
{% endblock %}
|