commit
751045c120
@ -1,3 +1,3 @@ |
|||||||
venv/ |
venv/ |
||||||
__pycahe__ |
*.pyc |
||||||
settings |
__pycache__/ |
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,56 +1,60 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10 offset-md-1"> |
||||||
<form action="/articulo/" method="POST"> |
<div class="card shadow-lg border-0 text-white"> |
||||||
<div class="card-header row col-12 justify-content-end mb-2 pr-0 mt-2"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Tabla de articulos</h3> |
<h3 class="mb-0">Gestión de Artículos</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">Nombre del articulo</th> |
<th scope="col">Nombre</th> |
||||||
<th scope="col">Medida del articulo</th> |
<th scope="col">Medida</th> |
||||||
<th scope="col">Descripcion</th> |
<th scope="col">Descripción</th> |
||||||
<th scope="col">Tipo del articulo</th> |
<th scope="col">Tipo</th> |
||||||
<th scope="col">Proveedor</th> |
<th scope="col">Proveedor</th> |
||||||
<th scope="col">Precio de compra</th> |
<th scope="col">Precio Compra</th> |
||||||
<th scope="col">Precio de venta</th> |
<th scope="col">Precio Venta</th> |
||||||
<th scope="col">ACTUALIZAR</th> |
<th scope="col">Acción</th> |
||||||
|
|
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for articulo in persona %} |
{% for articulo in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row">{{ articulo.id }}</th> |
<td>{{ articulo.id }}</td> |
||||||
<td> {{ articulo.nombre_articulo }} </td> |
<td>{{ articulo.nombre_articulo }}</td> |
||||||
<td> {{ articulo.medida }} </td> |
<td>{{ articulo.medida }}</td> |
||||||
<td> {{ articulo.descripcion }} </td> |
<td>{{ articulo.descripcion }}</td> |
||||||
<td> {{ articulo.tipo_articulo.tipo_articulo }} </td> |
<td>{{ articulo.tipo_articulo.tipo_articulo }}</td> |
||||||
<td> {{ articulo.proveedor.nombre_proveedor }} </td> |
<td>{{ articulo.proveedor.nombre_proveedor }}</td> |
||||||
<td> {{ articulo.precio_compra }} </td> |
<td>${{ articulo.precio_compra|floatformat:2 }}</td> |
||||||
<td> {{ articulo.precio_venta }} </td> |
<td>${{ articulo.precio_venta|floatformat:2 }}</td> |
||||||
<td class="text-center"> <a class="btn btn-secondary" href="{% url 'articulo_update' articulo.id %}">📝</a> </td> |
<td> |
||||||
</tr> |
<a class="btn btn-sm btn-dark text-white" href="{% url 'articulo_update' articulo.id %}"> |
||||||
{% endfor %} |
<i class="bi bi-pencil"></i> Editar |
||||||
</tbody> |
</a> |
||||||
</table> |
</td> |
||||||
|
</tr> |
||||||
|
{% empty %} |
||||||
|
<tr> |
||||||
|
<td colspan="9" class="text-center text-muted">No hay artículos registrados.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</form> |
</div> |
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="fixed-bottom col-12 mc-3"> |
|
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
|
||||||
<a class="btn btn-success rounded-pill btn-lg" href="{% url 'articulo_registro' %}" >💾</a> |
|
||||||
<br> |
|
||||||
<br> |
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
|
<a href="{% url 'bodega_registro' %}" class="btn btn-success btn-lg rounded-circle position-fixed bottom-0 end-0 m-3 shadow-lg"> |
||||||
|
<i class="fas fa-plus"></i> |
||||||
|
</a> |
||||||
</main> |
</main> |
||||||
|
{% endblock %} |
||||||
{% endblock %} |
|
||||||
@ -1,30 +1,27 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
|
||||||
<div class="row"> |
|
||||||
<div class="col-md-8 offset-md-2 mt-4"> |
|
||||||
<form method="POST"> |
|
||||||
<div class="card"> |
|
||||||
<div class="card-header text-bg-secondary"> |
|
||||||
<h4 class="text-center">Actualizar Articulo</h4> |
|
||||||
|
|
||||||
</div> |
<main class="container my-5"> |
||||||
<div class="card-body"> |
<div class="row justify-content-center"> |
||||||
{% csrf_token %} |
<div class="col-lg-6 col-md-8 col-sm-12"> |
||||||
{{form.as_p}} |
<form method="POST" class="shadow-lg p-4 bg-light rounded"> |
||||||
|
{% csrf_token %} |
||||||
</div> |
<h3 class="text-center text-secondary mb-4">Actualizar Artículo</h3> |
||||||
<div class="card-footer"> |
<div class="mb-3"> |
||||||
<div class="gap-3 d-md-flex justify-content-md-end mb-3"> |
{{ form.as_p }} |
||||||
<a class="btn btn-danger" href="{% url 'articulo_vista' %}">Cancelar</a> |
</div> |
||||||
<button class="btn btn-primary ">Actualizar articulo</button> |
<div class="d-flex justify-content-between align-items-center mt-4"> |
||||||
</div> |
<a href="{% url 'articulo_vista' %}" class="btn btn-outline-danger"> |
||||||
</div> |
<i class="bi bi-x-circle"></i> Cancelar |
||||||
|
</a> |
||||||
|
<button type="submit" class="btn btn-primary"> |
||||||
|
<i class="bi bi-save"></i> Actualizar Artículo |
||||||
|
</button> |
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|||||||
@ -1,54 +1,61 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10"> |
||||||
<form action="/bodega/" method="POST"> |
<div class="card shadow-lg border-0"> |
||||||
<div class="card-header row col-12 justify-content-end mb-2 pr-0 mt-2"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Tabla de Bodega</h3> |
<h3 class="mb-0">Tabla de Bodega</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">Codigo de la bodega</th> |
<th scope="col">Código de la Bodega</th> |
||||||
<th scope="col">Nombre la bodega</th> |
<th scope="col">Nombre de la Bodega</th> |
||||||
<th scope="col">Estado</th> |
<th scope="col">Estado</th> |
||||||
<th scope="col">Direccion</th> |
<th scope="col">Dirección</th> |
||||||
<th scope="col">ACTUALIZAR</th> |
<th scope="col">Actualizar</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for bodega in persona %} |
{% for bodega in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row"> {{bodega.id}} </th> |
<td>{{ bodega.id }}</td> |
||||||
<td> {{bodega.codigo_bodega}} </td> |
<td>{{ bodega.codigo_bodega }}</td> |
||||||
<td> {{bodega.nombre_bodega}} </td> |
<td>{{ bodega.nombre_bodega }}</td> |
||||||
{% if bodega.estado %} |
<td> |
||||||
<td> activo </td> |
{% if bodega.estado %} |
||||||
{% else %} |
Activo |
||||||
<td> inactivo </td> |
{% else %} |
||||||
{% endif %} |
Inactivo |
||||||
<td> {{bodega.direccion_bodega}} </td> |
{% endif %} |
||||||
<td class="text-center"> <a class="btn btn-secondary" href="{% url 'bodega_update' bodega.id %}">📝</a> </td> |
</td> |
||||||
</tr> |
<td>{{ bodega.direccion_bodega }}</td> |
||||||
{% endfor %} |
<td> |
||||||
</tbody> |
<a class="btn btn-sm btn-dark text-white " href="{% url 'bodega_update' bodega.id %}"> |
||||||
</table> |
<i class="bi bi-pencil">Editar</i> |
||||||
|
</a> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{% empty %} |
||||||
|
<tr> |
||||||
|
<td colspan="6" class="text-center text-muted">No hay bodegas registradas.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
</div> |
||||||
</form> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="fixed-bottom col-12 mc-3"> |
|
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
|
||||||
<a class="btn btn-success rounded-pill btn-lg" href="{% url 'bodega_registro' %}" >💾</a> |
|
||||||
<br> |
|
||||||
<br> |
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
|
<a href="{% url 'bodega_registro' %}" class="btn btn-success btn-lg rounded-circle position-fixed bottom-0 end-0 m-3 shadow-lg"> |
||||||
|
<i class="fas fa-plus"></i> |
||||||
|
</a> |
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
@ -1,28 +1,26 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-8 offset-md-2 mt-4"> |
<div class="col-lg-6 col-md-8 col-sm-12"> |
||||||
<form method="POST"> |
<form method="POST" class="shadow-lg p-4 bg-light rounded"> |
||||||
<div class="card"> |
{% csrf_token %} |
||||||
<div class="card-header text-bg-secondary"> |
<h3 class="text-center text-secondary mb-4">Actualizar Bodega</h3> |
||||||
<h4 class="text-center">Actualizar Bodega</h4> |
<div class="mb-3"> |
||||||
</div> |
{{ form }} |
||||||
<div class="card-body"> |
</div> |
||||||
{% csrf_token %} |
<div class="d-flex justify-content-between align-items-center mt-4"> |
||||||
{{form}} |
<a href="{% url 'bodega_vista' %}" class="btn btn-outline-danger"> |
||||||
|
<i class="bi bi-x-circle"></i> Cancelar |
||||||
</div> |
</a> |
||||||
<div class="card-footer"> |
<button type="submit" class="btn btn-primary"> |
||||||
<div class="gap-3 d-md-flex justify-content-md-end mb-3"> |
<i class="bi bi-save"></i> Actualizar bodega |
||||||
<a class="btn btn-danger" href="{% url 'bodega_vista' %}">Cancelar</a> |
</button> |
||||||
<button class="btn btn-primary ">Actualizar bodega</button> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
{% endblock %} |
|
||||||
|
{% endblock %} |
||||||
@ -1,36 +1,94 @@ |
|||||||
<!DOCTYPE html> |
<!DOCTYPE html> |
||||||
<html> |
<!DOCTYPE html> |
||||||
|
<html lang="es"> |
||||||
<head> |
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
<title>Gráfico Interactivo</title> |
<title>Gráfico Interactivo</title> |
||||||
|
|
||||||
|
<!-- Agregar Bootstrap --> |
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"> |
||||||
|
|
||||||
|
<!-- Agregar Chart.js --> |
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
||||||
|
|
||||||
|
<style> |
||||||
|
/* Ajustes adicionales para hacer el gráfico más grande en pantallas grandes */ |
||||||
|
.container { |
||||||
|
max-width: 900px; |
||||||
|
margin-top: 50px; |
||||||
|
} |
||||||
|
h1 { |
||||||
|
text-align: center; |
||||||
|
margin-bottom: 20px; |
||||||
|
color: #333; |
||||||
|
} |
||||||
|
.btn-secondary { |
||||||
|
margin-top: 20px; |
||||||
|
} |
||||||
|
</style> |
||||||
</head> |
</head> |
||||||
<body> |
<body> |
||||||
<h1>Gráfico de cantidad de productos</h1> |
|
||||||
<canvas id="grafico" width="400" height="200"></canvas> |
<div class="container"> |
||||||
|
<h1>Gráfico de Cantidad de Productos</h1> |
||||||
|
|
||||||
|
<!-- Canvas para el gráfico --> |
||||||
|
<canvas id="grafico"></canvas> |
||||||
|
|
||||||
|
<!-- Botón para volver --> |
||||||
|
<a href="{% url 'inventario_vista' %}" class="btn btn-secondary btn-lg d-block mx-auto">Volver</a> |
||||||
|
</div> |
||||||
|
|
||||||
<script> |
<script> |
||||||
const ctx = document.getElementById('grafico').getContext('2d'); |
const ctx = document.getElementById('grafico').getContext('2d'); |
||||||
|
|
||||||
|
// Preparar los labels con el nombre del producto y la medida |
||||||
|
const productosConMedida = {{ productos|safe }}.map((producto, index) => { |
||||||
|
// Asumir que la medida está disponible en el mismo índice que el producto en la lista |
||||||
|
const medida = {{ medidas|safe }}[index]; // Asegúrate de pasar las medidas correctamente desde el backend |
||||||
|
return producto + ' (' + medida + ')'; // Combina nombre y medida |
||||||
|
}); |
||||||
|
|
||||||
const myChart = new Chart(ctx, { |
const myChart = new Chart(ctx, { |
||||||
type: 'bar', |
type: 'pie', // Tipo de gráfico de pastel |
||||||
data: { |
data: { |
||||||
labels: {{ productos|safe }}, // Nombres de los productos |
labels: productosConMedida, // Nombres de los productos con medida |
||||||
datasets: [{ |
datasets: [{ |
||||||
label: 'Cantidad de Productos', |
label: 'Cantidad de Productos', |
||||||
data: {{ cantidades|safe }}, // Cantidades de productos |
data: {{ cantidades|safe }}, // Cantidades de productos |
||||||
backgroundColor: 'rgba(75, 192, 192, 0.2)', |
backgroundColor: [ |
||||||
borderColor: 'rgba(75, 192, 192, 1)', |
'rgba(75, 192, 192, 0.6)', |
||||||
|
'rgba(153, 102, 255, 0.6)', |
||||||
|
'rgba(255, 159, 64, 0.6)', |
||||||
|
'rgba(54, 162, 235, 0.6)', |
||||||
|
'rgba(255, 99, 132, 0.6)', |
||||||
|
'rgba(255, 205, 86, 0.6)', |
||||||
|
'rgba(201, 203, 207, 0.6)' |
||||||
|
], // Colores para cada sección del gráfico |
||||||
|
borderColor: 'rgba(255, 255, 255, 0.7)', // Color del borde |
||||||
borderWidth: 1 |
borderWidth: 1 |
||||||
}] |
}] |
||||||
}, |
}, |
||||||
options: { |
options: { |
||||||
scales: { |
responsive: true, |
||||||
y: { |
plugins: { |
||||||
beginAtZero: true |
legend: { |
||||||
|
position: 'top', |
||||||
|
}, |
||||||
|
tooltip: { |
||||||
|
callbacks: { |
||||||
|
label: function(tooltipItem) { |
||||||
|
return tooltipItem.label + ': ' + tooltipItem.raw + ' productos'; |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
} |
} |
||||||
} |
} |
||||||
}); |
}); |
||||||
</script> |
</script> |
||||||
<a href="{% url 'inventario_vista' %}" class="btn btn-secondary">volver</a> |
|
||||||
|
|
||||||
|
<!-- Agregar Bootstrap JS --> |
||||||
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script> |
||||||
</body> |
</body> |
||||||
</html> |
</html> |
||||||
@ -1,57 +1,60 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10"> |
||||||
<form action="/inventario/" method="POST"> |
<div class="card shadow-lg border-0"> |
||||||
<div class="card-header"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Inventario</h3> |
<h3 class="mb-0">Inventario</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">Articulo</th> |
<th scope="col">Artículo</th> |
||||||
<th scope="col">Descripcion de articulo</th> |
<th scope="col">Descripción de Artículo</th> |
||||||
<th scope="col">Bodega</th> |
<th scope="col">Bodega</th> |
||||||
<th scope="col">Cantidad</th> |
<th scope="col">Cantidad</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for inventario in persona %} |
{% for inventario in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row">{{ inventario.id }}</th> |
<td>{{ inventario.id }}</td> |
||||||
<td> {{ inventario.articulo.nombre_articulo }} {{inventario.articulo.medida}} </td> |
<td>{{ inventario.articulo.nombre_articulo }} {{ inventario.articulo.medida }}</td> |
||||||
<td> {{ inventario.articulo.descripcion }} </td> |
<td>{{ inventario.articulo.descripcion }}</td> |
||||||
<td> {{ inventario.bodega.nombre_bodega }} </td> |
<td>{{ inventario.bodega.nombre_bodega }}</td> |
||||||
<td> {{ inventario.cantidad }} </td> |
<td>{{ inventario.cantidad }}</td> |
||||||
</tr> |
</tr> |
||||||
{% endfor %} |
{% empty %} |
||||||
</tbody> |
<tr> |
||||||
</table> |
<td colspan="5" class="text-center text-muted">No hay inventarios registrados.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</form> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="fixed-bottom col-12 mc-3"> |
|
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
<div class="fixed-bottom d-flex justify-content-end p-3"> |
||||||
<div class="btn-group dropup"> |
<div class="btn-group dropup"> |
||||||
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> |
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> |
||||||
📂 |
📂 |
||||||
</button> |
</button> |
||||||
<ul class="dropdown-menu dropdown-menu-dark"> |
<ul class="dropdown-menu dropdown-menu-dark"> |
||||||
<!-- Dropdown menu links --> |
<li><a class="dropdown-item" href="{% url 'generar_reporte_pdf' %}">Descargar PDF</a></li> |
||||||
<li><a class="dropdown-item" href="{% url 'generar_reporte_pdf' %}" >Descargar PDF</a></li> |
<li><a class="dropdown-item" href="{% url 'generar_reporte_excel' %}">Descargar Excel</a></li> |
||||||
<li><a class="dropdown-item" href="{% url 'generar_reporte_excel' %}" >Descargar Excel</a></li> |
<li><a class="dropdown-item" href="{% url 'generar_reporte_csv' %}">Descargar CSV</a></li> |
||||||
<li><a class="dropdown-item" href="{% url 'generar_reporte_csv' %}">Descargar CSV</a></li> |
<li><a class="dropdown-item" href="{% url 'generar_grafico_chartjs' %}">Generar Gráfico</a></li> |
||||||
<li><a class="dropdown-item" href="{% url 'generar_grafico_chartjs' %}">Generar Grafico</a></li> |
</ul> |
||||||
</ul> |
|
||||||
</div> |
|
||||||
<br> |
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
@ -1,47 +1,60 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10"> |
||||||
<form action="/inventariomov/" method="POST"> |
<div class="card shadow-lg border-0"> |
||||||
<div class="card-header row col-12 justify-content-end mb-2 pr-0 mt-2"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Tabla de movimientos de inventario</h3> |
<h3 class="mb-0">Movimientos de Inventario</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">Bodega</th> |
<th scope="col">Bodega</th> |
||||||
<th scope="col">Articulo</th> |
<th scope="col">Artículo</th> |
||||||
<th scope="col">Cantidad</th> |
<th scope="col">Cantidad</th> |
||||||
<th scope="col">Tipo de movimiento</th> |
<th scope="col">Tipo de Movimiento</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for movimiento_inventario in persona %} |
{% for movimiento_inventario in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row">{{ movimiento_inventario.id }}</th> |
<td>{{ movimiento_inventario.id }}</td> |
||||||
<td> {{ movimiento_inventario.articulo.nombre_articulo }} {{movimiento_inventario.articulo.medida}} </td> |
<td>{{ movimiento_inventario.articulo.nombre_articulo }} {{ movimiento_inventario.articulo.medida }}</td> |
||||||
<td> {{ movimiento_inventario.bodega.nombre_bodega }} </td> |
<td>{{ movimiento_inventario.bodega.nombre_bodega }}</td> |
||||||
<td> {{ movimiento_inventario.cantidad }} </td> |
<td>{{ movimiento_inventario.cantidad }}</td> |
||||||
<td> {{ movimiento_inventario.tipo_inventario }} </td> |
<td>{{ movimiento_inventario.tipo_inventario }}</td> |
||||||
</tr> |
</tr> |
||||||
{% endfor %} |
{% empty %} |
||||||
</tbody> |
<tr> |
||||||
</table> |
<td colspan="5" class="text-center text-muted">No hay movimientos registrados.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</form> |
</div> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
<div class="fixed-bottom col-12 mc-3"> |
|
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
<div class="fixed-bottom d-flex justify-content-end p-3"> |
||||||
<a class="btn btn-success rounded-pill btn-lg" href="{% url 'registrar_movimiento' %}" >💾</a> |
<div class="btn-group dropup"> |
||||||
<br> |
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"> |
||||||
<br> |
📂 |
||||||
|
</button> |
||||||
|
<ul class="dropdown-menu dropdown-menu-dark"> |
||||||
|
<li><a class="dropdown-item" href="{% url 'reporte_pdf' %}">Descargar PDF</a></li> |
||||||
|
<li><a class="dropdown-item" href="{% url 'reporte_excel' %}">Descargar Excel</a></li> |
||||||
|
<li><a class="dropdown-item" href="{% url 'reporte_csv' %}">Descargar CSV</a></li> |
||||||
|
<li><a class="dropdown-item" href="{% url 'registrar_movimiento' %}">Agregar nuevo movimiento</a></li> |
||||||
|
</ul> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
@ -1,36 +1,172 @@ |
|||||||
<!DOCTYPE html> |
<!DOCTYPE html> |
||||||
<html> |
<html lang="es"> |
||||||
<head> |
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<title>Reporte de Inventario</title> |
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
||||||
<style> |
<style> |
||||||
body { font-family: Arial, sans-serif; } |
/* Estilos generales */ |
||||||
table { width: 100%; border-collapse: collapse; margin-top: 20px; } |
body { |
||||||
th, td { border: 1px solid #000; padding: 8px; text-align: left; } |
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; |
||||||
th { background-color: #f2f2f2; } |
background-color: #f4f6f9; |
||||||
|
margin: 0; |
||||||
|
padding: 0; |
||||||
|
} |
||||||
|
h1 { |
||||||
|
text-align: center; |
||||||
|
color: #333; |
||||||
|
margin-top: 20px; |
||||||
|
font-size: 2rem; /* Letra más grande */ |
||||||
|
} |
||||||
|
|
||||||
|
/* Contenedor principal */ |
||||||
|
.container { |
||||||
|
width: 80%; |
||||||
|
margin: 0 auto; |
||||||
|
background-color: #fff; |
||||||
|
padding: 20px; |
||||||
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); |
||||||
|
border-radius: 8px; |
||||||
|
} |
||||||
|
|
||||||
|
/* Estilo para el gráfico */ |
||||||
|
#grafico { |
||||||
|
max-width: 600px; |
||||||
|
margin: 20px auto; |
||||||
|
height: 400px; /* Ajusta el tamaño del gráfico */ |
||||||
|
} |
||||||
|
|
||||||
|
/* Estilos de la tabla */ |
||||||
|
table { |
||||||
|
width: 100%; |
||||||
|
border-collapse: collapse; |
||||||
|
margin-top: 20px; |
||||||
|
} |
||||||
|
|
||||||
|
th, td { |
||||||
|
border: 1px solid #ddd; |
||||||
|
padding: 10px 15px; /* Celdas más pequeñas */ |
||||||
|
text-align: left; |
||||||
|
font-size: 1.2rem; /* Letras un poco más grandes */ |
||||||
|
} |
||||||
|
|
||||||
|
th { |
||||||
|
background-color: #0066cc; /* Color azul */ |
||||||
|
color: white; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
|
||||||
|
td { |
||||||
|
background-color: #f9f9f9; |
||||||
|
} |
||||||
|
|
||||||
|
tr:nth-child(even) td { |
||||||
|
background-color: #f1f1f1; |
||||||
|
} |
||||||
|
|
||||||
|
tr:hover td { |
||||||
|
background-color: #ddd; |
||||||
|
} |
||||||
|
|
||||||
|
/* Estilo de los bordes */ |
||||||
|
table, th, td { |
||||||
|
border-radius: 5px; |
||||||
|
border: 1px solid #e0e0e0; |
||||||
|
} |
||||||
|
|
||||||
|
/* Estilos para la paginación y detalles si se desean agregar */ |
||||||
|
.pagination { |
||||||
|
margin-top: 20px; |
||||||
|
text-align: center; |
||||||
|
} |
||||||
|
.pagination a { |
||||||
|
margin: 0 5px; |
||||||
|
text-decoration: none; |
||||||
|
padding: 10px 15px; |
||||||
|
background-color: #0066cc; /* Color azul */ |
||||||
|
color: white; |
||||||
|
border-radius: 4px; |
||||||
|
} |
||||||
|
.pagination a:hover { |
||||||
|
background-color: #005bb5; /* Tono más oscuro de azul */ |
||||||
|
} |
||||||
</style> |
</style> |
||||||
</head> |
</head> |
||||||
<body> |
<body> |
||||||
<h1>Reporte de Inventario</h1> |
|
||||||
<table> |
<div class="container"> |
||||||
<thead> |
<h1>Reporte de Inventario</h1> |
||||||
<tr> |
|
||||||
<th>ID</th> |
<!-- Canvas para el gráfico de pastel --> |
||||||
<th>Bodega</th> |
<canvas id="grafico"></canvas> |
||||||
<th>Artículo</th> |
|
||||||
<th>Cantidad</th> |
<table> |
||||||
<th>Precio</th> |
<thead> |
||||||
</tr> |
<tr> |
||||||
</thead> |
<th>ID</th> |
||||||
<tbody> |
<th>Bodega</th> |
||||||
{% for item in inventarios %} |
<th>Artículo</th> |
||||||
<tr> |
<th>Cantidad</th> |
||||||
<td>{{ item.id }}</td> |
</tr> |
||||||
<td>{{ item.bodega.nombre_bodega }}</td> |
</thead> |
||||||
<td>{{ item.articulo.nombre_articulo }}</td> |
<tbody> |
||||||
<td>{{ item.cantidad }}</td> |
{% for item in inventarios %} |
||||||
<td>{{ item.precio }}</td> |
<tr> |
||||||
</tr> |
<td>{{ item.id }}</td> |
||||||
{% endfor %} |
<td>{{ item.bodega.nombre_bodega }}</td> |
||||||
</tbody> |
<td>{{ item.articulo.nombre_articulo }}</td> |
||||||
</table> |
<td>{{ item.cantidad }}</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
|
|
||||||
|
<script> |
||||||
|
const ctx = document.getElementById('grafico').getContext('2d'); |
||||||
|
|
||||||
|
const productos = {{ productos|safe }}; |
||||||
|
const cantidades = {{ cantidades|safe }}; |
||||||
|
const medidas = {{ medidas|safe }}.map((medida, index) => productos[index] + ' (' + medida + ')'); |
||||||
|
|
||||||
|
const myChart = new Chart(ctx, { |
||||||
|
type: 'pie', // Tipo de gráfico de pastel |
||||||
|
data: { |
||||||
|
labels: medidas, // Nombres de los productos con medida |
||||||
|
datasets: [{ |
||||||
|
label: 'Cantidad de Productos', |
||||||
|
data: cantidades, // Cantidades de productos |
||||||
|
backgroundColor: [ |
||||||
|
'rgba(75, 192, 192, 0.6)', |
||||||
|
'rgba(153, 102, 255, 0.6)', |
||||||
|
'rgba(255, 159, 64, 0.6)', |
||||||
|
'rgba(54, 162, 235, 0.6)', |
||||||
|
'rgba(255, 99, 132, 0.6)', |
||||||
|
'rgba(255, 205, 86, 0.6)', |
||||||
|
'rgba(201, 203, 207, 0.6)' |
||||||
|
], // Colores para cada sección del gráfico |
||||||
|
borderColor: 'rgba(255, 255, 255, 0.7)', // Color del borde |
||||||
|
borderWidth: 1 |
||||||
|
}] |
||||||
|
}, |
||||||
|
options: { |
||||||
|
responsive: true, |
||||||
|
plugins: { |
||||||
|
legend: { |
||||||
|
position: 'top', |
||||||
|
}, |
||||||
|
tooltip: { |
||||||
|
callbacks: { |
||||||
|
label: function(tooltipItem) { |
||||||
|
return tooltipItem.label + ': ' + tooltipItem.raw + ' productos'; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
</script> |
||||||
|
|
||||||
</body> |
</body> |
||||||
</html> |
</html> |
||||||
@ -1,53 +1,55 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner-lg"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10"> |
||||||
<form action="/proveedor/" method="POST"> |
<div class="card shadow-lg border-0"> |
||||||
<div class="card-header justify-content-md-center mb-3"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Tabla de proveedores</h3> |
<h3 class="mb-0">Tabla de Proveedores</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">Nombre</th> |
<th scope="col">Nombre</th> |
||||||
<th scope="col">Email</th> |
<th scope="col">Email</th> |
||||||
<th scope="col">Telefono</th> |
<th scope="col">Teléfono</th> |
||||||
<th scope="col">Direccion</th> |
<th scope="col">Dirección</th> |
||||||
<th scope="col">ACTUALIZAR</th> |
<th scope="col">Actualizar</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for proveedor in persona %} |
{% for proveedor in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row"> {{proveedor.id}} </th> |
<td>{{ proveedor.id }}</td> |
||||||
<td> {{proveedor.nombre_proveedor}} </td> |
<td>{{ proveedor.nombre_proveedor }}</td> |
||||||
<td> {{proveedor.email}} </td> |
<td>{{ proveedor.email }}</td> |
||||||
<td> {{proveedor.telefono}} </td> |
<td>{{ proveedor.telefono }}</td> |
||||||
<td> {{proveedor.direccion}} </td> |
<td>{{ proveedor.direccion }}</td> |
||||||
<td class="text-center"> <a class="btn btn-secondary rounded-pill btn-lg" href="{% url 'Proveedor_update' proveedor.id %}">📝</a> </td> |
<td> |
||||||
</tr> |
<a class="btn btn-secondary rounded-pill btn-lg" href="{% url 'Proveedor_update' proveedor.id %}"> |
||||||
{% endfor %} |
📝 |
||||||
</tbody> |
</a> |
||||||
</table> |
</td> |
||||||
|
</tr> |
||||||
|
{% empty %} |
||||||
|
<tr> |
||||||
|
<td colspan="6" class="text-center text-muted">No hay proveedores registrados.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
|
</div> |
||||||
</form> |
|
||||||
|
|
||||||
</div> |
</div> |
||||||
|
|
||||||
</div> |
</div> |
||||||
<div class="fixed-bottom col-12 mc-3"> |
<a href="{% url 'proveedor_registro' %}" class="btn btn-success btn-lg rounded-circle position-fixed bottom-0 end-0 m-3 shadow-lg"> |
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
<i class="fas fa-plus"></i> |
||||||
<a class="btn btn-success rounded-pill btn-lg" href="{% url 'proveedor_registro' %}" >💾</a> |
</a> |
||||||
<br> |
|
||||||
<br> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
@ -1,29 +1,27 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
|
||||||
<div class="row"> |
|
||||||
<div class="col-md-8 offset-md-2 mt-4"> |
|
||||||
<form method="POST"> |
|
||||||
<div class="card"> |
|
||||||
<div class="card-header text-bg-secondary"> |
|
||||||
<h4 class="text-center">Actualizar proveedor</h4> |
|
||||||
</div> |
|
||||||
<div class="card-body"> |
|
||||||
|
|
||||||
{% csrf_token %} |
<main class="container my-5"> |
||||||
{{form}} |
<div class="row justify-content-center"> |
||||||
|
<div class="col-lg-6 col-md-8 col-sm-12"> |
||||||
</div> |
<form method="POST" class="shadow-lg p-4 bg-light rounded"> |
||||||
<div class="card-footer"> |
{% csrf_token %} |
||||||
<div class="gap-3 d-md-flex justify-content-md-end mb-3"> |
<h3 class="text-center text-secondary mb-4">Actualizar Proveedor</h3> |
||||||
<a class="btn btn-danger" href="{% url 'proveedor' %}">Cancelar</a> |
<div class="mb-3"> |
||||||
<button class="btn btn-primary ">Actualizar proveedor</button> |
{{ form }} |
||||||
</div> |
</div> |
||||||
</div> |
<div class="d-flex justify-content-between align-items-center mt-4"> |
||||||
|
<a href="{% url 'proveedor' %}" class="btn btn-outline-danger"> |
||||||
|
<i class="bi bi-x-circle"></i> Cancelar |
||||||
|
</a> |
||||||
|
<button type="submit" class="btn btn-primary"> |
||||||
|
<i class="bi bi-save"></i> Actualizar proveedor |
||||||
|
</button> |
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
{% endblock %} |
|
||||||
|
{% endblock %} |
||||||
@ -0,0 +1,46 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="es"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<title>Reporte de Inventario</title> |
||||||
|
<style> |
||||||
|
body { font-family: Arial, sans-serif; } |
||||||
|
table { width: 100%; border-collapse: collapse; } |
||||||
|
th, td { border: 1px solid #000; padding: 8px; text-align: left; } |
||||||
|
th { background-color: #f2f2f2; } |
||||||
|
|
||||||
|
/* Estilo para la celda de Observaciones */ |
||||||
|
td.observaciones { |
||||||
|
white-space: normal; /* Permitir el salto de línea */ |
||||||
|
word-wrap: break-word; /* Ajustar el texto largo dentro de la celda */ |
||||||
|
max-width: 300px; /* Limitar el ancho de la celda */ |
||||||
|
overflow-wrap: break-word; /* Hacer que las palabras largas se ajusten */ |
||||||
|
} |
||||||
|
</style> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<h1>Reporte de Movimientos de Inventario</h1> |
||||||
|
<table> |
||||||
|
<thead> |
||||||
|
<tr> |
||||||
|
<th>Fecha</th> |
||||||
|
<th>Tipo de Movimiento</th> |
||||||
|
<th>Bodega</th> |
||||||
|
<th>Artículo</th> |
||||||
|
<th>Cantidad</th> |
||||||
|
</tr> |
||||||
|
</thead> |
||||||
|
<tbody> |
||||||
|
{% for movimiento in movimientos %} |
||||||
|
<tr> |
||||||
|
<td>{{ movimiento.fecha }}</td> |
||||||
|
<td>{{ movimiento.tipo_inventario }}</td> |
||||||
|
<td>{{ movimiento.bodega }}</td> |
||||||
|
<td>{{ movimiento.articulo }}</td> |
||||||
|
<td>{{ movimiento.cantidad }}</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</body> |
||||||
|
</html> |
||||||
@ -1,44 +1,53 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
<main class="container my-5"> |
||||||
<div class="row"> |
<div class="row justify-content-center"> |
||||||
<div class="col-md-10 offset-md-1 mt-4"> |
<div class="col-md-10"> |
||||||
<form action="/tipo/" method="POST"> |
<div class="card shadow-lg border-0"> |
||||||
<div class="card-header"> |
<div class="card-header text-center bg-secondary text-white"> |
||||||
<h3 class="text-center">Tabla de tipos de articulos</h3> |
<h3 class="mb-0">Tabla de Tipos de Artículos</h3> |
||||||
</div> |
</div> |
||||||
|
<div class="card-body p-4"> |
||||||
<div class="table-responsive"> |
<div class="table-responsive"> |
||||||
<table class="table mt-3"> |
<table class="table table-bordered table-hover align-middle text-white"> |
||||||
<thead class="table-dark"> |
<thead class="bg-dark text-secondary text-center"> |
||||||
<tr> |
<tr> |
||||||
<th scope="col">#</th> |
<th scope="col">#</th> |
||||||
<th scope="col">tipo de articulo</th> |
<th scope="col">Tipo de Artículo</th> |
||||||
<th scope="col">Descripcion</th> |
<th scope="col">Descripción</th> |
||||||
<th scope="col">ACTUALIZAR</th> |
<th scope="col">Actualizar</th> |
||||||
</tr> |
</tr> |
||||||
</thead> |
</thead> |
||||||
<tbody> |
<tbody> |
||||||
{% for tipo_articulo in persona %} |
{% for tipo_articulo in persona %} |
||||||
<tr> |
<tr class="text-center"> |
||||||
<th scope="row"> {{tipo_articulo.id}} </th> |
<td>{{ tipo_articulo.id }}</td> |
||||||
<td> {{tipo_articulo.tipo_articulo}} </td> |
<td>{{ tipo_articulo.tipo_articulo }}</td> |
||||||
<td> {{tipo_articulo.descripcion}} </td> |
<td>{{ tipo_articulo.descripcion }}</td> |
||||||
<td class="text-center"> <a class="btn btn-secondary rounded-pill" href="{% url 'tipo_update' tipo_articulo.id %}">📝</a> </td> </tr> |
<td> |
||||||
{% endfor %} |
<a class="btn btn-secondary rounded-pill" href="{% url 'tipo_update' tipo_articulo.id %}"> |
||||||
</tbody> |
📝 |
||||||
</table> |
</a> |
||||||
|
</td> |
||||||
|
</tr> |
||||||
|
{% empty %} |
||||||
|
<tr> |
||||||
|
<td colspan="4" class="text-center text-muted">No hay tipos de artículos registrados.</td> |
||||||
|
</tr> |
||||||
|
{% endfor %} |
||||||
|
</tbody> |
||||||
|
</table> |
||||||
|
</div> |
||||||
</div> |
</div> |
||||||
</form> |
</div> |
||||||
</div> |
|
||||||
</div> |
|
||||||
<div class="fixed-bottom col-12 mc-3"> |
|
||||||
<di class="gap-2 d-md-flex justify-content-md-end mb-3"> |
|
||||||
<a class="btn btn-success rounded-pill btn-lg" href="{% url 'tipo_registro' %}" >💾</a> |
|
||||||
<br> |
|
||||||
<br> |
|
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
|
|
||||||
|
<!-- Botón flotante con icono de plus --> |
||||||
|
<a href="{% url 'tipo_registro' %}" class="btn btn-success btn-lg rounded-circle position-fixed bottom-0 end-0 m-3 shadow-lg"> |
||||||
|
<i class="fas fa-plus"></i> |
||||||
|
</a> |
||||||
</main> |
</main> |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
@ -1,29 +1,27 @@ |
|||||||
{% extends "Base.html" %} |
{% extends "Base.html" %} |
||||||
|
|
||||||
{% block content %} |
{% block content %} |
||||||
<main class="conteiner"> |
|
||||||
<div class="row"> |
|
||||||
<div class="col-md-8 offset-md-2 mt-4"> |
|
||||||
<form method="POST"> |
|
||||||
<div class="card"> |
|
||||||
<div class="card-header text-bg-secondary"> |
|
||||||
<h4 class="text-center">Actualizar proveedor</h4> |
|
||||||
|
|
||||||
</div> |
<main class="container my-5"> |
||||||
<div class="card-body"> |
<div class="row justify-content-center"> |
||||||
{% csrf_token %} |
<div class="col-lg-6 col-md-8 col-sm-12"> |
||||||
{{form}} |
<form method="POST" class="shadow-lg p-4 bg-light rounded"> |
||||||
|
{% csrf_token %} |
||||||
</div> |
<h3 class="text-center text-secondary mb-4">Actualizar tipo de artículo</h3> |
||||||
<div class="card-footer"> |
<div class="mb-3"> |
||||||
<div class="gap-3 d-md-flex justify-content-md-end mb-3"> |
{{ form }} |
||||||
<a class="btn btn-danger" href="{% url 'tipo_vista' %}">Cancelar</a> |
</div> |
||||||
<button class="btn btn-primary ">Actualizar tipo de articulo</button> |
<div class="d-flex justify-content-between align-items-center mt-4"> |
||||||
</div> |
<a href="{% url 'tipo_vista' %}" class="btn btn-outline-danger"> |
||||||
</div> |
<i class="bi bi-x-circle"></i> Cancelar |
||||||
|
</a> |
||||||
|
<button type="submit" class="btn btn-primary"> |
||||||
|
<i class="bi bi-save"></i> Actualizar tipo de artículo |
||||||
|
</button> |
||||||
</div> |
</div> |
||||||
</form> |
</form> |
||||||
</div> |
</div> |
||||||
</div> |
</div> |
||||||
</main> |
</main> |
||||||
{% endblock %} |
|
||||||
|
{% endblock %} |
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue