Blog PlanningPME

Suivez l'actualité de votre logiciel de planning

Intégration de PlanningPME avec l'ERP Silog

 

L'intégration sera effectuée à l'aide des triggers sous SQL-Server pour avoir une mise à jour instantanée des informations.

  • Les ordres de fabrications créés dans SILOG sont créés dans PlanningPME  (trigger insert_lctc)
  • Les ordres de fabrications vont être planifiés dans PlanningPME  et mis à jour dans SILOG (trigger update_chantier_date) 
  • Les ordres de fabrications supprimés dans SILOG sont aussi supprimés dans PlanningPME  (trigger delete_lctc)

Attention : l’utilisateur au niveau SQL-Server doit avoir accès aux 2 bases de données PlanningPME et SILOG

BASE SILOG

 

CREATE TRIGGER [insert_lctc] ON [dbo].[LCTC]
FOR INSERT

AS

/* LCTC */
declare @TempsPoste float
declare @CodeLancement varchar(50)
declare @TypeRubrique varchar(50)
declare @CodeRubrique varchar(50)
declare @Phase varchar(50)

/* LCTE */
declare @NumeroAffaireFils varchar(50)

/* COMC */
declare @DateFinProdPlusTard datetime
declare @CodeArticleprestto varchar(50)
declare @NoCommande  varchar(50)

/* COME */

declare @CodeClient varchar(50)
declare @VarAlphaUtil2 varchar(50)
declare @NumeroAffairePere varchar(30)


/* autre variable */
declare @IdxRessourceAPlanifier int

declare @DateHeureDebut datetime
declare @DateHeureFin datetime
declare @HeureDebut datetime
declare @HeureFin datetime
declare @DateDebut datetime
declare @DateFin datetime
declare @IdxChantier int


/* on ne traite que les opérations */
if ( @TypeRubrique <> 'O' )
begin
 return
end


select @Phase=inserted.Phase, @TempsPoste=inserted.TempsPoste, @CodeLancement=inserted.CodeLancement, @TypeRubrique=inserted.TypeRubrique, @CodeRubrique=inserted.CodeRubrique From inserted

/* Recherche des infos dans LCTE */
SELECT @NumeroAffaireFils=[NumeroAffaire] FROM [LCTE] WHERE [CodeLancement]=@CodeLancement

if ( @NumeroAffaireFils = '' )
begin
 return
end

/* Recherche des infos dans COMC */
SELECT @DateFinProdPlusTard=[DateFinProdPlusTard], @CodeArticleprestto=[CodeArticleprestto], @NoCommande=[NoCommande] FROM [COMC] WHERE [NumeroAffaireFils]=@NumeroAffaireFils

if ( @NoCommande = '' )
begin
 return
end

/* Recherche des infos dans COME */
SELECT @CodeClient=[CodeClient], @VarAlphaUtil2=[VarAlphaUtil2], @NumeroAffairePere=[NumeroAffairePere] FROM [COME] WHERE [NoCommande]=@NoCommande

if ( @NumeroAffairePere = '' )
begin
 return
end

/* Insert dans CHANTIER */ 
INSERT PlanningPME.dbo.CHANTIER ([_CODECLIENT], [_VARALPHAUTIL2], [_NUMEROAFFAIREFILS], [_CODEARTICLEPRESTTO], [_CODELANCEMENT], [_NUMEROAFFAIRE], UN_OU_PLS_RESSOURCE,[_DATEFINPRODPLUSTARD], [_TEMPSPOSTE], [_OF], [_CODERUBRIQUE], NOM_CHANTIER, [_PHASE]) VALUES (@CodeClient, @VarAlphaUtil2, @NumeroAffaireFils, @CodeArticleprestto, @CodeLancement, @NumeroAffairePere,1076, @DateFinProdPlusTard, @TempsPoste,1, @CodeRubrique, @CodeRubrique, @Phase)

set @IdxChantier = (SELECT MAX(@@IDENTITY) from PlanningPME.dbo.CHANTIER)

/**/
set @DateDebut=@DateFinProdPlusTard
set @DateFin=@DateFinProdPlusTard
Set @DateFin = DATEADD(day,@TempsPoste/8,@DateDebut)

/**/
set @HeureDebut= '8:00'
Set @HeureFin = '17:00'


