Le module illustré ici permet de réappliquer les formules de prix (scripts de signalétiques) sur tous les articles ou les articles du filtre actif. Il s'exécute au départ d'un bouton ajouté dans la fiche "Articles".
Le code à placer dans ce bouton s'établit comme suit :
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Data.SqlClient;
namespace MercatorUi.MovableControls.ButtonsCodes
{
public static class Script
{
public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
{
MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)clickedButton.Form;
if (!sigForm.Sig.Write(sigForm)) // proposer une sauvegarde de la fiche en cours si nécessaire
return;
int n_record = 0;
using (MercatorSqlConnection oConnSql = new MercatorSqlConnection(Globals.RepData, true)) // établissement d'une connexion vers la DB SQL
{
if (oConnSql.Connection == null) // la connexion a été refusée.
return;
using (SqlTransaction transac = oConnSql.Connection.BeginTransaction()) // on va faire l'ensemble sous transaction. Ce n'est pas obligatoire : on peut passer null au lieu de transac à ScriptsApplyToSomeRecords
{
if (sigForm.Sig.ScriptsApplyToSomeRecords("select stock.*,guid,assembly from stock (NOLOCK) inner join assemblies on (assemblies.id='SCR-STOCK '+stock.s_calcul)" + (sigForm.Filter != "" ? " where " + sigForm.Filter : "") + " order by s_calcul", oConnSql, transac, true, true, ref n_record))
{
transac.Commit();
Dialogs.Stop(Api.Iif_langue(Globals.Langue, 14) + "\r\n" + _Divers.Iif_langue(Globals.Langue, "Records affected : ", "Gewijzigde rekords : ", "Enregistrements concernés : ") + n_record.ToString());
}
else
Api.SafeRollback(transac);
}
}
}
}
}