1686 lines
		
	
	
		
			92 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			1686 lines
		
	
	
		
			92 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<section id="admin-crm-contacts-view">
 | 
						|
    <div class="row" x-data="{
 | 
						|
        activeTab: 'general-info',
 | 
						|
        activeTabPan: localStorage.getItem('activeTabPan') || 'cuenta-usuario',
 | 
						|
        setActiveTabPan(tab) {
 | 
						|
            this.activeTabPan = tab;
 | 
						|
            localStorage.setItem('activeTabPan', tab);
 | 
						|
        }
 | 
						|
    }">
 | 
						|
 | 
						|
    <div class="col-md-12">
 | 
						|
        <div class="nav-align-top">
 | 
						|
            <ul class="nav nav-pills flex-column flex-md-row mb-6 gap-2 gap-lg-0">
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='general-info'" :class="{ 'active': activeTab === 'general-info' }" class="nav-link">Información general</a>
 | 
						|
                </li>
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='cotizaciones'" :class="{ 'active': activeTab === 'cotizaciones' }" x-on:click="loadTable('cotizaciones')" class="nav-link">Cotizaciones</a>
 | 
						|
                </li>
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='pago-pendiente'" :class="{ 'active': activeTab === 'pago-pendiente' }" x-on:click="loadTable('pago-pendiente')" class="nav-link">Pago pendiente</a>
 | 
						|
                </li>
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='pendientes-entrega'" :class="{ 'active': activeTab === 'pendientes-entrega' }" x-on:click="loadTable('pendientes-entrega')" class="nav-link">Pendientes de entrega</a>
 | 
						|
                </li>
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='procesados'" :class="{ 'active': activeTab === 'procesados' }" x-on:click="loadTable('procesados')" class="nav-link">Procesados</a>
 | 
						|
                </li>
 | 
						|
                <li class="nav-item">
 | 
						|
                    <a @click="activeTab='pagos'" :class="{ 'active': activeTab === 'pagos' }" x-on:click="loadTable('pagos')" class="nav-link">Pagos</a>
 | 
						|
                </li>
 | 
						|
            </ul>
 | 
						|
        </div>
 | 
						|
        <div>
 | 
						|
            <div x-show="activeTab === 'general-info'">
 | 
						|
                <div class="row">
 | 
						|
                    <div class="col-xl-12">
 | 
						|
                        <div class="nav-align-left nav-tabs-shadow mb-6">
 | 
						|
                            <ul class="nav nav-tabs" role="tablist">
 | 
						|
                                <li class="nav-item" role="presentation">
 | 
						|
                                    <button type="button" @click="setActiveTabPan('cuenta-usuario')" :class="{ 'active': activeTabPan === 'cuenta-usuario' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-cuenta-usuario" aria-controls="navs-left-cuenta-usuario" tabindex="-1">
 | 
						|
                                        <i class="ti ti-user pr-2"></i> Cuenta de usuario
 | 
						|
                                    </button>
 | 
						|
                                </li>
 | 
						|
                                @if (($is_customer || $is_user) && $this->tipo_persona != App\Models\User::TIPO_RFC_PUBLICO)
 | 
						|
                                    <li class="nav-item" role="presentation">
 | 
						|
                                        <button type="button" @click="setActiveTabPan('accesos')" :class="{ 'active': activeTabPan === 'accesos' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-accesos" aria-controls="navs-left-accesos">
 | 
						|
                                            <i class="ti ti-key pr-2"></i> Accesos
 | 
						|
                                        </button>
 | 
						|
                                    </li>
 | 
						|
                                @endif
 | 
						|
                                @if ($is_prospect || $is_customer || $is_provider)
 | 
						|
                                    <li class="nav-item" role="presentation">
 | 
						|
                                        <button type="button" @click="setActiveTabPan('facturacion-electronica')" :class="{ 'active': activeTabPan === 'facturacion-electronica' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-facturacion-electronica" aria-controls="navs-left-facturacion-electronica">
 | 
						|
                                            <i class="ti ti-rubber-stamp pr-2"></i> Facturación electrónica
 | 
						|
                                        </button>
 | 
						|
                                    </li>
 | 
						|
                                @endif
 | 
						|
                                @if (($is_prospect || $is_customer || $is_provider || $is_user) && $this->tipo_persona != App\Models\User::TIPO_RFC_PUBLICO)
 | 
						|
                                    <li class="nav-item" role="presentation">
 | 
						|
                                        <button type="button" @click="setActiveTabPan('direcciones')" :class="{ 'active': activeTabPan === 'direcciones' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-direcciones" aria-controls="navs-left-direcciones">
 | 
						|
                                            <i class="ti ti-map-pin pr-2"></i> Direcciones
 | 
						|
                                        </button>
 | 
						|
                                    </li>
 | 
						|
                                @endif
 | 
						|
                                @if (($is_prospect || $is_customer || $is_provider || $is_user) && $this->tipo_persona != App\Models\User::TIPO_RFC_PUBLICO)
 | 
						|
                                    <li class="nav-item" role="presentation">
 | 
						|
                                        <button type="button" @click="setActiveTabPan('contacto')" :class="{ 'active': activeTabPan === 'contacto' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-contacto" aria-controls="navs-left-contacto">
 | 
						|
                                            <i class="ti ti-address-book pr-2"></i> Contacto
 | 
						|
                                        </button>
 | 
						|
                                    </li>
 | 
						|
                                @endif
 | 
						|
                                @if (($is_customer || $is_provider) && $this->tipo_persona != App\Models\User::TIPO_RFC_PUBLICO)
 | 
						|
                                    <li class="nav-item" role="presentation">
 | 
						|
                                        <button type="button" @click="setActiveTabPan('cuentas-bancarias')" :class="{ 'active': activeTabPan === 'cuentas-bancarias' }" class="nav-link waves-effect" role="tab" data-bs-toggle="tab" data-bs-target="#navs-left-cuentas-bancarias" aria-controls="navs-left-cuentas-bancarias">
 | 
						|
                                            <i class="ti ti-credit-card pr-2"></i> Cuentas bancarias
 | 
						|
                                        </button>
 | 
						|
                                    </li>
 | 
						|
                                @endif
 | 
						|
                            </ul>
 | 
						|
                            <div class="tab-content">
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'cuenta-usuario' }" id="navs-left-cuenta-usuario" role="tabpanel">
 | 
						|
                                    @if($cuentaUsuarioAlert)
 | 
						|
                                        <div class="alert alert-{{ $cuentaUsuarioAlert['type'] }} alert-cuenta-usuario alert-dismissible" role="alert">
 | 
						|
                                            {{ $cuentaUsuarioAlert['message'] }}
 | 
						|
                                            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
						|
                                        </div>
 | 
						|
                                    @endif
 | 
						|
 | 
						|
                                    <form id="cuentaUsuario-form" class="fv-plugins-bootstrap5 fv-plugins-framework" novalidate="novalidate">
 | 
						|
                                        <input type="hidden" name="userId" wire:model='userId'>
 | 
						|
 | 
						|
                                        <div class="row">
 | 
						|
                                            <div class="col-lg-6" wire:ignore>
 | 
						|
                                                <div class="row custom-options-checkable mb-4">
 | 
						|
                                                    <div class="col-md-4">
 | 
						|
                                                        <input class="custom-option-item-check" id="tipo_persona_fisica" name="tipo_persona" type="radio" value="1" wire:model="tipo_persona" >
 | 
						|
                                                        <label class="custom-option-item p-3" for="tipo_persona_fisica">
 | 
						|
                                                            <span class="d-flex justify-content-between flex-wrap">
 | 
						|
                                                                <span class="fw-bolder">Persona física</span>
 | 
						|
                                                            </span>
 | 
						|
                                                        </label>
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="col-md-4">
 | 
						|
                                                        <input class="custom-option-item-check" id="tipo_persona_moral" name="tipo_persona" type="radio" value="2" wire:model="tipo_persona">
 | 
						|
                                                        <label class="custom-option-item p-3" for="tipo_persona_moral">
 | 
						|
                                                            <span class="d-flex justify-content-between flex-wrap">
 | 
						|
                                                                <span class="fw-bolder">Persona moral</span>
 | 
						|
                                                            </span>
 | 
						|
                                                        </label>
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="col-md-4">
 | 
						|
                                                        <input class="custom-option-item-check" id="tipo_publico_en_general" name="tipo_persona" type="radio" value="9" wire:model="tipo_persona">
 | 
						|
                                                        <label class="custom-option-item p-3" for="tipo_publico_en_general">
 | 
						|
                                                            <span class="d-flex justify-content-between flex-wrap">
 | 
						|
                                                                <span class="fw-bolder">Público en general</span>
 | 
						|
                                                            </span>
 | 
						|
                                                        </label>
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="name" class="form-label">Nombre</label>
 | 
						|
                                                    <div class="input-group input-group-merge input-group-name">
 | 
						|
                                                        <span class="input-group-text">
 | 
						|
                                                            <i class="ti ti-building-skyscraper"></i>
 | 
						|
                                                            <i class="ti ti-user"></i>
 | 
						|
                                                        </span>
 | 
						|
                                                        <input type="text" id="name" name="name" wire:model='name' class="form-control" placeholder="Nombre completo">
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row cargo-div mb-6">
 | 
						|
                                                    <label for="cargo" class="form-label">Cargo o puesto laboral</label>
 | 
						|
                                                    <input type="text" id="cargo" name="cargo" wire:model='cargo' class="form-control" placeholder="Cargo o puesto laboral">
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="mb-3">
 | 
						|
                                                    <x-checkbox-v value="{{ old('is_prospect', $is_prospect) }}"
 | 
						|
                                                                    name='is_prospect'
 | 
						|
                                                                    wire:model='is_prospect'
 | 
						|
                                                                    parent_class='form-switch'>
 | 
						|
                                                        Es prospecto
 | 
						|
                                                    </x-checkbox-v>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="mb-3">
 | 
						|
                                                    <x-checkbox-v value="{{ old('is_customer', $is_customer) }}"
 | 
						|
                                                                    name='is_customer'
 | 
						|
                                                                    wire:model='is_customer'
 | 
						|
                                                                    parent_class='form-switch'>
 | 
						|
                                                        Es cliente
 | 
						|
                                                    </x-checkbox-v>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="mb-3">
 | 
						|
                                                    <x-checkbox-v value="{{ old('is_provider', $is_provider) }}"
 | 
						|
                                                                    name='is_provider'
 | 
						|
                                                                    wire:model='is_provider'
 | 
						|
                                                                    parent_class='form-switch'>
 | 
						|
                                                        Es proveedor
 | 
						|
                                                    </x-checkbox-v>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="mb-6">
 | 
						|
                                                    <x-checkbox-v value="{{ old('is_user', $is_user) }}"
 | 
						|
                                                                    name='is_user'
 | 
						|
                                                                    wire:model='is_user'
 | 
						|
                                                                    parent_class='form-switch'>
 | 
						|
                                                        Es usuario
 | 
						|
                                                    </x-checkbox-v>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="row pricelist-div mb-3">
 | 
						|
                                                    <div class="col-lg-12">
 | 
						|
                                                        <label for="pricelist_id" class="form-label">Lista de precios</label>
 | 
						|
                                                        <x-form.select name="pricelist_id" wire:model='pricelist_id' :options="$pricelists_options" :placeholder="'Selecciona la lista de precios'" />
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="row credit-div">
 | 
						|
                                                    <div class="col-md-6 mt-3 mb-3">
 | 
						|
                                                        <x-checkbox-v value="{{ old('enable_credit', $enable_credit) }}"
 | 
						|
                                                                    name='enable_credit'
 | 
						|
                                                                    wire:model='enable_credit'
 | 
						|
                                                                    parent_class='form-switch'>
 | 
						|
                                                            Habilitar línea de crédito
 | 
						|
                                                        </x-checkbox-v>
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="row credit-div credit-limit-div">
 | 
						|
                                                    <div class="col-md-6 fv-row ">
 | 
						|
                                                        <label for="credit_days" class="form-label">Máximo de días de crédito</label>
 | 
						|
                                                        <div class="input-group input-group-merge">
 | 
						|
                                                            <span class="input-group-text"><i class="ti ti-calendar-event"></i></span>
 | 
						|
                                                            <input type="number" id="credit_days" name="credit_days" wire:model='credit_days' class="form-control text-center">
 | 
						|
                                                        </div>
 | 
						|
                                                        <div class="error-message"></div>
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="col-md-6 fv-row credit-limit-div">
 | 
						|
                                                        <label for="credit_limit" class="form-label">Línea de cŕedito</label>
 | 
						|
                                                        <div class="input-group input-group-merge">
 | 
						|
                                                            <span class="input-group-text">$</span>
 | 
						|
                                                            <input type="number" id="credit_limit" name="credit_limit" wire:model='credit_limit' class="form-control text-right">
 | 
						|
                                                        </div>
 | 
						|
                                                        <div class="error-message"></div>
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                            </div>
 | 
						|
                                            <div class="col-lg-6">
 | 
						|
                                                <div class="image-wrapper-520x520 mb-3">
 | 
						|
                                                    <!-- Mostrar una vista previa de la imagen seleccionada -->
 | 
						|
                                                    <img id="user-image" src="{{ $image? $image->temporaryUrl() : $profile_photo }}">
 | 
						|
                                                </div>
 | 
						|
                                                <input type="file" name="image" wire:model="image" id="image" class='form-control' accept='image/*' />
 | 
						|
                                                @error('image') <span class="error">{{ $message }}</span> @enderror
 | 
						|
                                                @if(!$deleteUserImage)
 | 
						|
                                                    <button type="button" class="btn btn-outline-warning waves-effect btn-delete-image mt-3" onclick="btnDeleteImage()">Eliminar imagen</button>
 | 
						|
                                                @endif
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                        <div class="row mt-2" wire:ignore>
 | 
						|
                                            <div class="col-lg-12">
 | 
						|
                                                <button type="submit" id="cuentaUsuario-saveButton" class="btn btn-primary me-3 waves-effect waves-light" disabled>Guardar cambios</button>
 | 
						|
                                                <button type="button" id="cuentaUsuario-resetButton" class="btn btn-label-secondary waves-effect" disabled>Cancelar</button>
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                    </form>
 | 
						|
                                </div>
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'accesos' }" id="navs-left-accesos" role="tabpanel">
 | 
						|
                                    @if($accesosAlert)
 | 
						|
                                        <div class="alert alert-{{ $accesosAlert['type'] }} alert-accesos alert-dismissible" role="alert">
 | 
						|
                                            {{ $accesosAlert['message'] }}
 | 
						|
                                            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
						|
                                        </div>
 | 
						|
                                    @endif
 | 
						|
 | 
						|
                                    <form id="accesos-form" class="fv-plugins-bootstrap5 fv-plugins-framework" novalidate="novalidate">
 | 
						|
                                        <div class="row">
 | 
						|
                                            <div class="col-md-6">
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="status" class="form-label">Estatus</label>
 | 
						|
                                                    <div class="input-group input-group-merge">
 | 
						|
                                                        <span class="input-group-text"><i class="ti ti-shield-exclamation"></i></span>
 | 
						|
                                                        <x-form.select name="status" :options="$status_options" wire:model='status'/>
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="email" class="form-label">Correo electrónico</label>
 | 
						|
                                                    <div class="input-group input-group-merge">
 | 
						|
                                                        <span class="input-group-text"><i class="ti ti-mail"></i></span>
 | 
						|
                                                        <input type="text" id="email" name="name" wire:model='email' class="form-control" placeholder="Correo electrónico">
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="password" class="form-label">Contraseña</label>
 | 
						|
                                                    <div class="input-group input-group-merge">
 | 
						|
                                                        <span class="input-group-text"><i class="ti ti-key"></i></span>
 | 
						|
                                                        <input type="password" id="password" name="password" wire:model='password' class="form-control" placeholder="Dejar en blanco para no cambiar">
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="password_confirmation" class="form-label">Confirmar contraseña</label>
 | 
						|
                                                    <div class="input-group input-group-merge">
 | 
						|
                                                        <span class="input-group-text"><i class="ti ti-key"></i></span>
 | 
						|
                                                        <input type="password" id="password_confirmation" name="password_confirmation"  wire:model='password_confirmation' class="form-control" placeholder="Dejar en blanco para no cambiar">
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                        <div class="row mt-2" wire:ignore>
 | 
						|
                                            <div class="col-lg-12">
 | 
						|
                                                <button type="submit" id="accesos-saveButton" class="btn btn-primary me-3 waves-effect waves-light" disabled>Guardar cambios</button>
 | 
						|
                                                <button type="button" id="accesos-resetButton" class="btn btn-label-secondary waves-effect" disabled>Cancelar</button>
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                    </form>
 | 
						|
                                </div>
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'facturacion-electronica' }" id="navs-left-facturacion-electronica" role="tabpanel">
 | 
						|
                                    @if($facturacionElectronicaAlert)
 | 
						|
                                        <div class="alert alert-{{ $facturacionElectronicaAlert['type'] }} alert-facturacion-electronica alert-dismissible" role="alert">
 | 
						|
                                            {{ $facturacionElectronicaAlert['message'] }}
 | 
						|
                                            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
						|
                                        </div>
 | 
						|
                                    @endif
 | 
						|
 | 
						|
                                    <form id="facturacion-electronica-form" class="fv-plugins-bootstrap5 fv-plugins-framework" novalidate="novalidate">
 | 
						|
                                        <div class="row">
 | 
						|
                                            <div class="col-md-6">
 | 
						|
                                                <div class="row">
 | 
						|
                                                    <div class="col-lg-6 fv-row mb-3">
 | 
						|
                                                        <label for="rfc" class="form-label">RFC</label>
 | 
						|
                                                        <input type="text" id="rfc" name="name" wire:model='rfc' class="form-control uppercase" placeholder="RFC">
 | 
						|
                                                        <div class="error-message"></div>
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="col-lg-6 fv-row mb-3">
 | 
						|
                                                        <label for="domicilio_fiscal" class="form-label">Domicilio fiscal (C.P.)</label>
 | 
						|
                                                        <div class="input-group input-group-merge">
 | 
						|
                                                            <span class="input-group-text"><i class="ti ti-mailbox"></i></span>
 | 
						|
                                                            <input type="number" id="domicilio_fiscal" name="domicilio_fiscal" wire:model='domicilio_fiscal' class="form-control text-center" placeholder="Código postal">
 | 
						|
                                                        </div>
 | 
						|
                                                        <div class="error-message"></div>
 | 
						|
                                                    </div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="nombre_fiscal" class="form-label">Nombre fiscal</label>
 | 
						|
                                                    <input type="text" id="nombre_fiscal" name="nombre_fiscal" wire:model='nombre_fiscal' class="form-control uppercase" placeholder="Nombre fiscal">
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="c_regimen_fiscal" class="form-label">Regimen fiscal</label>
 | 
						|
                                                    <x-form.select name="c_regimen_fiscal" :options="$regimen_fiscal_options" wire:model='c_regimen_fiscal' :placeholder="'Selecciona regimen fiscal'" />
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                                <div class="fv-row mb-3">
 | 
						|
                                                    <label for="c_uso_cfdi" class="form-label">Uso de CFDI preferido</label>
 | 
						|
                                                    <x-form.select name="c_uso_cfdi" :options="$uso_cfdi_options" wire:model='c_uso_cfdi' :placeholder="'Selecciona uso de CFDI'" />
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                            </div>
 | 
						|
                                            <div class="col-md-6" wire:ignore>
 | 
						|
                                                <div class="pdf-dropzone-div mb-4">
 | 
						|
                                                    <div class="dropzone mini-dropzone" id="pdf-dropzone">
 | 
						|
                                                        <div class="dz-message needsclick">
 | 
						|
                                                            Constancia de situación fiscal
 | 
						|
                                                            <span class="note needsclick">Arastre aquí el PDF o haga clic para cargarlo.</span>
 | 
						|
                                                        </div>
 | 
						|
                                                    </div>
 | 
						|
                                                    <div class="error-message"></div>
 | 
						|
                                                </div>
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                        <div class="row mt-2" wire:ignore>
 | 
						|
                                            <div class="col-lg-12">
 | 
						|
                                                <button type="submit" id="facturacion-electronica-saveButton" class="btn btn-primary me-3 waves-effect waves-light" disabled>Guardar cambios</button>
 | 
						|
                                                <button type="button" id="facturacion-electronica-resetButton" class="btn btn-label-secondary waves-effect" disabled>Cancelar</button>
 | 
						|
                                            </div>
 | 
						|
                                        </div>
 | 
						|
                                    </form>
 | 
						|
                                </div>
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'direcciones' }" id="navs-left-direcciones" role="tabpanel">
 | 
						|
                                    <p>Oat cake chupa chups dragée donut toffee. Sweet cotton candy jelly beans macaroon gummies cupcake gummi</p>
 | 
						|
                                </div>
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'contacto' }" id="navs-left-contacto" role="tabpanel">
 | 
						|
                                    <p>Oat cake chupa chups dragée donut toffee. Sweet cotton candy jelly beans macaroon gummies cupcake gummi</p>
 | 
						|
                                </div>
 | 
						|
                                <div class="tab-pane fade" :class="{ 'active show': activeTabPan === 'cuentas-bancarias' }" id="navs-left-cuentas-bancarias" role="tabpanel">
 | 
						|
                                    <p>Oat cake chupa chups dragée donut toffee. Sweet cotton candy jelly beans macaroon gummies cupcake gummi</p>
 | 
						|
                                </div>
 | 
						|
                            </div>
 | 
						|
                        </div>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <div x-show="activeTab === 'cotizaciones'">
 | 
						|
                <div class="card">
 | 
						|
                    <div class="card-datatable table-responsive pt-0">
 | 
						|
                        <table class="dt-cotizaciones table">
 | 
						|
                            <thead>
 | 
						|
                                <tr>
 | 
						|
                                    <th></th>
 | 
						|
                                    <th>id</th>
 | 
						|
                                    <th>Name</th>
 | 
						|
                                    <th>Email</th>
 | 
						|
                                    <th>Date</th>
 | 
						|
                                    <th>Salary</th>
 | 
						|
                                    <th>Status</th>
 | 
						|
                                    <th>Action</th>
 | 
						|
                                </tr>
 | 
						|
                            </thead>
 | 
						|
                        </table>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <div x-show="activeTab === 'pago-pendiente'">
 | 
						|
                <div class="card">
 | 
						|
                    <div class="card-datatable table-responsive pt-0">
 | 
						|
                        <table class="dt-pago-pendiente table">
 | 
						|
                            <thead>
 | 
						|
                                <tr>
 | 
						|
                                    <th></th>
 | 
						|
                                    <th>id</th>
 | 
						|
                                    <th>Name</th>
 | 
						|
                                    <th>Email</th>
 | 
						|
                                    <th>Date</th>
 | 
						|
                                    <th>Salary</th>
 | 
						|
                                    <th>Status</th>
 | 
						|
                                    <th>Action</th>
 | 
						|
                                </tr>
 | 
						|
                            </thead>
 | 
						|
                        </table>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <div x-show="activeTab === 'pendientes-entrega'">
 | 
						|
                <div class="card">
 | 
						|
                    <div class="card-datatable table-responsive pt-0">
 | 
						|
                        <table class="dt-pendientes-entrega table">
 | 
						|
                            <thead>
 | 
						|
                                <tr>
 | 
						|
                                    <th></th>
 | 
						|
                                    <th>id</th>
 | 
						|
                                    <th>Name</th>
 | 
						|
                                    <th>Email</th>
 | 
						|
                                    <th>Date</th>
 | 
						|
                                    <th>Salary</th>
 | 
						|
                                    <th>Status</th>
 | 
						|
                                    <th>Action</th>
 | 
						|
                                </tr>
 | 
						|
                            </thead>
 | 
						|
                        </table>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <div x-show="activeTab === 'procesados'">
 | 
						|
                <div class="card">
 | 
						|
                    <div class="card-datatable table-responsive pt-0">
 | 
						|
                        <table class="dt-procesados table">
 | 
						|
                            <thead>
 | 
						|
                                <tr>
 | 
						|
                                    <th></th>
 | 
						|
                                    <th>id</th>
 | 
						|
                                    <th>Name</th>
 | 
						|
                                    <th>Email</th>
 | 
						|
                                    <th>Date</th>
 | 
						|
                                    <th>Salary</th>
 | 
						|
                                    <th>Status</th>
 | 
						|
                                    <th>Action</th>
 | 
						|
                                </tr>
 | 
						|
                            </thead>
 | 
						|
                        </table>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
            <div x-show="activeTab === 'pagos'">
 | 
						|
                <div class="card">
 | 
						|
                    <div class="card-datatable table-responsive pt-0">
 | 
						|
                        <table class="dt-pagos table">
 | 
						|
                            <thead>
 | 
						|
                                <tr>
 | 
						|
                                    <th></th>
 | 
						|
                                    <th>id</th>
 | 
						|
                                    <th>Name</th>
 | 
						|
                                    <th>Email</th>
 | 
						|
                                    <th>Date</th>
 | 
						|
                                    <th>Salary</th>
 | 
						|
                                    <th>Status</th>
 | 
						|
                                    <th>Action</th>
 | 
						|
                                </tr>
 | 
						|
                            </thead>
 | 
						|
                        </table>
 | 
						|
                    </div>
 | 
						|
                </div>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
    </div>
 | 
						|
 | 
						|
