de poulpor78 » Mar 26 Jan 2010 15:06
Bonjour,
Voici la mienne :
SELECT F_DOCENTETE.DO_Piece AS ID, F_DOCENTETE.DO_Date AS [DATE], Min(F_DOCREGL.DR_Date) AS DUEDATE, F_REPRESENT.RE_Nom AS ACRONYM, F_DOCENTETE.DO_Tiers AS ACCOUNT, F_COMPTET.CT_Classement AS CUSTOMER, F_DOCENTETE.DO_Ref AS [REFERENCES], 'BILLING' AS SOURCE, FACTURATION.SommeDeDL_MontantTTC AS [TOTAL BILLED], Sum(IIf(IsNull([RC_Montant]),0,[RC_Montant])) AS RECEIVED, [TOTAL BILLED]-[RECEIVED] AS OUTSTANDING FROM (FACTURATION INNER JOIN ((F_DOCREGL INNER JOIN F_DOCENTETE ON F_DOCREGL.DO_Piece = F_DOCENTETE.DO_Piece) LEFT JOIN F_REGLECH ON F_DOCREGL.DR_No = F_REGLECH.DR_No) ON FACTURATION.DO_Piece = F_DOCENTETE.DO_Piece) LEFT JOIN (F_COMPTET LEFT JOIN F_REPRESENT ON F_COMPTET.RE_No = F_REPRESENT.RE_No) ON F_DOCENTETE.DO_Tiers = F_COMPTET.CT_Num GROUP BY F_DOCENTETE.DO_Piece, F_DOCENTETE.DO_Date, F_REPRESENT.RE_Nom, F_DOCENTETE.DO_Tiers, F_COMPTET.CT_Classement, F_DOCENTETE.DO_Ref, 'BILLING', FACTURATION.SommeDeDL_MontantTTC HAVING (((Sum(F_DOCREGL.DR_Regle))=0))
Union SELECT F_CREGLEMENT.RG_Piece AS ID, F_CREGLEMENT.RG_Date AS [DATE],F_CREGLEMENT.RG_Date AS DUEDATE, F_REPRESENT.RE_Nom AS ACRONYM, F_CREGLEMENT.CT_NumPayeur AS ACCOUNT, F_COMPTET.CT_Classement AS CUSTOMER, F_CREGLEMENT.RG_Libelle AS [REFERENCES], 'UNAPPLIED PAYMENTS' AS SOURCE, 0 AS [TOTAL BILLED], [RG_MONTANT]-IIf(IsNull([RC_Montant]),0,[RC_MONTANT]) AS RECEIVED, [TOTAL BILLED]-[RECEIVED] AS OUTSTANDING FROM ((F_CREGLEMENT LEFT JOIN F_REGLECH ON F_CREGLEMENT.RG_No = F_REGLECH.RG_No) LEFT JOIN F_COMPTET ON F_CREGLEMENT.CT_NumPayeur = F_COMPTET.CT_Num) LEFT JOIN F_REPRESENT ON F_COMPTET.RE_No = F_REPRESENT.RE_No WHERE (((F_CREGLEMENT.RG_Impute)=0)) ORDER BY ACRONYM, ACCOUNT, [DATE];
Attention, je suis une grosse tâche en SQL et j'ai généré cela sous access => à vérifier. Surtout que chez moi, on n'utilise pas tous les types de documents; cela pourrait ne pas correspondre pour un autre projet.
En gros, je tape sur la table des factures et j'en extrait les documents non lettrés, puis je tape sur la table des règlements pour les règlements non lettrés.
Et pour être tout à fait honnête, lorsqu'on n'a pas touché à cette requête depuis plus d'un an, on est perdu !
Dans mon code, j'extrais les comptes dans une feuille Excel puis je crée une autre feuille où je calcule par compte / représentant la balance âgée.
Poulpor