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.
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é.