using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using MercatorDatabase;
namespace SigFou
{
public class Customizer : MercatorUi.ICustomizers.ISigCreated
{
public void SigCreated(MercatorUi.Sig.Sig Sig)
{
Sig.PenguinServerBeforeValidateData += Sig_PenguinServerBeforeValidateData;
}
void Sig_PenguinServerBeforeValidateData(object sender, MercatorUi.Sig.Sig.PenguinServerBeforeValidateDataEventArgs e)
{
MercatorUi.Globals.ApiLogDelegate.Invoke(e.Data["F_NOM"].ToString() + " -> " + e.Data["F_NUM_TVA"].ToString());
MercatorUi.Sig.Sig Sig = (MercatorUi.Sig.Sig)sender;
if (string.IsNullOrWhiteSpace(e.Data["F_NOM"].ToString()) && !string.IsNullOrWhiteSpace(e.Data["F_NUM_TVA"].ToString()))
{
string vatno = e.Data["F_NUM_TVA"].ToString().Trim().ToUpper();
if ((vatno.Length > 5) && (
vatno.StartsWith("AT") || vatno.StartsWith("BE") || vatno.StartsWith("BG") || vatno.StartsWith("CY") ||
vatno.StartsWith("CZ") || vatno.StartsWith("DE") || vatno.StartsWith("DK") || vatno.StartsWith("EE") ||
vatno.StartsWith("EL") || vatno.StartsWith("ES") || vatno.StartsWith("FI") || vatno.StartsWith("FR") ||
vatno.StartsWith("HU") || vatno.StartsWith("IE") || vatno.StartsWith("IT") ||
vatno.StartsWith("LT") || vatno.StartsWith("LU") || vatno.StartsWith("LV") || vatno.StartsWith("MT") ||
vatno.StartsWith("NL") || vatno.StartsWith("PL") || vatno.StartsWith("PT") || vatno.StartsWith("RO") ||
vatno.StartsWith("SE") || vatno.StartsWith("SI") || vatno.StartsWith("SK")))
{
MercatorController.xFunctions.xViesRet xViesRet = MercatorController.xFunctions.xNumTvaVies(vatno);
if (xViesRet == null)
{
e.BlockingMessage = ($"Erreur durant l'interrogation du service Vies pour vérification du numéro de TVA '{vatno}' !\r\n\r\n{Api.LastError}");
return;
}
if (!xViesRet.Valid)
{
e.BlockingMessage = ($"Le n° de TVA '{vatno}' n'existe pas !");
return;
}
else if (string.IsNullOrWhiteSpace(xViesRet.Name))
{
e.BlockingMessage = ($"Le n° de TVA '{vatno}' existe mais aucun nom ne lui est associé !");
return;
}
e.Data["F_NOM"] = xViesRet.Name;
e.Data["F_ADRESSE"] = Api.Left(xViesRet.Address, Sig.FieldList["F_ADRESSE"].Length);
e.Data["F_ADRESSE2"] = Api.Left(xViesRet.Address2, Sig.FieldList["F_ADRESSE2"].Length);
e.Data["F_CODEP"] = xViesRet.PostalCode;
e.Data["F_VILLE"] = xViesRet.City;
}
}
}
}
}