Merged pankaj-dev into main

This commit is contained in:
2026-01-15 14:29:58 +05:30
7 changed files with 523 additions and 33 deletions

View File

@@ -4,11 +4,12 @@
<div class="container-fluid px-2 px-md-4">
<h4 class="mb-3 text-center text-md-start">Dashboard</h4>
<h4 class="mb-3 text-center text-md-start">Comparison Software Solapur(UGD) </h4>
<!-- Summary Cards -->
<div class="row g-3 mb-4">
<!-- Total Work -->
<div class="col-12 col-md-4">
<div class="card text-white bg-primary shadow h-100">
<div class="card-body text-center text-md-start">
@@ -18,6 +19,7 @@
</div>
</div>
<!-- Completed -->
<div class="col-12 col-md-4">
<div class="card text-white bg-success shadow h-100">
<div class="card-body text-center text-md-start">
@@ -27,6 +29,7 @@
</div>
</div>
<!-- Pending -->
<div class="col-12 col-md-4">
<div class="card text-dark bg-warning shadow h-100">
<div class="card-body text-center text-md-start">

View File

@@ -1,11 +1,9 @@
{% extends "base.html" %}
{% block content %}
<div class="container mt-4">
<div class="container-fluid mt-4">
<h2 class="mb-4">File Comparison</h2>
<h2 class="mb-4">File Comparison </h2>
<!-- FLASH MESSAGES -->
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
@@ -17,27 +15,62 @@
{% endif %}
{% endwith %}
<div class="card p-4 shadow-sm">
<div class="card p-4 shadow-sm mb-5">
<form method="POST">
<label class="form-label fw-bold">RA Bill No</label>
<input type="text" name="RA_Bill_No" class="form-control mb-3" value="{{ ra_val }}" required>
<!-- SELECT SUBCONTRACTOR -->
<!-- <label class="form-label fw-semibold">Select Subcontractor</label>
<select name="subcontractor_id" id="subcontractor_id" class="form-select mb-3" required>
<option value="">-- Select Subcontractor --</option>
{% for sc in subcontractors %}
<option value="{{ sc.id }}">{{ sc.subcontractor_name }}</option>
{% endfor %}
</select> -->
<label class="form-label">RA Bill No</label>
<input type="text" name="RA_Bill_No" class="form-control mb-3" required>
<button class="btn btn-primary w-100">Generate Report</button>
<div class="row">
<div class="col-md-6">
<button type="submit" name="action" value="preview" class="btn btn-secondary w-100">Preview
Data</button>
</div>
<div class="col-md-6">
<button type="submit" name="action" value="download" class="btn btn-primary w-100">Download Excel
Report</button>
</div>
</div>
</form>
</div>
{% if tables.tr or tables.mh or tables.dc %}
<div class="card shadow-sm p-3">
<h4 class="mb-3">Comparison Preview</h4>
<ul class="nav nav-tabs" id="reportTabs" role="tablist">
<li class="nav-item">
<button class="nav-link active" id="tr-tab" data-bs-toggle="tab" data-bs-target="#tr"
type="button">Tr.Ex Comparison</button>
</li>
<li class="nav-item">
<button class="nav-link" id="mh-tab" data-bs-toggle="tab" data-bs-target="#mh" type="button">Mh.Ex
Comparison</button>
</li>
<li class="nav-item">
<button class="nav-link" id="dc-tab" data-bs-toggle="tab" data-bs-target="#dc" type="button">MH & DC
Comparison</button>
</li>
</ul>
<div class="tab-content mt-3" id="reportTabsContent">
<div class="tab-pane fade show active" id="tr" role="tabpanel">
<div class="table-responsive" style="max-height: 500px;">
{{ tables.tr|safe }}
</div>
</div>
<div class="tab-pane fade" id="mh" role="tabpanel">
<div class="table-responsive" style="max-height: 500px;">
{{ tables.mh|safe }}
</div>
</div>
<div class="tab-pane fade" id="dc" role="tabpanel">
<div class="table-responsive" style="max-height: 500px;">
{{ tables.dc|safe }}
</div>
</div>
</div>
</div>
{% endif %}
</div>
{% endblock %}

View File

