{% extends 'base.html.twig' %}
{% block title %}Dépenses | {{ parent() }}{% endblock %}
{% block body %}
<div class="breadcrumb">
<h1 class="mr-2">Dépenses</h1>
<ul>
<li><a href="{{ path('default') }}">Accueil</a></li>
<li><a href="{{ path('accounting_expense_index') }}">Dépenses</a></li>
<li>{{ createdBy ? createdBy.username : 'Toutes les dépense' }}</li>
</ul>
</div>
<div class="separator-breadcrumb border-top"></div>
<div class="row mb-4">
<div class="col-md-12">
<a href="{{ path('accounting_expense_new') }}" onclick="$('.loader').addClass('is-active');" class="btn btn-primary"><i class="fa fa-plus"></i> Nouveau</a>
{% if is_granted('ROLE_ADMIN') %}
<a href="#" class="btn btn-danger" onclick="javascript:actionByPathAndElts('{{path('accounting_expenses_selected_delete')}}')" id="delete-selected-btn"><i class="fa fa-trash"></i> Supprimer</a>
{% endif %}
{% if is_granted('ROLE_FONDATEUR') or app.user.isCanAprovedExpense %}
{# <a href="#" class="btn btn-primary selected-btn" data-toggle="modal" data-target="#aproveModal"><i class="fa fa-check"></i> Approuver</a> #}
<a href="#" class="btn btn-primary selected-btn" onclick="api_aprove();"><i class="fa fa-check"></i> Approuver</a>
<a href="#" class="btn btn-warning selected-btn" onclick="api_cancel();"><i class="fa fa-times"></i> Annuler</a>
{% endif %}
<a href="#" class="btn btn-dark" data-toggle="modal" data-target="#reportExpenseModal"><i class="fa fa-search"></i> Imprimer</a>
</div>
</div>
<div class="row mb-4">
<div class="col-md-12 mb-4"
hx-post="{{ path('accounting_expense_searh_statistiques')}}"
hx-trigger="load delay:500ms"
hx-target="#search-statistiques"
hx-indicator="#htmx-indicator-statistiques">
<span class="htmx-indicator text-danger" id="htmx-indicator-statistiques">
<img src="{{ asset('spinner-3.gif') }}" width="20" />
Recherche en cour...
</span>
<div class="table-responsive" id="search-statistiques"></div>
<hr>
<div class="card text-left">
<div class="card-body">
{{ include('accounting/accounting_expense/_table.html.twig') }}
</div>
</div>
</div>
</div>
<div class="modal fade" id="reportExpenseModal" role="dialog" aria-labelledby="reportExpenseModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="reportExpenseModal_title">Imprimer</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<form method="get" action="{{ path('accounting_expense_report_print') }}">
<div class="modal-body">
<div class="form-group">
<label class="col-form-label" for="dateStart">Date début:</label>
<input type="date" name="dateStart" class="form-control">
</div>
<div class="form-group">
<label class="col-form-label" for="dateEnd">Date fin:</label>
<input type="date" name="dateEnd" class="form-control">
</div>
<div class="form-group">
<label class="col-form-label" for="checkout">Caisse:</label>
<select class="form-control select" style="width: 100%" name="checkout" id="checkout">
<option value="0">Toutes les caisses</option>
{% for checkout in checkouts %}
<option value="{{ checkout.id }}">{{ checkout.label }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label class="col-form-label" for="accounting_expense_category">Catégorie:</label>
<select class="form-control select" name="accounting_expense_category" id="accounting_expense_category" style="width: 100%">
<option value="0">Toutes les catégorie</option>
{% for accounting_expense_category in accounting_expense_categories %}
<option value="{{ accounting_expense_category.id }}">{{ accounting_expense_category.name }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Annuler</button>
<button class="btn btn-primary" type="submit">Valider</button>
</div>
<input type="hidden" name="isAproved" value="0" />
<input type="hidden" name="isCanceled" value="0" />
<input type="hidden" name="isSubmited" value="0" />
<input type="hidden" name="isPaid" value="0" />
</form>
</div>
</div>
</div>
<div class="modal fade" id="aproveModal" role="dialog" aria-labelledby="aproveModal" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="aproveModal_title">Approuvé dépense</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</div>
<form action="#">
<div class="modal-body">
<div class="form-group">
<label class="col-form-label" for="amount">Caisse:</label>
<select class="form-control" name="checkout" id="checkout" style="width: 100%">
{% for _checkout in checkouts %}
<option value="{{ _checkout.id }}">{{ _checkout.label }} - [{{ (_checkout.cashedIn - (_checkout.spent + _checkout.paid))|number_format(0, ',', ' ') }}]</option>
{% endfor %}
</select>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Annuler</button>
<button class="btn btn-primary" type="button" onclick="api_aprove();">Validé</button>
</div>
</form>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script>
function api_aprove() {
var elts = setSelected();
swalWithBootstrapButtons.fire({
title: 'Êtes-vous sûr de bien vouloir effectuer cette action?',
text: "Vous ne pourrez pas revenir en arrière!",
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'OUI',
cancelButtonText: 'NON',
reverseButtons: true,
}).then((result) => {
if (result.isConfirmed) {
$('.loader').addClass('is-active');
axios.get('{{ path('api_accounting_expense_aprove') }}', {
params: {
entities: elts/*,
checkout: $('#checkout').val()*/
}
}).then(function (response) {
console.log(response.data);
$('.loader').removeClass('is-active');
if(response.data.code == 200){
swalWithBootstrapButtons.fire({
title: 'Effectué!',
text: response.data.message,
icon: 'success',
showCancelButton: false,
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
location.reload();
}
});
}else{
swalWithBootstrapButtons.fire({
title: 'Echèc!',
text: response.data.message,
icon: 'warning',
showCancelButton: false,
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
location.reload();
}
});
}
console.log(response.data.message);
}).catch(function(error) {
console.log(error);
});
}else if (
/* Read more about handling dismissals below */
result.dismiss === Swal.DismissReason.cancel
) {
swalWithBootstrapButtons.fire(
'Annulé',
'Votre enrégistrement est en sécurité:)',
'error'
)
}
})
}
function api_cancel() {
var elts = setSelected();
swalWithBootstrapButtons.fire({
title: 'Êtes-vous sûr de bien vouloir effectuer cette action?',
text: "Vous ne pourrez pas revenir en arrière!",
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'OUI',
cancelButtonText: 'NON',
reverseButtons: true,
}).then((result) => {
if (result.isConfirmed) {
$('.loader').addClass('is-active');
axios.get('{{ path('api_accounting_expense_cancel') }}', {
params: {
entities: elts/*,
checkout: $('#checkout').val()*/
}
}).then(function (response) {
console.log(response.data);
$('.loader').removeClass('is-active');
if(response.data.code == 200){
swalWithBootstrapButtons.fire({
title: 'Effectué!',
text: response.data.message,
icon: 'success',
showCancelButton: false,
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
location.reload();
}
});
}else{
swalWithBootstrapButtons.fire({
title: 'Echèc!',
text: response.data.message,
icon: 'warning',
showCancelButton: false,
confirmButtonText: 'OK'
}).then((result) => {
if (result.isConfirmed) {
location.reload();
}
});
}
console.log(response.data.message);
}).catch(function(error) {
console.log(error);
});
}else if (
/* Read more about handling dismissals below */
result.dismiss === Swal.DismissReason.cancel
) {
swalWithBootstrapButtons.fire(
'Annulé',
'Votre enrégistrement est en sécurité:)',
'error'
)
}
})
}
</script>
{% endblock %}