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
| DECLARE @PrefixeAlphaFacta varchar(50)
, @numeroFacture int
BEGIN TRY
BEGIN TRANSACTION
-- Ceci fonctionne correctement si les valeurs
-- de la colonne NumeroFiche sont uniques
SELECT @PrefixeAlphaFacta = PrefixeAlphaFacta
FROM Prefixe
FROM dbo.PARAMG
WHERE NumeroFiche=1
SELECT @numeroFacture = MAX(numerofacture)
FROM dbo.FAAE
WHERE LEFT(numerofacture, 6) = @PrefixeAlphaFacta
SELECT DISTINCT F.NoFacture --NoFacture
, A.CodeFournisseur --CodeFournisseur
, CONVERT(VARCHAR, GETDATE(), 112) --DateMajFact
, F.DateFacture --DateFacturation
, @PrefixeAlphaFacta + RIGHT('00000' + CAST(RIGHT(MAX(@numeroFacture), 5) + 1 AS varchar),5)
, F.DateFacture --DateEffetPiece
FROM dbo.FAAE_TEMP_AJOUT AS F
INNER JOIN dbo.ACHE AS A
ON F.NoConfirmation = A.NoAccuseReception
WHERE F.Ident = @Ident
AND F.AIntegre = 1
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @err_msg nvarchar(4000) = 'Line ' + CAST(ERROR_LINE() AS varchar(10)) + ' - ' + ERROR_MESSAGE()
, @err_svt int = ERROR_SEVERITY()
, @err_stt int = ERROR_STATE()
IF XACT_STATE() <> 0
BEGIN
ROLLBACK TRANSACTION;
END
RAISERROR(@err_msg, @err_svt, @err_stt);
RETURN;
END CATCH |
Partager