@@ -2,7 +2,11 @@
{% block content %}
<div class="container mt-4">
<<<<<<< HEAD
<h2 class="mb-4">Generate Subcontractor Report</h2>
=======
<h2 class="mb-4 text-center">Generate Subcontractor Report</h2>
>>>>>>> pankaj-dev
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
@@ -16,13 +20,19 @@
{% endif %}
{% endwith %}
<<<<<<< HEAD
<div class="card p-4 shadow-sm">
<form method="POST">
=======
<div class="card p-4 shadow-sm mx-auto" style="max-width: 600px;">
<form method="POST" id="reportForm">
>>>>>>> pankaj-dev
<div class="mb-3">
<label class="form-label fw-semibold">Select Subcontractor</label>
<select name="subcontractor_id" class="form-select" required>
<option value="">-- Select Subcontractor --</option>
{% for sc in subcontractors %}
<<<<<<< HEAD
<option value="{{ sc.id }}">{{ sc.subcontractor_name }}</option>
{% endfor %}
</select>
@@ -34,7 +44,118 @@
</div>
<button type="submit" class="btn btn-primary w-100">Generate Excel Report</button>
=======
<option value="{{ sc.id }}" {% if selected_sc_id==sc.id|string %}selected{% endif %}>
{{ sc.subcontractor_name }}
</option>
{% endfor %}
</select>
</div>
<div class="form-check form-switch mb-3">
<input class="form-check-input" type="checkbox" name="download_all" value="true" id="downloadAllSwitch"
onchange="toggleRAInput(this)" {% if download_all %}checked{% endif %}>
<label class="form-check-label fw-bold text-primary" for="downloadAllSwitch">
Download All RA Bills for this Contractor
</label>
</div>
<div class="mb-4" id="ra_bill_container">
<label class="form-label fw-semibold">RA Bill Number</label>
<input type="text" name="ra_bill_no" id="ra_bill_input" class="form-control" placeholder="e.g. 01"
value="{{ ra_bill_no or '' }}">
<small class="text-muted">Required if "Download All" is off.</small>
</div>
<div class="row g-2">
<div class="col-md-6">
<button type="submit" name="action" value="preview" class="btn btn-outline-primary w-100 py-2">
<i class="fas fa-eye me-2"></i>Preview Data
</button>
</div>
<div class="col-md-6">
<button type="submit" name="action" value="download" class="btn btn-primary w-100 py-2">
<i class="fas fa-download me-2"></i>Download Excel
</button>
</div>
</div>
>>>>>>> pankaj-dev
</form>
</div>
{% if tables %}
<div class="mt-5 mb-5">
<hr>
<h3 class="text-center mb-4">Report Preview</h3>
<div class="card shadow-sm">
<div class="card-header bg-light">
<ul class="nav nav-tabs card-header-tabs" id="reportTabs" role="tablist">
<li class="nav-item">
<button class="nav-link active" id="tr-tab" data-bs-toggle="tab" data-bs-target="#tr"
type="button">Transport (Tr.Ex.)</button>
</li>
<li class="nav-item">
<button class="nav-link" id="mh-tab" data-bs-toggle="tab" data-bs-target="#mh"
type="button">Manpower (MH.Ex.)</button>
</li>
<li class="nav-item">
<button class="nav-link" id="dc-tab" data-bs-toggle="tab" data-bs-target="#dc" type="button">MH
& DC</button>
</li>
</ul>
</div>
<div class="card-body tab-content" id="reportTabsContent">
<div class="tab-pane fade show active" id="tr" role="tabpanel">
<div class="table-responsive">
{{ tables.tr | safe }}
</div>
</div>
<div class="tab-pane fade" id="mh" role="tabpanel">
<div class="table-responsive">
{{ tables.mh | safe }}
</div>
</div>
<div class="tab-pane fade" id="dc" role="tabpanel">
<div class="table-responsive">
{{ tables.dc | safe }}
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
<style>
/* Styling specifically for pandas output */
.table-responsive .table {
font-size: 0.9rem;
white-space: nowrap;
}
.table-responsive thead {
background-color: #f8f9fa;
}
</style>
<script>
function toggleRAInput(checkbox) {
const input = document.getElementById('ra_bill_input');
const container = document.getElementById('ra_bill_container');
if (checkbox.checked) {
input.value = "";
input.disabled = true;
container.style.opacity = "0.5";
} else {
input.disabled = false;
container.style.opacity = "1";
}
}
// Check status on load to handle form persistence
document.addEventListener("DOMContentLoaded", function () {
toggleRAInput(document.getElementById('downloadAllSwitch'));
});
</script>
{% endblock %}