using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;
namespace Intrastat
{
public class Customizer : MercatorUi.ICustomizers.IStringUpdater, MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
public string StringUpdate(string StringToModify)
{
// modifier la requête SQL pour avoir une colonne supplémentaire avec le pays d'origine du produit (stocké dans S_PAYS_ORI)
string id = Api.StrExtract(StringToModify, "<ID>", "</ID>");
if (id.StartsWith("INTRASTAT")) // INTRASTAT_V pour les expéditions et INTRASTAT_A pour les arrivées
StringToModify = StringToModify.Replace(",stock.s_intrastv as i_code", ",(case when lignes_v.s_pays_ori<>'' then lignes_v.s_pays_ori else i_pays end) as pays_ori,stock.S_INTRASTV as i_code") // dans les select
.Replace(",stock.s_intrastv", ",(case when lignes_v.s_pays_ori<>'' then lignes_v.s_pays_ori else i_pays end),stock.s_intrastv") // dans les clauses group
.Replace(",stock.s_intrasta as i_code", ",(case when lignes_a.s_pays_ori<>'' then lignes_a.s_pays_ori else i_pays end) as pays_ori,stock.S_INTRASTA as i_code") // dans les select
.Replace(",stock.s_intrasta", ",(case when lignes_a.s_pays_ori<>'' then lignes_a.s_pays_ori else i_pays end),stock.s_intrasta") // dans les clauses group
.Replace(",lignes_istat.code as i_code", ",pieds_c.i_pays as pays_ori,lignes_istat.code as i_code"); // pour la partie de la requête qui concerne la compta
return StringToModify;
}
public void FormLoadCustomize(System.Windows.Forms.Form WindowsForm)
{
if (WindowsForm is MercatorUi.Forms.Istat.IstatDataForm)
{
MercatorUi.Forms.Istat.IstatDataForm istatDataForm = (MercatorUi.Forms.Istat.IstatDataForm)WindowsForm;
// Ajouter la colonne PAYS_ORI dans la grille
MercatorUi.GridPro.DataGridViewUpperCaseTextBoxColumn colPays = new MercatorUi.GridPro.DataGridViewUpperCaseTextBoxColumn();
colPays.Name = "pays_ori";
colPays.HeaderText = _Divers.Iif_langue(Globals.Langue, "Land", "Land", "Pays");
colPays.Width = 40;
colPays.DataPropertyName = "pays_ori";
istatDataForm.Grid.Columns.Add(colPays);
istatDataForm.LineAddedToFile += new MercatorUi.Forms.Istat.IstatDataForm.LineAddedToFileEventHandler(istatDataForm_LineAddedToFile);
}
}
public void FormClosedCustomize(System.Windows.Forms.Form WindowsForm)
{
if (WindowsForm is MercatorUi.Forms.Istat.IstatDataForm)
{
MercatorUi.Forms.Istat.IstatDataForm istatDataForm = (MercatorUi.Forms.Istat.IstatDataForm)WindowsForm;
istatDataForm.LineAddedToFile -= new MercatorUi.Forms.Istat.IstatDataForm.LineAddedToFileEventHandler(istatDataForm_LineAddedToFile);
}
}
void istatDataForm_LineAddedToFile(object sender, MercatorUi.Forms.Istat.IstatDataForm.LineAddedToFileEventArgs e)
{
// sur chaque ligne du fichier, on ajoute une tabulation et une colonne supplémentaire avec le pays d'origine
e.FileContent.Append("\t" + e.Dr["pays_ori"].ToString());
}
}
}