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)
{
// SQL-opdracht wijzigen om een bijkomende kolom met de incoterms te hebben
string id = Api.StrExtract(StringToModify, "<ID>", "</ID>");
if (id.StartsWith("INTRASTAT")) // INTRASTAT_V voor uitgaande goederen en INTRASTAT_A voor inkomende goederen
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;
// Voeg de kolom INCOTERMS toe in de rooster
List<MercatorUi._BaseClasses.MercatorComboItem> l = new List<MercatorUi._BaseClasses.MercatorComboItem>();
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("", ""));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Kost en vracht", "CFR"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Kost, verzekering en vracht", "CIF"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Vrachtvrij inclusief verzekering tot tot een bepaalde bestemming", "CIP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Vrachtvrij inclusief verzekering tot een overeengekomen bestemming", "CPT"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco terminal", "DAT"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco bestemming", "DAP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco inclusief rechten", "DDP"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Af fabriek", "EXW"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco langszij schip", "FAS"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Franco vervoerder", "FCA"));
l.Add(new MercatorUi._BaseClasses.MercatorComboItem("Vrij aan boord", "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)
{
// nagaan of de incoterms van deze lijn niet leeg zijn
if (e.Dr["incoterms"].ToString() == "")
{
e.Cancel = true; // -> de opdracht geven om het genereren van het bestand te stoppen
MercatorUi.Dialogs.Stop(string.Format("De incoterms van de lijn {0} zijn leeg!", e.NumLine));
}
else
{
// op elke lijn van het bestand wordt een tabulatie en een extra kolom met de incoterms toegevoegd
e.FileContent.Append("\t" + e.Dr["incoterms"].ToString());
}
}
}
}