Page 2 of 2
Re: Type de fichier d'export
Posted: 12 Jan 2017, 20:48
by tintinux
Bonjour
C'est vrai que la clôture d'un exercice ne clôt pas automatiquement chacun des journaux.
Ce n'est pas nécessaire pour verrouiller la saisie, mais cela est désormais utile pour faire un export FEC conforme aux spécifications.
Il faut donc clôturer les journaux manuellement.
Dans la version 1.5 je tâcherai de réaliser cette clôture automatiquement.
Extraire les A Nouveau en premier doit être possible avec un tri dans la requête SQL, reste à trouver comment...
Mais pour l'instant cela ne semble que suggéré et pas requis explicitement par les spécifications.
Re: Type de fichier d'export
Posted: 12 Jan 2017, 21:18
by Patrice
Bonsoir Tintinux,
Merci pour cette réponse aussi claire que précise.
A+
Re: Type de fichier d'export
Posted: 13 Jan 2017, 17:19
by gastounet
Bonjour Patrice
Vous pourriez essayer cette requête SQL à la place :
Code: Select all
SELECT
j.Code AS JournalCode,
j.Name AS JournalLib,
@i:=@i+1 as EcritureNum,
date_format(m.MoveDate, '%Y%m%d') AS EcritureDate,
a.Account AS CompteNum,
a.Name AS CompteLib,
NULL AS CompAuxNum,
NULL AS CompAuxLib,
m.Id AS PieceRef,
date_format(m.MoveDate, '%Y%m%d') AS PieceDate,
m.MoveText AS EcritureLib,
CASE WHEN ml.Amount > 0 THEN
REPLACE(TRUNCATE(ml.Amount/100,2),'.',',') ELSE NULL END AS Debit,
CASE WHEN ml.Amount < 0 THEN
REPLACE(-TRUNCATE(ml.Amount/100,2),'.',',') ELSE NULL END AS Credit,
r.ReconciliationString AS EcritureLet,
date_format(r.UpdateDate, '%Y%m%d %H:%i:%s') AS DateLet,
date_format(j.CloseDate, '%Y%m%d %H:%i:%s') AS ValidDate,
NULL AS MontantDevise,
NULL AS IDevise
FROM Moves m
JOIN Journals j ON j.Id=m.JournalId
JOIN MoveLines ml ON ml.MoveNumber=m.Id
JOIN Accounts a ON a.id=ml.AccountId
JOIN FiscalYears f ON m.MoveDate Between f.StartDate and f.EndDate
LEFT JOIN Reconciliations r ON r.MoveLineId=ml.MoveLineId
JOIN (SELECT @i:=0) cpt
WHERE m.MoveDate BETWEEN '2010-01-01' AND '2017-12-31'
ORDER BY CASE WHEN f.ANouveauMoveId=m.Id THEN 1 ELSE 2 END, 3;
J'y ai ajouté une jointure avec les périodes fiscales qui peuvent nous dire si une écriture est un à nouveau ou pas (quelque soit son journal)
On trie selon ce critère calculé, puis ensuite selon le 3ème champ qui est le numéro d'écriture.
Il est suggéré de trier sur la date de validation, mais en l'état, tel que c'est fait dans Gestinux, toutes les dates de validation risquent d'être identiques. Donc ça ne servira pas à grand chose.
Peut-être qu'à terme il faudra revoir cette histoire de date de validation.
Enfin vous pouvez remplacer le chiffre 3 à la fin par le n° d'autre de n'importe quel(s) autre(s) champ.
Je n'ai testé que la validité sur la base d'essai, mais je n'ai pas accès aujourd'hui à de vraies données comptables assez riches. Pouvez-vous essayer et me dire si ça convient mieux ?
Bien à vous
G.N
Re: Type de fichier d'export
Posted: 13 Jan 2017, 20:18
by Patrice
Bonsoir gastounet,
Je n'arrive pas à sortir un fichier avec la requête indiquée
(copiée/collée)
le message est le suivant:
Code: Select all
Une erreur imprévue est survenue.
Merci de la signaler en cliquant sur le bouton "Aide".
List index (0) out of bounds
Merci de vous intéresser à cette question.
Re: Type de fichier d'export
Posted: 18 Jan 2017, 09:28
by tintinux
Bonjour,
La requête de Gastounet ne peut pas fonctionner dans Gestinux, seulement dans un client MySql.
En effet, les dates de début et de fin sont "en dur" ( '2010-01-01' et '2017-12-31' ) et Gestinux en a besoin sous forme de paramètres (:StartDate et :EndDate)
Il faudrait qu'elle soit :
Code: Select all
SELECT
j.Code AS JournalCode,
j.Name AS JournalLib,
@i:=@i+1 as EcritureNum,
date_format(m.MoveDate, '%Y%m%d') AS EcritureDate,
a.Account AS CompteNum,
a.Name AS CompteLib,
NULL AS CompAuxNum,
NULL AS CompAuxLib,
m.Id AS PieceRef,
date_format(m.MoveDate, '%Y%m%d') AS PieceDate,
m.MoveText AS EcritureLib,
CASE WHEN ml.Amount > 0 THEN
REPLACE(TRUNCATE(ml.Amount/100,2),'.',',') ELSE NULL END AS Debit,
CASE WHEN ml.Amount < 0 THEN
REPLACE(-TRUNCATE(ml.Amount/100,2),'.',',') ELSE NULL END AS Credit,
r.ReconciliationString AS EcritureLet,
date_format(r.UpdateDate, '%Y%m%d %H:%i:%s') AS DateLet,
date_format(j.CloseDate, '%Y%m%d %H:%i:%s') AS ValidDate,
NULL AS MontantDevise,
NULL AS IDevise
FROM Moves m
JOIN Journals j ON j.Id=m.JournalId
JOIN MoveLines ml ON ml.MoveNumber=m.Id
JOIN Accounts a ON a.id=ml.AccountId
JOIN FiscalYears f ON m.MoveDate Between f.StartDate and f.EndDate
LEFT JOIN Reconciliations r ON r.MoveLineId=ml.MoveLineId
JOIN (SELECT @i:=0) cpt
WHERE m.MoveDate BETWEEN :StartDate AND :EndDate
ORDER BY CASE WHEN f.ANouveauMoveId=m.Id THEN 1 ELSE 2 END, 3;
Dans une future version, on verra si on ne peut pas mettre un message plus clair dans ce cas.
A part ça elle me semble bien répondre à la demande de trier avec les A nouveau en premier.
Re: Type de fichier d'export
Posted: 19 Jan 2017, 11:05
by Patrice
Bonjour,
En remplaçant la ligne en cause par :
WHERE m.MoveDate BETWEEN :StartDate AND :EndDate
On obtient bien tous les enregistrements d'un exercice, cependant je n'ai pas
les ANouveaux en premier.
ORDER BY CASE WHEN f.ANouveauMoveId=m.Id THEN 1 ELSE 2 END, 3;
me donne bien un tri par le numéro d'écriture
ORDER BY CASE WHEN f.ANouveauMoveId=m.Id THEN 1 ELSE 2 END, 4;
me donne bien un tri par la date d'écriture, mais j'ai des écritures avant les ANouveaux dans différents journaux.
Je continue de chercher pourquoi mais mes connaissance en SQL sont bien minces ....
Remerciements.
Re: Type de fichier d'export
Posted: 24 Jan 2017, 14:23
by gastounet
Bonjour
Effectivement, ce n'était pas bon, désolé !
Voici une requête qui devrait fonctionner en mettant les à nouveau en premier :
Code: Select all
/* Version du 23/01/2017 avec Anouveau en premier */
SELECT
j.Code AS JournalCode,
j.Name AS JournalLib,
@i:=@i + 1 as EcritureNum,
date_format(m.MoveDate, '%Y%m%d') AS EcritureDate,
a.Account AS CompteNum,
a.Name AS CompteLib,
NULL AS CompAuxNum,
NULL AS CompAuxLib,
m.Id AS PieceRef,
date_format(m.MoveDate, '%Y%m%d') AS PieceDate,
m.MoveText AS EcritureLib,
CASE
WHEN
ml.Amount > 0
THEN
REPLACE(TRUNCATE(ml.Amount / 100, 2),
'.',
',')
ELSE NULL
END AS Debit,
CASE
WHEN
ml.Amount < 0
THEN
REPLACE(- TRUNCATE(ml.Amount / 100, 2),
'.',
',')
ELSE NULL
END AS Credit,
r.ReconciliationString AS EcritureLet,
date_format(r.UpdateDate, '%Y%m%d %H:%i:%s') AS DateLet,
date_format(j.CloseDate, '%Y%m%d %H:%i:%s') AS ValidDate,
NULL AS MontantDevise,
NULL AS IDevise
FROM
Moves m
JOIN
Journals j ON j.Id = m.JournalId
JOIN
MoveLines ml ON ml.MoveNumber = m.Id
JOIN
Accounts a ON a.id = ml.AccountId
LEFT JOIN
Reconciliations r ON r.MoveLineId = ml.MoveLineId
JOIN
(SELECT @i:=0) cpt
WHERE
m.MoveDate BETWEEN :StartDate AND :EndDate
ORDER BY CASE
WHEN
m.Id in (Select
Max(AnouveauMoveId)
From
FiscalYears f
where
f.StartDate < :StartDate)
THEN
1
ELSE 2
END , 3;
Bien à vous,
G.N
Re: Type de fichier d'export
Posted: 26 Jan 2017, 14:49
by Patrice
Bonjour gastounet,
Cette requête fonctionne sans problème,
j'ai fais l'essai sur les 3 exercices clos et j'ai bien les A Nouveau en premier
(sauf évidemment sur le 1er exercice qui n'a pas d'ANouveau).
Je vais donc l'utiliser désormais.
Encore merci à vous.
Salutations.