Le paramétrage illustré ici permet d'afficher l'encours du client dans une vente et d'accéder à son extrait de compte, directement depuis la vente, sans passer par la fiche du client.
![encours](/mercator/std/info_gen/encours.jpg)
La première partie de ce paramétrage consiste en la mise en place d'une expression, dont la propriété RefreshedBy contiendra l'ID du TextBox dont la source est ID_CLI. Le code de cette expression est le suivant :
public static String Evaluate(MercatorUi.MovableControls.MovableExpression currentExpression)
{
// enter your customized code here
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentExpression.Form;
if (billingForm.BillingEngine.CLI == null)
{
currentExpression.ButtonCustom.Enabled = false;
return "0.00";
}
else
{
currentExpression.ButtonCustom.Enabled = true;
return string.Format("{0:### ##0.00}", billingForm.BillingEngine.CliRecord.C_ENCOURS);
}
}
Ensuite, il faut placer ce customizer Billing en adaptant dans le code la valeur de idExpression par l'ID de l'expression ajoutée ci-dessus. Ce customizer place un bouton dans l'expression, qui permettra l'accès à l'extrait de compte.
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
namespace Billing
{
public class Customizer : MercatorUi.ICustomizers.IFormLoadCustomizer, MercatorUi.ICustomizers.IFormClosedCustomizer
{
private const string idExpression = "1QZ1FZ3457";
private const string source = "C_ENCOURS";
public void FormLoadCustomize(Form form)
{
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)form;
if (billingForm.MovableControls.ContainsKey(idExpression))
{
MercatorUi.MovableControls.MovableExpression movableExpression = (MercatorUi.MovableControls.MovableExpression)billingForm.MovableControls[idExpression];
movableExpression.ButtonCustom.Visible = true;
movableExpression.ButtonCustom.Shortcut = DevComponents.DotNetBar.eShortcut.CtrlEnter;
movableExpression.ButtonCustom.Image = _Divers.ImageFromResource("MercatorUi.MovableControls.Images.tinydetails.png");
movableExpression.ButtonCustomClick += MovableExpression_ButtonCustomClick;
}
}
public void FormClosedCustomize(Form form)
{
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)form;
if (billingForm.MovableControls.ContainsKey(idExpression))
{
MercatorUi.MovableControls.MovableExpression movableExpression = (MercatorUi.MovableControls.MovableExpression)billingForm.MovableControls[idExpression];
movableExpression.ButtonCustomClick -= MovableExpression_ButtonCustomClick;
}
}
private void MovableExpression_ButtonCustomClick(object sender, System.EventArgs e)
{
MercatorUi.MovableControls.MovableExpression movableExpression = (MercatorUi.MovableControls.MovableExpression)sender;
MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)movableExpression.Form;
MercatorUi.Sig.SigCli sigCli = (MercatorUi.Sig.SigCli)MercatorUi.Sig._SigsStatic.SigByModule(MercatorUi.Sig._SigEnum.CLI);
if (billingForm.BillingEngine.CLI != null)
sigCli.Statement(billingForm.BillingEngine.CliRecord.C_ID, source);
}
}
}
Cette programmation est compatible avec la gestion de l'encours par dossier comptable. Il suffit de remplacer C_ENCOURS dans l'expression et dans le customizer par le champ C_ENCOURS_xxx souhaité.