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 93 94 95 96 97 98 99 100 101 102 103
|
SET NOCOUNT ON
DECLARE @DO_PIECE varchar(9)
DECLARE @DO_TYPE smallint
DECLARE @DO_DOMAINE smallint
DECLARE @DO_cbMarq int
DECLARE @DO_Dure_Contrat numeric
DECLARE @DO_majorachat numeric
DECLARE @lock int
set @DO_DOMAINE = 0 -- 0=ventes
set @DO_TYPE = 0 -- 0=devis
-- Table temporaire de jointure entre les do_cbmarq et les dl_cbmarq :
select do.cbMarq DOcbMarq, dl.cbMarq DLcbMarq
into #temp
from F_DOCENTETE do
inner join F_DOCLIGNE dl on do.DO_Domaine = dl.DO_Domaine
and do.DO_Type = dl.DO_Type and do.DO_Piece = dl.DO_Piece
WHERE do.crmsync='linesnotok' and do.DO_Ref = 'QT-298/4'
and do.DO_Domaine = @DO_DOMAINE and do.DO_Type = @DO_TYPE
and isnull(dl.AR_Ref,'') <> ''
if((select count(*) from #temp) > 0)
BEGIN
-- Connexion à la Gescom :
exec CB_Connect 'CIAL'
DECLARE MyCursor CURSOR FOR
SELECT do.DO_PIECE,do.cbMarq,do.Dure_Contrat,isnull(do.majorachat,0) majorachat FROM F_DOCENTETE do
inner join (select distinct DOcbMarq from #temp) tmp on do.cbMarq = tmp.DOcbMarq
ORDER BY do.cbMarq
OPEN MyCursor -- j'initialise mon curseur
-- je le rempli avec la première ligne retournée par la requête
FETCH NEXT FROM MyCursor INTO @DO_PIECE, @DO_cbMarq, @DO_Dure_Contrat, @DO_majorachat
-- Tant que je n'ai pas traité tous les enregistrements de le requête
WHILE @@FETCH_STATUS = 0
BEGIN
exec CB_IsRecordLock 'F_DOCENTETE', @DO_cbMarq, @lock OUTPUT --Test si l'enregistrement est locké
-- Ne pas lever d'erreur afin de pouvoir continuer le traitement sur les autres documents éventuels :
IF @lock = 0
BEGIN
-- Verrouillage du document :
exec CB_LockRecord 'F_DOCENTETE', 3, @DO_cbMarq
if(@DO_majorachat<>0)
BEGIN
-- 1- Majoration des Lignes de Rachat
UPDATE dl
SET dl.DL_QteBC = dl.DL_Qte*1.1,
dl.DL_QteBL = dl.DL_Qte*1.1,
dl.EU_Qte = dl.DL_Qte*1.1,
dl.DL_MontantHT = dl.DL_Qte*1.1,
dl.DL_MontantTTC = ROUND(dl.DL_Qte*1.1*(1+(dl.DL_Taxe1/100)),2),
dl.DL_Qte = dl.DL_Qte*1.1
FROM F_DOCLIGNE dl
INNER JOIN #temp tmp on dl.cbMarq = tmp.DLcbMarq
WHERE tmp.DOcbMarq = @DO_cbMarq
AND dl.AR_Ref = 'RACHVIDCST'
-- 2- Majoration Remise
UPDATE dl
SET dl.DL_MontantHT = dl.DL_MontantHT-@DO_majorachat,
dl.DL_MontantTTC = dl.DL_MontantTTC-ROUND(@DO_majorachat*(1+(dl.DL_Taxe1/100)),2)
FROM F_DOCLIGNE dl
INNER JOIN #temp tmp on dl.cbMarq = tmp.DLcbMarq
WHERE tmp.DOcbMarq = @DO_cbMarq
AND dl.AR_Ref = 'REM_VI'
END
-- 3- Valorisation Loyer
UPDATE dl
SET dl.DL_PoidsBrut = ROUND(((dl.DL_MontantHT/(@DO_Dure_Contrat/1.2))*1000),2)
FROM F_DOCLIGNE dl
INNER JOIN #temp tmp on dl.cbMarq = tmp.DLcbMarq
WHERE tmp.DOcbMarq = @DO_cbMarq
-- 4 ReFlag de l'entête
UPDATE F_DOCENTETE
SET crmsync='linesok', majorachat = 0
WHERE F_DOCENTETE.cbMarq = @DO_cbMarq
-- Déverrouillage du document :
exec CB_UnLockRecord 'F_DOCENTETE', 3, @DO_cbMarq
END
FETCH NEXT FROM MyCursor INTO @DO_PIECE, @DO_cbMarq, @DO_Dure_Contrat, @DO_majorachat
END
CLOSE myCursor -- je ferme mon curseur
DEALLOCATE myCursor -- je libère la mémoire allouée à ce curseur
-- Déconnexion de la Gescom :
exec CB_Disconnect
END
-- Suppression de la table temporaire :
drop table #temp |
Partager