| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- @extends('layouts.app')
- @section('content')
- <div class="px-3">
- <h4 class="mb-4">{{ $contractor ? 'Редактирование подрядчика' : 'Добавление подрядчика' }}</h4>
- @if(session('success'))
- <div class="alert alert-success alert-dismissible fade show" role="alert">
- {{ session('success') }}
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Закрыть"></button>
- </div>
- @endif
- @if(session('contractor_import_errors'))
- <div class="alert alert-warning alert-dismissible fade show" role="alert">
- <div class="fw-bold mb-1">Ошибки импорта:</div>
- @foreach(session('contractor_import_errors') as $error)
- <div>{{ $error }}</div>
- @endforeach
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Закрыть"></button>
- </div>
- @endif
- @if($errors->any())
- <div class="alert alert-danger alert-dismissible fade show" role="alert">
- @foreach($errors->all() as $error)
- <div>{{ $error }}</div>
- @endforeach
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Закрыть"></button>
- </div>
- @endif
- <ul class="nav nav-tabs mb-3" role="tablist">
- <li class="nav-item" role="presentation">
- <button class="nav-link active" id="contractor-main-tab" data-bs-toggle="tab" data-bs-target="#contractor-main-pane" type="button" role="tab">
- Карточка
- </button>
- </li>
- @if($contractor)
- <li class="nav-item" role="presentation">
- <button class="nav-link" id="contractor-prices-tab" data-bs-toggle="tab" data-bs-target="#contractor-prices-pane" type="button" role="tab">
- Цены монтажа
- </button>
- </li>
- @endif
- </ul>
- <div class="tab-content">
- <div class="tab-pane fade show active" id="contractor-main-pane" role="tabpanel" aria-labelledby="contractor-main-tab">
- <div class="col-xxl-7 offset-xxl-1">
- <form action="{{ $contractor ? route('contractors.update', $contractor) : route('contractors.store') }}" method="post">
- @csrf
- @include('partials.input', ['name' => 'name', 'title' => 'Наименование подрядчика', 'required' => true, 'value' => $contractor->name ?? ''])
- @include('partials.input', ['name' => 'legal_name', 'title' => 'Юридическое имя', 'required' => true, 'value' => $contractor->legal_name ?? ''])
- @include('partials.input', ['name' => 'contract_number', 'title' => '№ договора', 'required' => true, 'value' => $contractor->contract_number ?? ''])
- @include('partials.input', ['name' => 'contract_date', 'title' => 'Дата договора', 'type' => 'date', 'required' => true, 'value' => optional($contractor?->contract_date)->format('Y-m-d')])
- @include('partials.input', ['name' => 'director_name', 'title' => 'ФИО руководителя', 'required' => true, 'value' => $contractor->director_name ?? ''])
- @include('partials.select', ['name' => 'organization_form', 'title' => 'Форма организации', 'required' => true, 'options' => $organizationForms, 'value' => $contractor->organization_form ?? null, 'first_empty' => true])
- @include('partials.select', ['name' => 'tax_rate', 'title' => 'Налог', 'required' => true, 'options' => $taxRates, 'value' => $contractor->tax_rate ?? null, 'first_empty' => true])
- @include('partials.textarea', ['name' => 'contract_header', 'title' => 'Шапка в договоре', 'required' => true, 'size' => 8, 'value' => $contractor->contract_header ?? ''])
- <div class="row mb-3">
- <div class="offset-md-4 col-md-8">
- <input type="hidden" name="hidden" value="0">
- <input type="checkbox" class="form-check-input" id="hidden" name="hidden" value="1" @checked(old('hidden', $contractor->hidden ?? false))>
- <label for="hidden" class="form-check-label">Скрыть из выпадающих списков</label>
- </div>
- </div>
- @include('partials.submit', ['name' => 'Сохранить', 'back_url' => $back_url ?? route('contractors.index')])
- </form>
- </div>
- </div>
- @if($contractor)
- <div class="tab-pane fade" id="contractor-prices-pane" role="tabpanel" aria-labelledby="contractor-prices-tab">
- <div class="row mb-3 align-items-end">
- <div class="col-md-3">
- <div class="text-muted small">
- Год каталога: <strong>{{ $catalogYear }}</strong>
- </div>
- </div>
- <div class="col-md-9 text-md-end mt-3 mt-md-0">
- <form action="{{ route('contractors.prices.export', $contractor) }}" method="post" class="d-inline">
- @csrf
- <button type="submit" class="btn btn-sm btn-outline-success">Экспортировать</button>
- </form>
- <button type="button" class="btn btn-sm btn-success" data-bs-toggle="modal" data-bs-target="#importPricesModal">
- Импортировать/обновить цены
- </button>
- </div>
- </div>
- <div class="table-responsive">
- <table class="table table-sm table-bordered align-middle">
- <thead class="table-primary">
- <tr>
- <th>Картинка МАФ</th>
- <th>Артикул МАФ</th>
- <th>Номер номенклатуры</th>
- <th>Наименование по спецификации</th>
- <th>Цена монтажа</th>
- <th>Статус</th>
- <th></th>
- </tr>
- </thead>
- <tbody>
- @foreach($priceRows as $row)
- @php
- $product = $row['product'];
- $price = $row['price'];
- @endphp
- <tr>
- <td style="width: 120px">
- @if($product->image)
- <img src="{{ $product->image }}" alt="" class="img-thumbnail maf-img">
- @endif
- </td>
- <td>{{ $product->article }}</td>
- <td>{{ $product->nomenclature_number }}</td>
- <td>{{ $price?->name_in_spec }}</td>
- <td>{{ $price?->price_txt ?? '0.00₽' }}</td>
- <td>
- @if($row['available'])
- <span class="badge text-bg-success">Доступен</span>
- @else
- <span class="badge text-bg-warning">МАФ недоступен</span>
- @endif
- </td>
- <td class="text-end">
- <button
- type="button"
- class="btn btn-sm btn-outline-primary edit-price"
- data-bs-toggle="modal"
- data-bs-target="#editPriceModal"
- data-product-id="{{ $product->id }}"
- data-article="{{ $product->article }}"
- data-name="{{ e($price?->name_in_spec ?? '') }}"
- data-price="{{ $price?->price ?? 0 }}"
- >
- Изменить
- </button>
- </td>
- </tr>
- @endforeach
- </tbody>
- </table>
- </div>
- <div class="modal fade" id="editPriceModal" tabindex="-1" aria-labelledby="editPriceModalLabel" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <h1 class="modal-title fs-5" id="editPriceModalLabel">Цена монтажа</h1>
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
- </div>
- <div class="modal-body">
- <form action="{{ route('contractors.prices.update', $contractor) }}" method="post">
- @csrf
- <input type="hidden" name="product_id" id="price_product_id">
- <div class="mb-2 small text-muted" id="price_article"></div>
- @include('partials.input', ['name' => 'name_in_spec', 'title' => 'Наименование по спецификации'])
- @include('partials.input', ['name' => 'price', 'title' => 'Цена монтажа', 'type' => 'number', 'min' => '0'])
- @include('partials.submit', ['name' => 'Сохранить'])
- </form>
- </div>
- </div>
- </div>
- </div>
- <div class="modal fade" id="importPricesModal" tabindex="-1" aria-labelledby="importPricesModalLabel" aria-hidden="true">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
- <h1 class="modal-title fs-5" id="importPricesModalLabel">Импорт цен монтажа</h1>
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
- </div>
- <div class="modal-body">
- <form action="{{ route('contractors.prices.import', $contractor) }}" method="post" enctype="multipart/form-data">
- @csrf
- <p class="text-muted small">
- Файл должен содержать колонки: Картинка МАФ, Артикул МАФ, Номер номенклатуры, Наименование по спецификации, Цена монтажа.
- </p>
- @include('partials.input', ['name' => 'import_file', 'type' => 'file', 'title' => 'XLSX файл', 'required' => true])
- @include('partials.submit', ['name' => 'Импорт'])
- </form>
- </div>
- </div>
- </div>
- </div>
- </div>
- @endif
- </div>
- </div>
- @endsection
- @push('scripts')
- <script type="module">
- $('.edit-price').on('click', function () {
- $('#price_product_id').val($(this).data('product-id'));
- $('#price_article').text('Артикул: ' + $(this).data('article'));
- $('#name_in_spec').val($(this).data('name'));
- $('#price').val($(this).data('price'));
- });
- </script>
- @endpush
|