Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Compte analytique et escompte

0000002538     -      04/10/2015

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 :

Zoom
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 ! "