172 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{% extends 'base.html' %}
 | 
						|
{% load qr_code %}
 | 
						|
{% load static %}
 | 
						|
{% load crispy_forms_tags %}
 | 
						|
 | 
						|
{% block content %}
 | 
						|
<div class="container">
 | 
						|
    <nav aria-label="breadcrumb" class="fs-4">
 | 
						|
        <ol class="breadcrumb">
 | 
						|
            <li class="breadcrumb-item"></li>
 | 
						|
            {% for crumb in breadcrumbs %}
 | 
						|
            <li class="breadcrumb-item"><a href="{% url 'parts-stocks-detail' uuid=crumb.id %}">{{crumb.name}}</a></li>
 | 
						|
            {% endfor %}
 | 
						|
            <li class="breadcrumb-item active" aria-current="page">{{object.name}}</li>
 | 
						|
        </ol>
 | 
						|
    </nav>
 | 
						|
 | 
						|
    <div class="row">
 | 
						|
        <div class="col-md-3">
 | 
						|
            <div class="row">
 | 
						|
                {% qr_from_text object.get_qr_code size="m" image_format="svg" %}
 | 
						|
            </div>
 | 
						|
            <div class="row">
 | 
						|
                <h4>{{storage.name}}{% if storage.verbose_name %}<small> ({{storage.verbose_name}})</small>{% endif %}</h4>
 | 
						|
            </div>
 | 
						|
            <div class="row">
 | 
						|
                {% if object.parent_storage %}
 | 
						|
                <h1>Sub-Storages <a class="btn btn-secondary" href="{% url 'parts-stocks-detail' uuid=object.parent_storage.id %}">Parent Storage</a>            {% else %}
 | 
						|
                <h1>Sub-Storages <a class="btn btn-secondary" href="{% url 'parts-stocks'%}">Stock Overview</a>
 | 
						|
                {% endif %}
 | 
						|
                <button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#delete-storage-modal">Delete</button>
 | 
						|
                <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#add-sub-modal"><i class="bi bi-plus-circle"></i></button>
 | 
						|
                <button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#change-modal"><i class="bi bi-pen-fill"></i></button>
 | 
						|
                </h1>
 | 
						|
                <div class="list-group">
 | 
						|
                {% for storage in storages %}
 | 
						|
                    <a href="{% url 'parts-stocks-detail' uuid=storage.id %}" class="text-decoration-none">
 | 
						|
                        <li class="list-group-item list-group-item-action justify-content-between align-items-center d-flex">
 | 
						|
                            <div> 
 | 
						|
                            <h5>{{storage.name}}{% if storage.verbose_name %}<small> ({{storage.verbose_name}})</small>{% endif %}</h5>
 | 
						|
                            Responsible: {{ storage.responsible }}
 | 
						|
                            </div>
 | 
						|
                            <span class="badge bg-primary rounded-pill">{{storage.get_total_stock_amount}}</span>
 | 
						|
                        </li>
 | 
						|
                    </a>
 | 
						|
                {% endfor %}
 | 
						|
                </div>
 | 
						|
                {% include 'paginator.html' with paginator=storages get_param='storage_page' aria_label='Storage Page Navigation' %}
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <div class="col">
 | 
						|
            <h1>Stocked Components</h1>
 | 
						|
            <form method="get">
 | 
						|
                <div class="input-group mb-3">
 | 
						|
                    <input class="form-control" name="search" type="search" placeholder="Search..." {% if stock_search %}value="{{stock_search}}"{% endif %}>
 | 
						|
                    <button type="submit" class="btn btn-primary">
 | 
						|
                        <i class="bi bi-search"></i>
 | 
						|
                    </button>
 | 
						|
                    <button class="btn btn-success" type="button" data-bs-toggle="modal" data-bs-target="#add-stock-modal">
 | 
						|
                        <i class="bi bi-plus-circle"></i> Add Stock
 | 
						|
                    </button>
 | 
						|
                </div>
 | 
						|
            </form>
 | 
						|
            <div class="list-group mb-3">
 | 
						|
                {% for stock in stocks %}
 | 
						|
                    <li class="list-group-item list-group-item-action d-flex align-items-center">
 | 
						|
                        <div class="flex-shrink-0">
 | 
						|
                            {% if stock.component.get_resolved_image %}
 | 
						|
                                <img src="{{stock.component.get_resolved_image}}" style="max-width:64px;max-height:64px;" alt="{{ low.component.name }}" class="mr-3">
 | 
						|
                            {% else %}
 | 
						|
                                {% load static %}
 | 
						|
                                <img src="{% static 'css/icons/card-image.svg' %}" style="width:64px;max-height:64px;" alt="{{ low.component.name }}" class="mr-3">
 | 
						|
                            {% endif %}
 | 
						|
                        </div>
 | 
						|
                        <div class="flex-grow-1 ms-3">
 | 
						|
                            <h6 class="mt-0 text-primary"><a href="{% url 'parts-components-detail' uuid=stock.component.id %}" class="text-decoration-none">{{ stock.component.name }}</a></h6>
 | 
						|
                            {% if stock.component.package %}
 | 
						|
                                Package: {{stock.component.package}}<br>
 | 
						|
                            {% endif %}
 | 
						|
                            {% if stock.component.manufacturer %}
 | 
						|
                                Manufacturer: {{stock.component.manufacturer}}
 | 
						|
                            {% endif %}
 | 
						|
                            {% if stock.lot %}
 | 
						|
                                <span class="text-secondary"><br>Lot: {{stock.lot}}</span>
 | 
						|
                            {% endif %}
 | 
						|
                        </div>
 | 
						|
                        <div class="ms-3">
 | 
						|
                            Amount: {{stock.amount}}
 | 
						|
                            {% if stock.watermark >= 0 %}
 | 
						|
                            <br>Watermark: {{stock.watermark}}
 | 
						|
                            {% else %}
 | 
						|
                            <span class="text-secondary"><br>No Watermark</span>                           
 | 
						|
                            {% endif %}
 | 
						|
                        </div>
 | 
						|
                        <div class="ms-3">
 | 
						|
                              <button type="button" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#change-stock-modal-{{stock.id}}">Change</button>
 | 
						|
                        </div>
 | 
						|
                        <div>
 | 
						|
                            <form method="post">
 | 
						|
                                {% csrf_token %}
 | 
						|
                                <input type="hidden" name="stock_uuid" value="{{stock.id}}">
 | 
						|
                                <input type="submit" class="btn btn-danger m-1" name="submit-delete-stock" value="X">
 | 
						|
                            </form>
 | 
						|
                        </div>
 | 
						|
                    </li>
 | 
						|
                {% endfor %}
 | 
						|
            </div>
 | 
						|
            {% include 'paginator.html' with paginator=stocks get_param='stock_page' aria_label='Stock Page Navigation' %}
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
    {% for stock in stocks  %}
 | 
						|
    {% include 'parts/modals/update-stock-modal.html' with stock=stock form=change_stock_form %}
 | 
						|
    {% endfor %}
 | 
						|
    <!-- Modal for adding a substorage-->
 | 
						|
    {% with add_storage_form as form %}
 | 
						|
    {% include 'parts/modals/add-substorage-modal.html' %}
 | 
						|
    {% endwith %}
 | 
						|
    <!-- Modal to change current storag-->
 | 
						|
    {% with change_storage_form as form %}
 | 
						|
    {% include 'parts/modals/change-storage-modal.html' %}
 | 
						|
    {% endwith %}
 | 
						|
    <!-- Modal for deleting this storage -->
 | 
						|
    {% with delete_storage_errors as err_msgs %}
 | 
						|
    {% include 'parts/modals/delete-storage-modal.html' %}
 | 
						|
    {% endwith %}
 | 
						|
    <!-- Modal for adding stock to this storage -->
 | 
						|
    {% with add_stock_form as form %}
 | 
						|
    {% include 'parts/modals/add-stock-modal.html' %}
 | 
						|
    {% endwith %}
 | 
						|
 | 
						|
