fix: intake page updates, customer_intake fixes, module dir

This commit is contained in:
vagrant
2026-05-25 14:44:40 +00:00
parent 0997de940e
commit d4ed4b1d89
153 changed files with 38708 additions and 68 deletions
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Green Sheet - Pallet {{ doc.pallet_number }}</title>
<style>
@page { size: letter; margin: 0.5in; }
body { font-family: Arial, sans-serif; font-size: 11pt; }
.header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; border: 3px solid #28a745; padding: 15px; }
.logo { max-width: 200px; }
.title { font-size: 28pt; font-weight: bold; color: #28a745; }
.subtitle { font-size: 14pt; color: #666; }
table { width: 100%; border-collapse: collapse; margin: 15px 0; }
th, td { border: 1px solid #000; padding: 8px; text-align: left; }
th { background-color: #f0f0f0; font-weight: bold; }
.section { margin: 20px 0; }
.section-title { font-size: 14pt; font-weight: bold; background: #28a745; color: white; padding: 5px 10px; margin-bottom: 10px; }
.info-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 15px; }
.info-field { border: 1px solid #ccc; padding: 8px; }
.info-label { font-size: 9pt; color: #666; margin-bottom: 3px; }
.info-value { font-size: 11pt; font-weight: bold; }
.footer { margin-top: 30px; border-top: 2px solid #28a745; padding-top: 10px; font-size: 9pt; color: #666; }
.service-level { font-size: 24pt; font-weight: bold; color: #d63384; text-transform: uppercase; border: 3px solid #d63384; padding: 10px; text-align: center; margin: 15px 0; }
.checkbox { display: inline-block; width: 18px; height: 18px; border: 2px solid #000; margin-right: 5px; }
.checked { background: #000; }
.warning { background: #fff3cd; border: 2px solid #ffc107; padding: 10px; margin: 15px 0; font-weight: bold; }
</style>
</head>
<body>
<div class="header">
<div>
<div class="title">GREEN SHEET</div>
<div class="subtitle">Data-Bearing Equipment Tracking</div>
</div>
<div style="text-align: right;">
<div><strong>Pallet #:</strong> {{ doc.pallet_number or '______________' }}</div>
<div><strong>Load #:</strong> {{ doc.load or '______________' }}</div>
<div><strong>Date Received:</strong> {{ doc.received_date or '______________' }}</div>
</div>
</div>
{% if doc.service_level %}
<div class="service-level">
SERVICE LEVEL: {{ doc.service_level }}
</div>
{% endif %}
<div class="section">
<div class="section-title">Customer Information</div>
<div class="info-grid">
<div class="info-field">
<div class="info-label">Customer Name</div>
<div class="info-value">{{ doc.customer_name or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Customer #</div>
<div class="info-value">{{ doc.customer_number or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Address</div>
<div class="info-value">{{ doc.customer_address or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Contact/Phone</div>
<div class="info-value">{{ doc.contact_phone or '________________' }}</div>
</div>
</div>
</div>
<div class="section">
<div class="section-title">Pallet Details</div>
<div class="info-grid">
<div class="info-field">
<div class="info-label">Status</div>
<div class="info-value">{{ doc.status or 'Received' }}</div>
</div>
<div class="info-field">
<div class="info-label">Data Status</div>
<div class="info-value">{{ doc.data_status or 'D0' }}</div>
</div>
<div class="info-field">
<div class="info-label">Inbound Weight (lbs)</div>
<div class="info-value">{{ doc.inbound_weight or '____' }}</div>
</div>
<div class="info-field">
<div class="info-label">Technician</div>
<div class="info-value">________________</div>
</div>
</div>
<div style="margin-top: 10px; font-size: 12pt;">
<span class="checkbox {% if doc.certificate %}checked{% endif %}"></span> <strong>COR/AoR</strong>
<span style="margin-left: 20px;">
<span class="checkbox"></span> <strong>RED/R2</strong>
</span>
<span style="margin-left: 20px;">
<span class="checkbox"></span> <strong>AoR/COD</strong>
</span>
</div>
</div>
<div class="section">
<div class="section-title">Device List</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Serial #</th>
<th style="width: 15%;">Device Type</th>
<th style="width: 15%;">Manufacturer</th>
<th style="width: 15%;">Model</th>
<th style="width: 15%;">Erasure Method</th>
<th style="width: 10%;">Result</th>
<th style="width: 10%;">Grade</th>
</tr>
</thead>
<tbody>
{% for device in doc.devices %}
<tr>
<td>{{ device.serial_number or '________________' }}</td>
<td>{{ device.device_type or '________' }}</td>
<td>{{ device.manufacturer or '________' }}</td>
<td>{{ device.model or '________' }}</td>
<td>{{ device.erasure_method or '________' }}</td>
<td>{{ device.erasure_result or '____' }}</td>
<td>{{ device.grade or '____' }}</td>
</tr>
{% else %}
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
<tr><td colspan="7" style="height: 30px;"></td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="section">
<div class="section-title">Chain of Custody</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Date</th>
<th style="width: 20%;">Step</th>
<th style="width: 30%;">Technician</th>
<th style="width: 30%;">Notes</th>
</tr>
</thead>
<tbody>
<tr><td>________</td><td>Received</td><td>________________</td><td>________________</td></tr>
<tr><td>________</td><td>Testing</td><td>________________</td><td>________________</td></tr>
<tr><td>________</td><td>Erasure</td><td>________________</td><td>________________</td></tr>
<tr><td>________</td><td>Verification (5%)</td><td>________________</td><td>________________</td></tr>
<tr><td>________</td><td>Complete</td><td>________________</td><td>________________</td></tr>
</tbody>
</table>
</div>
<div class="warning">
⚠️ <strong>R2 REQUIREMENT:</strong> This pallet contains data-bearing equipment. All devices must be tracked through erasure with 5% verification audit.
</div>
<div class="footer">
<strong>Westech Electronics</strong> | R2 Certified Recycling | Phone: (555) 123-4567<br>
Printed: {{ doc.modified }} | Page 1 of 1 | <strong>KEEP WITH PALLET AT ALL TIMES</strong>
</div>
</body>
</html>
@@ -0,0 +1,135 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pallet Label - {{ doc.pallet_number or 'LOAD-PENDING' }}</title>
<style>
@page {
size: 6in 4in;
margin: 0.15in;
}
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
width: 6in;
height: 4in;
overflow: hidden;
}
.label {
width: 100%;
height: 100%;
border: 2px solid #000;
padding: 8px;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.service-level {
font-size: 48pt;
font-weight: 900;
text-align: center;
text-transform: uppercase;
color: #d63384;
border: 4px solid #d63384;
padding: 5px;
margin-bottom: 5px;
line-height: 1;
}
.pallet-number {
font-size: 24pt;
font-weight: bold;
text-align: center;
border-bottom: 2px solid #000;
padding-bottom: 3px;
margin-bottom: 5px;
}
.info-row {
display: flex;
justify-content: space-between;
font-size: 11pt;
margin-bottom: 3px;
}
.info-label {
font-weight: bold;
color: #333;
}
.info-value {
flex: 1;
margin-left: 5px;
border-bottom: 1px dotted #999;
}
.checkbox-row {
display: flex;
gap: 15px;
font-size: 10pt;
font-weight: bold;
margin-top: 3px;
padding-top: 3px;
border-top: 2px solid #000;
}
.checkbox {
display: inline-block;
width: 14px;
height: 14px;
border: 2px solid #000;
margin-right: 4px;
vertical-align: middle;
}
.footer {
margin-top: auto;
font-size: 8pt;
text-align: center;
color: #666;
border-top: 1px solid #ccc;
padding-top: 3px;
}
</style>
</head>
<body>
<div class="label">
<div class="service-level">{{ doc.service_level or 'CLEAR' }}</div>
<div class="pallet-number">
{{ doc.pallet_number or 'PENDING' }}
</div>
<div class="info-row">
<span class="info-label">Load #:</span>
<span class="info-value">{{ doc.load or '________________' }}</span>
</div>
<div class="info-row">
<span class="info-label">Customer:</span>
<span class="info-value" style="font-size: 10pt;">{{ doc.customer_name or '________________________' }}</span>
</div>
<div class="info-row">
<span class="info-label">Weight:</span>
<span class="info-value">{{ doc.inbound_weight or '____' }} lbs</span>
</div>
<div class="info-row">
<span class="info-label">Date:</span>
<span class="info-value">{{ doc.received_date or '________' }}</span>
</div>
<div class="checkbox-row">
<span>
<span class="checkbox {% if doc.certificate %}checked{% endif %}"></span>COR/AoR
</span>
<span>
<span class="checkbox"></span>RED/R2
</span>
<span>
<span class="checkbox"></span>5% Audit
</span>
</div>
<div class="footer">
Westech Electronics | R2 Certified | Keep with pallet
</div>
</div>
</body>
</html>
@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Purple Sheet - Load {{ doc.name }}</title>
<style>
@page { size: letter; margin: 0.5in; }
body { font-family: Arial, sans-serif; font-size: 11pt; }
.header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
.logo { max-width: 200px; }
.title { font-size: 24pt; font-weight: bold; color: #6f42c1; }
.subtitle { font-size: 14pt; color: #666; }
table { width: 100%; border-collapse: collapse; margin: 15px 0; }
th, td { border: 1px solid #000; padding: 8px; text-align: left; }
th { background-color: #f0f0f0; font-weight: bold; }
.section { margin: 20px 0; }
.section-title { font-size: 14pt; font-weight: bold; background: #6f42c1; color: white; padding: 5px 10px; margin-bottom: 10px; }
.info-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 15px; }
.info-field { border: 1px solid #ccc; padding: 8px; }
.info-label { font-size: 9pt; color: #666; margin-bottom: 3px; }
.info-value { font-size: 11pt; font-weight: bold; }
.footer { margin-top: 30px; border-top: 2px solid #6f42c1; padding-top: 10px; font-size: 9pt; color: #666; }
.service-level { font-size: 18pt; font-weight: bold; color: #d63384; text-transform: uppercase; }
.checkbox { display: inline-block; width: 15px; height: 15px; border: 1px solid #000; margin-right: 5px; }
.checked { background: #000; }
</style>
</head>
<body>
<div class="header">
<div>
<div class="title">PURPLE SHEET</div>
<div class="subtitle">Load Tracking Worksheet</div>
</div>
<div style="text-align: right;">
<div><strong>Load #:</strong> {{ doc.name }}</div>
<div><strong>Date:</strong> {{ doc.received_date or doc.modified }}</div>
</div>
</div>
<div class="section">
<div class="section-title">Customer Information</div>
<div class="info-grid">
<div class="info-field">
<div class="info-label">Customer Name</div>
<div class="info-value">{{ doc.customer_name or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Customer #</div>
<div class="info-value">{{ doc.customer_number or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Service Level</div>
<div class="info-value service-level">{{ doc.service_level or '________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Address</div>
<div class="info-value">{{ doc.customer_address or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Contact</div>
<div class="info-value">{{ doc.contact_name or '________________' }}</div>
</div>
<div class="info-field">
<div class="info-label">Phone</div>
<div class="info-value">{{ doc.contact_phone or '________________' }}</div>
</div>
</div>
</div>
<div class="section">
<div class="section-title">Load Details</div>
<div class="info-grid">
<div class="info-field">
<div class="info-label">Status</div>
<div class="info-value">{{ doc.status or 'Received' }}</div>
</div>
<div class="info-field">
<div class="info-label">Data Status</div>
<div class="info-value">{{ doc.data_status or 'D0' }}</div>
</div>
<div class="info-field">
<div class="info-label">Inbound Weight (lbs)</div>
<div class="info-value">{{ doc.inbound_weight or '____' }}</div>
</div>
<div class="info-field">
<div class="info-label">Estimated Pallets</div>
<div class="info-value">{{ doc.estimated_pallets or '____' }}</div>
</div>
<div class="info-field">
<div class="info-label">Actual Pallets</div>
<div class="info-value">____</div>
</div>
<div class="info-field">
<div class="info-label">Driver</div>
<div class="info-value">________________</div>
</div>
</div>
<div style="margin-top: 10px;">
<span class="checkbox {% if doc.certificate %}checked{% endif %}"></span> COR/AoR Requested
</div>
</div>
<div class="section">
<div class="section-title">Material Breakdown</div>
<table>
<thead>
<tr>
<th style="width: 25%;">Material Type</th>
<th style="width: 15%;">Count</th>
<th style="width: 15%;">Weight (lbs)</th>
<th style="width: 15%;">Data Status</th>
<th style="width: 15%;">Send-To</th>
<th style="width: 15%;">Disposition</th>
</tr>
</thead>
<tbody>
{% for item in doc.items %}
<tr>
<td>{{ item.material_type or '________________' }}</td>
<td>{{ item.count or '____' }}</td>
<td>{{ item.weight or '____' }}</td>
<td>{{ item.data_status or '____' }}</td>
<td>{{ item.send_to or '________________' }}</td>
<td>{{ item.disposition or '________________' }}</td>
</tr>
{% else %}
<tr><td colspan="6" style="height: 30px;"></td></tr>
<tr><td colspan="6" style="height: 30px;"></td></tr>
<tr><td colspan="6" style="height: 30px;"></td></tr>
<tr><td colspan="6" style="height: 30px;"></td></tr>
<tr><td colspan="6" style="height: 30px;"></td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="section">
<div class="section-title">Pallet List</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Pallet #</th>
<th style="width: 20%;">Status</th>
<th style="width: 20%;">Weight (lbs)</th>
<th style="width: 20%;">Data Status</th>
<th style="width: 20%;">Notes</th>
</tr>
</thead>
<tbody>
{% for pallet in doc.pallets %}
<tr>
<td>{{ doc.pallet_number or '________________' }}</td>
<td>{{ doc.status or '________' }}</td>
<td>{{ doc.inbound_weight or '____' }}</td>
<td>{{ doc.data_status or '____' }}</td>
<td>{{ doc.notes or '________________' }}</td>
</tr>
{% else %}
<tr><td colspan="5" style="height: 30px;"></td></tr>
<tr><td colspan="5" style="height: 30px;"></td></tr>
<tr><td colspan="5" style="height: 30px;"></td></tr>
<tr><td colspan="5" style="height: 30px;"></td></tr>
<tr><td colspan="5" style="height: 30px;"></td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="footer">
<strong>Westech Electronics</strong> | R2 Certified Recycling | Phone: (555) 123-4567<br>
Printed: {{ doc.modified }} | Page 1 of 1
</div>
</body>
</html>
@@ -0,0 +1,214 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>R2 Special Handling Log - {{ doc.name }}</title>
<style>
@page { size: letter; margin: 0.5in; }
body { font-family: Arial, sans-serif; font-size: 10pt; }
.header { border: 3px solid #28a745; padding: 15px; margin-bottom: 15px; }
.title { font-size: 20pt; font-weight: bold; text-align: center; margin-bottom: 5px; color: #28a745; }
.subtitle { font-size: 11pt; text-align: center; margin-bottom: 15px; font-style: italic; }
.info-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 15px; }
.info-field { }
.info-label { font-weight: bold; display: inline-block; width: 70px; }
.info-value { border-bottom: 1px solid #000; display: inline-block; min-width: 180px; padding: 2px 5px; }
.client-block { border: 1px solid #000; padding: 10px; margin: 10px 0; background: #f9f9f9; }
.section { border: 1px solid #000; padding: 10px; margin: 10px 0; }
.section-title { font-size: 11pt; font-weight: bold; background: #28a745; color: white; padding: 5px 10px; margin: -10px -10px 10px -10px; border-bottom: 1px solid #000; }
.red-line { border: 2px solid #d63384; }
.red-line .section-title { background: #d63384; }
table { width: 100%; border-collapse: collapse; margin: 10px 0; }
th, td { border: 1px solid #000; padding: 6px; text-align: left; font-size: 9pt; }
th { background: #f0f0f0; font-weight: bold; }
.instructions-list { list-style: none; padding: 0; margin: 0; }
.instructions-list li { margin: 5px 0; padding-left: 15px; position: relative; }
.instructions-list li:before { content: "•"; position: absolute; left: 0; font-weight: bold; }
.checkbox { display: inline-block; width: 14px; height: 14px; border: 1px solid #000; margin-right: 5px; vertical-align: middle; }
.footer { margin-top: 20px; font-size: 8pt; text-align: center; border-top: 2px solid #28a745; padding-top: 10px; }
</style>
</head>
<body>
<div class="header">
<div class="title">R2: SPECIAL HANDLING LOG</div>
<div class="subtitle">COR must include: {{ doc.job_number or 'Job #________' }}</div>
<div class="info-grid">
<div class="info-field">
<span class="info-label">Date:</span>
<span class="info-value">{{ doc.received_date or nowdate() }}</span>
</div>
<div class="info-field">
<span class="info-label">Truck #:</span>
<span class="info-value">{{ doc.truck_number or '____' }}</span>
</div>
<div class="info-field">
<span class="info-label">Driver:</span>
<span class="info-value">{{ doc.driver or '________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Service Level:</span>
<span class="info-value" style="font-weight:bold; color:#d63384;">{{ doc.service_level or '________' }}</span>
</div>
</div>
<div class="client-block">
<div class="info-field" style="margin-bottom: 8px;">
<span class="info-label">Client:</span>
<span class="info-value" style="min-width: 400px; font-weight:bold;">{{ doc.customer_name or '________________________________' }}</span>
</div>
<div class="info-field" style="margin-bottom: 8px;">
<span class="info-label">Address:</span>
<span class="info-value" style="min-width: 400px;">{{ doc.customer_address or '________________________________________' }}</span>
</div>
<div class="info-grid" style="margin-bottom: 0;">
<div class="info-field">
<span class="info-label">Contact:</span>
<span class="info-value">{{ doc.contact_name or '________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Email:</span>
<span class="info-value">{{ doc.contact_email or '________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Phone:</span>
<span class="info-value">{{ doc.contact_phone or '________________' }}</span>
</div>
</div>
</div>
<div class="info-field">
<span class="info-label">Equipment:</span>
<span class="info-value" style="min-width: 400px;">{{ doc.equipment_description or '________________________________________' }}</span>
</div>
<div class="info-field" style="margin-top: 10px;">
<span class="info-label">Driver Notes:</span><br>
<div style="border: 1px solid #000; min-height: 40px; padding: 5px; margin-top: 5px;">
{{ doc.driver_notes or '' }}
</div>
</div>
</div>
<div class="section red-line">
<div class="section-title">RED LINE INSTRUCTIONS</div>
<ul class="instructions-list">
<li>Remove all asset tags/company identifiers from the equipment</li>
<li>Weigh and record weight for COR. Company Name on COR should be <strong>{{ doc.customer_name or '________' }}</strong></li>
<li>Load must be processed within 30 days of retrieval</li>
<li>Forward the COR to David Huff upon completion of Job. David will upload the COR and report to the RecycleGX platform to complete process within 30 days.</li>
<li>COR must include Job #<strong>{{ doc.job_number or '____' }}</strong></li>
<li>Westech is charging $<strong>{{ doc.service_charge or '____' }}</strong> for this equipment. RGX will send payment to Westech when David Huff closes the job on the portal.</li>
</ul>
</div>
<div class="section">
<div class="section-title">Material Weight Log</div>
<table>
<thead>
<tr>
<th style="width: 35%;">MATERIAL</th>
<th style="width: 15%;">% OF MATERIAL</th>
<th style="width: 15%;">WEIGHT</th>
<th style="width: 15%;">SIGN OFF</th>
<th style="width: 20%;">DATE</th>
</tr>
</thead>
<tbody>
{% for item in doc.items %}
<tr>
<td>{{ item.material_type or '________________' }}</td>
<td>{{ item.percentage or '____%' }}</td>
<td>{{ item.weight or '____' }}</td>
<td>{{ item.sign_off or '____' }}</td>
<td>{{ item.date or '________' }}</td>
</tr>
{% else %}
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="section">
<div class="section-title">PC/Server Hard Drive Tracking</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Category</th>
<th style="width: 20%;">SCAN HARD DRIVES</th>
<th style="width: 20%;">LIST SENT?</th>
<th style="width: 20%;">SIGN OFF</th>
<th style="width: 20%;">DATE</th>
</tr>
</thead>
<tbody>
<tr>
<td><b># OF PCs</b></td>
<td>{{ doc.pc_hdd_count or '____' }}</td>
<td style="text-align:center;"><span class="checkbox"></span></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF SERVERS</b></td>
<td>{{ doc.server_hdd_count or '____' }}</td>
<td style="text-align:center;"><span class="checkbox"></span></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF HARD DRIVES</b></td>
<td>{{ doc.loose_hdd_count or '____' }}</td>
<td style="text-align:center;"><span class="checkbox"></span></td>
<td>____</td>
<td>________</td>
</tr>
</tbody>
</table>
</div>
<div class="section">
<div class="section-title">Laptop Hard Drive Tracking</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Category</th>
<th style="width: 20%;">SCAN HARD DRIVES</th>
<th style="width: 20%;">LIST SENT?</th>
<th style="width: 20%;">SIGN OFF</th>
<th style="width: 20%;">DATE</th>
</tr>
</thead>
<tbody>
<tr>
<td><b># OF LAPTOPS</b></td>
<td>{{ doc.laptop_count or '____' }}</td>
<td style="text-align:center;"><span class="checkbox"></span></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF HARD DRIVES</b></td>
<td>{{ doc.laptop_hdd_count or '____' }}</td>
<td style="text-align:center;"><span class="checkbox"></span></td>
<td>____</td>
<td>________</td>
</tr>
</tbody>
</table>
</div>
<div class="footer">
<strong>Westech Electronics</strong> | R2 Certified Recycling | RecycleGX Platform<br>
Load: {{ doc.name }} | Printed: {{ doc.modified }} | Page 1 of 1<br>
<em>Forward COR to: David Huff | Job #{{ doc.job_number or '____' }}</em>
</div>
</body>
</html>
@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>R2 Controlled Stream Label</title>
<style>
@page { size: 8.5in 11in; margin: 0.5in; }
body { font-family: Arial, sans-serif; font-size: 12pt; }
.label { border: 3px solid #000; padding: 20px; max-width: 7in; margin: 0 auto; }
.title { font-size: 24pt; font-weight: bold; text-align: center; margin-bottom: 20px; }
.section { margin: 15px 0; }
.field { margin: 10px 0; }
.field-label { font-weight: bold; display: inline-block; width: 200px; }
.field-value { border-bottom: 1px solid #000; display: inline-block; min-width: 200px; padding: 3px 10px; }
.checkbox-group { margin: 15px 0; }
.checkbox-row { margin: 8px 0; }
.checkbox { display: inline-block; width: 18px; height: 18px; border: 2px solid #000; margin-right: 8px; vertical-align: middle; }
.checked { background: #000; }
.weight-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin: 20px 0; }
.weight-field { text-align: center; }
.weight-label { font-weight: bold; margin-bottom: 5px; }
.weight-value { border: 2px solid #000; padding: 10px; font-size: 14pt; min-height: 30px; }
.footer { margin-top: 30px; font-size: 9pt; text-align: center; border-top: 1px solid #000; padding-top: 10px; }
</style>
</head>
<body>
<div class="label">
<div class="title">R2 Controlled Stream</div>
<div class="section">
<div class="field">
<span class="field-label">Accumulation Start Date:</span>
<span class="field-value">{{ doc.received_date or '________________________' }}</span>
</div>
</div>
<div class="section">
<div class="field-label">Data Sanitization Status</div>
<div style="font-size: 10pt; color: #666;">(Data: D0-D1 or No Data: ND1-ND2)</div>
<div class="checkbox-group">
<div class="checkbox-row">
<span class="checkbox"></span> Destruction
<span style="margin-left: 30px;">
<span class="checkbox"></span> Wiping
</span>
<span style="margin-left: 30px;">
<span class="checkbox"></span> Digital Overwriting
</span>
</div>
</div>
</div>
<div class="section">
<div class="checkbox-group">
<div class="checkbox-row">
<span class="checkbox"></span> Circuit Boards
<span class="field-value" style="margin-left: 10px; min-width: 150px;">{{ doc.circuit_boards or '______________' }} Type</span>
</div>
<div class="checkbox-row">
<span class="checkbox"></span> CRTs
<span class="field-value" style="margin-left: 10px; min-width: 150px;">{{ doc.crt_qty or '______________' }} Total Qty</span>
</div>
<div class="checkbox-row">
<span class="checkbox"></span> Universal Waste Mercury Containing Device
<div style="margin-left: 20px; font-size: 10pt;">Maintained in closed container unless actively working materials</div>
</div>
<div class="checkbox-row">
<span class="checkbox"></span> Universal Waste Lamps
<div style="margin-left: 20px; font-size: 10pt;">Maintained in closed container unless actively working materials</div>
</div>
<div class="checkbox-row">
<span class="checkbox"></span> Universal Waste Batteries
<div style="margin-left: 20px; font-size: 10pt;">Maintained in closed container unless actively working materials</div>
</div>
<div class="checkbox-row">
<span class="checkbox"></span> Electronic Device
<span class="field-value" style="margin-left: 10px; min-width: 200px;">{{ doc.device_type or '________________________' }}</span>
<div style="margin-left: 20px; font-size: 9pt;">Whole Device (for example: laptop, desktop, modem, IP phone)</div>
</div>
</div>
</div>
<div class="weight-grid">
<div class="weight-field">
<div class="weight-label">Gross Wt</div>
<div class="weight-value">{{ doc.gross_weight or '__________' }}</div>
</div>
<div class="weight-field">
<div class="weight-label">Tare Wt</div>
<div class="weight-value">{{ doc.tare_weight or '__________' }}</div>
</div>
<div class="weight-field">
<div class="weight-label">Net Wt</div>
<div class="weight-value">{{ doc.net_weight or '__________' }}</div>
</div>
</div>
<div class="section">
<div class="field">
<span class="field-label">Accumulation End Date:</span>
<span class="field-value">{{ doc.end_date or '________________________' }}</span>
<span style="font-size: 9pt; color: #666; margin-left: 20px;">Required for data containing items</span>
</div>
</div>
<div class="footer">
<strong>4.4.6.3-F R2 UW Label GA FL AZ</strong> | Effective date: 7.6.23<br>
Pallet: {{ doc.pallet_number or '______________' }} | Load: {{ doc.load or '______________' }}
</div>
</div>
</body>
</html>
@@ -0,0 +1,189 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Special Handling Log - {{ load.name }}</title>
<style>
@page { size: letter; margin: 0.5in; }
body { font-family: Arial, sans-serif; font-size: 10pt; }
.header { border: 2px solid #000; padding: 10px; margin-bottom: 15px; }
.title { font-size: 18pt; font-weight: bold; text-align: center; margin-bottom: 5px; }
.subtitle { font-size: 12pt; text-align: center; margin-bottom: 10px; }
.info-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 10px; }
.info-field { }
.info-label { font-weight: bold; display: inline-block; width: 80px; }
.info-value { border-bottom: 1px solid #000; display: inline-block; min-width: 200px; }
.section { border: 1px solid #000; padding: 10px; margin: 10px 0; }
.section-title { font-size: 11pt; font-weight: bold; background: #f0f0f0; padding: 5px; margin: -10px -10px 10px -10px; border-bottom: 1px solid #000; }
table { width: 100%; border-collapse: collapse; margin: 10px 0; }
th, td { border: 1px solid #000; padding: 6px; text-align: left; font-size: 9pt; }
th { background: #f0f0f0; font-weight: bold; }
.pricing-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 5px; font-size: 9pt; }
.pricing-item { margin: 3px 0; }
.footer { margin-top: 20px; font-size: 8pt; text-align: center; border-top: 2px solid #000; padding-top: 10px; }
.red-line { border: 2px solid #d63384; }
.checkbox { display: inline-block; width: 14px; height: 14px; border: 1px solid #000; margin-right: 5px; }
</style>
</head>
<body>
<div class="header">
<div class="title">SPECIAL HANDLING LOG</div>
<div class="subtitle">NIST Wipe for Hard Drives | COD Required (Include hard drive count)</div>
<div class="info-grid">
<div class="info-field">
<span class="info-label">DATE:</span>
<span class="info-value">{{ load.received_date or nowdate() }}</span>
</div>
<div class="info-field">
<span class="info-label">TRUCK:</span>
<span class="info-value">{{ load.truck or '____' }}</span>
</div>
<div class="info-field">
<span class="info-label">DRIVER:</span>
<span class="info-value">{{ load.driver or '________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Service Level:</span>
<span class="info-value" style="font-weight:bold; color:#d63384;">{{ load.service_level or '________' }}</span>
</div>
</div>
<div class="info-grid">
<div class="info-field" style="grid-column: span 2;">
<span class="info-label">School/Customer:</span>
<span class="info-value" style="min-width: 400px;">{{ load.customer_name or '________________________________' }}</span>
</div>
<div class="info-field" style="grid-column: span 2;">
<span class="info-label">Address:</span>
<span class="info-value" style="min-width: 400px;">{{ load.customer_address or '________________________________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Contact:</span>
<span class="info-value">{{ load.contact_name or '________________' }}</span>
</div>
<div class="info-field">
<span class="info-label">Phone:</span>
<span class="info-value">{{ load.contact_phone or '________________' }}</span>
</div>
</div>
<div style="margin-top: 10px;">
<div class="info-label">Pickup Instructions:</div>
<div style="border: 1px solid #000; padding: 8px; min-height: 40px;">
{{ load.pickup_instructions or '________________________________________________________________' }}
</div>
</div>
</div>
<div class="section red-line">
<div class="section-title" style="background: #d63384; color: white;">RED LINE ENTRY ITEMS</div>
<div class="pricing-grid">
<div class="pricing-item"><b>Laptops</b> (Working): $40 each | (Non-working): $.15/lb</div>
<div class="pricing-item"><b>Desktops</b> (Working): $10 each | (Non-working): $.15/lb</div>
<div class="pricing-item"><b>Tablets</b> (Working): $3 each | (Non-working): $.15/lb</div>
<div class="pricing-item"><b>Servers</b> (Working): $40 each | (Non-working): $.15/lb</div>
<div class="pricing-item"><b>Main Frames</b> (Working): $75 each | (Non-working): $.15/lb</div>
<div class="pricing-item"><b>High Grade</b>: Chromebooks, projectors, cell phones, switches ($.15/lb)</div>
<div class="pricing-item"><b>Wire/Boards</b>: Power supplies, circuits, cameras ($.05/lb)</div>
<div class="pricing-item"><b>No Value</b>: Printers, monitors, TVs, keyboards, mice, batteries ($.00/lb)</div>
</div>
<div style="margin-top: 10px; padding: 8px; border: 1px solid #d63384;">
<b>Hard Drives:</b> Please give all PCs, Laptops, Servers, Loose Hard Drives to HDR<br>
☐ NIST Wipe (No charge) &nbsp;&nbsp;&nbsp; ☐ COD: Include Hard Drive Count
</div>
</div>
<div class="section">
<div class="section-title">Materials / Weight Tracking</div>
<table>
<thead>
<tr>
<th style="width: 35%;">MATERIAL</th>
<th style="width: 15%;">% OF MATERIAL</th>
<th style="width: 15%;">WEIGHT</th>
<th style="width: 15%;">SIGN OFF</th>
<th style="width: 20%;">DATE</th>
</tr>
</thead>
<tbody>
{% for item in load.items %}
<tr>
<td>{{ item.material_type or '________________' }}</td>
<td>{{ item.percentage or '100%' }}</td>
<td>{{ item.weight or '____' }}</td>
<td>{{ item.sign_off or '____' }}</td>
<td>{{ item.date or '________' }}</td>
</tr>
{% else %}
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
<tr><td colspan="5" style="height: 25px;"></td></tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="section">
<div class="section-title">Hard Drive Tracking</div>
<table>
<thead>
<tr>
<th style="width: 20%;">Category</th>
<th style="width: 20%;">SCAN HARD DRIVES</th>
<th style="width: 20%;">LIST SENT?</th>
<th style="width: 20%;">SIGN OFF</th>
<th style="width: 20%;">DATE</th>
</tr>
</thead>
<tbody>
<tr>
<td><b># OF PCs</b></td>
<td>{{ load.pc_count or '____' }}</td>
<td></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF SERVERS</b></td>
<td>{{ load.server_count or '____' }}</td>
<td></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF HARD DRIVES</b></td>
<td>{{ load.hd_count or '____' }}</td>
<td></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b># OF LAPTOPS</b></td>
<td>{{ load.laptop_count or '____' }}</td>
<td></td>
<td>____</td>
<td>________</td>
</tr>
<tr>
<td><b>HARD DRIVES (loose)</b></td>
<td>{{ load.loose_hd_count or '____' }}</td>
<td></td>
<td>____</td>
<td>________</td>
</tr>
</tbody>
</table>
</div>
<div class="footer">
<strong>Westech Electronics</strong> | R2 Certified Recycling<br>
Load: {{ load.name }} | Printed: {{ doc.modified }} | Page 1 of 1
</div>
</body>
</html>