160 lines
8.6 KiB
HTML
160 lines
8.6 KiB
HTML
{% extends "module_base.html" %}
|
|
{% load static %}
|
|
{% load indonesian_filters %}
|
|
|
|
{% block title %}Manufacturing Order Details{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h4 class="card-title mb-0">
|
|
<i class="fas fa-industry me-2"></i>Manufacturing Order Details
|
|
</h4>
|
|
<div class="card-tools">
|
|
{% if mo.status == 'scheduled' %}
|
|
<a href="{% url 'manufacturing:start_mo' mo.mo_number %}" class="btn btn-success btn-sm">
|
|
<i class="fas fa-play me-1"></i>Start
|
|
</a>
|
|
{% elif mo.status == 'in_progress' %}
|
|
<a href="{% url 'manufacturing:complete_mo' mo.mo_number %}" class="btn btn-success btn-sm">
|
|
<i class="fas fa-check me-1"></i>Complete
|
|
</a>
|
|
<a href="{% url 'manufacturing:cancel_mo' mo.mo_number %}" class="btn btn-danger btn-sm">
|
|
<i class="fas fa-times me-1"></i>Cancel
|
|
</a>
|
|
{% endif %}
|
|
<a href="{% url 'manufacturing:edit_mo' mo.mo_number %}" class="btn btn-warning btn-sm">
|
|
<i class="fas fa-edit me-1"></i>Edit
|
|
</a>
|
|
<a href="{% url 'manufacturing:delete_mo' mo.mo_number %}" class="btn btn-danger btn-sm">
|
|
<i class="fas fa-trash me-1"></i>Delete
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<!-- MO Header Information -->
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<table class="table table-borderless">
|
|
<tr>
|
|
<th class="text-muted">MO Number:</th>
|
|
<td>{{ mo.mo_number }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-muted">BOM:</th>
|
|
<td>{{ mo.bom.bom_code }} - {{ mo.bom.product.name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-muted">Quantity to Produce:</th>
|
|
<td>{{ mo.quantity_to_produce|floatformat:2 }}</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<table class="table table-borderless">
|
|
<tr>
|
|
<th class="text-muted">Status:</th>
|
|
<td>
|
|
{% if mo.status == 'scheduled' %}
|
|
<span class="badge bg-warning">Scheduled</span>
|
|
{% elif mo.status == 'in_progress' %}
|
|
<span class="badge bg-primary">In Progress</span>
|
|
{% elif mo.status == 'completed' %}
|
|
<span class="badge bg-success">Completed</span>
|
|
{% elif mo.status == 'cancelled' %}
|
|
<span class="badge bg-danger">Cancelled</span>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-muted">Created:</th>
|
|
<td>{{ mo.created_at|date:"d M Y H:i" }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th class="text-muted">Updated:</th>
|
|
<td>{{ mo.updated_at|date:"d M Y H:i" }}</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Schedule Information -->
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h6 class="mb-0">Scheduled Dates</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<p><strong>Start:</strong> {{ mo.scheduled_start_date|date:"d M Y" }}</p>
|
|
<p><strong>End:</strong> {{ mo.scheduled_end_date|date:"d M Y" }}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card">
|
|
<div class="card-header">
|
|
<h6 class="mb-0">Actual Dates</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<p><strong>Start:</strong> {% if mo.actual_start_date %}{{ mo.actual_start_date|date:"d M Y" }}{% else %}Not started{% endif %}</p>
|
|
<p><strong>End:</strong> {% if mo.actual_end_date %}{{ mo.actual_end_date|date:"d M Y" }}{% else %}Not completed{% endif %}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Required Components -->
|
|
<div class="card mt-4">
|
|
<div class="card-header">
|
|
<h5 class="mb-0">Required Components</h5>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if mo.mocomponent_set.exists %}
|
|
<div class="table-responsive">
|
|
<table class="table table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Component</th>
|
|
<th>Required Quantity</th>
|
|
<th>Unit Cost</th>
|
|
<th>Total Cost</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for component in mo.mocomponent_set.all %}
|
|
<tr>
|
|
<td>{{ component.component.name }}</td>
|
|
<td>{{ component.required_quantity|floatformat:2 }}</td>
|
|
<td>{{ component.component.cost|format_rupiah }}</td>
|
|
<td>{{ component.total_cost|format_rupiah }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
<tfoot>
|
|
<tr class="table-info">
|
|
<th colspan="3" class="text-end">Total Cost:</th>
|
|
<th>{{ mo.total_cost|format_rupiah }}</th>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
{% else %}
|
|
<p class="text-muted">No components defined for this manufacturing order.</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-footer">
|
|
<a href="{% url 'manufacturing:mo_list' %}" class="btn btn-secondary">
|
|
<i class="fas fa-arrow-left me-2"></i>Back to List
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |