feat: Fase 1-3 completas - precios proveedor, multi-sucursal, factura global
Fase 1: Lista de precios de proveedor - Tabla supplier_catalog_prices en master DB - Endpoints GET/POST/PUT/DELETE /supplier-catalog/prices - Upload CSV/Excel de precios de proveedor - Visualizacion de supplier_price en catalogo y POS Fase 2: Multi-sucursal completo - Migracion v4.0: inventory.branch_id=NULL, tabla inventory_stock - Campos fiscales en branches (RFC, regimen, CP, serie CFDI, certificados) - Trigger trg_update_inventory_stock para sincronizar stock por sucursal - Backend config_bp.py con CRUD de sucursales fiscales - Backend inventory_bp.py y pos_bp.py refactorizados para inventario compartido - Backend invoicing_bp.py usa datos fiscales de la sucursal de la venta - Frontend config.html/js con modal de sucursales expandido Fase 3: Factura global mensual - Migracion v4.1: tablas global_invoice_sales, sales.global_invoiced_at - build_global_invoice_xml() con InformacionGlobal SAT-compliant - Servicio global_invoice.py para agrupar ventas PUE <=000 - Endpoints POST/GET /global-invoice y /global-invoice/eligible-sales - Frontend invoicing.html/js con boton y modal de factura global
This commit is contained in:
@@ -718,19 +718,48 @@
|
||||
MODALS
|
||||
===================================================================== -->
|
||||
|
||||
<!-- Modal: Nueva Sucursal -->
|
||||
<!-- Modal: Nueva / Editar Sucursal -->
|
||||
<div class="cfg-modal-overlay" id="modal-branch" style="display:none;">
|
||||
<div class="cfg-modal">
|
||||
<div class="cfg-modal" style="max-width:640px;">
|
||||
<div class="cfg-modal__header">
|
||||
<h3 class="cfg-modal__title">Nueva Sucursal</h3>
|
||||
<h3 class="cfg-modal__title" id="branch-modal-title">Nueva Sucursal</h3>
|
||||
<button class="cfg-modal__close" onclick="Config.closeModal('modal-branch')">×</button>
|
||||
</div>
|
||||
<div class="cfg-modal__body">
|
||||
<input type="hidden" id="branch-id" value="" />
|
||||
<div class="form-grid">
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-label">Nombre</label>
|
||||
<label class="form-label">Nombre *</label>
|
||||
<input class="form-input" id="branch-name" type="text" placeholder="Ej. Sucursal Norte" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">RFC</label>
|
||||
<input class="form-input" id="branch-rfc" type="text" placeholder="ABC010101ABC" maxlength="13" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Razon Social</label>
|
||||
<input class="form-input" id="branch-razon" type="text" placeholder="Razon social fiscal" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Regimen Fiscal</label>
|
||||
<input class="form-input" id="branch-regimen" type="text" placeholder="601" maxlength="10" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Codigo Postal</label>
|
||||
<input class="form-input" id="branch-cp" type="text" placeholder="00000" maxlength="5" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Serie CFDI</label>
|
||||
<input class="form-input" id="branch-serie" type="text" placeholder="A" maxlength="10" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Folio Inicial</label>
|
||||
<input class="form-input" id="branch-folio" type="number" placeholder="1" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Licencia Fiscal</label>
|
||||
<input class="form-input" id="branch-licencia" type="text" placeholder="Opcional" />
|
||||
</div>
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-label">Direccion</label>
|
||||
<input class="form-input" id="branch-address" type="text" placeholder="Calle, Colonia, Ciudad" />
|
||||
@@ -739,6 +768,20 @@
|
||||
<label class="form-label">Telefono</label>
|
||||
<input class="form-input" id="branch-phone" type="tel" placeholder="(55) 1234-5678" />
|
||||
</div>
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-check" style="display:flex;align-items:center;gap:8px;cursor:pointer;">
|
||||
<input type="checkbox" id="branch-main" style="width:auto;" />
|
||||
<span>Sucursal principal (datos fiscales por defecto)</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-label">Certificado PEM (opcional)</label>
|
||||
<textarea class="form-input" id="branch-cert" rows="3" placeholder="-----BEGIN CERTIFICATE-----"></textarea>
|
||||
</div>
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-label">Llave PEM (opcional)</label>
|
||||
<textarea class="form-input" id="branch-key" rows="3" placeholder="-----BEGIN PRIVATE KEY-----"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cfg-modal__footer">
|
||||
@@ -808,7 +851,7 @@
|
||||
<script src="/pos/static/js/pos-utils.js?v=2" defer></script>
|
||||
<script src="/pos/static/js/sidebar.js" defer></script>
|
||||
<script src="/pos/static/js/kiosk.js" defer></script>
|
||||
<script src="/pos/static/js/config.js?v=2" defer></script>
|
||||
<script src="/pos/static/js/config.js?v=3" defer></script>
|
||||
<script src="/pos/static/js/sync-engine.js" defer></script>
|
||||
<script>if('serviceWorker' in navigator){navigator.serviceWorker.register('/pos/sw.js',{scope:'/pos/'});}</script>
|
||||
<script src="/pos/static/js/pwa-install.js" defer></script>
|
||||
|
||||
Reference in New Issue
Block a user