@extends('layouts.enterprise') @section('title', 'Clientes') @section('content')

Clientes

Administra clientes, datos fiscales, reglas de validación RC y la lógica de agrupación de vistas previas por tipo de RC.

@if(session('ok'))
{{ session('ok') }}
@endif @if($errors->any())
@endif @php $indexRoute = request()->routeIs('accountant.*') ? route('accountant.clients.index') : route('admin.clients.index'); $storeRoute = request()->routeIs('accountant.*') ? route('accountant.clients.store') : route('admin.clients.store'); $hasActiveFilters = (($filters['q'] ?? '') !== '') || (($filters['active'] ?? 'all') !== 'all'); $engineOptions = $groupingEngineOptions ?? []; $inboundDefaults = $groupingInboundDefaults ?? []; $ruleTypeOptions = $groupingRuleTypeOptions ?? []; $oldGroupingEngine = old('grouping_engine', \App\Support\ClientRequestGrouping::ENGINE_RC_RULES); $oldInboundConfig = old('grouping_engine_config', [ 'mx_project_number_regex' => $inboundDefaults['mx_project_number_regex'] ?? '^MX\\d{8}$', 'n6_project_number_regex' => $inboundDefaults['n6_project_number_regex'] ?? '^N6MX\\d{4}$', 'dummy_sponsor_values' => implode(', ', $inboundDefaults['dummy_sponsor_values'] ?? ['DUMMY']), 'require_same_currency' => $inboundDefaults['require_same_currency'] ?? true, ]); $oldRules = old('rc_grouping_rules', [['type' => 'prefix', 'value' => '']]); @endphp
Filtros @if($hasActiveFilters) Activos @endif
Limpiar Resultados: {{ $clients->total() }}

Alta de cliente

@csrf
Datos fiscales para Facturama: captura aquí Uso CFDI, Régimen fiscal receptor y CP fiscal receptor del cliente.

Validaciones

Activa reglas extra para la carga de información. Ojo: el RC solicitud (Pipefy) y el RC cliente por artículo son cosas distintas.

Validación RC por artículo Cliente activo

Agrupación RC

Aquí defines cómo se valida la agrupación. Puede ser con reglas RC estándar o con recibos inbound estilo CHUBB, según lo que necesite este cliente.

Cómo funciona: Si activas Validación RC por artículo, el RC cliente seguirá siendo obligatorio en la captura fiscal. Pero si eliges Recibos inbound (CHUBB), la compatibilidad de solicitudes se evaluará con el email inbound del RC, no con el RC cliente capturado por artículo.
Agrupable Cada cliente puede tener su propio motor de agrupación.
@forelse($clients as $client) @php $updateRoute = request()->routeIs('accountant.*') ? route('accountant.clients.update', $client) : route('admin.clients.update', $client); $clientRules = old('client_edit_id') == $client->id ? old('rc_grouping_rules', $client->rc_grouping_rules ?? [['type' => 'prefix', 'value' => '']]) : ($client->rc_grouping_rules ?? [['type' => 'prefix', 'value' => '']]); $clientGroupingEngine = old('client_edit_id') == $client->id ? old('grouping_engine', $client->grouping_engine ?: \App\Support\ClientRequestGrouping::ENGINE_RC_RULES) : ($client->grouping_engine ?: \App\Support\ClientRequestGrouping::ENGINE_RC_RULES); $clientInboundConfig = old('client_edit_id') == $client->id ? old('grouping_engine_config', [ 'mx_project_number_regex' => data_get($client->grouping_engine_config, 'mx_project_number_regex', $inboundDefaults['mx_project_number_regex'] ?? '^MX\\d{8}$'), 'n6_project_number_regex' => data_get($client->grouping_engine_config, 'n6_project_number_regex', $inboundDefaults['n6_project_number_regex'] ?? '^N6MX\\d{4}$'), 'dummy_sponsor_values' => implode(', ', data_get($client->grouping_engine_config, 'dummy_sponsor_values', $inboundDefaults['dummy_sponsor_values'] ?? ['DUMMY'])), 'require_same_currency' => data_get($client->grouping_engine_config, 'require_same_currency', $inboundDefaults['require_same_currency'] ?? true), ]) : [ 'mx_project_number_regex' => data_get($client->grouping_engine_config, 'mx_project_number_regex', $inboundDefaults['mx_project_number_regex'] ?? '^MX\\d{8}$'), 'n6_project_number_regex' => data_get($client->grouping_engine_config, 'n6_project_number_regex', $inboundDefaults['n6_project_number_regex'] ?? '^N6MX\\d{4}$'), 'dummy_sponsor_values' => implode(', ', data_get($client->grouping_engine_config, 'dummy_sponsor_values', $inboundDefaults['dummy_sponsor_values'] ?? ['DUMMY'])), 'require_same_currency' => data_get($client->grouping_engine_config, 'require_same_currency', $inboundDefaults['require_same_currency'] ?? true), ]; @endphp @empty @endforelse
ID Cliente RFC Email Teléfono Días pago Validación RC Agrupable Motor agrupación Configuración agrupación Movimientos Ingresos Egresos Vistas previas Estatus Acciones
{{ $client->id }} {{ $client->name }} {{ $client->rfc ?: '-' }} {{ $client->email ?: '-' }} {{ $client->phone ?: '-' }} {{ $client->payment_days !== null ? (int) $client->payment_days : '-' }} {{ $client->validation_rc ? 'Sí' : 'No' }} {{ $client->is_groupable ? 'Sí' : 'No' }} {{ $client->grouping_engine_label }}
{{ $client->grouping_rules_summary }}
{{ (int) $client->financial_movements_count }} ${{ number_format((float) ($client->incomes_sum ?? 0), 2) }} ${{ number_format((float) ($client->expenses_sum ?? 0), 2) }} {{ (int) $client->generated_invoices_count }} {{ $client->is_active ? 'Activo' : 'Inactivo' }} Editar
@csrf @method('PATCH')

Datos generales del cliente

Aquí puedes editar la información principal y fiscal del cliente antes de tocar las reglas de validación o agrupación.

Datos fiscales para Facturama: llena estos tres campos directamente en el perfil del cliente.

Validaciones

Activa reglas extra para la carga de información. El RC solicitud (Pipefy) y el RC cliente por artículo se manejan por separado.

id ? old('validation_rc', $client->validation_rc) : $client->validation_rc)> Validación RC por artículo id ? old('is_active', $client->is_active) : $client->is_active)> Cliente activo

Agrupación RC

Cómo funciona: Si eliges Recibos inbound (CHUBB), la agrupación se valida con el email inbound del RC. El RC cliente por artículo puede seguir siendo obligatorio, pero ya no define qué solicitudes se pueden juntar.
id ? old('is_groupable', $client->is_groupable) : $client->is_groupable)> Agrupable
id ? old('is_groupable', $client->is_groupable) : $client->is_groupable)) style="display:none;" @endif>
No hay clientes registrados.
{{ $clients->onEachSide(1)->links('vendor.pagination.enterprise') }}
@endsection @push('styles') @endpush @push('scripts') @endpush