Lijst : maandelijks rapport met budget

0000002973     -      24-03-2021

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) // wijzigen van verzoek voor opslaan gegevens
            {
                if (WindowsForm is MercatorUi.Forms.Param.ParamCategoriesForm) // we zijn in het parametreringscherm van de categorieën
                {
                    if (SqlCommandToModify.Parameters.Contains("@type"))
                    {
                        if (!SqlCommandToModify.CommandText.Contains("ordre")) // deze wijziging hoeft maar één keer te worden doorgevoerd. Vervolgens wordt de gewijzigde query gebruikt voor alle rijen van het raster die zijn toegevoegd of gewijzigd
                        {
                            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(); // we hebben het lijn ID nodig om de volgorde te vinden die overeenkomt met deze lijn
                        string type = SqlCommandToModify.Parameters["@type"].Value.ToString();
                        DataTable dt = (DataTable)paramCategoriesForm.Grids[(Int32.Parse(type) - 1)].DataSource; // achter het raster is een DataTable
                        DataRow[] foundRows = dt.Select(string.Format("id='{0}'", Api.UnquoteSql(id))); // de volgorde zoeken op basis van het ID
                        if (foundRows.Length > 0) // in principe wordt deze voorwaarde altijd voldaan
                            SqlCommandToModify.Parameters.AddWithValue("@ordre", (foundRows[0]["ordre"] == DBNull.Value ? 0 : Convert.ToInt32(foundRows[0]["ordre"]))); // SQL-parameter @ordre toevoegen met de juiste waarde
                    }
                }
            }
        }
    }
  3. Voorbeeld van overzichtsconfiguratie van categorieën van de algemene rekeningen : 

    List_G_CAT1_nl List_G_CAT2_nl

    En van de algemene rekeningen : 

    List_GEN_nl

  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)