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
|
SET TERM ^ ;
ALTER PROCEDURE SET_PRICE (
ID_ART INTEGER)
AS
declare variable marge dec_15_4;
declare variable marge_1 dec_15_4;
declare variable marge_2 dec_15_4;
declare variable marge_3 dec_15_4;
declare variable marge_4 dec_15_4;
declare variable cump dec_15_2;
declare variable tot_1 dec_15_2;
declare variable tot_2 dec_15_2;
declare variable qte_1 dec_15_2;
declare variable qte_2 dec_15_2;
begin
/* Procedure Text */
TOT_1 = 0;
QTE_1 = 0;
TOT_2 = 0;
QTE_2 = 0;
MARGE_1=-1 ;
MARGE_2=-1 ;
MARGE_3=-1 ;
MARGE_4=-1 ;
SELECT ((P_VENTE-P_HA)/P_HA), (PV1-P_HA)/P_HA,
(PV2-P_HA)/P_HA, (PV3-P_HA)/P_HA,
(PV4-P_HA)/P_HA
FROM FART
WHERE (ID_ART=:ID_ART) AND
(P_HA <> 0) AND
(NOT P_HA IS NULL)
INTO MARGE, MARGE_1, MARGE_2, MARGE_3, MARGE_4;
if (MARGE_1<0) then MARGE_1=-1 ;
if (MARGE_2<0) then MARGE_2=-1 ;
if (MARGE_3<0) then MARGE_3=-1 ;
if (MARGE_4<0) then MARGE_4=-1 ;
SELECT SUM(QTE*P_UNIT), SUM(QTE)
FROM FDET_H
WHERE (ID_ART=:ID_ART) AND
(QTE > 0) AND (NOT QTE IS NULL) AND
(P_UNIT <> 0) AND (NOT P_UNIT IS NULL)
HAVING (SUM(QTE) <> 0)
INTO TOT_1, QTE_1;
SELECT SUM(QTE*P_UNIT), SUM(QTE)
FROM T_STK_INIT
WHERE (ID_ART=:ID_ART) AND
(QTE > 0) AND (NOT QTE IS NULL) AND
(P_UNIT <> 0) AND (NOT P_UNIT IS NULL)
HAVING (SUM(QTE) <> 0)
INTO TOT_2, QTE_2;
CUMP = TOT_1/QTE_1;
if (NOT QTE_2 IS NULL ) then CUMP = (TOT_1 + TOT_2)/(QTE_1 + QTE_2);
UPDATE FART SET
P_HA=:CUMP,
P_VENTE=:CUMP * (1+:MARGE),
PV1=:CUMP * (1+:MARGE_1),
PV2=:CUMP * (1+:MARGE_2),
PV3=:CUMP * (1+:MARGE_3),
PV4=:CUMP * (1+:MARGE_4)
WHERE ID_ART=:ID_ART;
suspend;
end^
SET TERM ; ^ |
Partager