{{#restrict block=true section="accounting" level="write"}} {{/restrict}} {{if $module.config.type_asso !== 'syndicat'}} {{if !$module.config.objet_asso}} {{:redirect force="config.html?msg=MISSING"}} {{elseif !$module.config.numero_asso}} {{:redirect force="config.html?msg=MISSING_NUMBER"}} {{/if}} {{/if}} {{:include file="./_config_default.tpl" keep="module.config"}} {{if $_GET.user}} {{#foreach from=$_GET.user key="id" item="user"}} {{:assign id_user=$id|intval}} {{/foreach}} {{elseif $_GET.id_user}} {{:assign id_user=$_GET.id_user|intval}} {{/if}} {{:assign var="default.date" value=$now}} {{#load limit=1}} {{:assign id_choice=false}} {{else}} {{:assign id_choice=true}} {{/load}} {{#form on="create"}} {{if !$_POST.date|trim|parse_date}} {{:error message="Date d'émission invalide ou vide."}} {{elseif !$_POST.nom|trim}} {{:error message="Le nom du donateur ne peut être laissé vide."}} {{elseif !$_POST.adresse|trim}} {{:error message="L'adresse du donateur ne peut être laissée vide."}} {{/if}} {{if $_POST.entreprise}} {{:assign montant_nature=$_POST.montant_nature|money_int montant_numeraire=$_POST.montant_numeraire|money_int}} {{:assign total="%d+%d"|math:$montant_numeraire:$montant_nature}} {{if !$montant_nature && !$montant_numeraire}} {{:error message="Aucun montant n'a été saisi."}} {{elseif $montant_numeraire && !$_POST.moyens_especes && !$_POST.moyens_cheques && !$_POST.moyens_autres}} {{:error message="Aucun moyen de paiement n'a été coché."}} {{elseif $montant_nature && !$_POST.description_nature|trim}} {{:error message="La description des dons en nature doit être renseignée."}} {{elseif !$_POST.entreprise_forme|trim}} {{:error message="La forme juridique de l'entreprise doit être renseignée."}} {{elseif !$_POST.entreprise_numero|trim}} {{:error message="Le numéro SIREN de l'entreprise doit être renseigné."}} {{/if}} {{else}} {{:assign total=$_POST.montant|money_int}} {{if !$_POST.numeraire && !$_POST.nature && !$_POST.abandon_frais}} {{:error message="Le type de don n'a pas été sélectionné."}} {{elseif $_POST.numeraire && !$_POST.moyens_especes && !$_POST.moyens_cheques && !$_POST.moyens_autres}} {{:error message="Aucun moyen de paiement n'a été coché."}} {{elseif !$total || $total < 0}} {{:error message="Le montant du don ne peut être laissé vide."}} {{/if}} {{/if}} {{:assign id_transaction=null}} {{if $_POST.id_transaction|trim|strlen}} {{:assign id_transaction=$_POST.id_transaction|explode:','|map:intval}} {{:assign in_transaction="value"|sql_where:'IN':$id_transaction}} {{#load each="linked_transactions" where="$$.linked_transactions IS NOT NULL AND $$.annule = 0 AND %s"|args:$in_transaction}} {{:error message="L'écriture #%d est déjà utilisée dans le reçu n°%d. Il faut déjà annuler ce reçu pour pouvoir le re-créer."|args:$value:$id}} {{/load}} {{/if}} {{if $id_choice && $_POST.number|intval > 0}} {{:assign number=$_POST.number|intval}} {{else}} {{:assign number=null}} {{/if}} {{:include file="./_recu.html" capture="recu"}} {{:save validate_schema="./recu.schema.json" id=$number assign_new_id="new_id" nom=$_POST.nom|trim date=$_POST.date|parse_date montant=$total linked_user=$_POST.id_user|intval|or:null linked_transactions=$id_transaction id_year=$_POST.id_year|intval|or:null annule=false entreprise=$_POST.entreprise|boolval recu=$recu|trim|minify }} {{if !$dialog}} {{:redirect to="voir.html?id=%d"|args:$new_id}} {{else}} {{:redirect to="recu.html?id=%d"|args:$new_id}} {{/if}} {{/form}} {{:admin_header title="Créer un nouveau reçu fiscal" current="acc"}} {{:assign var="champs_adresse" value=$module.config.champs_adresse|sql_user_fields:"u":" — "}} {{:assign var="champs_nom" value=$config.user_fields.name|sql_user_fields:"u"}} {{:assign var="champ_entreprise_numero" value=$module.config.champ_entreprise_numero|sql_user_fields:"u"}} {{:assign var="champ_entreprise_forme" value=$module.config.champ_entreprise_forme|sql_user_fields:"u"}} {{:assign var="codes_don" value=$module.config.comptes_don|keys|map:strval}} {{:assign var="codes_don_abandon_frais" value=$module.config.comptes_don_abandon_frais|keys|map:strval}} {{:assign var="codes_don_nature" value=$module.config.comptes_don_nature|keys|map:strval}} {{:assign var="codes_especes" value=$module.config.comptes_especes|keys|map:strval}} {{:assign var="codes_cheques" value=$module.config.comptes_cheques|keys|map:strval}} {{if $id_user}} {{#select *, !champs_adresse AS adresse, !champs_nom AS nom FROM users u WHERE id = {$id_user|intval}; !champs_adresse=$champs_adresse !champs_nom=$champs_nom }} {{:assign var="default.address" value=$adresse|trim:" —"}} {{:assign var="default.name" value=$nom}} {{:assign var="default.entreprise_numero" from=$module.config.champ_entreprise_numero}} {{:assign var="default.entreprise_forme" from=$module.config.champ_entreprise_forme}} {{else}} {{:error message="Ce membre n'existe pas."}} {{/select}} {{:assign var="default.id_user" value=$id_user}} {{* Récupération des comptes et soldes *}} {{#select *, COUNT(DISTINCT id) AS nombre, GROUP_CONCAT(id_transaction) AS id_transaction, SUM(total) AS total, SUM(total_especes) AS total_especes, SUM(total_cheques) AS total_cheques, SUM(total_abandon_frais) AS total_abandon_frais, SUM(total_nature) AS total_nature, SUM(total_numeraire) AS total_numeraire, year, strftime('%d/%m/%Y', date) AS date FROM ( SELECT t.id_year AS id, GROUP_CONCAT(DISTINCT t.id) AS id_transaction, t.date, SUM(l1.credit) AS total, strftime('%Y', t.date) AS year, -- Paiements en espèces? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_especes WHERE l2.credit = 0 AND l2.id_transaction = t.id LIMIT 1) AS total_especes, -- Paiements en chèques? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_cheques WHERE l2.credit = 0 AND l2.id_transaction = t.id LIMIT 1) AS total_cheques, -- Dons en abandon de frais ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don_abandon_frais WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_abandon_frais, -- Dons en nature ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don_nature WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_nature, -- Dons en numeraire ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_numeraire FROM acc_transactions t INNER JOIN (SELECT DISTINCT tu.id_transaction, tu.id_user FROM acc_transactions_users tu WHERE tu.id_user = {$id_user}) tu ON tu.id_transaction = t.id INNER JOIN acc_transactions_lines l1 ON l1.id_transaction = t.id AND l1.debit = 0 INNER JOIN acc_accounts a1 ON a1.id = l1.id_account AND (a1.!codes_don_nature OR a1.!codes_don OR a1.!codes_don_abandon_frais) GROUP BY t.id ) GROUP BY year ORDER BY year; !codes_don_nature="code"|sql_where:"IN":$codes_don_nature !codes_don_abandon_frais="code"|sql_where:"IN":$codes_don_abandon_frais !codes_don="code"|sql_where:"IN":$codes_don !codes_especes="code"|sql_where:"IN":$codes_especes !codes_cheques="code"|sql_where:"IN":$codes_cheques }} {{:assign .="user_years.%d"|args:$id}} {{/select}} {{#foreach from=$user_years item="data"}} {{:assign total_money=$data.total|money_currency}} {{:assign var="user_select.%d"|args:$data.id value="%d (%s)"|args:$data.year:$total_money}} {{/foreach}} {{if $user_select|count}} {{* Reverse order so that last year is first *}} {{:assign user_select=$user_select|ksort|reverse}} {{/if}} {{elseif $_GET.id_transaction}} {{#select u.id AS id_user, t.id AS id_transactions, SUM(l1.credit) AS total, t.date AS date, !champs_nom AS name, !champs_adresse AS address, !champ_entreprise_numero AS entreprise_numero, !champ_entreprise_forme AS entreprise_forme, -- Paiements en espèces? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_especes WHERE l2.credit = 0 AND l2.id_transaction = t.id LIMIT 1) AS total_especes, -- Paiements en chèques? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_cheques WHERE l2.credit = 0 AND l2.id_transaction = t.id LIMIT 1) AS total_cheques, -- Dons en abandon de frais ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don_abandon_frais WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_abandon_frais, -- Dons en nature ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don_nature WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_nature, -- Dons en numeraire ? (SELECT SUM(l2.credit + l2.debit) FROM acc_transactions_lines l2 INNER JOIN acc_accounts a2 ON a2.id = l2.id_account AND a2.!codes_don WHERE l2.debit = 0 AND l2.id_transaction = t.id) AS total_numeraire FROM acc_transactions t LEFT JOIN acc_transactions_users tu ON tu.id_transaction = t.id LEFT JOIN users u ON u.id = tu.id_user INNER JOIN acc_transactions_lines l1 ON l1.id_transaction = t.id AND l1.debit = 0 INNER JOIN acc_accounts a1 ON a1.id = l1.id_account AND (a1.!codes_don_nature OR a1.!codes_don OR a1.!codes_don_abandon_frais) WHERE t.id = {$_GET.id_transaction|intval} ; !champs_nom=$champs_nom !champs_adresse=$champs_adresse !champ_entreprise_numero=$champ_entreprise_numero !champ_entreprise_forme=$champ_entreprise_forme !codes_don_nature="code"|sql_where:"IN":$codes_don_nature !codes_don_abandon_frais="code"|sql_where:"IN":$codes_don_abandon_frais !codes_don="code"|sql_where:"IN":$codes_don !codes_especes="code"|sql_where:"IN":$codes_especes !codes_cheques="code"|sql_where:"IN":$codes_cheques assign="default" }} {{else}} {{:error message="Numéro d'écriture inconnu"}} {{/select}} {{if $default.total_numeraire}} {{:assign var="default.numeraire" value=$default.total_numeraire|boolval}} {{if !$default.total_especes && !$default.total_cheques}} {{:assign var="default.autres" value=true}} {{/if}} {{/if}} {{elseif $_GET.type === 'blank'}} {{#years order="end_date DESC"}} {{:assign var="years_select.%d"|args:$id value=$label}} {{/years}} {{/if}} {{if !$dialog}} {{/if}} {{:form_errors}} {{if !$_GET.type}}
{{else}} {{/if}} {{:admin_footer}}