using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Data;
using
MercatorApi;
using
MercatorUi;
using
System.Windows.Forms;
using
System.Data.SqlClient;
namespace
SigStock
{
public
class
Customizer
: MercatorUi.ICustomizers.IFormLoadCustomizer
, MercatorUi.ICustomizers.IFormClosedCustomizer
, MercatorUi.ICustomizers.IStringUpdater
, MercatorUi.ICustomizers.IFormValidateCustomizer
{
public
string
StringUpdate(
string
StringToModify)
//Wijziging van de opdracht van het beschikbaarheidsrooster om rekening te houden met een nieuwe kolom.
{
if
(Api.StrExtract(StringToModify,
"<ID>"
,
"</ID>"
) ==
"STOCKDISPO"
)
// Dit laat toe enkel de opdracht van het beschikbaarheidsrooster te wijzigen, en niet de opdrachten van de andere roosters van het informatiebestand "Artikels"
{
StringToModify = StringToModify.Replace(
"dispo.stockmax,"
,
"dispo.stockmax,dispo.loc,dispo.loc as loc_old,"
);
StringToModify = StringToModify.Replace(
"sum(stockmax),"
,
"sum(stockmax),'','',"
);
}
return
StringToModify;
}
public
void
FormLoadCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
List
<Control> l = sigForm.FindMovableControlsByType(
typeof
(MercatorUi.Forms.Sig.SigGrids.StockDispo));
if
(l.Count == 0)
return
;
MercatorUi.Forms.Sig.SigGrids.StockDispo stockDispo = (MercatorUi.Forms.Sig.SigGrids.StockDispo)l[0];
stockDispo.AfterColumnsCreated +=
new
MercatorUi.MovableControls.MovableGrid.AfterColumnsCreatedHandler(stockDispo_AfterColumnsCreated);
//Pour ajouter la nouvelle colonne
stockDispo.AfterWrite +=
new
MercatorUi.MovableControls.MovableGrid.AfterWriteHandler(stockDispo_AfterWrite);
//Pour aller écrire dans la DB les modifications
}
public
void
FormClosedCustomize(System.Windows.Forms.Form WindowsForm)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)WindowsForm;
List
<Control> l = sigForm.FindMovableControlsByType(
typeof
(MercatorUi.Forms.Sig.SigGrids.StockDispo));
if
(l.Count == 0)
return
;
MercatorUi.Forms.Sig.SigGrids.StockDispo stockDispo = (MercatorUi.Forms.Sig.SigGrids.StockDispo)l[0];
stockDispo.AfterColumnsCreated -=
new
MercatorUi.MovableControls.MovableGrid.AfterColumnsCreatedHandler(stockDispo_AfterColumnsCreated);
stockDispo.AfterWrite -=
new
MercatorUi.MovableControls.MovableGrid.AfterWriteHandler(stockDispo_AfterWrite);
}
private
void
stockDispo_AfterColumnsCreated(
Object
sender,
EventArgs
e)
// De kolom "Lokalisatie" toevoegen
{
MercatorUi.Forms.Sig.SigGrids.StockDispo stockDispo = (MercatorUi.Forms.Sig.SigGrids.StockDispo)sender;
stockDispo.Grid.Columns.Add(
"loc"
, _Divers.Iif_langue(Globals.Langue,
"Localisation"
,
"Localisation"
,
"Localisation"
));
stockDispo.Grid.Columns[
"loc"
].Width = 85;
stockDispo.Grid.Columns[
"loc"
].ReadOnly =
false
;
stockDispo.Grid.Columns[
"loc"
].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
stockDispo.Grid.Columns[
"loc"
].DataPropertyName =
"loc"
;
stockDispo.Grid.Columns.Add(
"loc_old"
,
""
);
stockDispo.Grid.Columns[
"loc_old"
].Width = 0;
stockDispo.Grid.Columns[
"loc_old"
].ReadOnly =
true
;
stockDispo.Grid.Columns[
"loc_old"
].DataPropertyName =
"loc_old"
;
stockDispo.Grid.Columns[
"loc_old"
].Visible =
false
;
}
private
void
stockDispo_AfterWrite(
object
sender,
EventArgs
e)
// Om de wijzigingen aan de nieuwe kolom in de DB in te voeren
{
MercatorUi.Forms.Sig.SigGrids.StockDispo stockDispo = (MercatorUi.Forms.Sig.SigGrids.StockDispo)sender;
MercatorUi.Forms.Sig.SigForm formStock = (MercatorUi.Forms.Sig.SigForm)stockDispo.Form;
if
(stockDispo.LastIdFilled == formStock.DataSourceRow[
"s_id"
].ToString())
{
foreach
(DataGridViewRow row
in
stockDispo.Grid.Rows)
{
if
(row.Cells[
"loc"
].Value.ToString().Trim() != row.Cells[
"loc_old"
].Value.ToString().Trim())
{
SqlCommand oCommand =
new
SqlCommand(
"update dispo set loc = @loc where id_stock = @id_stock and id_magasin = @id_magasin"
);
oCommand.Parameters.Add(
new
SqlParameter(
"@id_stock"
, SqlDbType.Char)).Value = formStock.DataSourceRow[
"s_id"
].ToString();
oCommand.Parameters.Add(
new
SqlParameter(
"@id_magasin"
, SqlDbType.Char)).Value = row.Cells[
"id"
].Value;
oCommand.Parameters.Add(
new
SqlParameter(
"@loc"
, SqlDbType.Char)).Value = row.Cells[
"loc"
].Value;
Api.SqlExec(Globals.RepData, oCommand);
}
}
}
}
}
}