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

0000002560     -      29/06/2016

Mercator 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)