SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de DavidDoc » Ven 8 Fév 2013 18:26

Hello

J’espère trouver un peu d'aide sur un épineux problème !!

Un client souhaiterais que dans les devis, le CMUP et la marge de la ligne sois calculé non pas à partir de mon dernier CMUP article, mais à partir du prix d'achat qui se trouve dans le tarif du fournisseur principal de l'article !!

Pour cela, j'ai créé une info libre PrixAchat et par un trigger SQL, je vais la remplir, bon ca ok.

Mais ensuite pas moyen de remplir ma zone CMUP et donc de forcer le calcul de ma marge !!

Hors je ne vois rien qui cloche dans mon trigger !!

Voila la chose :
Code: Tout sélectionner
USE [C_BIA_TEST]
GO
/****** Object:  Trigger [dbo].[OD_TG_INS_DOCLIGNE]    Script Date: 02/08/2013 17:11:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      David Docquoy
-- Create date: 24/05/2012
-- Description:   recherche du prix d'achat de la fiche article pour le mettre dans les lignes de ventes
-- =============================================
ALTER TRIGGER [dbo].[OD_TG_INS_DOCLIGNE]
   ON  [dbo].[F_DOCLIGNE]
   AFTER  insert,update
AS
BEGIN
   -- SET NOCOUNT ON added to prevent extra result sets from
   -- interfering with SELECT statements.
   SET NOCOUNT ON;

    -- Insert statements for trigger here
           declare @ar_ref nvarchar(19);
              declare @do_domaine int;
       declare @do_type int;
       declare @prix_achat numeric(24,6);
        declare @dl_cmup numeric(24,6);
        declare @dl_prixru numeric(24,6);
       declare @cbmarq int;
     declare @qte as numeric(24,6);
       declare @old_qte as numeric(24,6);
       declare @text as nvarchar(19)
       declare @remise_achat numeric(24,6);
       declare @gamme int;
       declare @suivistock int;
       declare @DL_PrixUnitaire numeric(24,6);
       
   SELECT @do_domaine = do_domaine FROM INSERTED;
   SELECT @do_type = do_type FROM INSERTED;
   SELECT @ar_ref = ar_ref FROM INSERTED;
   SELECT @cbmarq = cbmarq FROM INSERTED;
   select @prix_achat = prix_achat from inserted;
   select @dl_cmup = dl_cmup from inserted;
    select @dl_prixru = dl_prixru from inserted;
    select @gamme = ag_no1 from inserted
    select @qte = dl_qte from inserted
        select @DL_PrixUnitaire = DL_PrixUnitaire from inserted
   

   
   if @ar_ref <> '' and @do_domaine = 0  and (@prix_achat = 0 or @prix_achat is null)
        begin
        
        -- on va le chercher dans le tarif du frs principal en gamme
        if @gamme <> 0
        begin
              set @prix_achat = (SELECT F_TARIFGAM.TG_Prix FROM F_TARIFGAM INNER JOIN F_ARTFOURNISS ON F_TARIFGAM.TG_RefCF = F_ARTFOURNISS.CT_Num AND F_TARIFGAM.AR_Ref = F_ARTFOURNISS.AR_Ref WHERE (F_TARIFGAM.AR_Ref = @ar_ref) AND (F_TARIFGAM.AG_No1 = @gamme) AND (F_ARTFOURNISS.AF_Principal = 1));
              
        end;
      if @prix_achat = 0 or @prix_achat is null
      begin
           -- on va le chercher dans le tarif du frs principal
         SET @prix_achat = (select AF_PrixAch from F_ARTFOURNISS where af_principal = 1 and AR_Ref =  @AR_Ref);
         if @prix_achat=0 or @prix_achat is null
         begin
              SET @prix_achat = (SELECT ar_prixAch from f_article where AR_Ref = @AR_Ref);
            if @prix_achat = 0 or @prix_achat is null
            begin
            if @ar_ref <> '' set @prix_achat=0.01
            end;
         end;
      end;
      -- recherche de la remise sur achat
      SET @remise_achat = (select AF_remise from F_ARTFOURNISS where af_principal = 1 and AR_Ref =  @AR_Ref);
      if @remise_achat <> 0
      begin
         set @prix_achat = @prix_achat * (1 - (@remise_achat/100))
      end;
      
      update f_docligne set prix_achat = @prix_achat,dl_cmup = NULLIF(@prix_achat,0),dl_prixru = NULLIF(@prix_achat,0) WHERE F_Docligne.cbMarq = @cbmarq;
   end;


Et malgré ca, ca ne marche pas !!

Je pensais le faire par un process qui tournerai apres que les documents soient fermé, mais mon client as besoin de l'info en direct lors de la saisie de son devis !!

J'en perds mon latin :(
David Docquoy
Développeur Vb.Net
Contributeur
Contributeur
 
Messages: 70
Inscription: Ven 18 Jan 2013 23:38

Re: SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de IMPERIAL » Lun 11 Fév 2013 15:15

Bonjour,

Il n'y a pas de notion de CMUP dans SAGE (au niveau base ...) Le CMUP est forcé dans les documents avec F_artstock Montant du stock / F_artstock quantités en stock.

Tu peux agir sur la marge ... Mais pas sur le CMUP. Et c'est logique.

Pour ce qui est du trigger pour le calcul de la marge, tu aurais pu éviter toux ces efforts en allant dans fichier / a propos de / onglet commercial et prenant dernier prix d'achat (par exemple)

Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.

IMPERIAL
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 4661
Inscription: Jeu 6 Aoû 2009 12:39
Localisation: ROSNY SOUS BOIS

Re: SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de DavidDoc » Lun 11 Fév 2013 19:27

Je ne vois pas ou se trouve cette info dans le A propos ??

De plus, mon client souhaite que ce sois le prix d'achat du tarif fournisseur qui sois pris, comme cela, si il n'en as pas acheté depuis 1 an mais que le tarif FRS est à jour, le prix d'achat sera celui du tarif et non pas un prix vieux de 1 an.
David Docquoy
Développeur Vb.Net
Contributeur
Contributeur
 
Messages: 70
Inscription: Ven 18 Jan 2013 23:38

Re: SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de mederic » Lun 11 Fév 2013 20:00

Bonjour,

Dans le Menu A Propos de / Commercial / Paramètres généraux il est possible de caluler la marge selon plusieurs possibilités : Prix de revient, CMUP, Dernier prix d'achat, prix d'achat et coût standard.
Si ces possibilités ne conviennent pas, vous pouvez en effet créer un trigger mais je ne modifierai pas le champ standard DL_CMUP qui sert entre autre à la valorisation du stock sur lequel, d'un point de vue légal, on ne peut s'amuser.
Je pencherais plutôt pour un champ libre supplémentaire Marge dans lequel vous mettriez le calcul de votre marge spécifique
Posteur néophyte
Posteur néophyte
 
Messages: 3
Inscription: Jeu 7 Fév 2013 19:06

Re: SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de IMPERIAL » Mer 20 Fév 2013 13:18

Bonjour,

Quelle version ???????????????

Option à partir de la V16

Cdlt
IMPERIAL
Consultant Ligne 100 - INFOROPE
Le savoir c'est comme l'Amour. Si tu ne le partage pas, il devient inutile.

IMPERIAL
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 4661
Inscription: Jeu 6 Aoû 2009 12:39
Localisation: ROSNY SOUS BOIS

Re: SQL - Gescom 100 - Trigger F_DOCLIGNE - Mise à jour CMUP

de DavidDoc » Mer 20 Fév 2013 21:42

On est en v16.05 SQL.

Je retourne chez le client la semaine prochaine, je testerais cela.
David Docquoy
Développeur Vb.Net
Contributeur
Contributeur
 
Messages: 70
Inscription: Ven 18 Jan 2013 23:38


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité