166 lines
8.7 KiB
PHP
166 lines
8.7 KiB
PHP
|
<div>
|
||
|
<x-vuexy-admin::form id="{{ $formId }}" :mode="$mode" wireSubmit="onSubmit" actionPosition="both">
|
||
|
<x-slot name="actions">
|
||
|
<x-vuexy-admin::button.offcanvas-buttons :mode="$mode" :tagName="$tagName" />
|
||
|
</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" autofocus autocomplete="off" />
|
||
|
<x-vuexy-admin::form.input :uid="$uniqueId" model="name" label="Nombre de la sucursal" autocomplete="organization" />
|
||
|
<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 maxlength="5" autocomplete="off" />
|
||
|
<x-vuexy-admin::form.input :uid="$uniqueId" model="serie_egresos" label="Serie para Egresos" inline=true :labelCol=6 :inputCol=6 maxlength="5" autocomplete="off" />
|
||
|
<x-vuexy-admin::form.input :uid="$uniqueId" model="serie_pagos" label="Serie para Pagos" inline=true :labelCol=6 :inputCol=6 maxlength="5" autocomplete="off" />
|
||
|
</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 type="tel" :uid="$uniqueId" model="tel" label="Teléfono" icon="ti ti-phone" phoneMode="national" />
|
||
|
<x-vuexy-admin::form.input type="tel" :uid="$uniqueId" model="tel2" label="Teléfono alternativo" icon="ti ti-phone" phoneMode="both" />
|
||
|
<x-vuexy-admin::form.input type="email" :uid="$uniqueId" model="email" label="Correo electrónico" icon="ti ti-mail" autocomplete="email" inputmode="email" />
|
||
|
<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" autocomplete="off" pattern="^[A-Z&Ñ]{3,4}[0-9]{6}[A-Z0-9]{3}$" maxlength="13" />
|
||
|
<x-vuexy-admin::form.input :uid="$uniqueId" model="nombre_fiscal" label="Nombre fiscal" autocomplete="organization" />
|
||
|
<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" autocomplete="address-line1" maxlength="100" />
|
||
|
</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
|
||
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
document.addEventListener('on-failed-validation-store', (event) => {
|
||
|
setTimeout(() => {
|
||
|
initializeStoreForm('{{ $mode }}');
|
||
|
}, 10);
|
||
|
});
|
||
|
|
||
|
initializeStoreForm('{{ $mode }}');
|
||
|
});
|
||
|
</script>
|
||
|
@endpush
|