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
| SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE vulcain.CalculPrixFrance_EX
@ID_COURANT_Transporteur varchar(20),
@ID_Sites integer,
@R_Code_Postal varchar(10),
@R_CODE_PAYS varchar(3),
@L_Code_Postal varchar(10),
@L_Ville varchar(30),
@L_CODE_PAYS varchar(3),
@Colis int,
@Poids decimal,
@Remboursement numeric(15,4)
AS
BEGIN
/* Procedure body */
DECLARE @vPrix numeric(15,4);
DECLARE @ID_COURANT varchar(20);
DECLARE @Details varchar(100);
DECLARE @arrondi int;
CREATE TABLE #tPrix
(
prix numeric(15,4)
)
set @Details = '';
set @vPrix=0;
-- Formatage des codes postaux dans la requete de calage sur le tarif
-- Chercher si le code postal,ville ou le pays font parties d'une exception
-- se caler sur le departement et le poids dans le tarif transport
insert into #tPrix
EXEC vulcain.GetTarif @ID_COURANT_Transporteur, @R_Code_Postal, @R_CODE_PAYS,
@L_CODE_PAYS, @L_Code_Postal, @L_Ville, @Colis, @Poids
-- calcul forfait
if (@Poids>0 and @Poids<=100)
begin
set @vPrix = (SELECT * from #tPrix);
set @Details = @Details+'PP '+CONVERT(varchar(14),@Poids )+' kg tarif '+ CONVERT(varchar(20),CAST( @vPrix as money),1) ;
end
-- Calcul Centaines
--arondi à la centaine superieur
if (@Poids>100 and @Poids<=2000)
begin
set @vPrix = (SELECT * from #tPrix);
set @arrondi = CEILING(@poids/10)/10;
set @details = @details+'PP '+ CONVERT(varchar(14),@arrondi )+' centaines '+ CONVERT(varchar(20),CAST( @vPrix as money),1);
set @vPrix = (@vPrix * @arrondi);
end
-- calcul commun
set @vPrix = (SELECT * from #tPrix)
create table #V_Prix(Id_Transporteur varchar(20),Prix_HT numeric(15,4) ,Prix_Details varchar(100))
INSERT INTO #V_Prix VALUES (N'France EX', @vPrix, @Details);
select * from #V_Prix
END |
Partager