<div> <x-vuexy-admin::form id="{{ $formId }}" :mode="$mode" wireSubmit="onSubmit" actionPosition="both"> <x-slot name="actions"> <button type="submit" class="btn btn-submit btn-{{ $mode == 'delete' ? 'danger' : 'primary' }} waves-effect waves mr-3 mb-3">{{ $btnSubmitText }}</button> <a href="{{ route('admin.store-manager.stores.index') }}" class="btn {{ $mode == 'delete' ? 'btn-text-secondary waves-effect waves-light' : 'btn btn-label-secondary waves-effect' }} mr-3 mb-3">Cancelar</a> @if($mode == 'delete') <x-vuexy-admin::form.checkbox model="confirmDeletion" label="Confirmar eliminación" class="data-always-enabled" switch=true switchType="square" color="danger" size="lg" withIcon=true /> @endif </x-slot> <div class="row"> <div class="col-lg-4"> {{-- Identificación --}} <x-vuexy-admin::card.basic title="Identificación"> <x-vuexy-admin::form.input :uid="$uniqueId" model="code" label="Identificador único" icon="ti ti-tag" placeholder="UID code" /> <x-vuexy-admin::form.input :uid="$uniqueId" model="name" label="Nombre de la sucursal" /> <x-vuexy-admin::form.textarea :uid="$uniqueId" model="description" label="Descripción" placeholder="Descripción de la sucursal" :autosize=true /> </x-vuexy-admin::card.basic> {{-- Series de facturación --}} <x-vuexy-admin::card.basic title="Series de facturación"> <x-vuexy-admin::form.input :uid="$uniqueId" model="serie_ingresos" label="Serie para Ingresos" inline=true :labelCol=6 :inputCol=6 /> <x-vuexy-admin::form.input :uid="$uniqueId" model="serie_egresos" label="Serie para Egresos" inline=true :labelCol=6 :inputCol=6 /> <x-vuexy-admin::form.input :uid="$uniqueId" model="serie_pagos" label="Serie para Pagos" inline=true :labelCol=6 :inputCol=6 /> </x-vuexy-admin::card.basic> {{-- Configuraciones --}} <x-vuexy-admin::card.basic title="Configuraciones"> <x-vuexy-admin::form.checkbox uid="random" model="status" label="Habilitar sucursal" switch="true" /> <x-vuexy-admin::form.checkbox uid="random" model="show_on_website" label="Mostrar en sitio web" switch="true" /> <x-vuexy-admin::form.checkbox uid="random" model="enable_ecommerce" label="eCommerce habilitado en sitio Web" switch="true" /> </x-vuexy-admin::card.basic> </div> <div class="col-lg-4"> {{-- Información de contacto --}} <x-vuexy-admin::card.basic title="Información de contacto"> <x-vuexy-admin::form.input :uid="$uniqueId" model="tel" label="Teléfono" icon="ti ti-phone" /> <x-vuexy-admin::form.input :uid="$uniqueId" model="tel2" label="Teléfono secundario" icon="ti ti-phone" /> <x-vuexy-admin::form.input :uid="$uniqueId" model="email" label="Correo electrónico" icon="ti ti-mail" /> <x-vuexy-admin::form.select :uid="$uniqueId" model="manager_id" label="Gerente" :options="$manager_id_options" placeholder="Selecciona el gerente" /> </x-vuexy-admin::card.basic> {{-- Información fiscal --}} <x-vuexy-admin::card.basic title="Información fiscal"> <x-vuexy-admin::form.input :uid="$uniqueId" model="rfc" label="RFC" /> <x-vuexy-admin::form.input :uid="$uniqueId" model="nombre_fiscal" label="Nombre fiscal" /> <x-vuexy-admin::form.select :uid="$uniqueId" model="c_regimen_fiscal" label="Régimen fiscal" :options="$c_regimen_fiscal_options" placeholder="Selecciona el régimen fiscal" /> <x-vuexy-admin::form.input :uid="$uniqueId" model="domicilio_fiscal" label="Domicilio fiscal" max="5" /> </x-vuexy-admin::card.basic> </div> <div class="col-lg-4"> {{-- Dirección --}} <x-vuexy-contacts::card.address :uid="$uniqueId" :paisOptions="$c_pais_options" :estadoOptions="$c_estado_options" :localidadOptions="$c_localidad_options" :municipioOptions="$c_municipio_options" :coloniaOptions="$c_colonia_options"/> {{-- Ubicación --}} <x-vuexy-contacts::card.location :uid="$uniqueId" /> </div> </div> </x-vuexy-admin::form> </div> @push('page-script') <script> const initializeStoreForm = (mode) => { const initializeContactInformation = () => { let $manager_id = $("#manager_id_{{ $uniqueId }}"); $manager_id .select2({ language: "es", placeholder: "Selecciona el gerente", allowClear: true, width: "100%" }) .on('select2:select select2:clear', function (e) { @this.manager_id = e.params?.data?.id || null; }); } const initializeFiscalInformation = () => { let $c_regimen_fiscal = $("#c_regimen_fiscal_{{ $uniqueId }}"); $c_regimen_fiscal .select2({ language: "es", placeholder: "Selecciona el regimen fiscal", allowClear: true, width: "100%" }) .on('select2:select select2:clear', function (e) { @this.c_regimen_fiscal = e.params?.data?.id || null; }); } const initializeLocationIQ = () => { // } const initializeAddressFormHandler = () => { const csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content'); // Definición de selectores AddressFormHandler formSelectors = { c_pais: '#c_pais_{{ $uniqueId }}', c_estado: '#c_estado_{{ $uniqueId }}', c_localidad: '#c_localidad_{{ $uniqueId }}', c_municipio: '#c_municipio_{{ $uniqueId }}', c_colonia: '#c_colonia_{{ $uniqueId }}', c_codigo_postal: '#c_codigo_postal_{{ $uniqueId }}', direccion: '#direccion_{{ $uniqueId }}', notification: '#{{ $formId }} .address-notification' }; // Definición de rutas AJAX Componente AddressFormHandler const ajaxRoutes = { codigo_postal: "{{ route('admin.core.sat.get.ajax', 'codigo_postal') }}", localidad: "{{ route('admin.core.sat.get.ajax', 'localidad') }}", estado: "{{ route('admin.core.sat.get.ajax', 'estado') }}", municipio: "{{ route('admin.core.sat.get.ajax', 'municipio') }}", colonia: "{{ route('admin.core.sat.get.ajax', 'colonia') }}" }; // Inicializamos el handler de la información de la dirección new AddressFormHandler(formSelectors, ajaxRoutes, @this, csrfToken); } const initializeLocationCard = (mode) => { const locationInputs = { search: '#location_search_{{ $uniqueId }}', btnSearch: '#btn_search_{{ $uniqueId }}', lat: '#lat_{{ $uniqueId }}', lng: '#lng_{{ $uniqueId }}', btnClear: '#{{ $formId }} .btn-clear-coords', mapId: 'locationMap_{{ $uniqueId }}', } leafletMap = LeafletMapHelper.initializeMap(locationInputs, mode, @this); } // Inicializamos Tarjeta de Información de contacto initializeContactInformation(); // Inicializamos Tarjeta de Información fiscal initializeFiscalInformation(); // Inicializamos Tarjeta de Dirección initializeAddressFormHandler(); // Inicializamos Tarjeta de Ubicación initializeLocationCard(mode); // Deshabilitamos el formulario si estamos eliminando if (mode === 'delete') { window.disableStoreForm('#{{ $formId }}'); } } // Evento para inicializar el formulario window.addEventListener("DOMContentLoaded", () => { window.addEventListener('on-failed-validation-store', (event) => { setTimeout(() => { initializeStoreForm('{{ $mode }}'); }, 10); }); initializeStoreForm('{{ $mode }}'); }); </script> @endpush