Le principe de la solution est le suivant :
Si le compte d'escompte (paramétré au niveau de "Outils / Options / Comptabilité") requiert pour le plan 1 un compte analytique obligatoire, et que le compte analytique par défaut est spécifié, à la validation de la pièce comptable, une ligne est ajoutée dans lignes_c_ana pour ce compte.
Voici un customizer à mettre dans la séquence comptable :
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows.Forms;
using MercatorApi;
using MercatorUi;
namespace Booking
{
public class Customizer : MercatorUi.ICustomizers.IBookingEngineCreated, MercatorUi.ICustomizers.IBookingEngineClosed
{
public void BookingEngineCreated(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
BookingEngine.DuringSave += new MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventHandler(BookingEngine_DuringSave);
}
public void BookingEngineClosed(MercatorUi.Engine.Cpta.BookingEngine BookingEngine)
{
BookingEngine.DuringSave -= new MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventHandler(BookingEngine_DuringSave);
}
void BookingEngine_DuringSave(object sender, MercatorUi.Engine.Cpta.BookingEngine.DuringSaveEventArgs e)
{
MercatorUi.Engine.Cpta.BookingEngine bookingEngine = (MercatorUi.Engine.Cpta.BookingEngine)sender;
if ((bookingEngine.Context != MercatorUi.Engine.Cpta.BookingEngine.ContextEnum.PostIntoAccounting)
|| (Convert.ToDouble(bookingEngine.BillingPiedWhenPosting["Escpte_pc"]) == 0))
return;
e.SqlCommand.CommandText = "declare @g_id_ana1 char(10) \r\n"
+ "select @g_id_ana1=g_id_ana1 from gen where g_id=@CPTA_DP1_C \r\n"
+ "if isnull(@g_id_ana1,'')<>'' \r\n"
+ "begin \r\n"
+ " insert into #lignes_c_ana_tmp (num_ex,journal,piece,dl_id,dl_id2,num_plan,recno,id_ana,tot_dv,tot,date,type_ligne,dl_id_eq,commentair) \r\n"
+ " select num_ex,journal,piece,dl_id,right(newid(),10),1,1,@g_id_ana1,tot_dv,tot,date,0,'',commentair from #lignes_c_tmp where id_gen=@CPTA_DP1_C \r\n"
+ "end";
e.SqlCommand.Parameters.AddWithValue("@CPTA_DP1_C", MercatorUi.Globals.Params["CPTA_DP1_C"]).SqlDbType = SqlDbType.Char;
if (!Api.SqlExec(e.SqlCommand))
e.CancelSave = true;
}
}
}
Bonjour,
Notre client a de l'analytique dans la gestion commerciale.
Lors de la centralisation, lorsqu'il y a de l'escompte dans les factures fournisseurs, et que nous voulons gérer de l'analytique pour le compte d'escompte, le message suivant apparaît:
" Impossible de sauvegarder les modifications : Total des imputations analytiques en discordance avec le montant de l'imputation de base ! "