U bevindt zich nu op een technische pagina over de software Mercator. Deze pagina bevat specifieke informatie die bestemd is voor professionals van de software Mercator. Wenst u naar algemenere informatie over Mercator door te gaan?


   Deze vraag niet meer stellen

Lijst : maandelijks rapport met budget

0000002973     -      02-09-2020

Dit rapport wordt gebruikt om maandelijks de totalen en de begrotingen voor de resultatenrekeningen te verkrijgen.
Voor elk rekening nemen we :

  • het gebudgetteerde bedrag (B)
  • het gerealiseerde bedrag (R)
  • het verschil: verschil tussen het gebudgetteerde bedrag en het gerealiseerde bedrag (E)
  • het percentage van de afwijking van het budget ((100 / B) * E) (%)

Door het gebruik van categorieën in de algemene rekeningen kunnen rekenigen volgens bepaalde criteria worden gegroepeerd.
De rekeningen zijn gegroepeerd volgens de waarde van categorie 1 gedefinieerd in elke algemene rekening.
Vervolgens worden de rekeningen voor elke verschillende categorie 1 opnieuw gegroepeerd op categorie 2.
De gegevens worden gerangschikt volgens de waarde van de kolom "rangschikking" van de categorieën in de algemene rekeningen (zie voorbeeld hieronder).
Elke groep heeft zijn eigen subtotaal.

Het gebruik van dit rapport vereist enkele aanpassingen:

  1. Wijziging van de database
    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. Voeg een customizer toe om een nieuwe kolom in de categorieën van de algemene rekeningen te beheren. Hierdoor kan de gebruiker de volgorde bepalen waarin de categorieën worden afgedrukt. Het is gebaseerd op het volgende voorbeeld.
    Hier is de 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. Voorbeeld van overzichtsconfiguratie van categorieën van de algemene rekeningen : 

    En van de algemene rekeningen : 

  4. Wanneer deze bewerkingen zijn uitgevoerd en de gegevens zijn voltooid, kunt u het rapport zelf installeren.
    Om deze te installeren:
    • Pak het ZIP-bestand in de hoofddirectory van Mercator uit
    • Start Mercator opnieuw om de nieuwe lijst te installeren (snelle installatie)
    Het document is toegankelijk via het menu "Algemene Rekeningen / Documenten". 

 

Voorbeeld van het verkregen resultaat (pdf-formaat) : 2973G Maandelijks rapport



Te laden : 0000002973.zip (10 Kb - 13-05-2020)