feat: comptabilite + prestataires + rapport financier + stats dynamiques
Comptabilite (Super Admin) : - ComptabiliteController avec 7 exports CSV/JSON compatibles SAGE (journal ventes, grand livre, FEC, balance agee, reglements, commissions Stripe 1.5%+0.25E, couts services) - Export PDF via ComptaPdf (FPDF) avec bloc legal pre-rempli, tableau pagine, champ signature DocuSeal - Signature electronique DocuSeal + callback + envoi email signe avec template dedie (compta_export_signed.html.twig) - Rapport financier public (RapportFinancierPdf) : recettes par service, depenses (Stripe, infra, prestataires), bilan excedent/deficit - Codes comptables clients EC-XXXX (plus de 411xxx) Prestataires (Super Admin) : - Entite Prestataire (raisonSociale, siret, email, phone, adresse) - Entite FacturePrestataire (numFacture, montantHt, montantTtc, year, month, isPaid, PDF via Vich) - CRUD complet avec recherche SIRET via proxy API data.gouv.fr - Commande cron app:reminder:factures-prestataire (5 du mois) - Factures prestataires integrees dans export couts services - Sidebar Super Admin : entree Prestataires + Comptabilite Stats (/admin/stats) : - Cout prestataire dynamique depuis FacturePrestataire - Fusion Infra + Prestataire en "Cout de fonctionnement" - Commission Stripe corrigee (1.5% + 0.25E par transaction) Divers : - DocuSealService::sendComptaForSignature() + getApi() - Customer::generateCodeComptable() format EC-XXXX-XXXXX - Protection double prefixe EC- a la creation client - Bouton regenerer PDF cache quand advert state=accepted - Modals sans script inline (data-modal-open/close dans app.js) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
crm.siteconseil.fr {
|
||||
crm.e-cosplay.fr {
|
||||
tls {
|
||||
dns cloudflare cfat_rIHZqzCm9GKK3xVnQDNGfu6J91TseIDdTKeuWSFUdf6ccd31
|
||||
}
|
||||
@@ -48,6 +48,6 @@ crm.siteconseil.fr {
|
||||
}
|
||||
|
||||
log {
|
||||
output file /var/log/caddy/ticket.siteconseil.fr.log
|
||||
output file /var/log/caddy/ticket.e-cosplay.fr.log
|
||||
}
|
||||
}
|
||||
|
||||
@@ -304,6 +304,14 @@
|
||||
job: "docker compose -f /var/www/crm-siteconseil/docker-compose-prod.yml exec -T php php bin/console app:ndd:check --env=prod >> /var/log/crm-siteconseil-ndd-check.log 2>&1"
|
||||
user: bot
|
||||
|
||||
- name: Configure payment reminder cron (daily at 9am)
|
||||
cron:
|
||||
name: "crm-siteconseil payment reminder"
|
||||
minute: "0"
|
||||
hour: "9"
|
||||
job: "docker compose -f /var/www/crm-siteconseil/docker-compose-prod.yml exec -T php php bin/console app:payment:reminder --env=prod >> /var/log/crm-siteconseil-payment-reminder.log 2>&1"
|
||||
user: bot
|
||||
|
||||
- name: Configure Meilisearch full reindex cron (weekly Sunday at 4am)
|
||||
cron:
|
||||
name: "crm-siteconseil meilisearch reindex"
|
||||
|
||||
@@ -5,10 +5,10 @@ MESSENGER_TRANSPORT_DSN=redis://:{{ redis_password }}@redis:6379/messages
|
||||
SESSION_HANDLER_DSN=redis://:{{ redis_password }}@redis:6379/1
|
||||
REDIS_CACHE_DSN=redis://:{{ redis_password }}@redis:6379/2
|
||||
MAILER_DSN={{ mailer_dsn }}
|
||||
DEFAULT_URI=https://ticket.siteconseil.fr
|
||||
DEFAULT_URI=https://ticket.e-cosplay.fr
|
||||
VITE_LOAD=1
|
||||
REAL_MAIL=1
|
||||
OUTSIDE_URL=https://ticket.siteconseil.fr
|
||||
OUTSIDE_URL=https://ticket.e-cosplay.fr
|
||||
STRIPE_PK={{ stripe_pk }}
|
||||
STRIPE_SK={{ stripe_sk }}
|
||||
STRIPE_WEBHOOK_SECRET={{ stripe_webhook_secret }}
|
||||
@@ -20,12 +20,12 @@ MEILISEARCH_API_KEY={{ meilisearch_api_key }}
|
||||
SONARQUBE_URL=https://sn.esy-web.dev
|
||||
SONARQUBE_BADGE_TOKEN={{ sonarqube_badge_token }}
|
||||
SONARQUBE_PROJECT_KEY=crm_siteconseil
|
||||
OAUTH_KEYCLOAK_CLIENT_ID=crm_siteconseil
|
||||
OAUTH_KEYCLOAK_CLIENT_SECRET=kh1WBbnEzcEZVriXmU7IaxizChReHmIx
|
||||
OAUTH_KEYCLOAK_CLIENT_ID=crm_ecosplay
|
||||
OAUTH_KEYCLOAK_CLIENT_SECRET=QiksEpHqDCHFPMM9CWb3RHfag31VJfIV
|
||||
OAUTH_KEYCLOAK_URL=https://auth.esy-web.dev
|
||||
OAUTH_KEYCLOAK_REALM=master
|
||||
OAUTH_KEYCLOAK_REALM=e-cosplay
|
||||
SECRET_ANALYTICS={{ analytics_secret }}
|
||||
KEYCLOAK_ADMIN_CLIENT_ID=crm_siteconseil_admin
|
||||
KEYCLOAK_ADMIN_CLIENT_ID=crm-ecosplay-admin
|
||||
KEYCLOAK_ADMIN_CLIENT_SECRET={{ keycloak_admin_client_secret }}
|
||||
AWS_PK={{ aws_pk }}
|
||||
AWS_SECRET={{ aws_secret }}
|
||||
@@ -33,8 +33,10 @@ AWS_REGION=eu-west-3
|
||||
CLOUDFLARE_KEY={{ cloudflare_key }}
|
||||
MAILCOW_URL=https://mail.esy-web.dev
|
||||
MAILCOW_API_KEY={{ mailcow_api_key }}
|
||||
WEBHOOK_BASE_URL=https://stripe.siteconseil.fr
|
||||
WEBHOOK_BASE_URL=https://stripe.e-cosplay.fr
|
||||
DOCUSEAL_URL=https://signature.esy-web.dev
|
||||
DOCUSEAL_API={{ docuseal_api }}
|
||||
DOCUSEAL_WEBHOOKS_SECRET_HEADER=X-Sign
|
||||
DOCUSEAL_WEBHOOKS_SECRET={{ docuseal_webhooks_secret }}
|
||||
TVA_ENABLED={{ tva_enabled }}
|
||||
TVA_RATE={{ tva_rate }}
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
127.0.0.1 ansible_user=bot ansible_become=yes ansible_become_method=sudo ansible_connection=local
|
||||
|
||||
[production:vars]
|
||||
deploy_path=/var/www/crm.siteconseil/
|
||||
deploy_path=/var/www/crm.e-cosplay/
|
||||
|
||||
@@ -23,13 +23,15 @@ discord_webhook: https://discord.com/api/webhooks/1419573620602044518/ikAdxWxsrr
|
||||
esymail_hostname: mail.esy-web.dev
|
||||
vault_url: https://kms.esy-web.dev
|
||||
vault_token: CHANGE_ME_IN_PROD
|
||||
tva_enabled: 'false'
|
||||
tva_rate: '0.20'
|
||||
ovh_key: 34bc2c2eb416b67d
|
||||
ovh_secret: 12239d273975b5ab53318907fb66d355
|
||||
ovh_customer: 56c387eb9ca4b9a2de4d4d97fd3d7f22
|
||||
smime_private_key: |
|
||||
Bag Attributes
|
||||
localKeyID: 75 15 E3 C2 1D 7B 61 75 99 B9 22 D8 FD A4 19 AC 6B BE 1F 8F
|
||||
friendlyName: contact@siteconseil.fr
|
||||
friendlyName: contact@e-cosplay.fr
|
||||
Key Attributes: <No Attributes>
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC60+PtobUKQsjH
|
||||
|
||||
Reference in New Issue
Block a user