674 lines
41 KiB
PHP
674 lines
41 KiB
PHP
@extends('layouts.app')
|
|
|
|
@section('content')
|
|
<main>
|
|
<div class="container-xl px-4 mt-4">
|
|
|
|
{{-- Botões de ação no topo --}}
|
|
@if(isset($contract))
|
|
<div class="d-flex mb-4">
|
|
<a href="{{ route('contract.renew.form', $contract->id) }}" class="btn btn-success me-2">
|
|
<i class="fas fa-sync-alt me-1"></i> Renovar Contrato
|
|
</a>
|
|
|
|
<a href="{{ route('contract.history', $contract->id) }}" class="btn btn-secondary">
|
|
<i class="fas fa-history me-1"></i> Consultar Histórico
|
|
</a>
|
|
</div>
|
|
@endif
|
|
|
|
<div class="col-lg-12">
|
|
<div class="card border-0 shadow rounded-4">
|
|
<div class="card-header bg-white py-4 px-4 border-bottom d-flex justify-content-between align-items-center">
|
|
<h4 class="mb-0 fw-bold text-primary">
|
|
<i class="fas fa-file-signature me-2"></i>
|
|
{{ isset($contract) ? 'Editar Contrato' : 'Criar Novo Contrato' }}
|
|
</h4>
|
|
</div>
|
|
|
|
<div class="card-body p-4">
|
|
<form method="POST" action="{{ isset($contract) ? route('contract.update', $contract->id) : route('contract.store') }}">
|
|
@csrf
|
|
@if(isset($contract))
|
|
@method('PUT')
|
|
@endif
|
|
|
|
{{-- Cliente --}}
|
|
<div class="card mb-4 border-start border-4 border-primary shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-user-tag me-2 text-primary"></i>
|
|
<span class="fw-semibold text-primary">Selecionar Cliente</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<label class="form-label fw-semibold">Cliente</label>
|
|
<input type="text" class="form-control" id="client_autocomplete" placeholder="Pesquisar cliente..." autocomplete="on" value="{{ optional($contract->client ?? null)->name ?? '' }}">
|
|
<input type="hidden" name="client_id" id="client_id" value="{{ old('client_id', $contract->client->id ?? $clientId ?? '') }}">
|
|
<small class="form-text text-muted mt-1">Digite pelo menos 2 caracteres para pesquisar.</small>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Financeira --}}
|
|
@can('view_contract_summary')
|
|
<div class="card mb-4 border-start border-4 border-success shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-euro-sign me-2 text-success"></i>
|
|
<span class="fw-semibold text-success">Informação Financeira</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="mb-3">
|
|
<label for="contract_value" class="form-label fw-semibold">Valor do Contrato (€)</label>
|
|
<input type="number" step="0.01" class="form-control input-numeric" name="contract_value" id="contract_value"
|
|
value="{{ old('contract_value', $contract->contract_value ?? '') }}" placeholder="0.00">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="commission_value" class="form-label fw-semibold">Valor da Comissão (€)</label>
|
|
<input type="number" step="0.01" class="form-control input-numeric" name="commission_value" id="commission_value"
|
|
value="{{ old('commission_value', $contract->commission_value ?? '') }}" placeholder="0.00">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label for="profit_value" class="form-label fw-semibold">Lucro (€)</label>
|
|
<input type="number" step="0.01" class="form-control fw-bold input-numeric" name="profit_value" id="profit_value" readonly
|
|
value="{{ old('profit_value', $contract->profit_value ?? '') }}" placeholder="0.00">
|
|
</div>
|
|
|
|
<div class="col-md-4 mb-3">
|
|
<label class="form-label">Pago</label>
|
|
<div class="d-flex align-items-center gap-4">
|
|
<div class="form-check">
|
|
<input type="hidden" name="paid" value="0">
|
|
<input class="form-check-input" type="checkbox" name="paid" id="paid"
|
|
value="1"
|
|
{{ old('paid', $contract->paid ?? false) ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="paid">Sim</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<input type="hidden" name="chargeback" value="0">
|
|
<input class="form-check-input" type="checkbox" name="chargeback" id="chargeback"
|
|
value="1"
|
|
{{ old('chargeback', $contract->chargeback ?? false) ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="chargeback">chargeback</label>
|
|
</div>
|
|
</div>
|
|
<div id="chargeback_fields" class="row g-3 mt-1" style="display: none;">
|
|
<div class="col-md-6">
|
|
<label for="chargeback_value" class="form-label">Valor Chargeback (€)</label>
|
|
<input type="number" step="0.01" max="-0.01" class="form-control" name="chargeback_value" id="chargeback_value"
|
|
value="{{ old('chargeback_value', $contract->chargeback_value ?? '') }}">
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label for="chargeback_date" class="form-label">Data de Chargeback</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-calendar-day text-secondary"></i></span>
|
|
<input type="date" name="chargeback_date" id="chargeback_date" class="form-control datepicker"
|
|
value="{{ old('chargeback_date', isset($contract->chargeback_date) ? \Carbon\Carbon::parse($contract->chargeback_date)->format('d/m/Y') : '') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Parcelamento --}}
|
|
<div class="border-top pt-3 mt-3">
|
|
<div class="form-check mb-3">
|
|
<input class="form-check-input" type="checkbox" id="installments_enabled" name="installments_enabled"
|
|
{{ old('installments_enabled', isset($contract) && $contract->installments->count() > 0 ? 'checked' : '') }}>
|
|
<label class="form-check-label fw-semibold" for="installments_enabled">Ativar Parcelamento</label>
|
|
</div>
|
|
|
|
<div id="installments_section" style="display: none;">
|
|
<div class="mb-3 col-md-4">
|
|
<label for="installments_count" class="form-label fw-semibold">Número de Parcelas</label>
|
|
<select id="installments_count" name="installments_count" class="form-select">
|
|
<option value="">-- Selecionar --</option>
|
|
@for($i=1; $i<=$installments_count; $i++)
|
|
<option value="{{ $i }}"
|
|
{{ old('installments_count', isset($contract) ? $contract->installments->count() : '') == $i ? 'selected' : '' }}>
|
|
{{ $i }}
|
|
</option>
|
|
@endfor
|
|
</select>
|
|
</div>
|
|
|
|
<div id="installments_fields">
|
|
@for($i = 1; $i <= $installments_count; $i++)
|
|
@php
|
|
$installment = old("installments.$i", isset($contract) && $contract->installments->count() >= $i ? $contract->installments[$i-1]->toArray() : []);
|
|
|
|
$due_date_for_input = '';
|
|
if (!empty($installment['due_date'])) {
|
|
$dt = \DateTime::createFromFormat('Y-m-d', $installment['due_date']);
|
|
if ($dt) {
|
|
$due_date_for_input = $dt->format('d/m/Y');
|
|
}
|
|
}
|
|
@endphp
|
|
|
|
|
|
<div class="row g-3 mb-3 installment-row installment-{{ $i }}" style="display:none;">
|
|
<div class="col-md-4">
|
|
<label class="form-label">Data da Parcela {{ $i }}</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-calendar-day text-secondary"></i></span>
|
|
<input type="date" name="installments[{{ $i }}][due_date]" class="form-control datepicker"
|
|
value="{{ $due_date_for_input }}">
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">Valor (€)</label>
|
|
<input type="number" step="0.01" name="installments[{{ $i }}][amount]" class="form-control"
|
|
value="{{ $installment['amount'] ?? '' }}">
|
|
</div>
|
|
<div class="col-md-4 d-flex align-items-center">
|
|
<div class="form-check mt-4">
|
|
<input type="hidden" name="installments[{{ $i }}][paid]" value="0">
|
|
<input type="checkbox" name="installments[{{ $i }}][paid]" value="1"
|
|
class="form-check-input"
|
|
{{ isset($installment['paid']) && $installment['paid'] ? 'checked' : '' }}>
|
|
<label class="form-check-label">Pago</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endfor
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endcan
|
|
|
|
{{-- Informações Gerais --}}
|
|
<div class="card mb-4 border-start border-4 border-info shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-info-circle me-2 text-info"></i>
|
|
<span class="fw-semibold text-info">Informações Gerais</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row g-4">
|
|
<div class="col-md-4">
|
|
<label class="form-label">Código do Contrato</label>
|
|
<input class="form-control" name="code" type="text" required value="{{ old('code', $contract->code ?? '') }}">
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">Tipo</label>
|
|
<select name="supply_type" id="supply_type" class="form-select" required>
|
|
<option value="">-- Selecionar Tipo --</option>
|
|
<option value="cpe" {{ old('supply_type', $contract->supply_type ?? '') == 'cpe' ? 'selected' : '' }}>CPE (Luz)</option>
|
|
<option value="cui" {{ old('supply_type', $contract->supply_type ?? '') == 'cui' ? 'selected' : '' }}>CUI (Gás)</option>
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">Tipo de Contrato</label>
|
|
<select name="contract_type_id" class="form-select" required>
|
|
<option value="">-- Selecionar Tipo --</option>
|
|
@foreach ($contractTypes as $type)
|
|
<option value="{{ $type->id }}" {{ old('contract_type_id', $contract->contract_type_id ?? '') == $type->id ? 'selected' : '' }}>
|
|
{{ $type->description }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">Vendedor</label>
|
|
<select name="seller_id" class="form-select" required>
|
|
@foreach ($sellers as $seller)
|
|
<option value="{{ $seller->id }}" {{ old('seller_id', $contract->seller_id ?? '') == $seller->id ? 'selected' : '' }}>
|
|
{{ $seller->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">Tipologia</label>
|
|
<select name="typology_id" class="form-select" required>
|
|
<option value="">-- Selecionar Tipo --</option>
|
|
@foreach ($typology as $type)
|
|
<option value="{{ $type->id }}" {{ old('typology_id', $contract->typology_id ?? '') == $type->id ? 'selected' : '' }}>
|
|
{{ $type->description }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<label class="form-label">GO/KI *</label>
|
|
<input class="form-control input-numeric" name="go_ki" type="number" step="0.01" required value="{{ old('go_ki', $contract->go_ki ?? '') }}">
|
|
</div>
|
|
</div>
|
|
<div class="row g-4 mt-3">
|
|
<div class="col-md-12">
|
|
<label class="form-label">Morada de Fornecimento</label>
|
|
<input class="form-control" name="supply_address" id="supply_address" type="text" value="{{ old('supply_address', $contract->supply_address ?? '') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Características Técnicas --}}
|
|
<div class="card mb-4 border-start border-4 border-secondary shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-bolt me-2 text-secondary"></i>
|
|
<span class="fw-semibold text-secondary">Características Técnicas</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row g-4">
|
|
{{-- CPE AREA --}}
|
|
<div class="col-md-4 power-consumption-group">
|
|
<label class="form-label">Potência (kWh)</label>
|
|
<select name="power_tier_id" class="form-select">
|
|
<option value="">-- Selecionar Potência --</option>
|
|
@foreach ($powerTiers as $tier)
|
|
<option value="{{ $tier->id }}" {{ old('power_tier_id', $contract->power_tier_id ?? '') == $tier->id ? 'selected' : '' }}>
|
|
{{ $tier->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
{{-- CUI AREA --}}
|
|
<div class="col-md-4 escalon-group">
|
|
<label class="form-label">Escalão</label>
|
|
<select name="cui_tier_id" id="cui_tier_id" class="form-select">
|
|
<option value="">-- Selecionar Escalão --</option>
|
|
@foreach ($cui_tiers as $tier)
|
|
<option value="{{ $tier->id }}" {{ old('escalon_id', $contract->cui_tier_id ?? '') == $tier->id ? 'selected' : '' }}>
|
|
{{ $tier->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label class="form-label">Consumo Anual (kWh)</label>
|
|
<input class="form-control decimal-input" name="annual_consumption" type="text"
|
|
value="{{ old('annual_consumption', isset($contract) && isset($contract->annual_consumption) && fmod($contract->annual_consumption, 1) == 0 ? (int) $contract->annual_consumption : ($contract->annual_consumption ?? '')) }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{{-- Método de Pagamento --}}
|
|
<div class="card mb-4 border-start border-4 border-success shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-credit-card me-2 text-success"></i>
|
|
<span class="fw-semibold text-success">Método de Pagamento</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row g-3">
|
|
<div class="col-md-6">
|
|
<label class="form-label">Método de Pagamento</label>
|
|
<select name="payment_method_id" class="form-select" required>
|
|
<option value="">-- Selecionar --</option>
|
|
@foreach ($paymentMethods as $method)
|
|
<option value="{{ $method->id }}"
|
|
{{ old('payment_method_id', $contract->payment_method_id ?? '') == $method->id ? 'selected' : '' }}>
|
|
{{ $method->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
@error('payment_method_id')
|
|
<div class="text-danger mt-2 small">{{ $message }}</div>
|
|
@enderror
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<label class="form-label">Método de Envio</label>
|
|
<select name="delivery_method" id="delivery_method" class="form-select" required>
|
|
<option value="">-- Selecionar --</option>
|
|
<option value="correio" {{ old('delivery_method', $contract->delivery_method ?? '') == 'correio' ? 'selected' : '' }}>Correio</option>
|
|
<option value="email" {{ old('delivery_method', $contract->delivery_method ?? '') == 'email' ? 'selected' : '' }}>Email</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row mt-4">
|
|
<div class="col-md-6" id="delivery_email_group">
|
|
<label class="form-label">Email de Envio</label>
|
|
<input class="form-control" name="delivery_email" id="delivery_email" type="email" value="{{ old('delivery_email', $contract->delivery_email ?? '') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
{{-- Datas do Contrato --}}
|
|
<div class="card mb-4 border-start border-4 border-warning shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-calendar-alt me-2 text-warning"></i>
|
|
<span class="fw-semibold text-warning">Datas do Contrato</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row g-4">
|
|
{{-- Data de Contrato --}}
|
|
<div class="col-md-4">
|
|
<label class="form-label">Contrato</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-calendar-day text-secondary"></i></span>
|
|
<input type="date" name="contract_date" class="form-control datepicker"
|
|
value="{{ old('contract_date', isset($contract->contract_date) ? \Carbon\Carbon::parse($contract->contract_date)->format('d/m/Y') : '') }}">
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Data de Ativação --}}
|
|
<div class="col-md-4">
|
|
<label class="form-label">Ativação</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-bolt text-success"></i></span>
|
|
<input type="date" name="activation_date" class="form-control datepicker"
|
|
value="{{ old('activation_date', isset($contract->activation_date) ? \Carbon\Carbon::parse($contract->activation_date)->format('d/m/Y') : '') }}">
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Data de Renovação --}}
|
|
<div class="col-md-4">
|
|
<label class="form-label">Renovação</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-sync-alt text-primary"></i></span>
|
|
<input type="date" name="validity" class="form-control datepicker"
|
|
value="{{ old('validity', isset($contract->validity) ? \Carbon\Carbon::parse($contract->validity)->format('d/m/Y') : '') }}">
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Data de Renovação --}}
|
|
<div class="col-md-4">
|
|
<label class="form-label">Fim de Contrato</label>
|
|
<div class="input-group">
|
|
<span class="input-group-text bg-light"><i class="fas fa-calendar-times text-danger"></i></span>
|
|
<input type="date" name="contract_end_date" class="form-control datepicker"
|
|
value="{{ old('contract_end_date', isset($contract->contract_end_date) ? \Carbon\Carbon::parse($contract->contract_end_date)->format('d/m/Y') : '') }}">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Outras Informações --}}
|
|
<div class="card mb-4 border-start border-4 border-dark shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-clipboard-list me-2 text-dark"></i>
|
|
<span class="fw-semibold text-dark">Outras Informações</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row g-4">
|
|
<div class="col-md-4">
|
|
<label class="form-label">Antigo Comercializador</label>
|
|
<select name="previous_supplier_id" class="form-select" id="previous_supplier_select">
|
|
<option value="">-- Selecionar --</option>
|
|
@foreach ($suppliers as $supplier)
|
|
<option value="{{ $supplier->id }}"
|
|
data-color="{{ $supplier->color }}"
|
|
style="background-color: {{ $supplier->color }};"
|
|
{{ old('previous_supplier_id', $contract->previous_supplier_id ?? '') == $supplier->id ? 'selected' : '' }}>
|
|
{{ $supplier->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label class="form-label">Novo Comercializador</label>
|
|
<select name="new_supplier_id" class="form-select" id="new_supplier_select">
|
|
<option value="">-- Selecionar --</option>
|
|
@foreach ($suppliers as $supplier)
|
|
<option value="{{ $supplier->id }}"
|
|
data-color="{{ $supplier->color }}"
|
|
style="background-color: {{ $supplier->color }};"
|
|
{{ old('new_supplier_id', $contract->new_supplier_id ?? '') == $supplier->id ? 'selected' : '' }}>
|
|
{{ $supplier->name }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<label class="form-label">Estado do Contrato</label>
|
|
<select name="status_id" id="status_id" class="form-select" required>
|
|
<option value="">-- Selecionar Estado --</option>
|
|
@foreach ($contractStatus as $status)
|
|
<option value="{{ $status->id }}" {{ old('status_id', $contract->status_id ?? '') == $status->id ? 'selected' : '' }}>
|
|
{{ $status->description }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Notas --}}
|
|
<div class="card mb-4 border-start border-4 border-muted shadow-sm">
|
|
<div class="card-header bg-light d-flex align-items-center">
|
|
<i class="fas fa-sticky-note me-2 text-muted"></i>
|
|
<span class="fw-semibold text-muted">Notas</span>
|
|
</div>
|
|
<div class="card-body">
|
|
<textarea class="form-control" name="notes" rows="3">{{ old('notes', $contract->notes ?? '') }}</textarea>
|
|
</div>
|
|
</div>
|
|
|
|
{{-- Botões --}}
|
|
<div class="d-flex justify-content-end">
|
|
<a href="{{ isset($clientId) ? route('client.detail', ['id' => $clientId]) : route('contract.list') }}" class="btn btn-outline-secondary me-2">
|
|
Cancelar
|
|
</a>
|
|
<button class="btn btn-primary px-4" type="submit">
|
|
<i class="fas fa-save me-2"></i> {{ isset($contract) ? 'Atualizar' : 'Gravar Contrato' }}
|
|
</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
<script>
|
|
$(document).ready(function () {
|
|
|
|
function loadClientInfo(clientID) {
|
|
// AJAX Client
|
|
$.ajax({
|
|
url: "{{ route('utils.ajax.clients.search.id') }}",
|
|
type: 'POST',
|
|
dataType: 'json',
|
|
cache: false,
|
|
data: {
|
|
_token: '{{ csrf_token() }}',
|
|
id: clientID
|
|
}
|
|
}).done(function (data) {
|
|
|
|
$('#delivery_method').val("email");
|
|
$('#delivery_email').val(data.email);
|
|
$('#client_autocomplete').val(data.name);
|
|
$('#supply_address').val(data.address + " " + data.locality);
|
|
|
|
toggleEmailField();
|
|
});
|
|
}
|
|
|
|
loadClientInfo($('#client_id').val());
|
|
|
|
// Installment
|
|
const installmentsEnabled = $('#installments_enabled');
|
|
const installmentsSection = $('#installments_section');
|
|
const installmentsCount = $('#installments_count');
|
|
const chargeback = $('#chargeback');
|
|
const chargebackFields = $('#chargeback_fields');
|
|
|
|
function toggleChargebackFields() {
|
|
const isChargeback = chargeback.is(':checked');
|
|
|
|
chargebackFields.toggle(isChargeback);
|
|
$('#chargeback_value, #chargeback_date').prop('required', isChargeback);
|
|
|
|
if (isChargeback) {
|
|
$('#status_id').val('6');
|
|
}
|
|
}
|
|
|
|
chargeback.on('change', function () {
|
|
if (!chargeback.is(':checked')) {
|
|
$('#chargeback_value, #chargeback_date').val('');
|
|
}
|
|
|
|
toggleChargebackFields();
|
|
});
|
|
toggleChargebackFields();
|
|
|
|
function toggleInstallmentsSection() {
|
|
if (installmentsEnabled.is(':checked')) {
|
|
installmentsSection.show();
|
|
} else {
|
|
installmentsSection.hide();
|
|
$('.installment-row').hide();
|
|
}
|
|
}
|
|
|
|
function toggleInstallmentsFields() {
|
|
const count = parseInt(installmentsCount.val()) || 0;
|
|
$('.installment-row').hide();
|
|
for (let i = 1; i <= count; i++) {
|
|
$(`.installment-${i}`).show();
|
|
}
|
|
}
|
|
|
|
installmentsEnabled.on('change', toggleInstallmentsSection);
|
|
installmentsCount.on('change', toggleInstallmentsFields);
|
|
|
|
toggleInstallmentsSection();
|
|
toggleInstallmentsFields();
|
|
|
|
function toggleTechnicalFields() {
|
|
const supplyType = $('#supply_type').val();
|
|
|
|
if (supplyType === 'cpe') {
|
|
$('.power-consumption-group').show();
|
|
$('.escalon-group').hide();
|
|
} else if (supplyType === 'cui') {
|
|
$('.power-consumption-group').hide();
|
|
$('.escalon-group').show();
|
|
} else {
|
|
$('.power-consumption-group').hide();
|
|
$('.escalon-group').hide();
|
|
}
|
|
}
|
|
|
|
$('#supply_type').on('change', toggleTechnicalFields);
|
|
|
|
toggleTechnicalFields();
|
|
|
|
|
|
$('#client_autocomplete').autocomplete({
|
|
source: function(request, response) {
|
|
$.ajax({
|
|
url: '{{ route('utils.ajax.clients.search.name') }}',
|
|
dataType: 'json',
|
|
data: {
|
|
term: request.term
|
|
},
|
|
success: function(data) {
|
|
response(data);
|
|
}
|
|
});
|
|
},
|
|
minLength: 2,
|
|
select: function (event, ui) {
|
|
$('#client_autocomplete').val(ui.item.label);
|
|
$('#client_id').val(ui.item.id);
|
|
loadClientInfo(ui.item.id);
|
|
return false;
|
|
}
|
|
});
|
|
|
|
const deliveryMethod = $('#delivery_method');
|
|
const deliveryEmailGroup = $('#delivery_email_group');
|
|
|
|
function toggleEmailField() {
|
|
if (deliveryMethod.val() === 'email') {
|
|
deliveryEmailGroup.show();
|
|
} else {
|
|
deliveryEmailGroup.hide();
|
|
deliveryEmailGroup.find('input').val('');
|
|
}
|
|
}
|
|
|
|
toggleEmailField();
|
|
deliveryMethod.on('change', toggleEmailField);
|
|
|
|
|
|
function calculateProfit() {
|
|
const contract = parseFloat($('#contract_value').val()) || 0;
|
|
const commission = parseFloat($('#commission_value').val()) || 0;
|
|
const chargeback = parseFloat($('#chargeback_value').val()) || 0;
|
|
const profit = contract - Math.abs(commission) + chargeback;
|
|
|
|
const $profitField = $('#profit_value');
|
|
$profitField.val(profit.toFixed(2));
|
|
|
|
$profitField.removeClass('is-valid is-invalid text-success text-danger border-success border-danger');
|
|
|
|
if (profit > 0) {
|
|
$profitField.addClass('is-valid text-success border-success');
|
|
} else if (profit < 0) {
|
|
$profitField.addClass('is-invalid text-danger border-danger');
|
|
}
|
|
}
|
|
|
|
$('#contract_value, #commission_value, #chargeback_value').on('input', calculateProfit);
|
|
calculateProfit();
|
|
|
|
function applyColor(selectId) {
|
|
const color = $(`#${selectId} option:selected`).data('color') || '#ffffff';
|
|
$(`#${selectId}`).css({
|
|
'border': `2px solid ${color}`,
|
|
'box-shadow': `0 0 0 0.1rem ${color}33`
|
|
});
|
|
}
|
|
|
|
applyColor('new_supplier_select');
|
|
applyColor('previous_supplier_select');
|
|
|
|
$('#new_supplier_select').on('change', function () {
|
|
applyColor('new_supplier_select');
|
|
});
|
|
|
|
$('#previous_supplier_select').on('change', function () {
|
|
applyColor('previous_supplier_select');
|
|
});
|
|
});
|
|
|
|
const duplicateCodeMessage = @json($errors->first('duplicate_code'));
|
|
if (duplicateCodeMessage) {
|
|
const form = document.querySelector('form');
|
|
const submitConfirmed = () => {
|
|
let confirmation = form.querySelector('input[name="confirm_duplicate"]');
|
|
if (!confirmation) {
|
|
confirmation = document.createElement('input');
|
|
confirmation.type = 'hidden';
|
|
confirmation.name = 'confirm_duplicate';
|
|
form.appendChild(confirmation);
|
|
}
|
|
confirmation.value = '1';
|
|
form.submit();
|
|
};
|
|
|
|
if (window.Swal) {
|
|
Swal.fire({
|
|
title: 'CPE/CUI já existente',
|
|
text: duplicateCodeMessage,
|
|
icon: 'warning',
|
|
showCancelButton: true,
|
|
confirmButtonText: 'Aceitar e gravar',
|
|
cancelButtonText: 'Cancelar',
|
|
reverseButtons: true
|
|
}).then((result) => {
|
|
if (result.isConfirmed) {
|
|
submitConfirmed();
|
|
}
|
|
});
|
|
} else if (window.confirm(`${duplicateCodeMessage}\n\nDeseja continuar?`)) {
|
|
submitConfirmed();
|
|
}
|
|
}
|
|
</script>
|
|
@endsection
|