Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Bloc de code
public function int A5_Proc_Shift_SQL_ (instanceRecordSql, Applic, item, err, txt, f)

; Cette fonction est utilisée pour réserver l'entité "item" après un partage.
; "err" <> 0 provoque le bouclage tant que l'opérateur n'a pas abandonné.
; "err" = 0 n'entraîne que 10 secondes (en interactif) ou 10 minutes (en batch) de bouclage.
; le paramètre "txt" est utilisé en tant que "p3" pour l'affichage du message d'erreur.
; Le paramètre "f" permet de modifier le fonctionnement :
; - si f = nostatus, la fonction ne rend la main que si réservation ok.
; - si f = nowait, la fonction rend immédiatement la main après le premier essai.

; Cas particulier G3 à vérifier :
; si err = 0 et txt = ' ' et f = nostatus, la fonction boucle jusqu'au succès.

; 0		ok
; <> 0	échec de la réservation

RecordSqlPtr 	instanceRecordSql
1					applic			>A5DD.dhsd Ap		; Nom de l'application
1					item				256					; chaîne à partager
1					err				5,0= 0				; numéro du message d'erreur
1					txt				256= ' '				; texte complément du message d'erreur
1					f					N	= 0				; 0 pour fonctionnement normal
																; nostatus pour retour que si ok
																; nowait pour retour immédiat si réservé

Comment appeler - exemple d’appel

L’appel doit se faire via les fonctions de l’objet métier (voir chapitre plus haut)

Voici un exemple

Bloc de code
;*
Public Procedure Maj_Compteur_article(ref,cpt,ReserverArt)
; Mise à jour d'une comptauer article pour quantité 'cpt'

1			ref				>GTFDD.dhsd		REF 		; référence article
1			cpt				>GTFDD.dhsd		RESQTE	; quantité 
1			ReserverArt						1,0			; =0 si pas de résevation,= 1 si RES, =2 si shift

1A			x					X							; retour de fonction

BeginP
	if cpt <> 0
		; met à jour le compteur article
		switch ReserverArt
		case	1
			x = Res_Art_Lock( ref, 0, NoWait)
			if x = H_RESERVED
				x = Res_Art_Shift ( ref, 0, NoWait)
				ReserverArt = 2 ; Pour remettre en l'état				
			endif
		case	2
			x = Res_Art_Shift( ref, 0, NoWait)
		default	
			x = 0
		endswitch

		if x = 0

			if Seek_ARTicle(RS_Article,ref) = 0
				RS_Article.CptA = cpt
				Update_Article(RS_Article)
			endif
	
			switch ReserverArt
			case 1
				Res_Art_Unlock(ref)
			case 2
				Res_Art_Share(ref)
			endswitch

		else
			Log_Ano(2269,ref)
		endif
	endif
EndP

Les ouvertures disponibles et erreur signalées