In Mercator is het mogelijk om de resources te beheren per halve dagen. Deze frequentie is automatisch beschikbaar in het rolmenu van het tabblad "Resources" van de fiches waar het resourcebeheer is geactiveerd.
In de Gantt-grafieken worden de periodes als volgt genoteerd:
- 01/01/1900 AM: voormiddag
- 01/01/1900 PM: namiddag
In de zones waarin men meteen gegevens kan invoeren in het formaat "datum-tijd" (datetime), moeten de periodes als volgt worden ingevoerd:
- 01/01/1900 00:00: voormiddag
- 01/01/1900 12:00: namiddag
Om de parameterinstelling van Mercator met betrekking tot deze functionaliteit te vereenvoudigen, werden 2 Xfuncties toegevoegd:
- XampmToTime: conversie van een tekenreeks 01/01/1900 AM of 01/01/1900 PM in datetime-formaat 01/01/1900 00:00 of 01/01/1900 12:00
- XtimeToAmpm: conversie van een tijdsmelding 01/01/1900 00:00 of 01/01/1900 12:00 in een tekenreeks 01/01/1900 AM of 01/01/1900 PM
De voorbeelden in deze rubriek moeten worden aangepast om te beantwoorden aan het beheer per halve dagen
In voorbeeld 1 moet de trigger TR_LIGNESV_RESS_STOCK_INS worden gewijzigd door toevoeging van dit blok onder het blok /* VERIFICATIE OF ALLE GEBRUIKTE "UUR"-RESOURCES BESTAAN */
/* VERIFICATIE OF ALLE GEBRUIKTE "HALVE DAG"-RESOURCES BESTAAN */
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
en dit blok onder het blok /* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "UUR" */
/* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "HALVE DAG" */
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)
In voorbeeld 2 moet de trigger TR_LIGNESV_RESS_PROJ_INS worden gewijzigd door toevoeging van dit blok onder het blok /* VERIFICATIE OF ALLE GEBRUIKTE "UUR"-RESOURCES BESTAAN */
/* VERIFICATIE OF ALLE GEBRUIKTE "HALVE DAG"-RESOURCES BESTAAN */
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
en dit blok onder het blok /* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "UUR" */
/* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "HALVE DAG" */
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)
In voorbeeld 3 moet de trigger TR_LIGNESA_RESS_DEST_INS worden gewijzigd door toevoeging van dit blok onder het blok /* VERIFICATIE OF ALLE GEBRUIKTE "UUR"-RESOURCES BESTAAN */
/* VERIFICATIE OF ALLE GEBRUIKTE "HALVE DAG"-RESOURCES BESTAAN */
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
en dit blok onder het blok /* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "UUR" */
/* TOEVOEGINGEN VAN RESOURCEVERBRUIK PER "HALVE DAG" */
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)