</div>
 | 
						|
{% endblock content %}
 | 
						|
 | 
						|
{% block custom_scripts %}
 | 
						|
<script type="text/javascript" src="{% static 'js/add-stock-modal.js' %}"></script>
 | 
						|
<script type="text/javascript">
 | 
						|
{% if add_storage_form.errors %}
 | 
						|
 | 
						|
    var addSubStorageModal = document.querySelector('#add-sub-modal');
 | 
						|
    var c_modal = bootstrap.Modal.getOrCreateInstance(addSubStorageModal);
 | 
						|
    c_modal.show();
 | 
						|
{% endif %}
 | 
						|
{% if delete_storage_errors %}
 | 
						|
    var deleteStorageModal = document.querySelector('#delete-storage-modal');
 | 
						|
    var d_modal = bootstrap.Modal.getOrCreateInstance(deleteStorageModal);
 | 
						|
    d_modal.show();
 | 
						|
{% endif %}
 | 
						|
{% if add_stock_form.errors %}
 | 
						|
var uuid = "{{add_stock_form.component_uuid.value}}";
 | 
						|
if (uuid && uuid != '' && uuid != 'None') {
 | 
						|
api_get_component_from_id(uuid, function(component){
 | 
						|
    var add_stock_modal_div = document.querySelector('#add-stock-modal');
 | 
						|
    var add_stock_modal = bootstrap.Modal.getOrCreateInstance(add_stock_modal_div);
 | 
						|
    fill_add_stock_modal_component(component);
 | 
						|
    add_stock_modal.show();
 | 
						|
    console.log(component)
 | 
						|
}, function(){
 | 
						|
    var add_stock_modal_div = document.querySelector('#add-stock-modal');
 | 
						|
    var add_stock_modal = bootstrap.Modal.getOrCreateInstance(add_stock_modal_div);
 | 
						|
    add_stock_modal.show();
 | 
						|
});
 | 
						|
} else {
 | 
						|
    var add_stock_modal_div = document.querySelector('#add-stock-modal');
 | 
						|
    var add_stock_modal = bootstrap.Modal.getOrCreateInstance(add_stock_modal_div);
 | 
						|
    add_stock_modal.show();
 | 
						|
}
 | 
						|
{% endif %}
 | 
						|
 | 
						|
</script>
 | 
						|
{% endblock custom_scripts %}
 | 
						|
 |