1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| CREATE PROCEDURE _FF_CTA_ctrl_Abonnements
AS
SET NOCOUNT ON
DECLARE @cabonnement CHAR(8)
DECLARE @nb_abonnements INT
DECLARE curs_abo_à_contrôler INSENSITIVE CURSOR FOR SELECT CAbonnement FROM CTA_Abonnement WHERE NAnomalies IS NULL
OPEN curs_abo_à_contrôler
SELECT @nb_abonnements = @@CURSOR_ROWS
FETCH NEXT FROM curs_abo_à_contrôler INTO @cabonnement
DECLARE @dcréation SMALLDATETIME
DECLARE @drésiliation SMALLDATETIME
DECLARE @ctarif CHAR(6)
DECLARE @nabopere CHAR(8)
DECLARE @cli CHAR(9)
DECLARE @pconsommation SMALLDATETIME
DECLARE @ok BIT
SELECT @ok = 0
DECLARE @erreur INT,@nombre INT
DECLARE @dfin SMALLDATETIME
SELECT @dfin = Fin FROM CTA_Période
DECLARE @nb_passes INT
SELECT @nb_passes = 0
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT
@dcréation = DCréation
,@drésiliation = DRésiliation
,@ctarif = CTarif
,@nabopere = NAboPere
,@cli = CLI
,@pconsommation = PConsommation
FROM CTA_Abonnement_Détails
WHERE CAbonnement = @cabonnement
IF @dcréation >= @drésiliation
BEGIN
EXECUTE _FF_CTA_set_Anomalie @cabonnement = @cabonnement, @canomalie = 'DCR'
SELECT @ok = 1
SELECT @nb_abonnements = @nb_abonnements-1
END
IF LEFT(RTRIM(LTRIM(@ctarif)),3) = 'COR'
BEGIN
EXECUTE _FF_CTA_set_Anomalie @cabonnement = @cabonnement, @canomalie = 'COR'
SELECT @ok = 1
SELECT @nb_abonnements = @nb_abonnements-1
END
IF LEN(RTRIM(LTRIM(@nabopere))) > 0 AND LEN(RTRIM(LTRIM(@cli))) = 0
BEGIN
EXECUTE _FF_CTA_set_Anomalie @cabonnement = @cabonnement, @canomalie = 'CLI'
SELECT @ok = 1
SELECT @nb_abonnements = @nb_abonnements-1
END
IF @pconsommation IS NULL OR @pconsommation > @dfin
BEGIN
EXECUTE _FF_CTA_set_Anomalie @cabonnement = @cabonnement, @canomalie = 'PCO'
SELECT @ok = 1
SELECT @nb_abonnements = @nb_abonnements-1
END
IF @ok = 0
BEGIN
EXECUTE _FF_CTA_set_Anomalie @cabonnement = @cabonnement, @canomalie = 'AOK'
SELECT @nb_abonnements = @nb_abonnements-1
END
SELECT @nb_passes = @nb_passes+1
FETCH NEXT FROM curs_abo_à_contrôler INTO @cabonnement
END
PRINT 'Nb non traités : ' + CAST(@nb_abonnements AS VARCHAR(20))
PRINT 'Nb passes : ' + CAST(@nb_passes AS VARCHAR(20))
CLOSE curs_abo_à_contrôler
DEALLOCATE curs_abo_à_contrôler
GO |
Partager