mirror of
https://github.com/marcogll/ap_pos.git
synced 2026-01-13 13:15:16 +00:00
feat: Release version 1.3.5 with coderk Docker image preparation
- Updated README.md version references from 1.8 to 1.3.5 - Changed Docker image from marcogll/ap_pos:latest to coderk/ap_pos:1.3.5 - Prepared Docker configuration for coderk deployment 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
224
index.html
224
index.html
@@ -12,7 +12,7 @@
|
||||
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600&family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Material+Icons+Outlined" rel="stylesheet">
|
||||
<!-- Styles -->
|
||||
<link rel="stylesheet" href="styles.css?v=1.4" />
|
||||
<link rel="stylesheet" href="styles.css?v=1.8" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
@@ -79,49 +79,176 @@
|
||||
<div id="tab-movements" class="tab-content">
|
||||
<div class="section">
|
||||
<h2>Nuevo Movimiento</h2>
|
||||
<form id="formMove">
|
||||
<div class="form-grid">
|
||||
<label>Cliente:</label>
|
||||
<div>
|
||||
<input type="text" id="m-cliente" list="client-list" required autocomplete="off" />
|
||||
<form id="formMove" class="form-modern">
|
||||
<!-- Cliente -->
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label>Cliente</label>
|
||||
<input type="text" id="m-cliente" list="client-list" required autocomplete="off" placeholder="Nombre del cliente" />
|
||||
<datalist id="client-list"></datalist>
|
||||
</div>
|
||||
<label>Categoría:</label>
|
||||
<select id="m-categoria" required>
|
||||
<option value="service">Servicio</option>
|
||||
<option value="course">Curso</option>
|
||||
</select>
|
||||
<label>Artículo:</label>
|
||||
<select id="m-articulo" required>
|
||||
</select>
|
||||
<div id="m-subtipo-container" class="hidden">
|
||||
<label>Subtipo:</label>
|
||||
<select id="m-subtipo">
|
||||
<option value="Servicio">Servicio</option>
|
||||
<option value="Retoque">Retoque</option>
|
||||
</div>
|
||||
|
||||
<!-- Cita -->
|
||||
<div class="form-section" id="appointment-section">
|
||||
<h3>Datos de la Cita</h3>
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label>Fecha</label>
|
||||
<div class="date-time-container">
|
||||
<input type="number" id="m-cita-dia" min="1" max="31" placeholder="DD" class="date-field" />
|
||||
<span class="date-separator">/</span>
|
||||
<input type="number" id="m-cita-mes" min="1" max="12" placeholder="MM" class="date-field" />
|
||||
<span class="date-separator">/</span>
|
||||
<input type="number" id="m-cita-año" min="2024" max="2030" placeholder="AAAA" class="date-field-year" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Hora</label>
|
||||
<select id="m-hora-cita" class="time-select">
|
||||
<option value="">-- Seleccionar hora --</option>
|
||||
<option value="10:00">10:00 AM</option>
|
||||
<option value="10:30">10:30 AM</option>
|
||||
<option value="11:00">11:00 AM</option>
|
||||
<option value="11:30">11:30 AM</option>
|
||||
<option value="12:00">12:00 PM</option>
|
||||
<option value="12:30">12:30 PM</option>
|
||||
<option value="13:00">1:00 PM</option>
|
||||
<option value="13:30">1:30 PM</option>
|
||||
<option value="14:00">2:00 PM</option>
|
||||
<option value="14:30">2:30 PM</option>
|
||||
<option value="15:00">3:00 PM</option>
|
||||
<option value="15:30">3:30 PM</option>
|
||||
<option value="16:00">4:00 PM</option>
|
||||
<option value="16:30">4:30 PM</option>
|
||||
<option value="17:00">5:00 PM</option>
|
||||
<option value="17:30">5:30 PM</option>
|
||||
<option value="18:00">6:00 PM</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Venta -->
|
||||
<div class="form-section">
|
||||
<h3>Venta</h3>
|
||||
<div class="products-container">
|
||||
<div class="product-selector">
|
||||
<select id="m-categoria" required>
|
||||
<option value="">-- Seleccione tipo --</option>
|
||||
<option value="service">Servicio</option>
|
||||
<option value="course">Curso</option>
|
||||
<option value="anticipo">Anticipo</option>
|
||||
</select>
|
||||
<select id="m-articulo" class="product-select">
|
||||
<option value="">-- Primero seleccione tipo --</option>
|
||||
</select>
|
||||
<input type="number" id="product-quantity" min="1" value="1" class="quantity-input" placeholder="Cant." />
|
||||
<button type="button" id="add-product-btn" class="btn-add">Agregar</button>
|
||||
</div>
|
||||
<div id="selected-products" class="selected-products"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Descuentos -->
|
||||
<div class="form-section discount-section">
|
||||
<div class="discount-header">
|
||||
<input type="checkbox" id="discount-toggle" class="discount-checkbox">
|
||||
<label for="discount-toggle" class="discount-label">
|
||||
<span class="material-icons-outlined discount-icon">percent</span>
|
||||
Aplicar descuento
|
||||
</label>
|
||||
</div>
|
||||
<div class="discount-container" id="discount-container" style="display: none;">
|
||||
<div class="discount-grid">
|
||||
<div class="form-group">
|
||||
<label>Tipo de descuento</label>
|
||||
<select id="discount-type">
|
||||
<option value="">Sin descuento</option>
|
||||
<option value="percentage">Porcentaje (%)</option>
|
||||
<option value="amount">Cantidad fija ($)</option>
|
||||
<option value="warrior">🎗️ Vanity (100%)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Valor del descuento</label>
|
||||
<div class="input-with-symbol">
|
||||
<input type="number" id="discount-value" min="0" step="0.01" placeholder="0" disabled />
|
||||
<span class="input-symbol" id="discount-symbol">%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group full-width-discount">
|
||||
<label>Motivo del descuento</label>
|
||||
<input type="text" id="discount-reason" placeholder="Ej: Cliente frecuente, promoción especial..." disabled />
|
||||
</div>
|
||||
</div>
|
||||
<div class="discount-preview" id="discount-preview" style="display: none;">
|
||||
<div class="discount-preview-item">
|
||||
<span>Descuento aplicado:</span>
|
||||
<span id="discount-preview-amount" class="discount-amount">$0.00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Anticipos Disponibles -->
|
||||
<div class="form-section anticipos-section" id="anticipos-section" style="display: none;">
|
||||
<h4>💰 Anticipos Disponibles</h4>
|
||||
<div id="anticipos-disponibles" class="anticipos-container">
|
||||
<!-- Los anticipos se cargarán dinámicamente -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Método de Pago y Detalles -->
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label>Método de Pago *</label>
|
||||
<select id="m-metodo" required>
|
||||
<option value="">-- Seleccione método de pago --</option>
|
||||
<option value="Efectivo">Efectivo</option>
|
||||
<option value="Tarjeta">Tarjeta</option>
|
||||
<option value="Transferencia">Transferencia</option>
|
||||
<option value="Depósito">Depósito</option>
|
||||
<option value="Giftcard">Giftcard</option>
|
||||
<option value="Interno">Interno</option>
|
||||
<option value="Otros">Otros</option>
|
||||
</select>
|
||||
</div>
|
||||
<label>Fecha de Cita:</label>
|
||||
<input type="date" id="m-fecha-cita" />
|
||||
<label>Hora de Cita:</label>
|
||||
<input type="time" id="m-hora-cita" />
|
||||
<label>Monto (MXN):</label><input type="number" id="m-monto" step="0.01" min="0" required />
|
||||
<label>Método:</label>
|
||||
<select id="m-metodo">
|
||||
<option value="">-- Opcional --</option>
|
||||
<option value="Efectivo">Efectivo</option>
|
||||
<option value="Tarjeta">Tarjeta</option>
|
||||
<option value="Transferencia">Transferencia</option>
|
||||
<option value="Depósito">Depósito</option>
|
||||
<option value="Otros">Otros</option>
|
||||
</select>
|
||||
<label>Concepto:</label><input type="text" id="m-concepto" />
|
||||
<label>Atendió:</label><input type="text" id="m-staff" />
|
||||
<label>Notas:</label><textarea id="m-notas" rows="2"></textarea>
|
||||
<div class="form-group">
|
||||
<label>Atendió</label>
|
||||
<input type="text" id="m-staff" readonly />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-actions">
|
||||
<button type="submit">Guardar y Generar Recibo</button>
|
||||
<button type="reset" class="btn-danger">Limpiar</button>
|
||||
|
||||
<div class="form-group full-width">
|
||||
<label>Notas</label>
|
||||
<textarea id="m-notas" rows="2" placeholder="Notas adicionales..."></textarea>
|
||||
</div>
|
||||
|
||||
<!-- Totales -->
|
||||
<div class="totals-section">
|
||||
<div class="totals-row">
|
||||
<span>Subtotal:</span>
|
||||
<span id="subtotal-display">$0.00</span>
|
||||
</div>
|
||||
<div class="totals-row" id="discount-display" style="display: none;">
|
||||
<span>Descuento:</span>
|
||||
<span id="discount-amount-display">-$0.00</span>
|
||||
</div>
|
||||
<div class="totals-row total-final">
|
||||
<span>Total:</span>
|
||||
<span id="total-display">$0.00</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Campos ocultos para compatibilidad -->
|
||||
<input type="hidden" id="m-monto" />
|
||||
<input type="hidden" id="m-concepto" />
|
||||
|
||||
<div class="form-actions-modern">
|
||||
<button type="submit" class="btn-primary-large">Generar Venta y Ticket</button>
|
||||
<button type="reset" class="btn-secondary-large">Limpiar Formulario</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -184,14 +311,14 @@
|
||||
</div>
|
||||
|
||||
<div class="checkbox-container">
|
||||
<input type="checkbox" id="c-esOncologico" />
|
||||
<label for="c-esOncologico">¿Es paciente oncológico?</label>
|
||||
<input type="checkbox" id="c-pacienteOncologico" />
|
||||
<label for="c-pacienteOncologico">🎗️ Paciente Oncológico</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Campos condicionales para paciente oncológico -->
|
||||
<div id="oncologico-fields" class="sub-section hidden">
|
||||
<h3>Información Oncológica</h3>
|
||||
<h3>📋 Información Médica Oncológica</h3>
|
||||
<div class="form-grid-single">
|
||||
<div class="checkbox-container">
|
||||
<input type="checkbox" id="c-oncologoAprueba" />
|
||||
@@ -209,7 +336,7 @@
|
||||
|
||||
<div class="checkbox-container">
|
||||
<input type="checkbox" id="c-pruebaAprobacion" />
|
||||
<label for="c-pruebaAprobacion">¿Presenta prueba de aprobación?</label>
|
||||
<label for="c-pruebaAprobacion">🎗️ Presenta autorización médica explícita firmada</label>
|
||||
</div>
|
||||
|
||||
<p class="data-location-info">
|
||||
@@ -447,20 +574,11 @@
|
||||
</main>
|
||||
|
||||
<footer class="main-footer">
|
||||
<div class="footer-logos">
|
||||
<img src="src/logo_dev.png" alt="Marco Gallegos">
|
||||
<img src="src/logo_gemini.png" alt="Google Gemini">
|
||||
</div>
|
||||
<div class="footer-info">
|
||||
<p>Marco Gallegos | Creado con Google Gemini ®</p>
|
||||
<p id="footer-date"></p>
|
||||
<p id="footer-version"></p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div id="printArea" class="no-print"></div>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/qrcode@1/build/qrcode.min.js"></script>
|
||||
<script type="module" src="app.js?v=1.3"></script>
|
||||
<script type="module" src="app.js?v=1.8"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user