using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using MercatorUi;
using MercatorApi;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace SigStock
{
     public class Customizer : MercatorUi.ICustomizers. IFormLoadCustomizer, MercatorUi.ICustomizers. IFormClosedCustomizer ,
                              MercatorUi.ICustomizers. IStringUpdater
                                
    {
         public string StringUpdate( string StringToModify)
        {            
             if ( Api .StrExtract(StringToModify, "<ID>" , "</ID>" ) == "STOCKDISPO" ) // ceci permet de ne modifier que la requête de la grille de disponible, sans modifier les requêtes des autres grilles du signalétique article
            {
                StringToModify = StringToModify.Replace( "dispo.qv_3," , "dispo.qv_3,isnull((select sum(q) as ret from lignes_v,pieds_v where (id_article=dispo.id_stock) and (pieds_v.id_depot=magasins.id) and ((pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece)) and (pieds_v.type=4)),0) as qv_4," );
                StringToModify = StringToModify.Replace( "dispo.qa_3," , "dispo.qa_3,isnull((select sum(q) as ret from lignes_a,pieds_a where (id_article=dispo.id_stock) and (pieds_a.id_depot=magasins.id) and ((pieds_a.id=lignes_a.id) and (pieds_a.journal=lignes_a.journal) and (pieds_a.piece=lignes_a.piece)) and (pieds_a.type=4)),0) as qa_4," );
                StringToModify = StringToModify.Replace( "sum(qv_3)," , "sum(qv_3),sum(qv_4) as tot_qv_4," );
                StringToModify = StringToModify.Replace( "sum(qa_3)," , "sum(qa_3),sum(qa_4) as tot_qa_4," );
            }            
             return StringToModify;
        }            

         public void FormLoadCustomize( Form form)
        {                  
            MercatorUi.Forms.Sig. SigForm SigForm = (MercatorUi.Forms.Sig. SigForm )form;            
             List < Control > controls = SigForm.FindMovableControlsByType( typeof (MercatorUi.Forms.Sig.SigGrids. StockDispo )); // on cherche la grille par son type de classe
             if (controls.Count > 0)
            {
                MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )controls[0];
                GridDispo.AfterColumnsCreated += new MercatorUi.MovableControls. MovableGrid . AfterColumnsCreatedHandler (GridDispo_AfterColumnsCreated);            
            }                        
        }

         public void FormClosedCustomize( Form form) // nécessaire pour relacher l'évènement GridDispo.AfterColumnsCreated
        {            
            MercatorUi.Forms.Sig. SigForm SigForm = (MercatorUi.Forms.Sig. SigForm )form;
             List < Control > controls = SigForm.FindMovableControlsByType( typeof (MercatorUi.Forms.Sig.SigGrids. StockDispo ));   // on cherche la grille par son type de classe
             if (controls.Count > 0)
            {
                MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )controls[0];
                GridDispo.AfterColumnsCreated -= new MercatorUi.MovableControls. MovableGrid . AfterColumnsCreatedHandler (GridDispo_AfterColumnsCreated);
            }
        }

         void GridDispo_AfterColumnsCreated( object sender, EventArgs e)
        {
            MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )sender;            
            GridDispo.Grid.Columns.Add( "Devis" , "Devis" );
            GridDispo.Grid.Columns[ "Devis" ].Width = 50;
            GridDispo.Grid.Columns[ "Devis" ].DataPropertyName = "qv_4" ;
            GridDispo.Grid.Columns[ "Devis" ].ReadOnly = true ;
            GridDispo.Grid.Columns[ "Devis" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment .MiddleRight;            
            GridDispo.Grid.Columns[ "Devis" ].DefaultCellStyle.Format = MercatorUi. Globals .PictQ;
            
            GridDispo.Grid.Columns.Add( "PrepCom" , "PrepCom" );
            GridDispo.Grid.Columns[ "PrepCom" ].Width = 50;
            GridDispo.Grid.Columns[ "PrepCom" ].DataPropertyName = "qa_4" ;
            GridDispo.Grid.Columns[ "PrepCom" ].ReadOnly = true ;
            GridDispo.Grid.Columns[ "PrepCom" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment .MiddleRight;
            GridDispo.Grid.Columns[ "PrepCom" ].DefaultCellStyle.Format = MercatorUi. Globals .PictQ;
        }
    }
}