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

Gestion des ressources par demi-jours (legacy)

0000001831     -      09/10/2015
Obsolète

Mercator 7.3 ou ultérieur permet une gestion des ressources par demi-jours. Cette périodicité est automatiquement disponible dans le déroulant de l'onglet "Ressources" des fiches où la gestion des ressources est activée.

Dans les graphiques de Gantt, les périodes sont notées :

  • 01/01/1900 AM : matin
  • 01/01/1900 PM : après-midi

Dans les zones permettant la saisie directe d'un format "date-temps" (datetime), les périodes doivent être saisies comme suit :

  • 01/01/1900 00:00 : matin
  • 01/01/1900 12:00 : après-midi

Afin de faciliter le paramétrage de Mercator en relation avec cette fonctionnalité, 2 Xfonctions ont été ajoutées :

  • XampmToTime : conversion d'une chaîne de caractères 01/01/1900 AM ou 01/01/1900 PM en format datetime 01/01/1900 00:00 ou 01/01/1900 12:00
  • XtimeToAmpm : conversion d'un temps 01/01/1900 00:00 ou 01/01/1900 12:00 en chaîne de caratères 01/01/1900 AM ou 01/01/1900 PM

Les exemples donnés dans cette rubrique doivent être adaptés pour répondre à la gestion par demi-jours :

Dans l'exemple 1, il faut modifier le trigger TR_LIGNESV_RESS_STOCK_INS, en ajoutant ce bloc sous le bloc  /* VERIFICATION QUE TOUTES LES RESSOURCES "HEURES" UTILISEES EXISTENT */

/* VERIFICATION QUE TOUTES LES RESSOURCES "DEMI-JOURS" UTILISEES EXISTENT */

select @info=rtrim(stock.s_modele)+' '+convert(char(10),inserted.moment1,103)+'-'+convert(char(10),inserted.moment2,103)
        from inserted inner join STOCK on (inserted.id_article=stock.s_id)
        cross join DEMIJOURS 
        left join RESS on (ress.module='STOCK') and (inserted.id_article=ress.id_sig) and (demijours.sequence=ress.moment1) where (stock.s_ress='D') and (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,stock.s_ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,stock.s_ress)) and (ress.id is null)
if @info is not null
        begin
                set @info='Ressource inexistante : '+@info+' !' 
                ROLLBACK TRAN RAISERROR ( @info,16,1 ) 
                RETURN
        end

et ce bloc sous le bloc /* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "HEURES" */

/* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "DEMI-JOURS" */

insert into RESSDATA (module,id_sig,id,id2,origine,q,couleur,texte)
        select 'STOCK',inserted.id_article,ress.id,right(newid(),10),'V_'+inserted.id+inserted.journal+str(inserted.piece,10)+inserted.dl_id,inserted.q,dbo.type_v(inserted.id,inserted.journal,inserted.piece),dbo.tiers_v(inserted.id,inserted.journal,inserted.piece) 
        from inserted cross join DEMIJOURS inner join RESS on (ress.module='STOCK') and (inserted.id_article=ress.id_sig) and (demijours.sequence=ress.moment1) 
        where (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,ress.ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,ress.ress)) and (ress.ress='D') and (inserted.q<>0)


Dans l'exemple 2, il faut modifier le trigger TR_LIGNESV_RESS_PROJ_INS, en ajoutant ce bloc sous le bloc /* VERIFICATION QUE TOUTES LES RESSOURCES "HEURES" UTILISEES EXISTENT */

/* VERIFICATION QUE TOUTES LES RESSOURCES "DEMI-JOURS" UTILISEES EXISTENT */

select @info=rtrim(proj.p_nom)+' '+convert(char(10),inserted.moment1,103)+'-'+convert(char(10),inserted.moment2,103) 
        from inserted inner join PROJ on (inserted.id_projet=proj.p_id) 
        cross join DEMIJOURS 
        left join RESS on (ress.module='PROJ') and (inserted.id_projet=ress.id_sig) and (demijours.sequence=ress.moment1) 
        where (proj.p_ress='D') and (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,proj.p_ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,proj.p_ress)) and (ress.id is null)
if @info is not null 
        begin 
                set @info='Ressource inexistante : '+@info+' !' 
                ROLLBACK TRAN 
                RAISERROR ( @info,16,1 ) 
                RETURN 
        end

et ce bloc sous le bloc /* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "HEURES" */

/* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "DEMI-JOURS" */

insert into RESSDATA (module,id_sig,id,id2,origine,q,couleur,texte) 
        select 'PROJ',inserted.id_projet,ress.id,right(newid(),10),'V_'+inserted.id+inserted.journal+str(inserted.piece,10)+inserted.dl_id,inserted.q_ress,dbo.type_v(inserted.id,inserted.journal,inserted.piece),inserted.texte 
        from inserted 
        cross join DEMIJOURS 
        inner join RESS on (ress.module='PROJ') and (inserted.id_projet=ress.id_sig) and (demijours.sequence=ress.moment1) 
        where (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,ress.ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,ress.ress)) and (ress.ress='D') and (inserted.q_ress<>0)


Dans l'exemple 3, il faut modifier le trigger TR_LIGNESA_RESS_DEST_INS, en ajoutant ce bloc sous le bloc /* VERIFICATION QUE TOUTES LES RESSOURCES "HEURES" UTILISEES EXISTENT */

/* VERIFICATION QUE TOUTES LES RESSOURCES "DEMI-JOURS" UTILISEES EXISTENT */

select @info=rtrim(dest.d_nom)+' '+convert(char(10),inserted.moment1,103)+'-'+convert(char(10),inserted.moment2,103) 
        from inserted inner join DEST on (inserted.id_destin=dest.d_id) 
        cross join DEMIJOURS  left join RESS on (ress.module='DEST') and (inserted.id_destin=ress.id_sig) and (demijours.sequence=ress.moment1) 
        where (dest.d_ress='D') and (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,dest.d_ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,dest.d_ress)) and (ress.id is null)
if @info is not null 
        begin 
                set @info='Ressource inexistante : '+@info+' !' 
                ROLLBACK TRAN 
                RAISERROR ( @info,16,1 ) 
                RETURN 
        end

et ce ce bloc sous le bloc /* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "HEURES" */

/* AJOUTS DES CONSOMMATIONS DE RESSOURCES PAR "DEMI-JOURS" */

insert into RESSDATA (module,id_sig,id,id2,origine,q,couleur,texte) 
        select 'DEST',inserted.id_destin,ress.id,right(newid(),10),'A_'+inserted.id+inserted.journal+str(inserted.piece,10)+inserted.dl_id,inserted.q_ress,inserted.atelier,inserted.designatio 
        from inserted 
        cross join DEMIJOURS  
        inner join RESS on (ress.module='DEST') and (inserted.id_destin=ress.id_sig) and (demijours.sequence=ress.moment1) 
        where (demijours.sequence>=dbo.ROUNDTIME(inserted.moment1,ress.ress)) and (demijours.sequence<=dbo.ROUNDTIME(inserted.moment2,ress.ress)) and (ress.ress='D') and (inserted.q_ress<>0)



Vous consultez une page relative à une version de Mercator qui n'est plus commercialisée ni supportée.

Mercator est une application .net qui utilise une base de données SQL Server. Les informations sur cette page ne correspondent plus à ces caractéristiques.