using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
namespace Booking
{
public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
{
public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
if (Globals.MercatorOptions.Contains("ANA") && (BookingEngine.Context == MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.BankFin)) // enkel indien financieel stuk vanuit CODA gegenereerd
BookingEngine.BeforeSave += BookingEngine_BeforeSave;
}
public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
if (Globals.MercatorOptions.Contains("ANA") && (BookingEngine.Context == MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.BankFin))
BookingEngine.BeforeSave -= BookingEngine_BeforeSave;
}
void BookingEngine_BeforeSave(object sender, MercatorUi.Engine.Cpta.BookingEngine.BeforeSaveEventArgs e)
{
MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
foreach (DataRow dr in bookingEngine.LIGNES_C.Rows)
{
StringBuilder fields_list = new StringBuilder();
for (int i_ana = 1; i_ana <= 9; i_ana++)
{
string s_ana = i_ana.ToString();
if ((Globals.Params["ANA_PLAN" + s_ana] != "") && bookingEngine.LIGNES_C.Columns.Contains("is_ana" + s_ana) && Convert.ToBoolean(dr["is_ana" + s_ana]))
fields_list.AppendFormat("g_id_ana{0},", i_ana);
}
if (fields_list.Length > 0)
{
fields_list.Length--; // de laatste komma verwijderen
DataSet ds = Api.Zselect(Globals.RepData, string.Format("select {0} from GEN (NOLOCK) where g_id=@g_id", fields_list), new MercatorSqlParam("@g_id", dr["compte"], SqlDbType.Char));
if ((ds != null) && (ds.Tables[0].Rows.Count > 0))
{
for (int i_ana = 1; i_ana <= 9; i_ana++)
{
string s_ana = i_ana.ToString();
if (ds.Tables[0].Columns.Contains("g_id_ana" + s_ana))
{
int n_ana = bookingEngine.AppendLineAna(i_ana, dr["dl_id"].ToString());
if (bookingEngine.InsertAnaFull(ds.Tables[0].Rows[0]["g_id_ana" + s_ana].ToString(), bookingEngine.LIGNES_C_ANA.Rows[n_ana], i_ana))
{
bookingEngine.LignesCanaRecords[n_ana].TOT_DV = Convert.ToDouble(dr["tot_dv"]);
bookingEngine.LignesCanaRecords[n_ana].TOT = Convert.ToDouble(dr["tot"]);
}
}
}
}
}
}
}
}
}