Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion app/config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,9 +200,10 @@ parameters:
niveau: 'ROLE_ADMIN'
icon: "money bill alternate"
elements:
compta_devis:
admin_cash_estimate_list:
nom: 'Devis'
niveau: 'ROLE_ADMIN'
url: '/admin/cash/estimate/list'
compta_facture:
nom: 'Factures'
niveau: 'ROLE_ADMIN'
Expand Down Expand Up @@ -375,6 +376,13 @@ ting:
default:
connection: main
database: '%database_name%'
cash:
namespace : AppBundle\Cash\Model\Repository
directory : "@AppBundle/Cash/Model/Repository"
options:
default:
connection: main
database: '%database_name%'
site:
namespace : AppBundle\Site\Model\Repository
directory : "@AppBundle/Site/Model/Repository"
Expand Down
4 changes: 4 additions & 0 deletions app/config/routing/admin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,7 @@ admin_github_user_routes:
admin_healthcheck:
path: /healthcheck
defaults: {_controller: AppBundle\Controller\Admin\HealthcheckController}

admin_cash_estimate_list:
path: /cash/estimate/list
defaults: {_controller: AppBundle\Controller\Admin\Cash\Estimate\ListAction}
15 changes: 15 additions & 0 deletions sources/AppBundle/Cash/Model/AfupInvoice.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

declare(strict_types=1);

namespace AppBundle\Cash\Model;

use CCMBenchmark\Ting\Entity\NotifyProperty;
use CCMBenchmark\Ting\Entity\NotifyPropertyInterface;

class AfupInvoice implements NotifyPropertyInterface
{
use NotifyProperty;

private ?int $id = null;
}
81 changes: 81 additions & 0 deletions sources/AppBundle/Cash/Model/Repository/AfupInvoiceRepository.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php

declare(strict_types=1);

namespace AppBundle\Cash\Model\Repository;

use AppBundle\Cash\Model\AfupInvoice;
use AppBundle\Event\Model\Repository\list;
use CCMBenchmark\Ting\Exception;
use CCMBenchmark\Ting\Repository\HydratorArray;
use CCMBenchmark\Ting\Repository\Metadata;
use CCMBenchmark\Ting\Repository\MetadataInitializer;
use CCMBenchmark\Ting\Repository\Repository;
use CCMBenchmark\Ting\Serializer\SerializerFactoryInterface;

/**
* @extends Repository<AfupInvoice>
*/
class AfupInvoiceRepository extends Repository implements MetadataInitializer
{
/**
* @return list
*/
public function getList(): array
{
$sql = <<<ENDSQL
SELECT acf.id, acf.date_devis, acf.societe, acf.ville, acf.numero_devis, acf.date_facture, acf.ref_clt1, ROUND(SUM(acfd.pu * acfd.quantite), 2) as prix_total_devis
FROM afup_compta_facture acf
INNER JOIN afup_compta_facture_details acfd ON acf.id = acfd.idafup_compta_facture
GROUP BY acf.id
ORDER BY date_devis desc;
ENDSQL;
$query = $this->getQuery($sql);

$results = $query->query($this->getCollection(new HydratorArray()));
$data = [];

foreach ($results as $result) {
$data[] = $result;
}

return $data;
}

/**
*
* @return Metadata
*
* @throws Exception
*/
public static function initMetadata(SerializerFactoryInterface $serializerFactory, array $options = [])
{
$metadata = new Metadata($serializerFactory);
$metadata->setEntity(AfupInvoice::class);
$metadata->setConnectionName('main');
$metadata->setDatabase($options['database']);
$metadata->setTable('afup_compta_facture');

$metadata
->addField([
'columnName' => 'id',
'fieldName' => 'id',
'primary' => true,
'autoincrement' => true,
'type' => 'int',
])
->addField([
'columnName' => 'date_devis',
'fieldName' => 'dateEstimate',
'type' => 'date',
])
->addField([
'columnName' => 'societe',
'fieldName' => 'enterprise',
'type' => 'string',
])
;

return $metadata;
}
}
30 changes: 30 additions & 0 deletions sources/AppBundle/Controller/Admin/Cash/Estimate/ListAction.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

declare(strict_types=1);

namespace AppBundle\Controller\Admin\Cash\Estimate;

use AppBundle\Cash\Model\Repository\AfupInvoiceRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;

class ListAction extends AbstractController
{
public function __construct(private readonly AfupInvoiceRepository $afupInvoiceRepository) {}

public function __invoke(): Response
{
//TODO : à supprimer quand les actions via le formulaire auront été migée
if (isset($_SESSION['flash']['message'])) {
$this->addFlash('notice', $_SESSION['flash']['message']);
}
if (isset($_SESSION['flash']['erreur'])) {
$this->addFlash('error', $_SESSION['flash']['erreur']);
}
unset($_SESSION['flash']);
$list = $this->afupInvoiceRepository->getList();
return $this->render('admin/cash/estimate/list.html.twig', [
'estimates' => $list,
]);
}
}
69 changes: 69 additions & 0 deletions templates/admin/cash/estimate/list.html.twig
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{% extends 'admin/base_with_header.html.twig' %}

{% block content %}
<h2>Liste des devis</h2>

<div class="ui menu">
<a href="{{ path('admin_event_new') }}" class="item">
<div data-tooltip="Ajouter un devis" data-position="bottom left">
<i class="icon plus square"></i>
Ajouter
</div>
</a>
</div>

<table class="ui table striped celled">
<thead>
<tr>
<th>Id</th>
<th>Date</th>
<th>Clients</th>
<th>Ville</th>
<th>ref Client</th>
<th>Numéro devis</th>
<th>Prix</th>
<th>Facturé?</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for estimate in estimates %}
<tr>
<td>{{ estimate.id }}</td>
<td>{{ estimate.date_devis }}</td>
<td>{{ estimate.societe }}</td>
<td>{{ estimate.ville }}</td>
<td>{{ estimate.ref_clt1 }}</td>
<td>{{ estimate.numero_devis }}</td>
<td>{{ estimate.prix_total_devis|number_format(2, ',', ' ') }}</td>
<td>{% if estimate.date_facture == null %}<span class="ui red label">Non</span>{% else %}<span
class="ui green label">Oui</span>{% endif %}</td>
<td class="right aligned single line">
{% if estimate.date_facture == null %}
<a href="/pages/administration/index.php?page=compta_devis&action=modifier&id={{ estimate.id }}"
data-position="left center" data-tooltip="Modifier le devis {{ estimate.societe }}"
class="compact ui icon button"><i class="pencil alernate icon"></i></a>
{% else %}
<a href="/pages/administration/index.php?page=compta_facture&action=modifier&id={{ estimate.id }}"
data-position="left center" data-tooltip="Modifier le devis {{ estimate.societe }}"
class="compact ui icon button"><i class="pencil alernate icon"></i></a>
{% endif %}
<a href="/pages/administration/index.php?page=compta_devis&action=telecharger_devis&ref={{ estimate.numero_devis }}"
data-position="left center" data-tooltip="Télécharger le devis {{ estimate.societe }}"
class="compact ui icon button"><i class="file pdf icon"></i></a>
{% if estimate.date_facture == null %}
<a href="/pages/administration/index.php?page=compta_devis&action=transfert&ref={{ estimate.numero_devis }}"
data-position="left center"
data-tooltip="Transférer la ligne {{ estimate.societe }} en facture"
class="compact ui icon button"><i class="cart icon"></i></a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>


{% endblock %}