</section>
 | 
						|
 | 
						|
@push('page-script')
 | 
						|
    <script>
 | 
						|
        const cuentaUsuarioSaveButton  = document.getElementById('cuentaUsuario-saveButton');
 | 
						|
        const cuentaUsuarioResetButton = document.getElementById('cuentaUsuario-resetButton');
 | 
						|
        const accesosSaveButton  = document.getElementById('accesos-saveButton');
 | 
						|
        const accesosResetButton = document.getElementById('accesos-resetButton');
 | 
						|
        const facturacionElectronicaSaveButton  = document.getElementById('facturacion-electronica-saveButton');
 | 
						|
        const facturacionElectronicaResetButton = document.getElementById('facturacion-electronica-resetButton');
 | 
						|
 | 
						|
        const btnDeleteImage = () => {
 | 
						|
            $("#user-image").prop('src', '');
 | 
						|
 | 
						|
            cuentaUsuarioSaveButton.disabled  = false;
 | 
						|
            cuentaUsuarioResetButton.disabled = false;
 | 
						|
 | 
						|
            @this.set('image', null, false);
 | 
						|
            @this.set('deleteUserImage', true, false);
 | 
						|
 | 
						|
            $('.btn-delete-image').remove();
 | 
						|
        }
 | 
						|
 | 
						|
        const initGeneralInfo = () => {
 | 
						|
            $("input[name=tipo_persona]")
 | 
						|
                .on("change", function () {
 | 
						|
                    configInputsGeneralInfo();
 | 
						|
                });
 | 
						|
 | 
						|
            $("#is_prospect")
 | 
						|
                .on('change', function(){
 | 
						|
                    if($("#is_prospect").is(':checked') && $("#is_customer").is(":checked")){
 | 
						|
                        @this.set('is_customer', false, false).then(() => {
 | 
						|
                            configInputsGeneralInfo();
 | 
						|
                        });
 | 
						|
 | 
						|
                    }else{
 | 
						|
                        configInputsGeneralInfo();
 | 
						|
                    }
 | 
						|
                });
 | 
						|
 | 
						|
            $("#is_customer")
 | 
						|
                .on('change', function(){
 | 
						|
                    if($("#is_prospect").is(':checked') && $("#is_customer").is(":checked")){
 | 
						|
                        @this.set('is_prospect', false, false).then(() => {
 | 
						|
                            configInputsGeneralInfo();
 | 
						|
                        });
 | 
						|
 | 
						|
                    }else{
 | 
						|
                        configInputsGeneralInfo();
 | 
						|
                    }
 | 
						|
                });
 | 
						|
 | 
						|
            $("#enable_credit")
 | 
						|
                .on('change', function(){
 | 
						|
                    configInputsGeneralInfo();
 | 
						|
                });
 | 
						|
 | 
						|
            $("#image")
 | 
						|
                .on('change', function(){
 | 
						|
                    @this.set('cuentaUsuarioAlert', null, false);
 | 
						|
                    @this.set('deleteUserImage', false, false);
 | 
						|
                });
 | 
						|
 | 
						|
            $('#cuentaUsuario-form :input')
 | 
						|
                .on('input', function(){
 | 
						|
                    cuentaUsuarioSaveButton.disabled  = false;
 | 
						|
                    cuentaUsuarioResetButton.disabled = false;
 | 
						|
 | 
						|
                    @this.set('cuentaUsuarioAlert', null, false).then(() => {
 | 
						|
                        $('.alert-cuenta-usuario').remove();
 | 
						|
                    });
 | 
						|
                });
 | 
						|
 | 
						|
            $('#cuentaUsuario-resetButton')
 | 
						|
                .on('click', function () {
 | 
						|
                    @this.reloadUserData();
 | 
						|
 | 
						|
                    cuentaUsuarioSaveButton.disabled  = true;
 | 
						|
                    cuentaUsuarioResetButton.disabled = true;
 | 
						|
                });
 | 
						|
 | 
						|
            $("#cuentaUsuario-form")
 | 
						|
                .validate({
 | 
						|
                    errorClass: 'error',
 | 
						|
                    highlight: function(element, errorClass, validClass) {
 | 
						|
                        // Agrega la clase de error a la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').addClass('has-error');
 | 
						|
                    },
 | 
						|
                    unhighlight: function(element, errorClass, validClass) {
 | 
						|
                        // Elimina la clase de error de la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').removeClass('has-error');
 | 
						|
                    },
 | 
						|
                    errorPlacement: function(error, element) {
 | 
						|
                        // Controla dónde se colocan los mensajes de error
 | 
						|
                        error.appendTo(element.closest('.fv-row').find('.error-message'));
 | 
						|
                    },
 | 
						|
                    rules: {
 | 
						|
                        name: {
 | 
						|
                            required: true,
 | 
						|
                            minlength: 3,
 | 
						|
                            maxlength: 255,
 | 
						|
                            normalizer: function(value) {
 | 
						|
                                return $.trim(value); // Aplicar trim antes de validar
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        cargo: {
 | 
						|
                            minlength: 3,
 | 
						|
                            maxlength: 255,
 | 
						|
                            normalizer: function(value) {
 | 
						|
                                return $.trim(value); // Aplicar trim antes de validar
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    messages: {
 | 
						|
                        name: {
 | 
						|
                            required: "Por favor ingrese el nombre del contacto",
 | 
						|
                        },
 | 
						|
                    },
 | 
						|
                    submitHandler: function(form, event) {
 | 
						|
                        event.preventDefault();
 | 
						|
 | 
						|
                        @this.call('saveCuentaUsuario').then(() => {
 | 
						|
                            initAllForms();
 | 
						|
 | 
						|
                            const cuentaUsuarioSaveButton = document.getElementById('cuentaUsuario-saveButton');
 | 
						|
                            const cuentaUsuarioResetButton = document.getElementById('cuentaUsuario-resetButton');
 | 
						|
 | 
						|
                            cuentaUsuarioSaveButton.disabled  = true;
 | 
						|
                            cuentaUsuarioResetButton.disabled = true;
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                });
 | 
						|
        };
 | 
						|
 | 
						|
        const configInputsGeneralInfo = () => {
 | 
						|
            let is_prospect = $("#is_prospect").is(":checked"),
 | 
						|
                is_customer = $("#is_customer").is(":checked"),
 | 
						|
                enable_credit = $("#enable_credit").is(":checked"),
 | 
						|
                tipo_persona = Number($("input[name=tipo_persona]:checked").val());
 | 
						|
 | 
						|
            // Persona física
 | 
						|
            if(tipo_persona == 1){
 | 
						|
                $(".cargo-div").show();
 | 
						|
 | 
						|
            }else{
 | 
						|
                $(".cargo-div").hide();
 | 
						|
            }
 | 
						|
 | 
						|
            // Persona moral
 | 
						|
            if(tipo_persona == 2){
 | 
						|
                $(".input-group-name i.ti-building-skyscraper").show();
 | 
						|
                $(".input-group-name i.ti-user").hide();
 | 
						|
 | 
						|
            }else{
 | 
						|
                $(".input-group-name i.ti-building-skyscraper").hide();
 | 
						|
                $(".input-group-name i.ti-user").show();
 | 
						|
            }
 | 
						|
 | 
						|
            // Publico en general
 | 
						|
            if(tipo_persona == 9){
 | 
						|
                @this.set('is_prospect', false, false);
 | 
						|
                @this.set('is_customer', true, false);
 | 
						|
                @this.set('is_provider', false, false);
 | 
						|
                @this.set('is_user', false, false);
 | 
						|
                @this.set('enable_credit', false, false);
 | 
						|
 | 
						|
                $("#is_prospect").prop("disabled", true);
 | 
						|
                $("#is_provider").prop("disabled", true);
 | 
						|
                $("#is_user").prop("disabled", true);
 | 
						|
            }else{
 | 
						|
                $("#is_prospect").prop("disabled", false);
 | 
						|
                $("#is_provider").prop("disabled", false);
 | 
						|
                $("#is_user").prop("disabled", false);
 | 
						|
            }
 | 
						|
 | 
						|
            if (is_prospect || is_customer) {
 | 
						|
                $('.pricelist-div').show();
 | 
						|
 | 
						|
            }else{
 | 
						|
                $('.pricelist-div').hide();
 | 
						|
            }
 | 
						|
 | 
						|
            if (is_customer && tipo_persona != 9) {
 | 
						|
                $('.credit-div').show();
 | 
						|
 | 
						|
                if (enable_credit)
 | 
						|
                    $('.credit-limit-div').show();
 | 
						|
 | 
						|
                else
 | 
						|
                    $('.credit-limit-div').hide();
 | 
						|
            }else{
 | 
						|
                $('.credit-div').hide();
 | 
						|
                $('.credit-limit-div').hide();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        const initAccesses = () => {
 | 
						|
            $('#accesos-form :input')
 | 
						|
                .on('input', function(){
 | 
						|
                    accesosSaveButton.disabled  = false;
 | 
						|
                    accesosResetButton.disabled = false;
 | 
						|
 | 
						|
                    @this.set('accesosAlert', null, false).then(() => {
 | 
						|
                        $('.alert-accesos').remove();
 | 
						|
                    });
 | 
						|
                });
 | 
						|
 | 
						|
            $('#accesos-resetButton')
 | 
						|
                .on('click', function () {
 | 
						|
                    @this.reloadUserData();
 | 
						|
 | 
						|
                    accesosSaveButton.disabled  = true;
 | 
						|
                    accesosResetButton.disabled = true;
 | 
						|
                });
 | 
						|
 | 
						|
            $("#accesos-form")
 | 
						|
                .validate({
 | 
						|
                    errorClass: 'error',
 | 
						|
                    highlight: function(element, errorClass, validClass) {
 | 
						|
                        // Agrega la clase de error a la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').addClass('has-error');
 | 
						|
                    },
 | 
						|
                    unhighlight: function(element, errorClass, validClass) {
 | 
						|
                        // Elimina la clase de error de la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').removeClass('has-error');
 | 
						|
                    },
 | 
						|
                    errorPlacement: function(error, element) {
 | 
						|
                        // Controla dónde se colocan los mensajes de error
 | 
						|
                        error.appendTo(element.closest('.fv-row').find('.error-message'));
 | 
						|
                    },
 | 
						|
                    rules: {
 | 
						|
                        email: {
 | 
						|
                            required: true,
 | 
						|
                            email: true,
 | 
						|
                        },
 | 
						|
                        password: {
 | 
						|
                            minlength: 5,
 | 
						|
                            maxlength: 32,
 | 
						|
                        },
 | 
						|
                        password_confirmation: {
 | 
						|
                            equalTo: "#password" // Valida que coincida con el campo 'password'
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    messages: {
 | 
						|
                        email: {
 | 
						|
                            required: "El correo electrónico es obligatorio.",
 | 
						|
                            email: "Debes ingresar un correo electrónico válido.",
 | 
						|
                        },
 | 
						|
                        password: {
 | 
						|
                            minlength: "La contraseña debe tener al menos 5 caracteres.",
 | 
						|
                            maxlength: "La contraseña no puede tener más de 32 caracteres."
 | 
						|
                        },
 | 
						|
                        password_confirmation: {
 | 
						|
                            equalTo: "Las contraseñas no coinciden."
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    submitHandler: function(form, event) {
 | 
						|
                        event.preventDefault();
 | 
						|
 | 
						|
                        @this.call('saveAccesos').then(() => {
 | 
						|
                            initAllForms();
 | 
						|
 | 
						|
                            const accesosSaveButton = document.getElementById('accesos-saveButton');
 | 
						|
                            const accesosResetButton = document.getElementById('accesos-resetButton');
 | 
						|
 | 
						|
                            accesosSaveButton.disabled  = true;
 | 
						|
                            accesosResetButton.disabled = true;
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                });
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        const initFiscalInfo = () => {
 | 
						|
            $('#facturacion-electronica-form :input')
 | 
						|
                .on('input', function(){
 | 
						|
                    facturacionElectronicaSaveButton.disabled  = false;
 | 
						|
                    facturacionElectronicaResetButton.disabled = false;
 | 
						|
 | 
						|
                    @this.set('facturacionElectronicaAlert', null, false).then(() => {
 | 
						|
                        $('.alert-facturacion-electronica').remove();
 | 
						|
                    });
 | 
						|
                });
 | 
						|
 | 
						|
            $('#facturacion-electronica-resetButton')
 | 
						|
                .on('click', function () {
 | 
						|
                    @this.reloadUserData();
 | 
						|
 | 
						|
                    facturacionElectronicaSaveButton.disabled  = true;
 | 
						|
                    facturacionElectronicaResetButton.disabled = true;
 | 
						|
                });
 | 
						|
 | 
						|
            $("#facturacion-electronica-form")
 | 
						|
                .validate({
 | 
						|
                    errorClass: 'error',
 | 
						|
                    highlight: function(element, errorClass, validClass) {
 | 
						|
                        // Agrega la clase de error a la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').addClass('has-error');
 | 
						|
                    },
 | 
						|
                    unhighlight: function(element, errorClass, validClass) {
 | 
						|
                        // Elimina la clase de error de la fila (contenedor del campo)
 | 
						|
                        $(element).closest('.fv-row').removeClass('has-error');
 | 
						|
                    },
 | 
						|
                    errorPlacement: function(error, element) {
 | 
						|
                        // Controla dónde se colocan los mensajes de error
 | 
						|
                        error.appendTo(element.closest('.fv-row').find('.error-message'));
 | 
						|
                    },
 | 
						|
                    rules: {
 | 
						|
                        rfc: {
 | 
						|
                            maxlength: 13,
 | 
						|
                            pattern: /^[A-Z&Ñ]{3,4}\d{6}[A-Z\d]{3}$/, // Expresión regular para RFC
 | 
						|
                            normalizer: function(value) {
 | 
						|
                                return $.trim(value);
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        domicilio_fiscal: {
 | 
						|
                            digits: true, // Solo permite números
 | 
						|
                            minlength: 5,
 | 
						|
                            maxlength: 5, // Debe ser exactamente de 5 dígitos
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    messages: {
 | 
						|
                        rfc: {
 | 
						|
                            maxlength: "El RFC no debe exceder los 13 caracteres.",
 | 
						|
                            pattern: "El RFC ingresado no es válido. Verifica el formato.",
 | 
						|
                        },
 | 
						|
                        domicilio_fiscal: {
 | 
						|
                            digits: "El código postal solo debe contener números.",
 | 
						|
                            minlength: "El código postal debe tener 5 dígitos.",
 | 
						|
                            maxlength: "El código postal debe tener 5 dígitos."
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    submitHandler: function(form, event) {
 | 
						|
                        event.preventDefault();
 | 
						|
 | 
						|
                        @this.call('saveFacturacionElectronica').then(() => {
 | 
						|
                            initAllForms();
 | 
						|
 | 
						|
                            const facturacionElectronicaSaveButton = document.getElementById('facturacion-electronica-saveButton');
 | 
						|
                            const facturacionElectronicaResetButton = document.getElementById('facturacion-electronica-resetButton');
 | 
						|
 | 
						|
                            facturacionElectronicaSaveButton.disabled  = true;
 | 
						|
                            facturacionElectronicaResetButton.disabled = true;
 | 
						|
                        });
 | 
						|
                    }
 | 
						|
                });
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        const initAllForms = () => {
 | 
						|
            initGeneralInfo();
 | 
						|
            initAccesses();
 | 
						|
            initFiscalInfo();
 | 
						|
            configInputsGeneralInfo();
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        // Almacena un indicador para saber si las tablas ya han sido inicializadas
 | 
						|
        let tablesInitialized = {
 | 
						|
            'cotizaciones': false,
 | 
						|
            'pago-pendiente': false,
 | 
						|
            'pendientes-entrega': false,
 | 
						|
            'procesados': false,
 | 
						|
            'pagos': false
 | 
						|
        };
 | 
						|
 | 
						|
        // Función para cargar una tabla específica si aún no ha sido inicializada
 | 
						|
        function loadTable(tabName) {
 | 
						|
            if (!tablesInitialized[tabName]) {
 | 
						|
                switch (tabName) {
 | 
						|
                    case 'cotizaciones':
 | 
						|
                        initializeCotizacionesTable();
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case 'pago-pendiente':
 | 
						|
                        initializePagoPendienteTable();
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case 'pendientes-entrega':
 | 
						|
                        initializePendientesEntregaTable();
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case 'procesados':
 | 
						|
                        initializeProcesadosTable();
 | 
						|
                        break;
 | 
						|
 | 
						|
                    case 'pagos':
 | 
						|
                        initializePagosTable();
 | 
						|
                        break;
 | 
						|
                }
 | 
						|
                tablesInitialized[tabName] = true;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        function initializeCotizacionesTable() {
 | 
						|
            var dt_cotizaciones_table = $('.dt-cotizaciones');
 | 
						|
 | 
						|
            if (dt_cotizaciones_table.length) {
 | 
						|
                dt_cotizaciones = dt_cotizaciones_table.DataTable({
 | 
						|
                    ajax: assetsPath + 'json/table-datatable.json',
 | 
						|
                    columns: [
 | 
						|
                        { data: '' },
 | 
						|
                        { data: 'id' },
 | 
						|
                        { data: 'full_name' },
 | 
						|
                        { data: 'email' },
 | 
						|
                        { data: 'start_date' },
 | 
						|
                        { data: 'salary' },
 | 
						|
                        { data: 'status' },
 | 
						|
                        { data: '' }
 | 
						|
                    ],
 | 
						|
                    columnDefs: [
 | 
						|
                        {
 | 
						|
                            // For Responsive
 | 
						|
                            className: 'control',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            responsivePriority: 2,
 | 
						|
                            targets: 0,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return '';
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            targets: 1,
 | 
						|
                            searchable: false,
 | 
						|
                            visible: false
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Avatar image/badge, Name and post
 | 
						|
                            targets: 2,
 | 
						|
                            responsivePriority: 4,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $user_img = full['avatar'],
 | 
						|
                                $name = full['full_name'],
 | 
						|
                                $post = full['post'];
 | 
						|
                                if ($user_img) {
 | 
						|
                                // For Avatar image
 | 
						|
                                var $output =
 | 
						|
                                    '<img src="' + assetsPath + 'img/avatars/' + $user_img + '" alt="Avatar" class="rounded-circle">';
 | 
						|
                                } else {
 | 
						|
                                // For Avatar badge
 | 
						|
                                var stateNum = Math.floor(Math.random() * 6);
 | 
						|
                                var states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary'];
 | 
						|
                                var $state = states[stateNum],
 | 
						|
                                    $name = full['full_name'],
 | 
						|
                                    $initials = $name.match(/\b\w/g) || [];
 | 
						|
                                $initials = (($initials.shift() || '') + ($initials.pop() || '')).toUpperCase();
 | 
						|
                                $output = '<span class="avatar-initial rounded-circle bg-label-' + $state + '">' + $initials + '</span>';
 | 
						|
                                }
 | 
						|
                                // Creates full output for row
 | 
						|
                                var $row_output =
 | 
						|
                                '<div class="d-flex justify-content-start align-items-center user-name">' +
 | 
						|
                                '<div class="avatar-wrapper">' +
 | 
						|
                                '<div class="avatar me-2">' +
 | 
						|
                                $output +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '<div class="d-flex flex-column">' +
 | 
						|
                                '<span class="emp_name text-truncate">' +
 | 
						|
                                $name +
 | 
						|
                                '</span>' +
 | 
						|
                                '<small class="emp_post text-truncate text-muted">' +
 | 
						|
                                $post +
 | 
						|
                                '</small>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>';
 | 
						|
                                return $row_output;
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            responsivePriority: 1,
 | 
						|
                            targets: 3
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Label
 | 
						|
                            targets: -2,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $status_number = full['status'];
 | 
						|
                                var $status = {
 | 
						|
                                1: { title: 'Current', class: 'bg-label-primary' },
 | 
						|
                                2: { title: 'Professional', class: ' bg-label-success' },
 | 
						|
                                3: { title: 'Rejected', class: ' bg-label-danger' },
 | 
						|
                                4: { title: 'Resigned', class: ' bg-label-warning' },
 | 
						|
                                5: { title: 'Applied', class: ' bg-label-info' }
 | 
						|
                                };
 | 
						|
                                if (typeof $status[$status_number] === 'undefined') {
 | 
						|
                                return data;
 | 
						|
                                }
 | 
						|
                                return (
 | 
						|
                                '<span class="badge ' + $status[$status_number].class + '">' + $status[$status_number].title + '</span>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Actions
 | 
						|
                            targets: -1,
 | 
						|
                            title: 'Actions',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return (
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-view"><i class="ti ti-eye ti-md"></i></a>' +
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-edit"><i class="ti ti-pencil ti-md"></i></a>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    ],
 | 
						|
                    order: [[2, 'desc']],
 | 
						|
                    displayLength: 5,
 | 
						|
                    lengthMenu: [5, 10, 25, 50, 75, 100],
 | 
						|
                    language: $.fn.dataTable.ext.datatable_spanish_default,
 | 
						|
                    responsive: {
 | 
						|
                        details: {
 | 
						|
                        display: $.fn.dataTable.Responsive.display.modal({
 | 
						|
                            header: function (row) {
 | 
						|
                            var data = row.data();
 | 
						|
                            return 'Details of ' + data['full_name'];
 | 
						|
                            }
 | 
						|
                        }),
 | 
						|
                        type: 'column',
 | 
						|
                        renderer: function (api, rowIdx, columns) {
 | 
						|
                            var data = $.map(columns, function (col, i) {
 | 
						|
                            return col.title !== '' // ? Do not show row in modal popup if title is blank (for check box)
 | 
						|
                                ? '<tr data-dt-row="' +
 | 
						|
                                    col.rowIndex +
 | 
						|
                                    '" data-dt-column="' +
 | 
						|
                                    col.columnIndex +
 | 
						|
                                    '">' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.title +
 | 
						|
                                    ':' +
 | 
						|
                                    '</td> ' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.data +
 | 
						|
                                    '</td>' +
 | 
						|
                                    '</tr>'
 | 
						|
                                : '';
 | 
						|
                            }).join('');
 | 
						|
 | 
						|
                            return data ? $('<table class="table"/><tbody />').append(data) : false;
 | 
						|
                        }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    /*
 | 
						|
                    initComplete: function (settings, json) {
 | 
						|
                        $('.card-header').after('<hr class="my-0">');
 | 
						|
                    }
 | 
						|
                    */
 | 
						|
                });
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        function initializePagoPendienteTable() {
 | 
						|
            var dt_pago_pendiente_table = $('.dt-pago-pendiente');
 | 
						|
 | 
						|
            if (dt_pago_pendiente_table.length) {
 | 
						|
                dt_pago_pendiente = dt_pago_pendiente_table.DataTable({
 | 
						|
                    ajax: assetsPath + 'json/table-datatable.json',
 | 
						|
                    columns: [
 | 
						|
                        { data: '' },
 | 
						|
                        { data: 'id' },
 | 
						|
                        { data: 'full_name' },
 | 
						|
                        { data: 'email' },
 | 
						|
                        { data: 'start_date' },
 | 
						|
                        { data: 'salary' },
 | 
						|
                        { data: 'status' },
 | 
						|
                        { data: '' }
 | 
						|
                    ],
 | 
						|
                    columnDefs: [
 | 
						|
                        {
 | 
						|
                            // For Responsive
 | 
						|
                            className: 'control',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            responsivePriority: 2,
 | 
						|
                            targets: 0,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return '';
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            targets: 1,
 | 
						|
                            searchable: false,
 | 
						|
                            visible: false
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Avatar image/badge, Name and post
 | 
						|
                            targets: 2,
 | 
						|
                            responsivePriority: 4,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $user_img = full['avatar'],
 | 
						|
                                $name = full['full_name'],
 | 
						|
                                $post = full['post'];
 | 
						|
                                if ($user_img) {
 | 
						|
                                // For Avatar image
 | 
						|
                                var $output =
 | 
						|
                                    '<img src="' + assetsPath + 'img/avatars/' + $user_img + '" alt="Avatar" class="rounded-circle">';
 | 
						|
                                } else {
 | 
						|
                                // For Avatar badge
 | 
						|
                                var stateNum = Math.floor(Math.random() * 6);
 | 
						|
                                var states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary'];
 | 
						|
                                var $state = states[stateNum],
 | 
						|
                                    $name = full['full_name'],
 | 
						|
                                    $initials = $name.match(/\b\w/g) || [];
 | 
						|
                                $initials = (($initials.shift() || '') + ($initials.pop() || '')).toUpperCase();
 | 
						|
                                $output = '<span class="avatar-initial rounded-circle bg-label-' + $state + '">' + $initials + '</span>';
 | 
						|
                                }
 | 
						|
                                // Creates full output for row
 | 
						|
                                var $row_output =
 | 
						|
                                '<div class="d-flex justify-content-start align-items-center user-name">' +
 | 
						|
                                '<div class="avatar-wrapper">' +
 | 
						|
                                '<div class="avatar me-2">' +
 | 
						|
                                $output +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '<div class="d-flex flex-column">' +
 | 
						|
                                '<span class="emp_name text-truncate">' +
 | 
						|
                                $name +
 | 
						|
                                '</span>' +
 | 
						|
                                '<small class="emp_post text-truncate text-muted">' +
 | 
						|
                                $post +
 | 
						|
                                '</small>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>';
 | 
						|
                                return $row_output;
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            responsivePriority: 1,
 | 
						|
                            targets: 3
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Label
 | 
						|
                            targets: -2,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $status_number = full['status'];
 | 
						|
                                var $status = {
 | 
						|
                                1: { title: 'Current', class: 'bg-label-primary' },
 | 
						|
                                2: { title: 'Professional', class: ' bg-label-success' },
 | 
						|
                                3: { title: 'Rejected', class: ' bg-label-danger' },
 | 
						|
                                4: { title: 'Resigned', class: ' bg-label-warning' },
 | 
						|
                                5: { title: 'Applied', class: ' bg-label-info' }
 | 
						|
                                };
 | 
						|
                                if (typeof $status[$status_number] === 'undefined') {
 | 
						|
                                return data;
 | 
						|
                                }
 | 
						|
                                return (
 | 
						|
                                '<span class="badge ' + $status[$status_number].class + '">' + $status[$status_number].title + '</span>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Actions
 | 
						|
                            targets: -1,
 | 
						|
                            title: 'Actions',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return (
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-view"><i class="ti ti-eye ti-md"></i></a>' +
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-edit"><i class="ti ti-pencil ti-md"></i></a>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    ],
 | 
						|
                    order: [[2, 'desc']],
 | 
						|
                    displayLength: 5,
 | 
						|
                    lengthMenu: [5, 10, 25, 50, 75, 100],
 | 
						|
                    language: $.fn.dataTable.ext.datatable_spanish_default,
 | 
						|
                    responsive: {
 | 
						|
                        details: {
 | 
						|
                        display: $.fn.dataTable.Responsive.display.modal({
 | 
						|
                            header: function (row) {
 | 
						|
                            var data = row.data();
 | 
						|
                            return 'Details of ' + data['full_name'];
 | 
						|
                            }
 | 
						|
                        }),
 | 
						|
                        type: 'column',
 | 
						|
                        renderer: function (api, rowIdx, columns) {
 | 
						|
                            var data = $.map(columns, function (col, i) {
 | 
						|
                            return col.title !== '' // ? Do not show row in modal popup if title is blank (for check box)
 | 
						|
                                ? '<tr data-dt-row="' +
 | 
						|
                                    col.rowIndex +
 | 
						|
                                    '" data-dt-column="' +
 | 
						|
                                    col.columnIndex +
 | 
						|
                                    '">' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.title +
 | 
						|
                                    ':' +
 | 
						|
                                    '</td> ' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.data +
 | 
						|
                                    '</td>' +
 | 
						|
                                    '</tr>'
 | 
						|
                                : '';
 | 
						|
                            }).join('');
 | 
						|
 | 
						|
                            return data ? $('<table class="table"/><tbody />').append(data) : false;
 | 
						|
                        }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    /*
 | 
						|
                    initComplete: function (settings, json) {
 | 
						|
                        $('.card-header').after('<hr class="my-0">');
 | 
						|
                    }
 | 
						|
                    */
 | 
						|
                });
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        function initializePendientesEntregaTable() {
 | 
						|
            var dt_pendientes_entrega_table = $('.dt-pendientes-entrega');
 | 
						|
 | 
						|
            if (dt_pendientes_entrega_table.length) {
 | 
						|
                dt_pendientes_entrega = dt_pendientes_entrega_table.DataTable({
 | 
						|
                    ajax: assetsPath + 'json/table-datatable.json',
 | 
						|
                    columns: [
 | 
						|
                        { data: '' },
 | 
						|
                        { data: 'id' },
 | 
						|
                        { data: 'full_name' },
 | 
						|
                        { data: 'email' },
 | 
						|
                        { data: 'start_date' },
 | 
						|
                        { data: 'salary' },
 | 
						|
                        { data: 'status' },
 | 
						|
                        { data: '' }
 | 
						|
                    ],
 | 
						|
                    columnDefs: [
 | 
						|
                        {
 | 
						|
                            // For Responsive
 | 
						|
                            className: 'control',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            responsivePriority: 2,
 | 
						|
                            targets: 0,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return '';
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            targets: 1,
 | 
						|
                            searchable: false,
 | 
						|
                            visible: false
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Avatar image/badge, Name and post
 | 
						|
                            targets: 2,
 | 
						|
                            responsivePriority: 4,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $user_img = full['avatar'],
 | 
						|
                                $name = full['full_name'],
 | 
						|
                                $post = full['post'];
 | 
						|
                                if ($user_img) {
 | 
						|
                                // For Avatar image
 | 
						|
                                var $output =
 | 
						|
                                    '<img src="' + assetsPath + 'img/avatars/' + $user_img + '" alt="Avatar" class="rounded-circle">';
 | 
						|
                                } else {
 | 
						|
                                // For Avatar badge
 | 
						|
                                var stateNum = Math.floor(Math.random() * 6);
 | 
						|
                                var states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary'];
 | 
						|
                                var $state = states[stateNum],
 | 
						|
                                    $name = full['full_name'],
 | 
						|
                                    $initials = $name.match(/\b\w/g) || [];
 | 
						|
                                $initials = (($initials.shift() || '') + ($initials.pop() || '')).toUpperCase();
 | 
						|
                                $output = '<span class="avatar-initial rounded-circle bg-label-' + $state + '">' + $initials + '</span>';
 | 
						|
                                }
 | 
						|
                                // Creates full output for row
 | 
						|
                                var $row_output =
 | 
						|
                                '<div class="d-flex justify-content-start align-items-center user-name">' +
 | 
						|
                                '<div class="avatar-wrapper">' +
 | 
						|
                                '<div class="avatar me-2">' +
 | 
						|
                                $output +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '<div class="d-flex flex-column">' +
 | 
						|
                                '<span class="emp_name text-truncate">' +
 | 
						|
                                $name +
 | 
						|
                                '</span>' +
 | 
						|
                                '<small class="emp_post text-truncate text-muted">' +
 | 
						|
                                $post +
 | 
						|
                                '</small>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>';
 | 
						|
                                return $row_output;
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            responsivePriority: 1,
 | 
						|
                            targets: 3
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Label
 | 
						|
                            targets: -2,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $status_number = full['status'];
 | 
						|
                                var $status = {
 | 
						|
                                1: { title: 'Current', class: 'bg-label-primary' },
 | 
						|
                                2: { title: 'Professional', class: ' bg-label-success' },
 | 
						|
                                3: { title: 'Rejected', class: ' bg-label-danger' },
 | 
						|
                                4: { title: 'Resigned', class: ' bg-label-warning' },
 | 
						|
                                5: { title: 'Applied', class: ' bg-label-info' }
 | 
						|
                                };
 | 
						|
                                if (typeof $status[$status_number] === 'undefined') {
 | 
						|
                                return data;
 | 
						|
                                }
 | 
						|
                                return (
 | 
						|
                                '<span class="badge ' + $status[$status_number].class + '">' + $status[$status_number].title + '</span>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Actions
 | 
						|
                            targets: -1,
 | 
						|
                            title: 'Actions',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return (
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-view"><i class="ti ti-eye ti-md"></i></a>' +
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-edit"><i class="ti ti-pencil ti-md"></i></a>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    ],
 | 
						|
                    order: [[2, 'desc']],
 | 
						|
                    displayLength: 5,
 | 
						|
                    lengthMenu: [5, 10, 25, 50, 75, 100],
 | 
						|
                    language: $.fn.dataTable.ext.datatable_spanish_default,
 | 
						|
                    responsive: {
 | 
						|
                        details: {
 | 
						|
                        display: $.fn.dataTable.Responsive.display.modal({
 | 
						|
                            header: function (row) {
 | 
						|
                            var data = row.data();
 | 
						|
                            return 'Details of ' + data['full_name'];
 | 
						|
                            }
 | 
						|
                        }),
 | 
						|
                        type: 'column',
 | 
						|
                        renderer: function (api, rowIdx, columns) {
 | 
						|
                            var data = $.map(columns, function (col, i) {
 | 
						|
                            return col.title !== '' // ? Do not show row in modal popup if title is blank (for check box)
 | 
						|
                                ? '<tr data-dt-row="' +
 | 
						|
                                    col.rowIndex +
 | 
						|
                                    '" data-dt-column="' +
 | 
						|
                                    col.columnIndex +
 | 
						|
                                    '">' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.title +
 | 
						|
                                    ':' +
 | 
						|
                                    '</td> ' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.data +
 | 
						|
                                    '</td>' +
 | 
						|
                                    '</tr>'
 | 
						|
                                : '';
 | 
						|
                            }).join('');
 | 
						|
 | 
						|
                            return data ? $('<table class="table"/><tbody />').append(data) : false;
 | 
						|
                        }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    /*
 | 
						|
                    initComplete: function (settings, json) {
 | 
						|
                        $('.card-header').after('<hr class="my-0">');
 | 
						|
                    }
 | 
						|
                    */
 | 
						|
                });
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        function initializeProcesadosTable() {
 | 
						|
            var dt_procesados_table = $('.dt-procesados');
 | 
						|
 | 
						|
            if (dt_procesados_table.length) {
 | 
						|
                dt_procesados = dt_procesados_table.DataTable({
 | 
						|
                    ajax: assetsPath + 'json/table-datatable.json',
 | 
						|
                    columns: [
 | 
						|
                        { data: '' },
 | 
						|
                        { data: 'id' },
 | 
						|
                        { data: 'full_name' },
 | 
						|
                        { data: 'email' },
 | 
						|
                        { data: 'start_date' },
 | 
						|
                        { data: 'salary' },
 | 
						|
                        { data: 'status' },
 | 
						|
                        { data: '' }
 | 
						|
                    ],
 | 
						|
                    columnDefs: [
 | 
						|
                        {
 | 
						|
                            // For Responsive
 | 
						|
                            className: 'control',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            responsivePriority: 2,
 | 
						|
                            targets: 0,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return '';
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            targets: 1,
 | 
						|
                            searchable: false,
 | 
						|
                            visible: false
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Avatar image/badge, Name and post
 | 
						|
                            targets: 2,
 | 
						|
                            responsivePriority: 4,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $user_img = full['avatar'],
 | 
						|
                                $name = full['full_name'],
 | 
						|
                                $post = full['post'];
 | 
						|
                                if ($user_img) {
 | 
						|
                                // For Avatar image
 | 
						|
                                var $output =
 | 
						|
                                    '<img src="' + assetsPath + 'img/avatars/' + $user_img + '" alt="Avatar" class="rounded-circle">';
 | 
						|
                                } else {
 | 
						|
                                // For Avatar badge
 | 
						|
                                var stateNum = Math.floor(Math.random() * 6);
 | 
						|
                                var states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary'];
 | 
						|
                                var $state = states[stateNum],
 | 
						|
                                    $name = full['full_name'],
 | 
						|
                                    $initials = $name.match(/\b\w/g) || [];
 | 
						|
                                $initials = (($initials.shift() || '') + ($initials.pop() || '')).toUpperCase();
 | 
						|
                                $output = '<span class="avatar-initial rounded-circle bg-label-' + $state + '">' + $initials + '</span>';
 | 
						|
                                }
 | 
						|
                                // Creates full output for row
 | 
						|
                                var $row_output =
 | 
						|
                                '<div class="d-flex justify-content-start align-items-center user-name">' +
 | 
						|
                                '<div class="avatar-wrapper">' +
 | 
						|
                                '<div class="avatar me-2">' +
 | 
						|
                                $output +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '<div class="d-flex flex-column">' +
 | 
						|
                                '<span class="emp_name text-truncate">' +
 | 
						|
                                $name +
 | 
						|
                                '</span>' +
 | 
						|
                                '<small class="emp_post text-truncate text-muted">' +
 | 
						|
                                $post +
 | 
						|
                                '</small>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>';
 | 
						|
                                return $row_output;
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            responsivePriority: 1,
 | 
						|
                            targets: 3
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Label
 | 
						|
                            targets: -2,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $status_number = full['status'];
 | 
						|
                                var $status = {
 | 
						|
                                1: { title: 'Current', class: 'bg-label-primary' },
 | 
						|
                                2: { title: 'Professional', class: ' bg-label-success' },
 | 
						|
                                3: { title: 'Rejected', class: ' bg-label-danger' },
 | 
						|
                                4: { title: 'Resigned', class: ' bg-label-warning' },
 | 
						|
                                5: { title: 'Applied', class: ' bg-label-info' }
 | 
						|
                                };
 | 
						|
                                if (typeof $status[$status_number] === 'undefined') {
 | 
						|
                                return data;
 | 
						|
                                }
 | 
						|
                                return (
 | 
						|
                                '<span class="badge ' + $status[$status_number].class + '">' + $status[$status_number].title + '</span>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Actions
 | 
						|
                            targets: -1,
 | 
						|
                            title: 'Actions',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return (
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-view"><i class="ti ti-eye ti-md"></i></a>' +
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-edit"><i class="ti ti-pencil ti-md"></i></a>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    ],
 | 
						|
                    order: [[2, 'desc']],
 | 
						|
                    displayLength: 5,
 | 
						|
                    lengthMenu: [5, 10, 25, 50, 75, 100],
 | 
						|
                    language: $.fn.dataTable.ext.datatable_spanish_default,
 | 
						|
                    responsive: {
 | 
						|
                        details: {
 | 
						|
                        display: $.fn.dataTable.Responsive.display.modal({
 | 
						|
                            header: function (row) {
 | 
						|
                            var data = row.data();
 | 
						|
                            return 'Details of ' + data['full_name'];
 | 
						|
                            }
 | 
						|
                        }),
 | 
						|
                        type: 'column',
 | 
						|
                        renderer: function (api, rowIdx, columns) {
 | 
						|
                            var data = $.map(columns, function (col, i) {
 | 
						|
                            return col.title !== '' // ? Do not show row in modal popup if title is blank (for check box)
 | 
						|
                                ? '<tr data-dt-row="' +
 | 
						|
                                    col.rowIndex +
 | 
						|
                                    '" data-dt-column="' +
 | 
						|
                                    col.columnIndex +
 | 
						|
                                    '">' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.title +
 | 
						|
                                    ':' +
 | 
						|
                                    '</td> ' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.data +
 | 
						|
                                    '</td>' +
 | 
						|
                                    '</tr>'
 | 
						|
                                : '';
 | 
						|
                            }).join('');
 | 
						|
 | 
						|
                            return data ? $('<table class="table"/><tbody />').append(data) : false;
 | 
						|
                        }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    /*
 | 
						|
                    initComplete: function (settings, json) {
 | 
						|
                        $('.card-header').after('<hr class="my-0">');
 | 
						|
                    }
 | 
						|
                    */
 | 
						|
                });
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        function initializePagosTable() {
 | 
						|
            var dt_pagos_table = $('.dt-pagos');
 | 
						|
 | 
						|
            if (dt_pagos_table.length) {
 | 
						|
                dt_pagos = dt_pagos_table.DataTable({
 | 
						|
                    ajax: assetsPath + 'json/table-datatable.json',
 | 
						|
                    columns: [
 | 
						|
                        { data: '' },
 | 
						|
                        { data: 'id' },
 | 
						|
                        { data: 'full_name' },
 | 
						|
                        { data: 'email' },
 | 
						|
                        { data: 'start_date' },
 | 
						|
                        { data: 'salary' },
 | 
						|
                        { data: 'status' },
 | 
						|
                        { data: '' }
 | 
						|
                    ],
 | 
						|
                    columnDefs: [
 | 
						|
                        {
 | 
						|
                            // For Responsive
 | 
						|
                            className: 'control',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            responsivePriority: 2,
 | 
						|
                            targets: 0,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return '';
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            targets: 1,
 | 
						|
                            searchable: false,
 | 
						|
                            visible: false
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Avatar image/badge, Name and post
 | 
						|
                            targets: 2,
 | 
						|
                            responsivePriority: 4,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $user_img = full['avatar'],
 | 
						|
                                $name = full['full_name'],
 | 
						|
                                $post = full['post'];
 | 
						|
                                if ($user_img) {
 | 
						|
                                // For Avatar image
 | 
						|
                                var $output =
 | 
						|
                                    '<img src="' + assetsPath + 'img/avatars/' + $user_img + '" alt="Avatar" class="rounded-circle">';
 | 
						|
                                } else {
 | 
						|
                                // For Avatar badge
 | 
						|
                                var stateNum = Math.floor(Math.random() * 6);
 | 
						|
                                var states = ['success', 'danger', 'warning', 'info', 'primary', 'secondary'];
 | 
						|
                                var $state = states[stateNum],
 | 
						|
                                    $name = full['full_name'],
 | 
						|
                                    $initials = $name.match(/\b\w/g) || [];
 | 
						|
                                $initials = (($initials.shift() || '') + ($initials.pop() || '')).toUpperCase();
 | 
						|
                                $output = '<span class="avatar-initial rounded-circle bg-label-' + $state + '">' + $initials + '</span>';
 | 
						|
                                }
 | 
						|
                                // Creates full output for row
 | 
						|
                                var $row_output =
 | 
						|
                                '<div class="d-flex justify-content-start align-items-center user-name">' +
 | 
						|
                                '<div class="avatar-wrapper">' +
 | 
						|
                                '<div class="avatar me-2">' +
 | 
						|
                                $output +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '<div class="d-flex flex-column">' +
 | 
						|
                                '<span class="emp_name text-truncate">' +
 | 
						|
                                $name +
 | 
						|
                                '</span>' +
 | 
						|
                                '<small class="emp_post text-truncate text-muted">' +
 | 
						|
                                $post +
 | 
						|
                                '</small>' +
 | 
						|
                                '</div>' +
 | 
						|
                                '</div>';
 | 
						|
                                return $row_output;
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            responsivePriority: 1,
 | 
						|
                            targets: 3
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Label
 | 
						|
                            targets: -2,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                var $status_number = full['status'];
 | 
						|
                                var $status = {
 | 
						|
                                1: { title: 'Current', class: 'bg-label-primary' },
 | 
						|
                                2: { title: 'Professional', class: ' bg-label-success' },
 | 
						|
                                3: { title: 'Rejected', class: ' bg-label-danger' },
 | 
						|
                                4: { title: 'Resigned', class: ' bg-label-warning' },
 | 
						|
                                5: { title: 'Applied', class: ' bg-label-info' }
 | 
						|
                                };
 | 
						|
                                if (typeof $status[$status_number] === 'undefined') {
 | 
						|
                                return data;
 | 
						|
                                }
 | 
						|
                                return (
 | 
						|
                                '<span class="badge ' + $status[$status_number].class + '">' + $status[$status_number].title + '</span>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        },
 | 
						|
                        {
 | 
						|
                            // Actions
 | 
						|
                            targets: -1,
 | 
						|
                            title: 'Actions',
 | 
						|
                            orderable: false,
 | 
						|
                            searchable: false,
 | 
						|
                            render: function (data, type, full, meta) {
 | 
						|
                                return (
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-view"><i class="ti ti-eye ti-md"></i></a>' +
 | 
						|
                                    '<a href="javascript:;" class="btn btn-sm btn-text-secondary rounded-pill btn-icon item-edit"><i class="ti ti-pencil ti-md"></i></a>'
 | 
						|
                                );
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    ],
 | 
						|
                    order: [[2, 'desc']],
 | 
						|
                    displayLength: 5,
 | 
						|
                    lengthMenu: [5, 10, 25, 50, 75, 100],
 | 
						|
                    language: $.fn.dataTable.ext.datatable_spanish_default,
 | 
						|
                    responsive: {
 | 
						|
                        details: {
 | 
						|
                        display: $.fn.dataTable.Responsive.display.modal({
 | 
						|
                            header: function (row) {
 | 
						|
                            var data = row.data();
 | 
						|
                            return 'Details of ' + data['full_name'];
 | 
						|
                            }
 | 
						|
                        }),
 | 
						|
                        type: 'column',
 | 
						|
                        renderer: function (api, rowIdx, columns) {
 | 
						|
                            var data = $.map(columns, function (col, i) {
 | 
						|
                            return col.title !== '' // ? Do not show row in modal popup if title is blank (for check box)
 | 
						|
                                ? '<tr data-dt-row="' +
 | 
						|
                                    col.rowIndex +
 | 
						|
                                    '" data-dt-column="' +
 | 
						|
                                    col.columnIndex +
 | 
						|
                                    '">' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.title +
 | 
						|
                                    ':' +
 | 
						|
                                    '</td> ' +
 | 
						|
                                    '<td>' +
 | 
						|
                                    col.data +
 | 
						|
                                    '</td>' +
 | 
						|
                                    '</tr>'
 | 
						|
                                : '';
 | 
						|
                            }).join('');
 | 
						|
 | 
						|
                            return data ? $('<table class="table"/><tbody />').append(data) : false;
 | 
						|
                        }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    /*
 | 
						|
                    initComplete: function (settings, json) {
 | 
						|
                        $('.card-header').after('<hr class="my-0">');
 | 
						|
                    }
 | 
						|
                    */
 | 
						|
                });
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        document.addEventListener('DOMContentLoaded', function() {
 | 
						|
            $(document).ready(function() {
 | 
						|
                $("#pdf-dropzone")
 | 
						|
                    .dropzone({
 | 
						|
                        url: '{{ route('admin.crm.contacts.extraer-datos-pdf-constancia') }}',
 | 
						|
                        paramName: "file",
 | 
						|
                        maxFiles: 1,
 | 
						|
                        acceptedFiles: '.pdf',
 | 
						|
                        headers: {
 | 
						|
                            'X-CSRF-TOKEN': '{{ csrf_token() }}'
 | 
						|
                        },
 | 
						|
                        success: function(file, response) {
 | 
						|
                            if($('#name').val().trim() == '')
 | 
						|
                                @this.set('name', response.nombre_fiscal, false);
 | 
						|
 | 
						|
                            @this.set('rfc', response.rfc, false);
 | 
						|
                            @this.set('nombre_fiscal', response.nombre_fiscal, false);
 | 
						|
 | 
						|
                            if(response.c_regimen_fiscal)
 | 
						|
                                @this.set('c_regimen_fiscal', response.c_regimen_fiscal, false);
 | 
						|
 | 
						|
                            @this.set('domicilio_fiscal', response.domicilio_fiscal, false);
 | 
						|
 | 
						|
                            facturacionElectronicaSaveButton.disabled  = false;
 | 
						|
                            facturacionElectronicaResetButton.disabled = false;
 | 
						|
 | 
						|
                            @this.set('facturacionElectronicaAlert', null, false).then(() => {
 | 
						|
                                $('.alert-facturacion-electronica').remove();
 | 
						|
                            });
 | 
						|
 | 
						|
                            $('.pdf-dropzone-div').slideUp(200);
 | 
						|
                        },
 | 
						|
                        error: function(file, response) {
 | 
						|
                            $('.pdf-dropzone-div .error-message').html('<label class="error">' + response + '</label>');
 | 
						|
 | 
						|
                            this.removeAllFiles(true);
 | 
						|
                        }
 | 
						|
                    });
 | 
						|
 | 
						|
                initAllForms();
 | 
						|
            });
 | 
						|
        });
 | 
						|
    </script>
 | 
						|
@endpush
 |