%PDF-
%PDF-
Mini Shell
Mini Shell
@extends('template')
@section('title')
Liste des produits
@endsection
@section('content')
<div class="container-fluid">
@if (session()->has('status'))
<div class="alert alert-success" role="alert">
{{ session()->get('status') }}
</div>
@elseif (session()->has('error'))
<div class="alert alert-danger" role="alert">
{{ session()->get('error') }}
</div>
@endif
<div class="card">
<div class="card-header">
<ul class="nav nav-pills card-header-pills">
<li class="nav-item">
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#addProductModal">
<i class="fas fa-plus"></i> Ajouter Produit
</button>
</li>
<li class="nav-item">
<button type="button" class="btn btn-warning" data-toggle="modal" data-target="#addFactureModal">
<i class="fas fa-plus"></i> Ajouter Facture
</button>
</li>
<li class="d-flex">
<input class="form-control me-2" type="search" id="searchInput" placeholder="Search"
aria-label="Search">
</li>
<li class="nav-item">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#DeleteProductModal"
id="DeleteAll">
<i class="fas fa-trash-alt"></i> Supprimer Tout
</button>
</li>
</ul>
</div>
<div class="card-body">
<h5 class="card-title text-primary">Liste des Produits</h5>
<div class="table-responsive">
<table class="table table-hover table-sm">
<thead>
<tr>
<th scope="col"><input type="checkbox" id="checkAll"> </th>
<th scope="col">Produit/Référence</th>
<th scope="col">En stock</th>
<th scope="col">Type Produit</th>
<th scope="col">Prix achat</th>
<th scope="col">Prix vente</th>
<th scope="col">Date début</th>
<th scope="col">Date Fin</th>
<th scope="col">Marque</th>
<th scope="col">Color</th>
<th scope="col">Catégorie</th>
<th scope="col">Fournisseur</th>
<th scope="col">Remarques</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
@foreach ($produits as $product)
<tr id="product-{{$product->id}}">
<td><input type="checkbox" value="{{ $product->id }}" name="ids"
class="checkAllids">
</td>
<td>
<div style="font-weight: bold; text-transform: title;"><a href="#" data-row-collapse="product-{{$product->id}}" style="color: #000;">{{ $product->name_prod?:$product->parent->name_prod }}</a></div>
</td>
<td>{{ $product->count }}</td>
<td>{{ $product->prod_type }}</td>
<td>{{ $product->prixachat }} DH</td>
<td>{{ $product->prixvente }} DH</td>
<td>{{ $product->date_debut }}</td>
<td>{{ $product->date_fin }}</td>
<td>{{ $product->marque->marque }}</td>
<td><button class="btn-circle btn-sm border-0"
style="background-color:{{ $product->color->code }}"></button></td>
<td>{{ $product->category->category }}</td>
<td>{{ $product->facture && $product->facture->user?$product->facture->user->name:'' }}</td>
<td>{{ $product->remarques }}</td>
<td>
<div class="row">
<div class="col-6 px-2">
<button class="badge badge-info border-0" type="button" data-toggle="modal"
data-target="#editProductModal"
data-object="{{ @json_encode($product) }}"><i
class="fas fa-edit"></i></button>
</div>
<div class="col-6 px-2">
<button class="badge badge-danger border-0" type="button" data-toggle="modal"
data-target="#DeleteProductModal" data-delete-id="{{ $product->id }}">
<i class="fas fa-trash-alt"></i></button>
</div>
</div>
</td>
</tr>
@foreach ($product->references as $subproduct)
<tr id="subproduct-{{$subproduct->id}}" class="row-collapsed" data-row-collapsing="product-{{$product->id}}">
<td><input type="checkbox" value="{{ $subproduct->id }}" name="ids"
class="checkAllids">
</td>
<td>
<div style="font-size: 0.6rem; color: {{$subproduct->in_stock ? 'grey' : 'red'}};">-- {{ $subproduct->ref_prod }}</div>
</td>
<td style="color: {{$subproduct->in_stock ? 'grey' : 'red'}};">{{$subproduct->in_stock ? '' : 'Hors stock'}}</td>
<td>{{ $subproduct->prod_type }}</td>
<td>{{ $subproduct->prixachat }} DH</td>
<td>{{ $subproduct->prixvente }} DH</td>
<td>{{ $subproduct->date_debut }}</td>
<td>{{ $subproduct->date_fin }}</td>
<td>{{ $subproduct->marque->marque }}</td>
<td><button class="btn-circle btn-sm border-0" style="background-color: {{ $subproduct->color->code }}"></button></td>
<td>{{ $subproduct->category->category }}</td>
<td>{{ $subproduct->facture && $subproduct->facture->user?$subproduct->facture->user->name:'' }}</td>
<td>{{ $subproduct->remarques }}</td>
<td>
<div class="row">
<div class="col-6 px-2">
<button class="badge badge-info border-0" type="button" data-toggle="modal"
data-target="#editProductModal"
data-object="{{ @json_encode($subproduct) }}"><i
class="fas fa-edit"></i></button>
</div>
<div class="col-6 px-2">
<button class="badge badge-danger border-0" type="button" data-toggle="modal"
data-target="#DeleteProductModal" data-delete-id="{{ $subproduct->id }}">
<i class="fas fa-trash-alt"></i></button>
</div>
</div>
</td>
</tr>
@endforeach
@endforeach
</tbody>
</table>
<div class="d-flex flex-row justify-content-center">{{ $produits->links() }}</div>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<!-- Modal add product-->
<div class="modal fade" id="addProductModal" tabindex="-1" role="dialog" aria-labelledby="addProductModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addProductModalLabel"> J2HB | Ajouter Produit </h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form action="{{ route('store_product') }}" method="POST">
@csrf
<div class="modal-body">
<div class="container-fluid">
<div class="row col-12">
<div class="col-6">
<div class="form-group mb-3">
<select id="parent_id" name="parent_id" class="form-control form-control-user">
<option value="0">Sélectionnez :</option>
<option value="0">pas de parent</option>
@foreach ($parents as $parent)
<option value="{{ $parent->id }}" data-option-type="{{ $parent->prod_type }}">{{ $parent->name_prod }}</option>
@endforeach
</select>
</div>
</div>
<div data-hide-parent class="col-6">
<div class="form-group mb-3">
<input type="text" class="form-control form-control-user" name="name_prod"
placeholder="Produit">
</div>
</div>
<div data-show-parent class="col-6">
<div class="form-group mb-3">
<input type="text" class="form-control form-control-user" name="ref_prod"
placeholder="Référence Produit">
</div>
</div>
</div>
<div data-hide-parent class="row col-12">
<div class="col-6">
<div class="form-group mb-3">
<input type="number" class="form-control form-control-user" name="prixachat"
placeholder="prix achat">
</div>
</div>
<div class="col-6">
<div class="form-group mb-3">
<input type="number" class="form-control form-control-user" name="prixvente"
placeholder="prix vente">
</div>
</div>
</div>
<div class="row col-12">
<div data-hide-parent class="col-6">
<div class="form-group mb-3">
<select id="product-type" name="prod_type" class="form-control form-control-user">
<option value="0">Sélectionnez le type du produit :</option>
<option value="Produit">Produit</option>
<option value="Service">Service</option>
<option value="Abonnement">Abonnement</option>
</select>
</div>
</div>
<div data-hide-parent class="col-6">
<div class="form-group mb-3">
<select name="category_id" class="form-control form-control-user">
<option value="0">Sélectionnez la catégorie du produit:</option>
<!-- <option value="0">pas de catégorie</option> -->
@foreach ($allcategories as $category)
<option value={{ $category->id }}>{{ $category->category }}</option>
@endforeach
</select>
</div>
</div>
<script>
$(document).ready(function() {
$(document).on('change', '#parent_id', function() {
var type = $("#parent_id option:selected").attr('data-option-type');
if( !type )
type = 0;
$('#product-type').val(type).trigger('change');
});
});
</script>
</div>
<div class="row col-12" >
<div class="col-6" data-prod-type="Produit">
<div class="form-group mb-3">
<select name="situation_id" class="form-control form-control-user">
<option value="0">Sélectionnez la situation du produit :</option>
@foreach ($situations as $situation)
<option value={{ $situation->id }}>{{ $situation->situation }}
</option>
@endforeach
</select>
</div>
</div>
<div class="col-6" data-prod-type="Produit">
<div class="form-group mb-3">
<select name="color_id" class="form-control form-control-user">
<option value="0">Sélectionnez la couleur du produit :</option>
@foreach ($colors as $color)
<option value={{ $color->id }}> {{ $color->color }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="row col-12">
<div data-show-parent class="col-6">
<div class="form-group mb-3">
<select name="facture_id" class="form-control form-control-user">
<option value="0">Sélectionnez la facture :</option>
<option value="0">Pas de facture</option>
@foreach ($factures as $facture)
<option value={{ $facture->id }}>{{ $facture->num_facture }}</option>
@endforeach
</select>
</div>
</div>
<div data-hide-parent class="col-6" data-prod-type="Produit">
<div class="form-group mb-3">
<select name="marque_id" class="form-control form-control-user">
<option value="0">Sélectionnez la marque du produit :</option>
@foreach ($marques as $marque)
<option value={{ $marque->id }}>{{ $marque->marque }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div data-prod-type="Abonnement" class="row col-12">
<div class="col-6">
<div class="form-group mb-3">
<label for="formGroupExampleInput">Date Début</label>
<input type="date" class="form-control form-control-user" name="date_debut">
</div>
</div>
<div class="col-6">
<div class="form-group mb-3">
<label for="formGroupExampleInput">Date Fin</label>
<input type="date" class="form-control form-control-user" name="date_fin">
</div>
</div>
</div>
<div class="row col-12">
<div class="col-12">
<div class="form-group mb-3">
<textarea name="remarques" class="form-control form-control-user"
placeholder="Remarques" id="remarques" cols="75" rows="10"></textarea>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$('#product-type').on('change', function() {
var type = $(this).val();
$('[data-prod-type]').addClass('d-none');
$('[data-prod-type=' + type + ']').removeClass('d-none');
}).trigger('change');
$('#parent_id').on('change', function() {
var type = parseInt($(this).val());
if( type ) {
$('[data-show-parent]').removeClass('d-none');
$('[data-hide-parent]').addClass('d-none');
} else {
$('[data-show-parent]').addClass('d-none');
$('[data-hide-parent]').removeClass('d-none');
}
}).trigger('change');
});
</script>
</div>
<button type="submit" class="btn btn-primary btn-user btn-block">Ajouter</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal add -->
{{-- Modal Add Factures --}}
<div class="modal fade" id="addFactureModal" tabindex="-1" role="dialog" aria-labelledby="addFactureModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addFactureModalLabel"> J2HB | Ajouter Facture </h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form action="{{ route('store_facture') }}" method="POST">
@csrf
<div class="modal-body">
<div class="row">
<div class="col-6">
<div class="form-group mb-3">
<select id="facture_type" name="type" class="form-control form-control-user">
<option value="0">Sélectionnez le type :</option>
<option value="facture">Facture</option>
<option value="livraison">Bon de livraison</option>
<option value="commande">Bon de commande</option>
<option value="sortie">Bon de sortie</option>
<option value="devis">Devis</option>
</select>
</div>
</div>
<div class="col-6">
<div class="form-group mb-3">
<input type="text" class="form-control form-control-user" name="num_facture"
placeholder="Numéro Facture" required readonly>
</div>
</div>
<div class="col-6">
<div class="form-group mb-3">
<input type="date" class="form-control form-control-user" name="date">
</div>
</div>
<div data-facture-type="facture" class="col-6">
<div class="form-group mb-3">
<select name="taux_id" class="form-control form-control-user">
<option value="0">Sélectionnez TVA :</option>
@foreach ($taux as $tva)
<option value="{{ $tva->id }}">{{ $tva->taux }} %</option>
@endforeach
</select>
</div>
</div>
<div class="col-6">
<div class="form-group mb-3">
<select name="client_id" class="form-control form-control-user">
<option value="0">Sélectionnez Fournisseur :</option>
@foreach ($fournisseurs as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
</select>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary btn-user btn-block">Ajouter Facture</button>
</div>
</form>
</div>
</div>
</div>
{{-- End Modal add Factures --}}
<!-- Delete -->
<div class="modal fade" id="DeleteProductModal" tabindex="-1" role="dialog" aria-labelledby="DeleteProductModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content" action="{{ route('destroy_products') }}" method="post">
<div class="modal-header">
<h5 class="modal-title">Confirmation :</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Etes-vous sûr que vous voulez supprimer ?</p>
</div>
<div class="modal-footer">
<input type="hidden" name="id">
@csrf
<button type="submit" id="delete" name="OK_button" class="btn btn-primary">OK</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
</div>
</form>
</div>
</div>
<!-- End Delete-->
<!-- Delete ALL -->
<div class="modal fade" id="DeleteAllProductModal" tabindex="-1" role="dialog" aria-labelledby="DeleteAllProductModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<form class="modal-content" action="{{ route('deleteAll_products') }}" method="post">
<div class="modal-header">
<h5 class="modal-title">Confirmation :</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>Etes-vous sûr que vous voulez supprimer ?</p>
</div>
<div class="modal-footer">
<input type="hidden" name="allids">
@csrf
<button type="submit" id="deleteAll" name="OK_button" class="btn btn-primary">OK</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
</div>
</form>
</div>
</div>
<!-- Delete ALL -->
{{-- Jquery --}}
<script language="javascript">
$(document).ready(function() {
$("#DeleteProductModal").on('show.bs.modal', function(e) {
var id = parseInt($(e.relatedTarget).attr('data-delete-id'));
$(this).find('input[name="id"]').val(id);
});
$("#editProductModal").on('show.bs.modal', function(e) {
var data = JSON.parse($(e.relatedTarget).attr('data-object'));
$(this).find('input[name="id"]').val(data.id);
$(this).find('input[name="name_prod"]').val(data.name_prod);
$(this).find('input[name="ref_prod"]').val(data.ref_prod);
});
$("#DeleteAllProductModal").on('show.bs.modal', function(e) {
var allids = [];
$("input:checkbox[name=ids]:checked").each(function() {
allids.push($(this).val());
});
$(this).find('input[name="allids"]').val(allids.join(','));
});
$(function(e) {
$("#checkAll").click(function() {
$(".checkAllids").prop('checked', $(this).prop('checked'));
});
});
$('#product_type').on('change', function() {
var type = $(this).val();
$('[data-prod-type]').addClass('d-none');
$('[data-prod-type=' + type + ']').removeClass('d-none');
}).trigger('change');
$('#facture_type').on('change', function() {
var type = $(this).val();
$('[data-facture-type]').addClass('d-none');
$('[data-facture-type=' + type + ']').removeClass('d-none');
}).trigger('change');
});
</script>
<script>
$(document).ready(function() {
$(document).on('change', '#facture_type', function() {
var type = $(this).val();
var select = $(this);
$(select).prop('disabled', true);
$.ajax({
type: "POST",
data: {
type: type
},
dataType: "json",
url: "{{route('facture_api', ['user' => 'F'])}}",
success: function(data) {
$(select).prop('disabled', false);
$('[name="num_facture"]').val(data.num);
},
error: function(jqXHR, textStatus) {
$(select).prop('disabled', false);
}
});
});
});
</script>
<script>
$(document).ready(function() {
$(document).on('click', '[data-row-collapse]', function(e) {
$('[data-row-collapsing="' + $(this).attr('data-row-collapse') + '"]').toggleClass('row-collapsed');
e.preventDefault();
return false;
});
});
</script>
{{-- End Jquery --}}
@endsection
Zerion Mini Shell 1.0