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 les incoterms
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("unitesuppl,", "unitesuppl,incoterms,");
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 INCOTERMS dans la grille
List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>();
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("", ""));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Coût et fret", "CFR"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Coût, assurance et fret", "CIF"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Port payé, assurance comprise jusqu'à un point de destination", "CIP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Port payé jusqu'à un point de destination convenu", "CPT"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Rendu à terminal", "DAT"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Rendu à destination", "DAP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Rendu droits acquittés", "DDP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("A l'usine", "EXW"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco le long du navire", "FAS"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco transporteur", "FCA"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco à bord", "FOB"));
DevComponents.DotNetBar.Controls.DataGridViewComboBoxExColumn colIncoterms = new DevComponents.DotNetBar.Controls.DataGridViewComboBoxExColumn();
colIncoterms.Name = "incoterms";
colIncoterms.HeaderText = "Incoterms";
colIncoterms.Width = 150;
colIncoterms.DataPropertyName = "incoterms";
colIncoterms.DisplayMember = "Description";
colIncoterms.ValueMember = "Id";
colIncoterms.DataSource = l;
colIncoterms.DropDownStyle = ComboBoxStyle.DropDownList;
istatDataForm.Grid.Columns.Add(colIncoterms);
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)
{
// vérifier que les incoterms de cette ligne ne sont pas vides
if (e.Dr["incoterms"].ToString() == "")
{
e.Cancel = true; // -> donner l'ordre d'arrêter la génération du fichier
MercatorUi.Dialogs.Stop(string.Format("Les incoterms de la ligne {0} sont vides !", e.NumLine));
}
else
{
// sur chaque ligne du fichier, on ajoute une tabulation et une colonne supplémentaire avec les incoterms
e.FileContent.Append("\t" + e.Dr["incoterms"].ToString());
}
}
}
}