/* Calcul des champs date et heure */
/**/
Set @DateHeureDebut = DATEADD(minute,DATEPART(hour,@HeureDebut)*60+DATEPART(minute,@HeureDebut),@DateDebut)
Set @DateHeureFin = DATEADD(minute,DATEPART(hour,@HeureFin)*60+DATEPART(minute,@HeureFin),@DateFin)


/* Insert dans CHANTIER_DATE */
INSERT PlanningPME.dbo.CHANTIER_DATE (IDX_CHANTIER, DATE_DEBUT, DATE_FIN, HEURE_DEBUT, HEURE_FIN, JOURNEE_ENTIERE, DATE_HEURE_DEBUT, DATE_HEURE_FIN, TYPE, DUREE) VALUES (@IdxChantier, @DateDebut, @DateFin, @HeureDebut, @HeureFin, 0, @DateHeureDebut, @DateHeureFin, 1661, @TempsPoste)

/* Idx de la ressource à planifier */
set @IdxRessourceAPlanifier  = 26

/* Insert dans CHANTIER_RESSOURCE */
INSERT PlanningPME.dbo.CHANTIER_RESSOURCE (IDX_CHANTIER,IDX_RESSOURCE) VALUES (@IdxChantier, @IdxRessourceAPlanifier)

CREATE TRIGGER delete_lctc ON dbo.LCTC
FOR  DELETE

AS

declare @CodeLancement varchar(50)
declare @Phase varchar(50)
declare @CodeRubrique varchar(50)
declare @IDX_CHANTIER int


select @CodeLancement=deleted.[CodeLancement], @Phase=deleted.[Phase], @CodeRubrique=deleted.[CodeRubrique] from  deleted

if ( @CodeLancement = '' OR @Phase = '' OR @CodeRubrique='' )
begin
 return
end

select @IDX_CHANTIER=IDX_CHANTIER from PlanningPME.dbo.CHANTIER where [_CODELANCEMENT]=@CodeLancement AND [_PHASE]=@Phase AND [_CODERUBRIQUE]=@CodeRubrique

delete from  PlanningPME.dbo.CHANTIER where IDX_CHANTIER=@IDX_CHANTIER
delete from  PlanningPME.dbo.CHANTIER_DATE where IDX_CHANTIER=@IDX_CHANTIER

delete from  PlanningPME.dbo.CHANTIER_RESSOURCE where IDX_CHANTIER=@IDX_CHANTIER


BASE PLANNINGPME

CREATE TRIGGER update_chantier_date ON dbo.CHANTIER_DATE
FOR  UPDATE

AS

declare @CodeLancement varchar(50)
declare @Phase varchar(50)
declare @CodeRubrique varchar(50)
declare @INDISPONIBILITE bit
declare @OF bit
declare @DateDebut datetime
declare @HeureDebut datetime
declare @DateFin datetime
declare @HeureFin datetime
declare @IDX_CHANTIER int

select @IDX_CHANTIER=inserted.IDX_CHANTIER, @DateDebut=inserted.DATE_DEBUT, @HeureDebut=inserted.HEURE_DEBUT, @DateFin=inserted.DATE_FIN, @HeureFin=inserted.HEURE_FIN from  inserted

select @OF=[_OF], @INDISPONIBILITE=INDISPONIBILITE, @CodeLancement=[_CODELANCEMENT], @Phase=[_PHASE], @CodeRubrique=[_CODERUBRIQUE] from CHANTIER where IDX_CHANTIER=@IDX_CHANTIER


/* on ne s'occupe pas des indispos */
if ( @INDISPONIBILITE = 1 )
begin
 return
end

/* on ne s'occupe pas des tâches crées dans PPME */
if ( @OF = 0 )
begin
 return
end

if ( @CodeLancement = '' OR @Phase = '' OR @CodeRubrique='' )
begin
 return
end


update CEDIPPME.dbo.[LCTC]
set DateDebutPlanifiee = @DateDebut,HeureDebutPlanif = DATEPART(hour,@HeureDebut), MinuteDebutPlanif=DATEPART(minute,@HeureDebut) ,
 DateFinPlanifiee = @DateFin, HeureFinPlanif=DATEPART(hour,@HeureFin), MinuteFinPlanif=DATEPART(minute,@HeureFin)
where @CodeLancement=CodeLancement and Phase=@Phase and CodeRubrique=@CodeRubrique

 

 

Ajouter un commentaire

Loading