Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Liste: Bilan mensuel avec budgétaire

0000002973     -      24/03/2021

Ce rapport permet d'obtenir, par mois, les totaux ainsi que les budgets pour les comptes de résultat.
Pour chaque compte, nous reprenons :

  • le montant budgété (B)
  • le montant réalisé (R)
  • l'écart : différence entre le montant budgété et le montant réalisé (E)
  • le pourcentage de l’écart par rapport au budget ((100/B) * E) (%)
L'utilisation des catégories des comptes généraux permettront de regrouper les comptes selon certains critères.

Les comptes sont regroupés selon la valeur de la catégorie 1 définie dans chaque compte général.
Ensuite, pour chaque catégorie 1 différente, les comptes seront de nouveau regroupés par catégorie 2.
Les données seront ordonnées en fonction de la valeur de la colonne "ordre" des catégories de comptes généraux (voir exemple ci-dessous).
Chaque groupe disposera de son propre sous-total.

L'utilisation de ce rapport nécessite quelques adaptations :


  1. Modification de la base de données
    alter table CAT_GEN add ORDRE int not null default 0
    exec SP_ALTER_COLUMN 'CAT_GEN','NOM','char(50) not null'
    exec SP_ALTER_COLUMN 'GEN','G_CAT1','char(50) not null'
    exec SP_ALTER_COLUMN 'GEN','G_CAT2','char(50) not null'

  2. Ajouter un customizer permettant de gérer une nouvelle colonne dans les catégories des comptes généraux. Celle-ci permettra à l'utilisateur de définir l'ordre dans lequel les catégories sont imprimées. Il est basé sur l'exemple suivant.
    Voici le code :
    Zoom
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Linq;
    using MercatorApi;
    using MercatorExtensions;
    using MercatorUi;
    using MercatorDatabase;
    using System.Windows.Forms;

    namespace Param
    {
        public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer,
                                    MercatorUi.ICustomizers.IStringUpdater,
                                    MercatorUi.ICustomizers.ISqlCommandUpdater
        {

            public void FormLoadCustomize(Form WindowsForm)
            {
                if (WindowsForm is MercatorUi.Forms.Param.ParamCategoriesForm) // on est dans l'écran de paramétrage des catégories
                {
                    MercatorUi.Forms.Param.ParamCategoriesForm paramCategoriesForm = (MercatorUi.Forms.Param.ParamCategoriesForm)WindowsForm;
                    foreach (MercatorUi.GridPro.DataGridViewXPro grid in paramCategoriesForm.Grids)
                    {
                        grid.Columns.Add("ordre", "Ordre");
                        grid.Columns["ordre"].Width = 40;
                        grid.Columns["ordre"].DataPropertyName = "ordre";
                        grid.Columns["ordre"].SortMode = DataGridViewColumnSortMode.NotSortable;
                    }
                }
            }

            public string StringUpdate(string StringToModify)
            {
                if (StringToModify.Contains("CAT_GEN"))
                    StringToModify = StringToModify.Replace("id,nom", "id,nom,ordre");
                return StringToModify;
            }

            public void SqlCommandUpdate(System.Data.SqlClient.SqlCommand SqlCommandToModify, Form WindowsForm) // modification de la requête de sauvegarde des données
            {
                if (WindowsForm is MercatorUi.Forms.Param.ParamCategoriesForm) // on est bien dans l'écran de paramétrage des catégories
                {
                    if (SqlCommandToModify.Parameters.Contains("@type"))
                    {
                        if (!SqlCommandToModify.CommandText.Contains("ordre")) // cette modification ne doit être effectuée qu'une seule fois. Ensuite la requête modifiée est utilisée pour toutes les lignes de la grille ajoutées ou modifiées
                        {
                            SqlCommandToModify.CommandText = SqlCommandToModify.CommandText.Replace("nom=@nom", "nom=@nom,ordre=@ordre");
                            SqlCommandToModify.CommandText = SqlCommandToModify.CommandText.Replace("id,nom,type)", "id,nom,type,ordre)");
                            SqlCommandToModify.CommandText = SqlCommandToModify.CommandText.Replace(",@type)", ",@type,@ordre)");
                        }
                        MercatorUi.Forms.Param.ParamCategoriesForm paramCategoriesForm = (MercatorUi.Forms.Param.ParamCategoriesForm)WindowsForm;
                        string id = SqlCommandToModify.Parameters["@id"].Value.ToString(); // il nous faut connaître l'ID de la ligne afin de retrouver l'ordre correspondant à cette ligne
                        string type = SqlCommandToModify.Parameters["@type"].Value.ToString();
                        DataTable dt = (DataTable)paramCategoriesForm.Grids[(Int32.Parse(type) - 1)].DataSource; // derrière la grille, se trouve en fait une DataTable
                        DataRow[] foundRows = dt.Select(string.Format("id='{0}'", Api.UnquoteSql(id))); // recherche de l'ordre sur base de l'ID.
                        if (foundRows.Length > 0) // en principe, cette condition sera toujours remplie
                            SqlCommandToModify.Parameters.AddWithValue("@ordre", (foundRows[0]["ordre"] == DBNull.Value ? 0 : Convert.ToInt32(foundRows[0]["ordre"]))); // on ajoute le paramètre SQL @ordre avec la bonne valeur
                    }
                }
            }
        }
    }

  3. Exemple de configuration sommaire des catégories des comptes généraux :

    et des comptes généraux :


  4. Lorsque ces manipulations sont effectuées et que les données sont complétées, vous pouvez installer le rapport proprement dit.
    Pour installer celui-ci :
    • Dézipper le fichier ZIP ci-inclus dans le répertoire principal de Mercator
    • Relancer Mercator pour installer la nouvelle liste (installation rapide)
    Le document est accessible via le menu "Comptes généraux / Documents".

 

Exemple du résultat obtenu (format PDF) : 2973G Bilan mensuel



A télécharger : 0000002973.zip (10 Kb - 13/05/2020)