· 6 years ago · Nov 20, 2019, 09:12 AM
1USE [Dobrogea]
2GO
3/****** Object: StoredProcedure [Retail].[SyncRetailNewErp] Script Date: 11/20/2019 11:07:37 AM ******/
4SET ANSI_NULLS ON
5GO
6SET QUOTED_IDENTIFIER ON
7GO
8
9ALTER PROCEDURE [Retail].[SyncRetailNewErp]
10 @FirmaId INT=null
11, @DivizieID INT =null
12, @DinJob BIT = NULL
13, @Descarcare BIT = 1
14--Sincronizare bonuri(cap/pozitii) din Retail.BufferPozitiiBon
15--versiune inclusiv pozitii din buffer cu intrpozid si serieintrare
16AS
17BEGIN
18 -- SET NOCOUNT ON added to prevent extra result sets from
19 -- interfering with SELECT statements.
20 SET NOCOUNT ON;
21 --SET XACT_ABORT ON;
22
23 DECLARE
24 @OK BIT = 0
25 , @DataCrt DATETIME = GETDATE()
26
27 EXEC dbo.StartSemafor
28 'POS_BONURI'
29 , 30
30 , @DataCrt
31 , @DinJob
32 , @OK OUTPUT
33 , @FirmaId
34 , @DivizieID
35
36 IF (ISNULL(@OK, 0) = 1)
37 BEGIN
38 WHILE EXISTS (SELECT TOP 1
39 [FirmaId]
40 , [DivizieId]
41 , [CapIesireId]
42 , [PozIesireId]
43 , [DataValidare]
44 , ISNULL([Identificator],'')
45 , ISNULL([IdentificatorStatieId],0)
46 , ISNULL([CodServer],'')
47 FROM retail.BufferPozitiiBon
48 WHERE FirmaID = @FirmaId
49 AND DivizieID = @DivizieId
50 GROUP BY
51 [FirmaId]
52 , [DivizieId]
53 , [CapIesireId]
54 , [PozIesireId]
55 , [DataValidare]
56 , ISNULL([Identificator],'')
57 , ISNULL([IdentificatorStatieId],0)
58 , ISNULL([CodServer],'')
59 HAVING COUNT(*) > 1)
60 BEGIN
61 DECLARE
62 @capiesireid INT
63 , @poziesireid INT
64 , @datavalidare DATETIME
65 , @identificator NVARCHAR(MAX)
66 , @identificatorid INT
67 , @codserver NVARCHAR(MAX)
68 , @x INT
69
70 SELECT TOP 1
71 @capiesireid = CapIesireID
72 , @poziesireid = PozIesireID
73 , @datavalidare = DataValidare
74 , @identificator = ISNULL(Identificator,'')
75 , @identificatorid = ISNULL(IdentificatorStatieID,0)
76 , @codserver = ISNULL(CodServer,'')
77 , @x = COUNT(*) - 1
78 FROM retail.BufferPozitiiBon
79 WHERE FirmaID = @FirmaId
80 AND DivizieID = @DivizieId
81 GROUP BY
82 [FirmaId]
83 , [DivizieId]
84 , [CapIesireId]
85 , [PozIesireId]
86 , [DataValidare]
87 , ISNULL([Identificator],'')
88 , ISNULL([IdentificatorStatieId],0)
89 , ISNULL([CodServer],'')
90 HAVING COUNT(*) > 1
91
92 DELETE TOP (@x) rb
93 FROM retail.BufferPozitiiBon rb
94 WHERE FirmaID = @firmaid
95 AND DivizieID = @divizieid
96 AND CapIesireID = @capiesireid
97 AND PozIesireID = @poziesireid
98 AND DataValidare = @datavalidare
99 AND ISNULL(Identificator,'') = ISNULL(@identificator,'')
100 AND ISNULL(IdentificatorStatieID,0) = ISNULL(@identificatorid,0)
101 AND ISNULL(CodServer,'') = ISNULL(@codserver,'')
102 END
103
104 BEGIN TRY
105
106 DECLARE
107 @DocIdBon INT
108 , @Debug INT = 0
109
110 , @IesCapId INT
111 , @IesPozId INT
112
113 , @IntrPozId INT
114 , @FurnizorID INT
115 , @FurnizorOriginalID INT
116 , @NumarIntr NVARCHAR(50)
117 , @DataIntr DATE
118 , @DocIntrId INT
119 , @TipDocINtrID INT
120 , @DataScadenta DATE
121 , @NumarFactIntr NVARCHAR(50)
122 , @DataFactIntr DATE
123 , @PretIntrare DECIMAL(18,5)
124 , @PretIntrareRedus DECIMAL(18,5)
125 , @PretCost DECIMAL(18,5)
126 , @PretCMP DECIMAL(18,5)
127 , @PretIntrareValuta DECIMAL(18,5)
128 , @ValutaIntrareId CHAR(3)
129 , @GestiuneId INT
130 , @LotIntrare NVARCHAR(50)
131 , @DataExpirare DATE
132 , @DataFabricare DATE
133 , @SerieIntrare NVARCHAR(50)
134 , @IntrPozOrigId INT
135 , @POOrderPozId INT
136 , @CantIesire DECIMAL(18,5)
137 , @Cant2 DECIMAL(18,5)
138 , @CantRetur DECIMAL(18,5)
139 , @Stoc DECIMAL(18,5)
140 , @TempSyncID INT
141 , @RetailPozIesireReturID INT
142 , @IesPozRefDetId INT
143 , @ProdusID INT
144 , @Serie NVARCHAR(100)
145 , @AgentId INT
146 , @Amanunt BIT
147 , @PretAmanuntBuffer DECIMAL(18,5)
148 , @PretAmanuntStoc DECIMAL(18,5)
149 , @Reev BIT
150 , @UserId int
151 , @GenerareReev BIT
152 , @NrZecimaleAmanunt int
153 , @NrZecimalePretVanzare int
154 , @NrZecimalePretIntrare int
155 , @IdIesPoz INT
156 , @GestiuneDestinatieId INT
157 , @AmanuntGestiuneDestinatie BIT
158 , @setare623 INT
159 , @setare351 INT
160 , @Setare350 INT
161 , @GestiuniMPIds NVARCHAR(MAX)
162
163 SELECT
164 @NrZecimaleAmanunt = ISNULL(dbo.ValoareSetare(529,@FirmaId,@DivizieId),2)
165 , @NrZecimalePretVanzare = ISNULL(dbo.ValoareSetare(247,@FirmaId,@DivizieId),2)
166 , @NrZecimalePretIntrare = ISNULL(dbo.ValoareSetare(295,@FirmaId,@divizieid),2)
167 , @setare623 = ISNULL(dbo.ValoareSetare(623,@FirmaId,@divizieid),2)
168 , @setare351 = dbo.ValoareSetare(351,@FirmaId,@DivizieID)
169 , @setare350 = dbo.ValoareSetare(350,@FirmaId,@DivizieID)
170
171 DECLARE @ErrorMessage NVARCHAR(4000)
172 DECLARE @ErrorSeverity INT
173 DECLARE @ErrorState INT
174 DECLARE @CrsStat INT
175 DECLARE @ValutaDefaultId VARCHAR(10)
176
177 -- Citire configurari din Retail.Config
178 DECLARE @ConfigTipDocIdFacturaCuStoc INT
179 DECLARE @ConfigTipDocIdBonCuStoc INT
180 DECLARE @ConfigTipDocBonConsum INT
181 DECLARE @ConfigVersiune NVARCHAR(10) -- 3-frmwrk vechi, 4-frmwrk nou
182 DECLARE @ConfigGestiuni NVARCHAR(4000) -- coduri gestiuni separate prin virgula
183 DECLARE @GestiuniIdsBonConsum NVARCHAR(MAX)
184 DECLARE @GestiuniRetail NVARCHAR(MAX)
185 DECLARE @ConfigCapListaPreturiID INT -- catalogul de preturi
186 DECLARE @ConfigClientImplicitID INT
187 DECLARE @ConfigID INT
188 DECLARE @ConfigTaxCode INT
189 DECLARE @ConfigTaxCodeBFF INT
190 DECLARE @ConfigTaxCodeBC INT
191 DECLARE @IgnoraAmbalaje BIT
192 DECLARE @TipDocStoc BIT
193 DECLARE @TipDocBCStoc BIT
194 DECLARE @PlajaBCId INT
195 DECLARE @StareCmdNoua INT
196
197 SELECT TOP 1 @StareCmdNoua = StareId
198 FROM dbo.tblStariDoc (NOLOCK)
199 WHERE DocId = 26--comanda client
200 AND FirmaId = @FirmaId
201 AND DivizieId = @DivizieId
202 AND ISNULL(Final, 0) = 1
203 AND ISNULL(FinalizatPartial, 0) = 1
204 AND ISNULL(DocValidat, 0) = 1
205
206 SELECT
207 @ConfigID = ConfigId
208 , @ConfigTipDocIdFacturaCuStoc = TipDocIdFacturaCuStoc
209 , @ConfigTipDocIdBonCuStoc = TipDocIdBonCuStoc
210 , @ConfigTipDocBonConsum = TipDocIdBonConsum
211 , @ConfigVersiune = ISNULL(Versiune,'3')
212 , @ConfigGestiuni = Gestiuni
213 , @ConfigCapListaPreturiID = ISNULL(CapListaPreturiID,0)
214 , @ConfigClientImplicitID = ClientImplicitID
215 , @ConfigTaxCode = TaxCode
216 , @ConfigTaxCodeBFF = TaxCodeBFFactura
217 , @GenerareReev = ISNULL(GenerareReev,0)
218 , @Descarcare = CASE WHEN FaraDescarcareStoc = 1 THEN 0 ELSE @Descarcare END
219 --, @NrZecimaleAmanunt = ISNULL(NrZecimaleAmanunt,2)
220 FROM Retail.Config (NOLOCK)
221 WHERE FirmaId = @FirmaId
222 AND DivizieId = @DivizieId
223
224 IF @ConfigTipDocBonConsum IS NULL
225 BEGIN
226 SELECT TOP 1 @ConfigTipDocBonConsum = TipDocId
227 FROM inv.TipDoc (NOLOCK)
228 WHERE DocId = 13
229 AND Firmaid = @FirmaId
230 AND DivizieId = @DivizieId
231 AND ISNULL(Inactiv,0) = 0
232 END
233
234 SELECT
235 @GestiuniIdsBonConsum = GestiuneIds
236 , @ConfigTaxCodeBC = TaxCodeP
237 , @PlajaBCId = TPlajaId
238 , @TipDocBCStoc = ISNULL(Stoc,0)
239 FROM inv.TipDoc (NOLOCK)
240 WHERE TipDocId = @ConfigTipDocBonConsum
241
242 IF @PlajaBCId IS NULL
243 BEGIN
244 SELECT TOP 1 @PlajaBCId = pd.PlajaId
245 FROM dbo.PlajaDoc pd (NOLOCK)
246 WHERE pd.FirmaId = @FirmaId
247 AND pd.DivizieId = @DivizieID
248 AND pd.DocId = 13
249 AND CAST(@DataCrt as DATE) BETWEEN CAST(ISNULL(pd.DataStart,'1979-01-01') AS DATE) AND CAST(ISNULL(pd.DataEnd,'2100-12-31') AS DATE)
250 END
251
252 SELECT
253 @IgnoraAmbalaje = IgnoraAmbalaje
254 , @TipDocStoc = ISNULL(Stoc,0)
255 FROM inv.TipDoc (NOLOCK)
256 WHERE TipDocId = @ConfigTipDocIdBonCuStoc
257
258 SELECT TOP 1 @GestiuneDestinatieId = GestiuneId
259 ,@AmanuntGestiuneDestinatie = ISNULL(Amanunt,0)
260 FROM dbo.tblGestiuni (NOLOCK)
261 WHERE FirmaId = @FirmaId
262 AND DivizieId = @DivizieId
263 AND ISNULL(Activ,0) = 1
264 AND ISNULL(TipGestiune,0) = 3
265 ORDER BY OrdineVanzare
266
267 IF @GestiuneDestinatieId IS NULL
268 BEGIN
269 SELECT TOP 1 @GestiuneDestinatieId = g.GestiuneId
270 ,@AmanuntGestiuneDestinatie = ISNULL(g.Amanunt,0)
271 FROM dbo.tblGestiuni g (NOLOCK)
272 INNER JOIN dbo.SplitString(@ConfigGestiuni,',') gest
273 on gest.val = g.CodGestiune
274 ORDER BY g.OrdineVanzare
275 END
276
277 SELECT @GestiuniMPIds = ISNULL(@GestiuniMPIds + ',','') + ',' + CAST(GestiuneId AS NVARCHAR(MAX))
278 FROM dbo.tblGestiuni (NOLOCK)
279 WHERE DivizieId = @DivizieId
280 AND FirmaId = @FirmaId
281 AND ISNULL(Activ,0) = 1
282 AND ISNULL(TipGestiune,0) = 6
283 ORDER BY OrdineVanzare
284
285 IF (ISNULL(@ConfigID,0) = 0)
286 RAISERROR ('---Nu au fost facute configurarile!', 16, 1)
287
288 DECLARE
289 @TipDocId INT
290 , @PlajaId INT
291 , @ReevCapId INT
292 , @SYS_PARTID INT
293 , @TaxCodeP INT
294
295 SELECT @SYS_PARTID = PartenerFirmaId
296 FROM dbo.tblFirme (NOLOCK)
297 WHERE FirmaId = @FirmaId
298
299 SELECT @ValutaDefaultId = pf.ValutaDefaultId
300 FROM dbo.tblParteneriFirma pf (NOLOCK)
301 WHERE pf.PartenerFirmaId = @SYS_PARTID
302
303 SELECT TOP 1
304 @TipDocId = TipDocId
305 , @TaxCodeP = TaxCodeP
306 FROM inv.TipDoc (NOLOCK)
307 WHERE DocId = 53
308 AND FirmaId = @FirmaId
309 AND DivizieId = @DivizieID
310 AND ISNULL(Stoc,0) = 1
311
312 SELECT TOP 1 @PlajaId = p.PlajaId
313 FROM dbo.Plaja p (NOLOCK)
314 INNER JOIN dbo.PlajaDoc pd (NOLOCK)
315 on pd.PlajaId = p.PlajaId
316 and pd.FirmaId = @FirmaId
317 and pd.DivizieId = @DivizieID
318 and pd.DocId = 53
319 and CAST(@DataCrt as DATE) BETWEEN CAST(ISNULL(DataStart,'1979-01-01') AS DATE) AND CAST(ISNULL(DataEnd,'2100-12-31') AS DATE)
320
321 --produse echivalate
322 PRINT 'Produse echivalate'
323 DECLARE @Crt INT
324 SET @Crt = 0
325 DECLARE @Nr INT
326 SET @Nr = 1
327
328 WHILE ISNULL(@Crt,0) < 50 AND ISNULL(@Nr,0) <> 0
329 BEGIN
330 SET @Nr = 0
331
332 UPDATE buff
333 SET buff.ProdusID = CAST(REPLACE(eq.NewData,'ProdusId=','') AS INT)
334 FROM Retail.BufferPozitiiBon buff (NOLOCK)
335 INNER JOIN dbo.EchivQueue EQ (NOLOCK)
336 ON 'ProdusId=' + CAST(buff.ProdusID AS VARCHAR(100)) = EQ.OldData
337 WHERE buff.FirmaID = @FirmaId
338 AND buff.DivizieID = @DivizieId
339 AND ISNULL(buff.Prelucrat,0) = 0 --Prelucrat=1 => pozitie sincronizata
340 AND eq.TabelaSursa = 'dbo.tblProduse'
341 AND eq.DataProcesare IS NOT NULL
342 AND ISNULL(eq.MsgProcesare,'') = ''
343
344 SET @Nr = @@ROWCOUNT
345 PRINT 'Nr. produse echivalate gasite pe care s-a facut update:' + CAST(@Nr AS VARCHAR)
346 SET @Crt = @Crt + 1
347 END
348
349 --DocId bon fiscal - 21
350 --DocId factura client - 5
351
352 --temporar Update in buffer docid=33->docid=21
353 UPDATE Retail.BufferPozitiiBon
354 SET DocId = 21
355 WHERE ISNULL(docID, 33) IN (33, 3310)
356
357 SET @DocIdBon = 21
358
359 IF OBJECT_ID('tempdb..#PozitiiBuffer') IS NOT NULL
360 DROP TABLE #PozitiiBuffer
361
362 CREATE TABLE #PozitiiBuffer
363 (
364 IesPozId INT IDENTITY(1,1)
365 ,IesCapId INT
366 ,IesCapInseratId INT
367 ,DocInseratId INT
368 ,DataIesInserat DATE
369 ,ProdusID INT
370 ,IntrPozId INT
371 ,CantIesire DECIMAL(18,4)
372 ,PretVanzare DECIMAL(18,2)
373 ,PretVanzareRedus DECIMAL(18,2)
374 ,Tva INT
375 ,GestiuneID INT
376 ,PretAmanunt DECIMAL(18,2)
377 ,PretAmanuntRedus DECIMAL(18,6)
378 ,Discount DECIMAL(18,2)
379 ,RetailPozIesireID INT
380 ,RetailPozIesireReturID INT
381 ,Identificator VARCHAR(10)
382 ,IdentificatorStatieID INT
383 ,RetailCapIesireID INT
384 ,DataDoc SMALLDATETIME
385 ,ValoareCash DECIMAL(18,2)
386 ,ValoareCard DECIMAL(18,2)
387 ,ValoareBonuri DECIMAL(18,2)
388 ,NrPozBon INT
389 ,UserCreareID INT
390 ,DataCreare DATETIME
391 ,UserValidareID INT
392 ,DataValidare DATETIME
393 ,Retur BIT
394 ,BufferPozitieBonID INT
395 ,Serie NVARCHAR(100) NULL
396 ,IntrPozOrigId INT NULL --se foloseste pt legatura la stoc a pozitiilor care vin cu intrpozid din buffer
397 ,NrBonFiscal NVARCHAR(100)
398 ,NrCard VARCHAR(50)
399 ,Observatii NVARCHAR(MAX)
400 ,ObservatiiInterne NVARCHAR(MAX)
401 ,ChitantaPos NVARCHAR(100)
402 ,IdCmdStornata INT
403 ,IdCmdAvans INT
404 ,SOrderPozId INT
405 ,AgentId INT
406 ,ValoareAmanuntRedus DECIMAL(18,6)
407 ,ValoareAmanunt DECIMAL(18,6)
408 ,ValoareFaraTva decimal(18,6)
409 ,Valoaretva decimal(18,6)
410 ,ValoareRedusaFaraTva decimal(18,6)
411 ,ValoareRedusaTva decimal(18,6)
412 ,IdIesPoz INT
413 ,CodServer nvarchar(50)
414 ,Plati xml
415 ,Promotii xml
416 ,Promotii_txt NVARCHAR(MAX)
417 ,IsMeniu BIT
418 ,ParentId INT
419 ,CardId INT
420 ,DocId INT
421 ,TipDocId INT
422 ,PlajaIncrement INT
423 )
424
425 IF OBJECT_ID('tempdb..#IesCap') IS NOT NULL
426 DROP TABLE #IesCap
427
428 CREATE TABLE #IesCap
429 (
430 IesCapID INT IDENTITY(1,1)
431 ,IesCapInseratId INT
432 ,ClientId INT
433 ,FirmaId INT
434 ,DivizieId INT
435 ,DocId INT
436 ,TipDocId INT
437 ,DataIes DATE
438 ,UserCreare NVARCHAR(50)
439 ,DataCreare DATETIME
440 ,ValoareFaraTVA DECIMAL(18,5)
441 ,ValoareTVA DECIMAL(18,5)
442 ,ValoareReducereFaraTVA DECIMAL(18,5)
443 ,ValoareReducereTVA DECIMAL(18,5)
444 ,ValoareAmanunt decimal(18,5)
445 ,Retur BIT
446 ,ValoareIncasata DECIMAL(18,2)
447 ,BonValoric DECIMAL(18,2)
448 ,[Card] DECIMAL(18,2)
449 ,[RetailCapIesireID] INT
450 ,CodCalc VARCHAR(10)
451 ,IdentificatorStatieID INT
452 ,DataValidare DATETIME
453 ,UserValidare NVARCHAR(50)
454 ,NrPozitii INT
455 ,NrBonFiscal NVARCHAR(100)
456 ,NrCard VARCHAR(50)
457 ,Observatii NVARCHAR(MAX)
458 ,ObservatiiInterne NVARCHAR(MAX)
459 ,UserCreareId INT
460 ,UserValidareId INT
461 ,ChitantaPos NVARCHAR(100)
462 ,IdCmdStornata INT
463 ,IdCmdAvans INT
464 ,AgentId INT
465 ,IesCapFacturaId INT
466 ,CodServer nvarchar(50)
467 ,Plati xml
468 ,CardId INT
469 ,PlajaIncrement INT
470 )
471
472 IF OBJECT_ID('tempdb..#Tichete') IS NOT NULL
473 DROP TABLE #Tichete
474
475 CREATE TABLE #Tichete
476 (
477 Id INT IDENTITY(1,1)
478 , IncasareBonuriID INT
479 , FirmaId INT
480 , DivizieId INT
481 , CapIesireId INT
482 , TichetId INT
483 , CantitateBonuri INT
484 , ValoareBon DECIMAL(18,2)
485 , UserCreareID INT
486 , DataCreare DATETIME
487 , Prelucrat BIT
488 , Identificator NVARCHAR(200)
489 , CodServer NVARCHAR(200)
490 , ModPlataId INT
491 , IesCapInseratId INT
492 )
493
494 --toate bonuri neprelucrate, inclusiv retur
495 INSERT INTO #PozitiiBuffer
496 (
497 IesCapId
498 ,ProdusID
499 ,IntrPozId
500 ,CantIesire
501 ,PretVanzare
502 ,PretVanzareRedus
503 ,Tva
504 ,GestiuneId
505 ,PretAmanunt
506 ,PretAmanuntRedus
507 ,Discount
508 ,RetailPozIesireID
509 ,RetailPozIesireReturID
510 --info cap
511 ,Identificator
512 ,IdentificatorStatieID
513 ,RetailCapIesireId
514 ,DataDoc
515 ,ValoareCash
516 ,ValoareCard
517 ,ValoareBonuri
518 ,NrPozBon
519 ,UserCreareID
520 ,DataCreare
521 ,UserValidareID
522 ,DataValidare
523 ,Retur
524 ,BufferPozitieBonID
525 ,Serie
526 ,IntrPozOrigId
527 ,NrBonFiscal
528 ,NrCard
529 ,Observatii
530 ,ObservatiiInterne
531 ,ChitantaPos
532 ,IdCmdStornata
533 ,SOrderPozId
534 ,AgentId
535 ,IdCmdAvans
536 ,ValoareAmanuntRedus
537 ,ValoareAmanunt
538 ,ValoareRedusaFaraTva
539 ,ValoareRedusaTva
540 ,ValoareFaraTva
541 ,Valoaretva
542 ,IdIesPoz
543 ,CodServer
544 ,Plati
545 ,Promotii
546 ,Promotii_txt
547 ,IsMeniu
548 ,ParentId
549 ,CardId
550 ,DocId
551 ,TipDocId
552 ,PlajaIncrement
553 )
554 SELECT
555 NULL AS IesCapId
556 , b.ProdusID
557 , NULL AS IntrPozId
558 , b.Cantitate AS CantIesire
559 , ROUND((b.PretAmanunt / ( 1 + ( CAST(t.Tva AS DECIMAL(18,2)) / 100 ) ) ),@NrZecimalePretVanzare) AS PretVanzare --??
560 , ROUND(b.PretAmanuntRedus / ( 1 + CAST(t.Tva AS DECIMAL(18,2)) / 100 ), @NrZecimalePretVanzare) AS PretVanzareRedus --??
561 , t.Tva AS TVA
562 , NULL AS GestiuneID
563 , b.PretAmanunt AS PretAmanunt
564 , b.PretAmanuntRedus AS PretAmanuntRedus
565 , b.Discount AS Discount
566 , b.PozIesireID AS RetailPozIesireId
567 , b.PozIesireReturID AS RetailPozIesireReturID
568 --info cap
569 , b.Identificator AS Identificator
570 , b.IdentificatorStatieID
571 , b.CapIesireId AS RetailCapIesireID
572 , b.DataDoc AS DataDoc
573 , b.ValoareCash
574 , b.ValoareCard
575 , b.ValoareBonuri
576 , b.NrPozBon
577 , b.UserCreareID
578 , b.DataCreare
579 , b.UserValidareID
580 , b.DataValidare
581 , b.Retur
582 , b.BufferPozitieBonID
583 , NULLIF(b.Serie,'')
584 , NULLIF(b.IntrPozId,0) --IntrPozOrigId
585 , b.NrBonFiscal
586 , cf.NumarCard
587 , b.Observatii
588 , b.ObservatiiInterne
589 , b.ChitantaPos
590 , b.CapIesireIdCmdStorn
591 , b.SOrderPozId
592 , b.AgentId AS AgentId
593 , b.CapIesireIdCmdIncas
594 , b.ValoareAmanuntRedus
595 , ROUND(b.Cantitate*b.PretAmanunt,2) as ValoareAmanunt
596 --, ROUND(isnull(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt)) - ROUND(((isnull(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt)) * t.Tva) / (100.00 + t.Tva)), 6), 6) AS ValoareRedusaFaraTva
597 , ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt))*100.00/(100.00+t.tva),6) AS ValoareRedusaFaraTva
598 --, ROUND(((isnull(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt)) * t.Tva) / (100.00 + t.Tva)), 6) AS ValoareRedusaTva
599 , ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt)),6) - ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt))*100.00/(100.00+t.tva),6) AS ValoareRedusaTva
600 --, ROUND(b.Cantitate*b.PretAmanunt - ROUND((b.Cantitate*b.PretAmanunt * t.Tva) / (100.00 + t.Tva), 6), 6) AS ValoareFaraTva
601 , CASE WHEN b.PretAmanunt = ISNULL(b.PretAmanuntRedus,b.PretAmanunt)
602 THEN ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt))*100.00/(100.00+t.tva),6)
603 ELSE ROUND(b.Cantitate*b.PretAmanunt*100.00/(100.00+t.tva),6)
604 END AS ValoareFaraTva
605 --, ROUND(( b.Cantitate*b.PretAmanunt * t.Tva) / (100.00 + t.Tva), 6) AS ValoareTva
606 , CASE WHEN b.PretAmanunt = ISNULL(b.PretAmanuntRedus,b.PretAmanunt)
607 THEN ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt)),6) - ROUND(ISNULL(b.ValoareAmanuntRedus,b.Cantitate*isnull(b.PretAmanuntRedus, b.PretAmanunt))*100.00/(100.00+t.tva),6)
608 ELSE ROUND(b.Cantitate*b.PretAmanunt,6) - ROUND(b.Cantitate*b.PretAmanunt*100.00/(100.00+t.tva),6)
609 END AS ValoareTva
610 , b.IdIesPoz
611 , b.CodServer
612 , b.ModuriPlata
613 , b.Promotii
614 , CAST(b.Promotii AS NVARCHAR(MAX))
615 , b.IsMeniu
616 , b.ParentId
617 , b.CardId
618 , b.DocID
619 , CASE WHEN b.DocID = 21 THEN @ConfigTipDocIdBonCuStoc ELSE @ConfigTipDocBonConsum END
620 , CASE WHEN b.DocId = 13 THEN DENSE_RANK() OVER (PARTITION BY b.DocId ORDER BY b.CapIesireId) END
621 FROM Retail.BufferPozitiiBon b ( NOLOCK )
622 INNER JOIN dbo.tblTva t ( NOLOCK )
623 ON b.TvaId = t.TvaId
624 LEFT JOIN dbo.tblCardFidelitate cf ( NOLOCK )
625 ON cf.CardId = b.CardId
626 WHERE b.FirmaId = @FirmaId
627 AND b.DivizieId = @DivizieId
628 AND ISNULL(b.Prelucrat,0) <> 1
629 AND ISNULL(b.DocId, @DocIdBon) IN (13,21)
630
631 IF @Debug=1 /*d*/
632 BEGIN
633 SELECT '#PozitiiBuffer:'
634 SELECT * FROM #PozitiiBuffer
635 END
636
637 INSERT INTO #IesCap
638 (
639 ClientId
640 ,FirmaId
641 ,DivizieId
642 ,DocId
643 ,TipDocId
644 ,DataIes
645 ,UserCreare
646 ,DataCreare
647 ,ValoareFaraTVA
648 ,ValoareTVA
649 ,ValoareReducereFaraTVA
650 ,ValoareReducereTVA
651 ,ValoareAmanunt
652 ,Retur
653 ,ValoareIncasata
654 ,BonValoric
655 ,[Card]
656 ,[RetailCapIesireID]
657 ,CodCalc
658 ,IdentificatorStatieID
659 ,DataValidare
660 ,UserValidare
661 ,NrPozitii
662 ,NrBonFiscal
663 ,NrCard
664 ,Observatii
665 ,ObservatiiInterne
666 ,UserCreareId
667 ,UserValidareId
668 ,ChitantaPos
669 ,IdCmdStornata
670 ,AgentId
671 ,IdCmdAvans
672 ,IesCapFacturaId
673 ,CodServer
674 ,Plati
675 ,CardId
676 ,PlajaIncrement
677 )
678 SELECT
679 @ConfigClientImplicitID
680 , @FirmaID
681 , @DivizieID
682 , MAX(poz.DocId) -- @DocIdBon
683 , MAX(poz.TipDocId) -- @ConfigTipDocIdBonCuStoc
684 --, DATEDIFF(dd, 0, poz.DataCreare)--fara ore/minute, altfel nu apare in fisa magazie
685 , poz.DataValidare
686 , ISNULL(MAX(u.Name),'POS') AS UserCreare
687 , poz.DataValidare AS DataCreare
688 , SUM(ISNULL(poz.ValoareFaraTva, ROUND(poz.CantIesire * poz.PretVanzare,2)))
689 --SUM(ROUND(poz.CantIesire * poz.PretVanzare * CAST(Tva AS DECIMAL(18, 2)) / 100, 2))
690 , SUM(ISNULL(poz.VAloareTva, poz.CantIesire * ( poz.PretAmanunt - poz.PretVanzare )))
691 , SUM(ISNULL(poz.ValoareRedusaFaraTva, ROUND(poz.CantIesire * poz.PretVanzareRedus,2)))
692 --, SUM(ROUND(poz.CantIesire * poz.PretVanzareRedus * CAST(Tva AS DECIMAL(18, 2)) / 100.0, 2))
693 , SUM(isnull(poz.ValoareRedusaTva, poz.CantIesire * ( poz.PretAmanuntRedus - poz.PretVanzareRedus )))
694 , SUM(isnull(poz.ValoareAmanunt,ROUND(poz.CantIesire*poz.PretAmanunt,2)))
695 , poz.Retur
696 , MAX(ValoareCash) AS ValoareCash
697 , MAX(ValoareBonuri) AS ValoareBonuri
698 , MAX(ValoareCard) AS ValoareCard
699 , MAX(poz.[RetailCapIesireID])
700 , ISNULL(poz.Identificator,'')
701 , MAX(poz.IdentificatorStatieID) AS IdentificatorStatieID
702 , MAX(poz.DataValidare) AS DataValidare
703 , MAX(u2.Name) AS UserValidare
704 , MAX(poz.NrPozBon) AS NrPozitii
705 , MAX(NrBonFiscal) AS NrBonFiscal
706 , MAX(NrCard) as NrCard
707 , MAX(poz.Observatii) AS Observatii
708 , MAX(poz.ObservatiiInterne) AS ObservatiiInterne
709 , MAX(UserCreareId) AS UserCreareId
710 , MAX(UserValidareId) AS UserValidareId
711 , MAX(ChitantaPos) AS ChitantaPos
712 , MAX(IdCmdStornata) AS IdCmdStornata
713 , MAX(isnull(poz.AgentId,u2.UnitateId)) AS AgentId
714 , MAX(IdCmdAvans) AS IdCmdAvans
715 , MAX(ipz.IesCapId) AS IesCapFacturaId
716 , poz.CodServer
717 , CAST(poz.Plati AS NVARCHAR(MAX))
718 , MAX(poz.CardId)
719 , MAX(poz.PlajaIncrement)
720 FROM #PozitiiBuffer poz
721 LEFT JOIN dbo.tblUsers u ( NOLOCK )
722 ON poz.UserCreareId = u.UserId
723 LEFT JOIN dbo.tblUsers u2 ( NOLOCK )
724 ON poz.UserValidareId = u2.UserId
725 LEFT JOIN inv.IesPoz ipz (NOLOCK)
726 ON poz.IdIesPoz = ipz.IesPozId
727 WHERE poz.IesCapId IS NULL
728 AND (ISNULL(poz.IsMeniu,0) = 1 OR poz.ParentId IS NULL)
729 GROUP BY
730 poz.RetailCapIesireId
731 , ISNULL(poz.Identificator,'')
732 , poz.CodServer
733 , poz.DataValidare
734 , poz.Retur
735 , CAST(poz.Plati AS NVARCHAR(MAX))
736
737 IF @Debug=1 /*d*/
738 BEGIN
739 SELECT '#IesCap:'
740 SELECT * FROM #IesCap
741 END
742
743 INSERT INTO #Tichete
744 (
745 IncasareBonuriID
746 , FirmaId
747 , DivizieId
748 , CapIesireId
749 , TichetId
750 , CantitateBonuri
751 , ValoareBon
752 , UserCreareID
753 , DataCreare
754 , Prelucrat
755 , Identificator
756 , CodServer
757 , ModPlataId
758 )
759
760 SELECT
761 b.IncasareBonuriID
762 , b.FirmaID
763 , b.DivizieID
764 , b.CapIesireID
765 , b.TichetID
766 , b.CantitateBonuri
767 , b.ValoareBon
768 , b.UserCreareID
769 , b.DataCreare
770 , 0
771 , b.Identificator
772 , b.CodServer
773 , b.ModPlataId
774 FROM Retail.BufferTichete b ( NOLOCK )
775 WHERE b.FirmaId = @FirmaId
776 AND b.DivizieId = @DivizieId
777 AND ISNULL(b.Prelucrat,0) <> 1
778
779 SELECT @GestiuniRetail = ISNULL(@GestiuniRetail + ',','') + CAST(g.GestiuneId AS NVARCHAR(MAX))
780 FROM dbo.SplitString(@ConfigGestiuni,',') codGest
781 INNER JOIN dbo.tblGestiuni g (NOLOCK)
782 ON g.CodGestiune = codGest.val
783 AND g.FirmaId = @FirmaId
784 AND g.DivizieId = @DivizieId
785 GROUP BY g.GestiuneId
786
787 IF @GestiuniRetail = ''
788 SET @GestiuniRetail = NULL
789
790 IF OBJECT_ID('tempdb..#GestiuniBonFiscal') IS NOT NULL
791 DROP TABLE #GestiuniBonFiscal
792 IF OBJECT_ID('tempdb..#GestiuniBonConsum') IS NOT NULL
793 DROP TABLE #GestiuniBonConsum
794
795 SELECT x.val
796 INTO #GestiuniBonFiscal
797 FROM dbo.SplitString(@GestiuniRetail,',') x
798
799 SELECT x.val
800 INTO #GestiuniBonConsum
801 FROM dbo.SplitString(@GestiuniIdsBonConsum,',') x
802
803 IF OBJECT_ID('tempdb..#Retete') IS NOT NULL
804 DROP TABLE #Retete
805 -- Toate retetele de pe divizia curenta
806 -- active
807 -- neanulate
808 -- care nu au bifa de IgnoraDescarcare
809 -- care au completat Cant sau Cant2
810
811 SELECT
812 rc.ProdusId
813 , rc.RetetaCapId
814 , rc.ValabilDeLa
815 , rc.ValabilPanaLa
816 , rc.Cant
817 , rc.Cant2
818 , COALESCE(g1.GestiuneId,g2.GestiuneId,@GestiuneDestinatieId) AS GestiuneDestinatieId
819 , COALESCE(g1.Amanunt,g2.Amanunt,@AmanuntGestiuneDestinatie) AS Amanunt
820 , x.val
821 INTO #Retete
822 FROM dbo.tblRetetaCap rc (NOLOCK)
823 INNER JOIN dbo.tblProduseDivizii pd (NOLOCK)
824 ON pd.ProdusId = rc.ProdusId
825 AND pd.DivizieId = @DivizieId
826 INNER JOIN dbo.tblRetetaPoz rp (NOLOCK)
827 ON rp.RetetaCapId = rc.RetetaCapId
828 LEFT JOIN dbo.tblRetetaCapFirme rcf (NOLOCK)
829 ON rcf.RetetaCapId = rc.RetetaCapId
830 LEFT JOIN dbo.tblRetetaCapGestiuniDest rgd (NOLOCK)
831 ON rgd.RetetaCapId = rc.RetetaCapId
832 AND rgd.FirmaId = @FirmaId
833 LEFT JOIN dbo.tblGestiuni g1 (NOLOCK)
834 ON g1.GestiuneId = rc.GestiuneDestinatieId
835 AND g1.DivizieId = @DivizieId
836 AND g1.FirmaId = @FirmaId
837 LEFT JOIN dbo.tblGestiuni g2 (NOLOCK)
838 ON g2.GestiuneId = rgd.GestiuneId
839 AND g2.DivizieId = @DivizieId
840 AND g2.FirmaId = @FirmaId
841 OUTER APPLY (SELECT * FROM dbo.SplitString(COALESCE(rc.GestiuneSursaIds,@GestiuniMPIds,NULLIF(@GestiuniRetail,'')),',')) x
842 WHERE rc.DivizieId = @DivizieId
843 AND ISNULL(rc.Inactiv,0) = 0
844 AND rc.DataAnulare IS NULL
845 AND ISNULL(rc.IgnoraDescarcare,0) = 0
846 AND (rc.Cant IS NOT NULL OR rc.Cant2 IS NOT NULL)
847 AND (rcf.RetetaCapFirmaId IS NULL OR rcf.FirmaId = @FirmaId)
848 GROUP BY
849 rc.ProdusId
850 , rc.RetetaCapId
851 , rc.ValabilDeLa
852 , rc.ValabilPanaLa
853 , rc.Cant
854 , rc.Cant2
855 , COALESCE(g1.GestiuneId,g2.GestiuneId,@GestiuneDestinatieId)
856 , COALESCE(g1.Amanunt,g2.Amanunt,@AmanuntGestiuneDestinatie)
857 , x.val
858
859 BEGIN TRAN T1
860
861 DECLARE @NrCifrePlajaBC INT
862 DECLARE @CurentPlajaBC INT
863 DECLARE @PrefixPlajaBC NVARCHAR(MAX)
864
865 IF @ConfigTipDocBonConsum IS NOT NULL
866 BEGIN
867 SELECT @CurentPlajaBC = Curent
868 , @PrefixPlajaBC = ISNULL(Prefix,'')
869 FROM dbo.Plaja WITH (UPDLOCK, HOLDLOCK)
870 WHERE PlajaId = @PlajaBCId
871
872 SELECT @NrCifrePlajaBC = NrCifre
873 FROM dbo.PlajaDoc (NOLOCK)
874 WHERE PlajaId = @PlajaBCId
875 AND DocId = 13
876
877 UPDATE dbo.Plaja
878 SET Curent = Curent + ISNULL((SELECT MAX(PlajaIncrement) FROM #IesCap),0)
879 WHERE PlajaId = @PlajaBCId
880 END
881
882 IF OBJECT_ID('tempdb..#IesCapInserate') IS NOT NULL
883 DROP TABLE #IesCapInserate
884
885 CREATE TABLE #IesCapInserate (IesCapId INT, RetailCapIesireId INT, CodPos NVARCHAR(100), DataValidare DATETIME, Retur BIT, DocId INT, DataIes DATE)
886
887 INSERT INTO inv.IesCap
888 (
889 ClientId
890 ,FirmaId
891 ,DivizieId
892 ,DocId
893 ,TipDocId
894 ,NumarIes
895 ,DataIes
896 ,NumarFactIes
897 ,DataFactIes
898 ,UserCreare
899 ,DataCreare
900 ,ValoareFaraTVA
901 ,ValoareTVA
902 ,ValoareReducereFaraTVA
903 ,ValoareReducereTVA
904 ,ValoareAmanunt
905 ,Retur
906 ,ValoareIncasata
907 ,BonValoric
908 ,[Card]
909 ,[RetailCapIesireID]
910 ,CodCalc
911 ,CodPos
912 ,DataValidare
913 ,UserValidare
914 ,NrPozitii
915 ,NrBonFiscal
916 ,NumarCard
917 ,Observatii
918 ,ObservatiiInterne
919 ,UserCreareId
920 ,UserValidareId
921 ,DataFacturare
922 ,UserFacturare
923 ,UserFacturareId
924 ,NumarChitantaCard
925 ,AgentId
926 ,IdentificatorStatieId
927 ,ValutaDefaultId
928 ,IesCapFacturaId
929 ,CapDocGeneratorId
930 ,DocGeneratorId
931 ,CodServer
932 )
933 OUTPUT inserted.IesCapId, inserted.RetailCapIesireId, inserted.CodPos, inserted.DataValidare, inserted.Retur, inserted.DocId, inserted.DataIes
934 INTO #IesCapInserate(IesCapId, RetailCapIesireId, CodPos, DataValidare, Retur, DocId, DataIes)
935 SELECT
936 ClientId
937 , FirmaId
938 , DivizieId
939 , DocId
940 , TipDocId
941 , CASE WHEN DocId = 13 THEN @PrefixPlajaBC + RIGHT(REPLICATE('0',ISNULL(@NrCifrePlajaBC,0)) + CAST(@CurentPlajaBC + PlajaIncrement - 1 AS NVARCHAR(MAX)),ISNULL(@NrCifrePlajaBC,40)) END
942 , DataIes
943 , CASE WHEN DocId = 13 THEN @PrefixPlajaBC + RIGHT(REPLICATE('0',ISNULL(@NrCifrePlajaBC,0)) + CAST(@CurentPlajaBC + PlajaIncrement - 1 AS NVARCHAR(MAX)),ISNULL(@NrCifrePlajaBC,40)) END
944 , DataIes
945 , UserCreare
946 , @DataCrt--DataCreare
947 , ValoareFaraTVA
948 , ValoareTVA
949 , ValoareReducereFaraTVA
950 , ValoareReducereTVA
951 , ValoareAmanunt
952 , Retur
953 , ValoareIncasata
954 , BonValoric
955 , [Card]
956 , [RetailCapIesireID]
957 , CodCalc
958 , CodCalc
959 , DataValidare
960 , UserValidare
961 , NrPozitii
962 , NrBonFiscal
963 , NrCard
964 , Observatii
965 , ObservatiiInterne
966 , UserCreareId
967 , UserValidareId
968 , CASE WHEN DocId = 13 THEN @DataCrt END
969 , CASE WHEN DocId = 13 THEN UserValidare END
970 , CASE WHEN DocId = 13 THEN UserValidareId END
971 , ChitantaPos
972 , AgentId
973 , IdentificatorStatieId
974 , @ValutaDefaultId
975 , IesCapFacturaId
976 , IesCapFacturaId
977 , CASE WHEN IesCapFacturaId IS NOT NULL THEN 5 END
978 , CodServer
979 FROM #IesCap
980
981
982 update c
983
984 set c.numaries=cast(c.iescapid as varchar(100))
985 from inv.iescap c
986 inner join #IesCapInserate ci on ci.IesCapId=c.IesCapId
987 where c.numaries is null
988
989 UPDATE tempCap
990 SET IesCapInseratId = temp.IesCapId
991 FROM #IesCap tempCap
992 INNER JOIN #IesCapInserate temp
993 ON temp.RetailCapIesireId = tempcap.RetailCapIesireID
994 AND temp.CodPos = tempcap.CodCalc
995 AND temp.DataValidare = tempcap.DataValidare
996 AND ISNULL(temp.Retur,0) = ISNULL(temp.Retur,0)
997
998 UPDATE tempPoz
999 SET IesCapInseratId = temp.IesCapId
1000 , DocInseratId = temp.DocId
1001 , DataIesInserat = temp.DataIes
1002 FROM #PozitiiBuffer tempPoz
1003 INNER JOIN #IesCapInserate temp
1004 ON temp.RetailCapIesireId = tempPoz.RetailCapIesireID
1005 AND temp.CodPos = tempPoz.Identificator
1006 AND temp.DataValidare = tempPoz.DataValidare
1007 AND ISNULL(temp.Retur,0) = ISNULL(temp.Retur,0)
1008
1009 UPDATE tempTichete
1010 SET IesCapInseratId = temp.IesCapId
1011 FROM #Tichete tempTichete
1012 INNER JOIN #IesCapInserate temp
1013 ON temp.RetailCapIesireId = tempTichete.CapIesireId
1014 AND temp.CodPos = tempTichete.Identificator
1015 AND temp.DataValidare = tempTichete.DataCreare
1016
1017 INSERT dbo.IesCapModPlata
1018 (
1019 IesCapId
1020 , Valoare
1021 , ModPlataId
1022 )
1023 SELECT
1024 temp.IesCapInseratId-- ies.IesCapId
1025 , CASE WHEN ISNULL(p.value('(./val)[1]', 'NVARCHAR(50)'),'') <> ''
1026 THEN p.value('(./val)[1]', 'DECIMAL(18,5)')
1027 ELSE NULL
1028 END AS Valoare
1029 , CAST(NULLIF(LTRIM(RTRIM(p.value('(./id)[1]', 'nvarchar(40)'))), '') AS INT) AS ModPlataId
1030 FROM #IesCap temp
1031 --INNER JOIN inv.Iescap ies (NOLOCK)
1032 -- ON ies.RetailCapIesireId = temp.RetailCapIesireId
1033 -- AND ies.CodCalc = temp.CodCalc
1034 -- AND ies.DataValidare = temp.DataValidare
1035 -- AND ies.FirmaId = @FirmaId
1036 -- AND ies.DivizieId = @DivizieID
1037 OUTER APPLY temp.Plati.nodes('/plati/mp') t (p)
1038 WHERE CAST(NULLIF(LTRIM(RTRIM(p.value('(./id)[1]', 'nvarchar(40)'))), '') AS INT) IS NOT NULL
1039 AND ISNULL(CASE WHEN ISNULL(p.value('(./val)[1]', 'NVARCHAR(50)'),'') <> ''
1040 THEN p.value('(./val)[1]', 'DECIMAL(18,5)')
1041 ELSE NULL
1042 END,0) <> 0
1043
1044 INSERT dbo.IesCapTichete
1045 (
1046 FirmaId
1047 , DivizieId
1048 , IescapId
1049 , ModPlataId
1050 , TichetId
1051 , ValoareBon
1052 , Cantitate
1053 , UserCreareId
1054 , DataCreare
1055 --, RetailIncasareBonuriId
1056 , RetailCapIesireId
1057 )
1058 --OUTPUT inserted.IesCapTichetID INTO @ict(IesCapTichetID)
1059 SELECT
1060 temp.FirmaId
1061 , temp.DivizieId
1062 , temp.IesCapInseratId --ies.IesCapId
1063 , temp.ModPlataId
1064 , temp.TichetId
1065 , temp.ValoareBon
1066 , SUM(temp.CantitateBonuri)
1067 , temp.UserCreareID
1068 , temp.DataCreare
1069 --, temp.IncasareBonuriID
1070 , temp.CapIesireId
1071 FROM #Tichete temp
1072 --INNER JOIN inv.IesCap ies (NOLOCK)
1073 -- ON ies.FirmaId = temp.FirmaId
1074 -- AND ies.DivizieId = temp.DivizieId
1075 -- AND ies.RetailCapIesireId = temp.CapIesireId
1076 -- AND ies.DataValidare = temp.DataCreare
1077 -- AND ies.CodCalc = temp.Identificator
1078 GROUP BY
1079 temp.FirmaId
1080 , temp.DivizieId
1081 , temp.IesCapInseratId --ies.IesCapId
1082 , temp.ModPlataId
1083 , temp.TichetId
1084 , temp.ValoareBon
1085 , temp.UserCreareId
1086 , temp.DataCreare
1087 , temp.CapIesireId
1088
1089 UPDATE b
1090 SET Prelucrat = 1
1091 FROM retail.BufferTichete b
1092 INNER JOIN #Tichete temp
1093 ON temp.IncasareBonuriID = b.IncasareBonuriID
1094 and temp.CapIesireId = b.CapIesireID
1095 WHERE b.FirmaId = @FirmaId
1096 AND b.DivizieID = @DivizieID
1097
1098 DECLARE @tcxs TABLE (TranContID INT)
1099
1100/* SELECT
1101 @DataCrt
1102 , p.value('cardid[1]', 'INT')
1103 , p.value('cid[1]', 'INT')
1104 , p.value('val[1]', 'DECIMAL(18, 5)')
1105 , temp.DataValidare
1106 , temp.UserValidareID
1107 , 1
1108 , @FirmaId
1109 , @DivizieID
1110 , temp.RetailCapIesireID
1111 , temp.RetailPozIesireID
1112 , temp.DataValidare
1113 , temp.Identificator
1114 , temp.IdentificatorStatieID
1115 , temp.CodServer
1116 --FROM #PuncteContoare temp
1117 FROM #PozitiiBuffer temp
1118 OUTER APPLY temp.Promotii.nodes('/promotii/promo') t (p)
1119 WHERE p.value('pozid[1]', 'INT') IS NOT NULL
1120 AND p.value('cid[1]', 'INT') <> 0
1121 AND p.value('val[1]', 'DECIMAL(18, 5)') <> 0
1122
1123 SELECT
1124 @DataCrt
1125 , temp.CardId
1126 , p.value('cid[1]', 'INT')
1127 , (-1) * p.value('val[1]', 'DECIMAL(18, 5)')
1128 , temp.DataValidare
1129 , temp.UserValidareID
1130 , 1
1131 , @FirmaId
1132 , @DivizieID
1133 , temp.RetailCapIesireID
1134 , temp.RetailPozIesireID
1135 , temp.DataValidare
1136 , temp.Identificator
1137 , temp.IdentificatorStatieID
1138 , temp.CodServer
1139 --FROM #PuncteContoare temp
1140 FROM #PozitiiBuffer temp
1141 OUTER APPLY temp.Promotii.nodes('/plati/mp') t (p)
1142 LEFT JOIN dbo.tblTranzactiiContoare tc (NOLOCK)
1143 ON tc.FirmaID = @FirmaId
1144 AND tc.DivizieID = @DivizieID
1145 AND tc.CapIesireID = temp.RetailCapIesireID
1146 AND tc.DataValidare = temp.DataValidare
1147 AND tc.Identificator = temp.Identificator
1148 AND tc.IdentificatorStatieID = temp.IdentificatorStatieID
1149 AND tc.CodServer = temp.CodServer
1150 WHERE p.value('cid[1]', 'INT') <> 0
1151 AND p.value('val[1]', 'DECIMAL(18, 5)') <> 0
1152 AND tc.TranContID IS NULL
1153*/
1154 --acumulare puncte
1155 INSERT dbo.tblTranzactiiContoare
1156 (
1157 [Data]
1158 , [CardId]
1159 , [ContorId]
1160 , [Valoare]
1161 , [DataCreare]
1162 , [UserCreareId]
1163 , [Prelucrat]
1164 , [FirmaID]
1165 , [DivizieID]
1166 , [CapIesireID]
1167 , [PozIesireID]
1168 , [DataValidare]
1169 , [Identificator]
1170 , [IdentificatorStatieID]
1171 , [CodServer]
1172 )
1173 OUTPUT inserted.TranContID INTO @tcxs(TranContID)
1174 SELECT
1175 @DataCrt
1176 , p.value('cardid[1]', 'INT')
1177 , p.value('cid[1]', 'INT')
1178 , p.value('val[1]', 'DECIMAL(18, 5)')
1179 , temp.DataValidare
1180 , temp.UserValidareID
1181 , 1
1182 , @FirmaId
1183 , @DivizieID
1184 , temp.RetailCapIesireID
1185 , temp.RetailPozIesireID
1186 , temp.DataValidare
1187 , temp.Identificator
1188 , temp.IdentificatorStatieID
1189 , temp.CodServer
1190 --FROM #PuncteContoare temp
1191 FROM #PozitiiBuffer temp
1192 OUTER APPLY temp.Promotii.nodes('/promotii/promo') t (p)
1193 WHERE p.value('pozid[1]', 'INT') IS NOT NULL
1194 AND p.value('cid[1]', 'INT') <> 0
1195 AND p.value('val[1]', 'DECIMAL(18, 5)') <> 0
1196 --consum puncte
1197 INSERT dbo.tblTranzactiiContoare
1198 (
1199 [Data]
1200 , [CardId]
1201 , [ContorId]
1202 , [Valoare]
1203 , [DataCreare]
1204 , [UserCreareId]
1205 , [Prelucrat]
1206 , [FirmaID]
1207 , [DivizieID]
1208 , [CapIesireID]
1209 --, [PozIesireID]
1210 , [DataValidare]
1211 , [Identificator]
1212 , [IdentificatorStatieID]
1213 , [CodServer]
1214 )
1215 OUTPUT inserted.TranContID INTO @tcxs(TranContID)
1216 SELECT
1217 @DataCrt
1218 , temp.CardId
1219 , p.value('cid[1]', 'INT')
1220 , (-1) * p.value('val[1]', 'DECIMAL(18, 5)')
1221 , temp.DataValidare
1222 , temp.UserValidareID
1223 , 1
1224 , @FirmaId
1225 , @DivizieID
1226 , temp.RetailCapIesireID
1227 --, temp.RetailPozIesireID
1228 , temp.DataValidare
1229 , temp.CodCalc
1230 , temp.IdentificatorStatieID
1231 , temp.CodServer
1232 --FROM #PuncteContoare temp
1233 FROM #IesCap temp -- #PozitiiBuffer temp
1234 OUTER APPLY temp.Plati.nodes('/plati/mp') t (p)
1235 LEFT JOIN dbo.tblTranzactiiContoare tc (NOLOCK)
1236 ON tc.FirmaID = @FirmaId
1237 AND tc.DivizieID = @DivizieID
1238 AND tc.CapIesireID = temp.RetailCapIesireID
1239 AND tc.DataValidare = temp.DataValidare
1240 AND tc.Identificator = temp.CodCalc
1241 AND tc.IdentificatorStatieID = temp.IdentificatorStatieID
1242 AND tc.CodServer = temp.CodServer
1243 WHERE p.value('cid[1]', 'INT') <> 0
1244 AND p.value('val[1]', 'DECIMAL(18, 5)') <> 0
1245 AND tc.TranContID IS NULL
1246
1247 UPDATE vc
1248 SET vc.Valoare = ISNULL(vc.Valoare, 0) + ISNULL(trx.Valoare, 0)
1249 FROM dbo.tblValoriContoare vc
1250 INNER JOIN (
1251 SELECT
1252 tc.ContorID
1253 , tc.CardId
1254 , SUM(tc.Valoare) AS Valoare
1255 FROM dbo.tblTranzactiiContoare tc
1256 INNER JOIN @tcxs x
1257 ON x.TranContID = tc.TranContID
1258 GROUP BY
1259 tc.ContorID
1260 , tc.CardId ) trx
1261 ON trx.ContorID = vc.ContorID
1262 AND trx.CardId = vc.CardID
1263
1264 IF OBJECT_ID('tempdb..#IesPozInserate') IS NOT NULL
1265 DROP TABLE #IesPozInserate
1266
1267 CREATE TABLE #IesPozInserate (CapDocId INT, DataDoc DATE, DocId INT, IesPozId INT, IesPoz2Id INT, FirmaId INT, DivizieId INT, Promotii XML )
1268
1269 IF EXISTS (SELECT TOP 1 * FROM #PozitiiBuffer WHERE ISNULL(IsMeniu,0) = 1)
1270 BEGIN
1271
1272 MERGE INTO inv.IesPoz2 T
1273 USING (
1274 SELECT DISTINCT
1275 pozRetail.IesCapInseratId AS IesCapId --cap.IesCapId
1276 , pozRetail.DataIesInserat AS DataIes --cap.DataIes
1277 , pozRetail.DocInseratId AS DocId --cap.DocId
1278 , pozRetail.ProdusID
1279 , pozRetail.CantIesire
1280 , pozRetail.PretVanzare
1281 , pozRetail.PretVanzareRedus
1282 , pozRetail.Discount
1283 , pozRetail.Tva
1284 , pozRetail.PretAmanunt
1285 , pozRetail.PretAmanuntRedus
1286 , pozRetail.RetailPozIesireID
1287 , pozRetail.RetailPozIesireReturID
1288 , NULL AS SorderPoz2Id
1289 , pozRetail.ValoareRedusaFaraTva
1290 , pozRetail.ValoareRedusaTva
1291 , pozRetail.ValoareFaraTva
1292 , pozRetail.ValoareTva
1293 , pozRetail.Promotii_txt AS Promotii
1294 FROM #PozitiiBuffer pozRetail
1295 INNER JOIN dbo.tblProduse pr (NOLOCK)
1296 ON pr.ProdusId = pozRetail.ProdusId
1297 --INNER JOIN #IesCap capRetail
1298 -- ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1299 -- AND pozRetail.Identificator = capRetail.CodCalc
1300 --INNER JOIN inv.IesCap cap ( NOLOCK )
1301 -- ON capRetail.CodCalc = cap.CodCalc
1302 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1303 -- AND cap.DocId IN (13,21)
1304 -- AND cap.DataValidare = capRetail.DataValidare
1305 WHERE /*cap.FirmaId = @FirmaID
1306 AND cap.DivizieId = @DivizieID
1307 AND */ISNULL(pozRetail.IsMeniu,0) = 1) AS S
1308 ON 1 = 2
1309 WHEN NOT MATCHED BY TARGET THEN
1310 INSERT
1311 (
1312 IesCapId
1313 , ProdusID
1314 , Cant
1315 , Pret
1316 , PretRedus
1317 , Discount
1318 , Tva
1319 , PretAmanunt
1320 , PretAmanuntRedus
1321 , RetailPozIesireID
1322 , RetailPozIesireReturID
1323 , SorderPoz2Id
1324 , ValoareRedusaFaraTva
1325 , ValoareRedusaTva
1326 , ValoareFaraTva
1327 , ValoareTva
1328 )
1329 VALUES
1330 (
1331 s.IesCapId
1332 , s.ProdusID
1333 , s.CantIesire
1334 , s.PretVanzare
1335 , s.PretVanzareRedus
1336 , s.Discount
1337 , s.Tva
1338 , s.PretAmanunt
1339 , s.PretAmanuntRedus
1340 , s.RetailPozIesireID
1341 , s.RetailPozIesireReturID
1342 , NULL
1343 , s.ValoareRedusaFaraTva
1344 , s.ValoareRedusaTva
1345 , s.ValoareFaraTva
1346 , s.ValoareTva
1347 )
1348 OUTPUT s.IesCapId, s.DataIes, s.DocId, inserted.IesPoz2Id, @FirmaId, @DivizieId, CAST(s.Promotii AS XML)
1349 INTO #IesPozInserate (CapDocId, DataDoc, DocId, IesPoz2Id, FirmaId, DivizieId, Promotii);
1350
1351 /*
1352 INSERT INTO inv.IesPoz2
1353 (
1354 IesCapId
1355 ,ProdusID
1356 ,Cant
1357 ,Pret
1358 ,PretRedus
1359 ,Tva
1360 ,PretAmanunt
1361 ,PretAmanuntRedus
1362 ,RetailPozIesireID
1363 ,RetailPozIesireReturID
1364 ,SorderPoz2Id
1365 ,ValoareRedusaFaraTva
1366 ,ValoareRedusaTva
1367 ,ValoareFaraTva
1368 ,ValoareTva
1369 )
1370 SELECT DISTINCT
1371 cap.IesCapId
1372 , pozRetail.ProdusID
1373 , pozRetail.CantIesire
1374 , pozRetail.PretVanzare
1375 , pozRetail.PretVanzareRedus
1376 , pozRetail.Tva
1377 , pozRetail.PretAmanunt
1378 , pozRetail.PretAmanuntRedus
1379 , pozRetail.RetailPozIesireID
1380 , pozRetail.RetailPozIesireReturID
1381 , NULL AS SorderPoz2Id
1382 , pozRetail.ValoareRedusaFaraTva
1383 , pozRetail.ValoareRedusaTva
1384 , pozRetail.ValoareFaraTva
1385 , pozRetail.ValoareTva
1386 FROM #PozitiiBuffer pozRetail
1387 INNER JOIN dbo.tblProduse pr (NOLOCK)
1388 ON pr.ProdusId = pozRetail.ProdusId
1389 INNER JOIN #IesCap capRetail
1390 ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1391 AND pozRetail.Identificator = capRetail.CodCalc
1392 INNER JOIN inv.IesCap cap ( NOLOCK )
1393 ON capRetail.CodCalc = cap.CodCalc
1394 AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1395 AND cap.DocId IN (13,21)
1396 AND cap.DataValidare = capRetail.DataValidare
1397 WHERE cap.FirmaId = @FirmaID
1398 AND cap.DivizieId = @DivizieID
1399 AND ISNULL(pozRetail.IsMeniu,0) = 1
1400 */
1401
1402 MERGE INTO inv.IesPoz T
1403 USING (
1404 SELECT DISTINCT
1405 pozRetail.IesCapInseratId AS IesCapId --cap.IesCapId
1406 , pozRetail.DataIesInserat AS DataIes --cap.DataIes
1407 , pozRetail.DocInseratId AS DocId --cap.DocId
1408 , meniu.IesPoz2Id
1409 , pozRetail.ProdusID
1410 , pozRetail.IntrPozId
1411 , pozRetail.IntrPozOrigId
1412 , pozRetail.CantIesire
1413 , ROUND(ISNULL(pozRetail.CantIesire * pr.GreutateNeta, CASE WHEN UPPER(um.Um) = 'KG' THEN pozRetail.CantIesire END),3) AS Cantitate2
1414 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzare END AS PretVanzare
1415 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzareRedus END AS PretVanzareRedus
1416 , pozRetail.Tva
1417 , pozRetail.GestiuneID
1418 , pozRetail.PretAmanunt
1419 , pozRetail.PretAmanuntRedus
1420 , pozRetail.Discount
1421 , pozRetail.RetailPozIesireID
1422 , pozRetail.RetailPozIesireReturID
1423 , pozRetail.Serie
1424 , CASE WHEN pozRetail.DocId = 13 THEN @ConfigTaxCodeBC
1425 ELSE CASE WHEN ISNULL(pozRetail.IdIesPoz, 0) = 0 THEN @ConfigTaxCode ELSE @ConfigTaxCodeBFF END
1426 END AS TaxCode
1427 , pozRetail.SOrderPozId
1428 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaFaraTva END AS ValoareRedusaFaraTva
1429 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaTva END AS ValoareRedusaTva
1430 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareFaraTva END AS ValoareFaraTva
1431 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareTva END AS ValoareTva
1432 , pozRetail.Promotii_txt AS Promotii
1433 FROM #PozitiiBuffer pozRetail
1434 INNER JOIN dbo.tblProduse pr (NOLOCK)
1435 ON pr.ProdusId = pozRetail.ProdusId
1436 INNER JOIN dbo.tblUm UM (NOLOCK)
1437 ON um.UmId = pr.UmId
1438 --INNER JOIN #IesCap capRetail
1439 -- ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1440 -- AND pozRetail.Identificator = capRetail.CodCalc
1441 --INNER JOIN inv.IesCap cap ( NOLOCK )
1442 -- ON capRetail.CodCalc = cap.CodCalc
1443 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1444 -- AND cap.DocId in (13,21)
1445 -- AND cap.DataValidare = capRetail.DataValidare
1446 INNER JOIN inv.IesPoz2 meniu (NOLOCK)
1447 ON meniu.IesCapId = pozRetail.IesCapInseratId --cap.IesCapId
1448 AND meniu.RetailPozIesireID = pozRetail.ParentId
1449 WHERE /*cap.FirmaId = @FirmaID
1450 AND cap.DivizieId = @DivizieID
1451 AND*/ pozRetail.ParentId IS NOT NULL) AS S
1452 ON 1 = 2
1453 WHEN NOT MATCHED BY TARGET THEN
1454 INSERT
1455 (
1456 IesCapId
1457 , IesPoz2Id
1458 , FirmaID
1459 , DivizieId
1460 , ProdusID
1461 , IntrPozId
1462 , IntrPozOrigId
1463 , CantIesire
1464 , Cantitate2
1465 , CantFacturata
1466 , PretVanzare
1467 , PretVanzareRedus
1468 , Tva
1469 , GestiuneID
1470 , PretAmanunt
1471 , PretAmanuntRedus
1472 , Discount
1473 , RetailPozIesireID
1474 , RetailPozIesireReturID
1475 , SerieIntrare
1476 , TaxCode
1477 , SOrderPozId
1478 , ValoareRedusaFaraTva
1479 , ValoareRedusaTva
1480 , ValoareFaraTva
1481 , ValoareTva
1482 )
1483 VALUES
1484 (
1485 s.IesCapId
1486 , s.IesPoz2Id
1487 , @FirmaId
1488 , @DivizieId
1489 , s.ProdusID
1490 , s.IntrPozId
1491 , s.IntrPozOrigId
1492 , s.CantIesire
1493 , s.Cantitate2
1494 , s.CantIesire
1495 , s.PretVanzare
1496 , s.PretVanzareRedus
1497 , s.Tva
1498 , s.GestiuneID
1499 , s.PretAmanunt
1500 , s.PretAmanuntRedus
1501 , s.Discount
1502 , s.RetailPozIesireID
1503 , s.RetailPozIesireReturID
1504 , s.Serie
1505 , s.TaxCode
1506 , s.SOrderPozId
1507 , s.ValoareRedusaFaraTva
1508 , s.ValoareRedusaTva
1509 , s.ValoareFaraTva
1510 , s.ValoareTva
1511 )
1512 OUTPUT s.IesCapId, s.DataIes, s.DocId, inserted.IesPozId, @FirmaId, @DivizieId, CAST(s.Promotii AS XML)
1513 INTO #IesPozInserate (CapDocId, DataDoc, DocId, IesPozId, FirmaId, DivizieId, Promotii);
1514
1515 /*
1516 INSERT INTO inv.IesPoz
1517 (
1518 IesCapId
1519 ,IesPoz2Id
1520 ,FirmaID
1521 ,DivizieId
1522 ,ProdusID
1523 ,IntrPozId
1524 ,IntrPozOrigId
1525 ,CantIesire
1526 ,CantFacturata
1527 --,Cantitate2
1528 ,PretVanzare
1529 ,PretVanzareRedus
1530 ,Tva
1531 ,GestiuneID
1532 ,PretAmanunt
1533 ,PretAmanuntRedus
1534 ,RetailPozIesireID
1535 ,RetailPozIesireReturID
1536 ,SerieIntrare
1537 ,TaxCode
1538 --,Amanunt
1539 ,SOrderPozId
1540 ,ValoareRedusaFaraTva
1541 ,ValoareRedusaTva
1542 ,ValoareFaraTva
1543 ,ValoareTva
1544 )
1545 SELECT DISTINCT
1546 cap.IesCapId
1547 , meniu.IesPoz2Id
1548 , @FirmaID
1549 , @DivizieID
1550 , pozRetail.ProdusID
1551 , pozRetail.IntrPozId
1552 , pozRetail.IntrPozOrigId
1553 , pozRetail.CantIesire
1554 , pozRetail.CantIesire
1555 --, CASE WHEN (retcap.GestiuneDestinatieId IS NOT NULL OR g.GestiuneId IS NOT NULL OR ISNULL(retcap.IgnoraDescarcare,0) = 0) AND retcap.Cant IS NULL
1556 -- THEN pozRetail.CantIesire * pr.GreutateNeta
1557 -- END
1558 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzare END
1559 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzareRedus END
1560 , pozRetail.Tva
1561 , pozRetail.GestiuneID
1562 , pozRetail.PretAmanunt
1563 , pozRetail.PretAmanuntRedus
1564 , pozRetail.RetailPozIesireID
1565 , pozRetail.RetailPozIesireReturID
1566 , pozRetail.Serie
1567 , CASE WHEN pozRetail.DocId = 13 THEN @ConfigTaxCodeBC
1568 ELSE CASE WHEN ISNULL(pozRetail.IdIesPoz, 0) = 0 THEN @ConfigTaxCode ELSE @ConfigTaxCodeBFF END
1569 END
1570 --, 1
1571 , pozRetail.SOrderPozId
1572 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaFaraTva END
1573 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaTva END
1574 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareFaraTva END
1575 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareTva END
1576 FROM #PozitiiBuffer pozRetail
1577 INNER JOIN dbo.tblProduse pr (NOLOCK)
1578 ON pr.ProdusId = pozRetail.ProdusId
1579 INNER JOIN #IesCap capRetail
1580 ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1581 AND pozRetail.Identificator = capRetail.CodCalc
1582 INNER JOIN inv.IesCap cap ( NOLOCK )
1583 ON capRetail.CodCalc = cap.CodCalc
1584 AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1585 AND cap.DocId in (13,21)
1586 AND cap.DataValidare = capRetail.DataValidare
1587 INNER JOIN inv.IesPoz2 meniu (NOLOCK)
1588 ON meniu.IesCapId = cap.IesCapId
1589 AND meniu.RetailPozIesireID = pozRetail.ParentId
1590 --LEFT JOIN dbo.tblRetetacap retcap (NOLOCK)
1591 -- ON retcap.ProdusId = pozRetail.ProdusId
1592 -- AND retcap.DivizieId = @divizieId
1593 -- AND ISNULL(retcap.Inactiv,0) = 0
1594 -- AND retcap.DataAnulare IS NULL
1595 -- AND cap.dataies BETWEEN ISNULL(retcap.ValabilDeLa,'') and ISNULL(retcap.ValabilPanaLA,'22000101')
1596 --LEFT JOIN dbo.tblRetetaCapGestiuniDest rgd (NOLOCK)
1597 -- ON rgd.RetetaCapId = retcap.RetetaCapId
1598 -- AND rgd.FirmaId = @FirmaId
1599 --LEFT JOIN dbo.tblGestiuni g (NOLOCK)
1600 -- ON g.GestiuneId = rgd.GestiuneId
1601 -- AND g.FirmaId = @FirmaId
1602 -- AND g.DivizieId = @DivizieID
1603 WHERE cap.FirmaId = @FirmaID
1604 AND cap.DivizieId = @DivizieID
1605 AND pozRetail.ParentId IS NOT NULL
1606 */
1607
1608 END
1609
1610 MERGE INTO inv.IesPoz T
1611 USING (
1612 SELECT DISTINCT
1613 pozRetail.IesCapInseratId AS IesCapId --cap.IesCapId
1614 , pozRetail.DataIesInserat AS DataIes --cap.DataIes
1615 , pozRetail.DocInseratId AS DocId --cap.DocId
1616 , pozRetail.ProdusID
1617 , pozRetail.IntrPozId
1618 , pozRetail.IntrPozOrigId
1619 , pozRetail.CantIesire
1620 , ROUND(ISNULL(pozRetail.CantIesire * pr.GreutateNeta, CASE WHEN UPPER(um.Um) = 'KG' THEN pozRetail.CantIesire END),3) AS Cantitate2
1621 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzare END AS PretVanzare
1622 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzareRedus END AS PretVanzareRedus
1623 , pozRetail.Tva
1624 , pozRetail.GestiuneID
1625 , pozRetail.PretAmanunt
1626 , pozRetail.PretAmanuntRedus
1627 , pozRetail.Discount
1628 , pozRetail.RetailPozIesireID
1629 , pozRetail.RetailPozIesireReturID
1630 , pozRetail.Serie
1631 , CASE WHEN pozRetail.DocId = 13 THEN @ConfigTaxCodeBC
1632 ELSE CASE WHEN ISNULL(pozRetail.IdIesPoz, 0) = 0 THEN @ConfigTaxCode ELSE @ConfigTaxCodeBFF END
1633 END AS TaxCode
1634 , pozRetail.SOrderPozId
1635 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaFaraTva END AS ValoareRedusaFaraTva
1636 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaTva END AS ValoareRedusaTva
1637 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareFaraTva END AS ValoareFaraTva
1638 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareTva END AS ValoareTva
1639 , pozRetail.Promotii_txt AS Promotii
1640 FROM #PozitiiBuffer pozRetail
1641 INNER JOIN dbo.tblProduse pr (NOLOCK)
1642 ON pr.ProdusId = pozRetail.ProdusId
1643 INNER JOIN dbo.tblUm um (NOLOCK)
1644 ON um.UmId = pr.UmId
1645 --INNER JOIN #IesCap capRetail
1646 -- ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1647 -- AND pozRetail.Identificator = capRetail.CodCalc
1648 --INNER JOIN inv.IesCap cap ( NOLOCK )
1649 -- ON capRetail.CodCalc = cap.CodCalc
1650 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1651 -- AND cap.DocId IN (13,21)
1652 -- AND cap.DataValidare = capRetail.DataValidare
1653 WHERE /*cap.FirmaId = @FirmaID
1654 AND cap.DivizieId = @DivizieID
1655 AND*/ pozRetail.ParentId IS NULL
1656 AND ISNULL(pozRetail.IsMeniu,0) = 0) AS S
1657 ON 1 = 2
1658 WHEN NOT MATCHED BY TARGET THEN
1659 INSERT
1660 (
1661 IesCapId
1662 , FirmaID
1663 , DivizieId
1664 , ProdusID
1665 , IntrPozId
1666 , IntrPozOrigId
1667 , CantIesire
1668 , Cantitate2
1669 , CantFacturata
1670 , PretVanzare
1671 , PretVanzareRedus
1672 , Tva
1673 , GestiuneID
1674 , PretAmanunt
1675 , PretAmanuntRedus
1676 , Discount
1677 , RetailPozIesireID
1678 , RetailPozIesireReturID
1679 , SerieIntrare
1680 , TaxCode
1681 , SOrderPozId
1682 , ValoareRedusaFaraTva
1683 , ValoareRedusaTva
1684 , ValoareFaraTva
1685 , ValoareTva
1686 )
1687 VALUES
1688 (
1689 s.IesCapId
1690 , @FirmaID
1691 , @DivizieID
1692 , s.ProdusID
1693 , s.IntrPozId
1694 , s.IntrPozOrigId
1695 , s.CantIesire
1696 , s.Cantitate2
1697 , s.CantIesire
1698 , s.PretVanzare
1699 , s.PretVanzareRedus
1700 , s.Tva
1701 , s.GestiuneID
1702 , s.PretAmanunt
1703 , s.PretAmanuntRedus
1704 , s.Discount
1705 , s.RetailPozIesireID
1706 , s.RetailPozIesireReturID
1707 , s.Serie
1708 , s.TaxCode
1709 , s.SOrderPozId
1710 , s.ValoareRedusaFaraTva
1711 , s.ValoareRedusaTva
1712 , s.ValoareFaraTva
1713 , s.ValoareTva
1714 )
1715 OUTPUT s.IesCapId, s.DataIes, s.DocId, inserted.IesPozId, @FirmaId, @DivizieId, CAST(s.Promotii AS XML)
1716 INTO #IesPozInserate (CapDocId, DataDoc, DocId, IesPozId, FirmaId, DivizieId, Promotii);
1717
1718 /*
1719 INSERT INTO inv.IesPoz
1720 (
1721 IesCapId
1722 ,FirmaID
1723 ,DivizieId
1724 ,ProdusID
1725 ,IntrPozId
1726 ,IntrPozOrigId
1727 ,CantIesire
1728 ,CantFacturata
1729 --,Cantitate2
1730 ,PretVanzare
1731 ,PretVanzareRedus
1732 ,Tva
1733 ,GestiuneID
1734 ,PretAmanunt
1735 ,PretAmanuntRedus
1736 ,RetailPozIesireID
1737 ,RetailPozIesireReturID
1738 ,SerieIntrare
1739 ,TaxCode
1740 --,Amanunt
1741 ,SOrderPozId
1742 ,ValoareRedusaFaraTva
1743 ,ValoareRedusaTva
1744 ,ValoareFaraTva
1745 ,ValoareTva
1746 )
1747 SELECT DISTINCT
1748 cap.IesCapId
1749 , @FirmaID
1750 , @DivizieID
1751 , pozRetail.ProdusID
1752 , pozRetail.IntrPozId
1753 , pozRetail.IntrPozOrigId
1754 , pozRetail.CantIesire
1755 , pozRetail.CantIesire
1756 --, CASE WHEN ret.RetetaCapId IS NOT NULL AND ret.Cant IS NULL
1757 -- THEN pozRetail.CantIesire * pr.GreutateNeta
1758 -- END
1759 --, CASE WHEN (retcap.GestiuneDestinatieId IS NOT NULL OR g.GestiuneId IS NOT NULL OR ISNULL(retcap.IgnoraDescarcare,0) = 0) AND retcap.Cant IS NULL
1760 -- THEN pozRetail.CantIesire * pr.GreutateNeta
1761 -- END
1762 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzare END
1763 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.PretVanzareRedus END
1764 , pozRetail.Tva
1765 , pozRetail.GestiuneID
1766 , pozRetail.PretAmanunt
1767 , pozRetail.PretAmanuntRedus
1768 , pozRetail.RetailPozIesireID
1769 , pozRetail.RetailPozIesireReturID
1770 , pozRetail.Serie
1771 , CASE WHEN pozRetail.DocId = 13 THEN @ConfigTaxCodeBC
1772 ELSE CASE WHEN ISNULL(pozRetail.IdIesPoz, 0) = 0 THEN @ConfigTaxCode ELSE @ConfigTaxCodeBFF END
1773 END
1774 --, 1
1775 , pozRetail.SOrderPozId
1776 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaFaraTva END
1777 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareRedusaTva END
1778 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareFaraTva END
1779 , CASE WHEN pozRetail.DocId <> 13 THEN pozRetail.ValoareTva END
1780 FROM #PozitiiBuffer pozRetail
1781 INNER JOIN dbo.tblProduse pr (NOLOCK)
1782 ON pr.ProdusId = pozRetail.ProdusId
1783 INNER JOIN #IesCap capRetail
1784 ON pozRetail.RetailCapIesireID = capRetail.RetailCapIesireId
1785 AND pozRetail.Identificator = capRetail.CodCalc
1786 INNER JOIN inv.IesCap cap ( NOLOCK )
1787 ON capRetail.CodCalc = cap.CodCalc
1788 AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
1789 AND cap.DocId IN (13,21)
1790 AND cap.DataValidare = capRetail.DataValidare
1791 --LEFT JOIN #Retete ret
1792 -- ON ret.ProdusId = pozRetail.ProdusID
1793 -- AND cap.DataIes BETWEEN ISNULL(ret.ValabilDeLa,'') AND ISNULL(ret.ValabilPanaLa,'22000101')
1794 --LEFT JOIN dbo.tblRetetacap retcap (NOLOCK)
1795 -- ON retcap.ProdusId = pozRetail.ProdusId
1796 -- AND retcap.DivizieId = @divizieId
1797 -- AND ISNULL(retcap.Inactiv,0) = 0
1798 -- AND retcap.DataAnulare IS NULL
1799 -- AND cap.dataies BETWEEN ISNULL(retcap.ValabilDeLa,'') and ISNULL(retcap.ValabilPanaLA,'22000101')
1800 --LEFT JOIN dbo.tblRetetaCapGestiuniDest rgd (NOLOCK)
1801 -- ON rgd.RetetaCapId = retcap.RetetaCapId
1802 -- AND rgd.FirmaId = @FirmaId
1803 --LEFT JOIN dbo.tblGestiuni g (NOLOCK)
1804 -- ON g.GestiuneId = rgd.GestiuneId
1805 -- AND g.FirmaId = @FirmaId
1806 -- AND g.DivizieId = @DivizieID
1807 WHERE cap.FirmaId = @FirmaID
1808 AND cap.DivizieId = @DivizieID
1809 AND pozRetail.ParentId IS NULL
1810 AND ISNULL(pozRetail.IsMeniu,0) = 0
1811 */
1812
1813 --INSERT dbo.tblPozDocPromo
1814 --(
1815 -- CapDocId
1816 --, DataDoc
1817 --, DocId
1818 --, PozDocId
1819 --, PozDoc2Id
1820 --, PromotieId
1821 --, ContorId
1822 --, Valoare
1823 --, ProdusId
1824 --, Procent
1825 --, CardId
1826 --, ClientId
1827 --, Mesaj
1828 --)
1829 --SELECT
1830 -- temp.CapDocId
1831 --, temp.DataDoc
1832 --, temp.DocId
1833 --, temp.IesPozId
1834 --, temp.IesPoz2Id
1835 --, p.value('pid[1]', 'INT')
1836 --, CASE WHEN p.value('cid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('cid[1]', 'INT') END
1837 --, CASE WHEN p.value('val[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('val[1]', 'DECIMAL(18, 5)') END
1838 --, CASE WHEN p.value('prodid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('prodid[1]', 'INT') END
1839 --, CASE WHEN p.value('proc[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('proc[1]', 'DECIMAL(18, 5)') END
1840 --, CASE WHEN p.value('cardid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('cardid[1]', 'INT') END
1841 --, CASE WHEN p.value('clientid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('clientid[1]', 'INT') END
1842 --, NULL
1843 --FROM #IesPozInserate temp
1844 -- OUTER APPLY temp.Promotii.nodes('/promotii/promo') t (p)
1845 --WHERE p.value('pid[1]', 'INT') IS NOT NULL
1846 -- AND p.value('pozid[1]', 'INT') IS NOT NULL
1847
1848 SELECT
1849 temp.CapDocId
1850 , temp.DataDoc
1851 , temp.DocId
1852 , temp.IesPozId
1853 , temp.IesPoz2Id
1854 , CAST(p.value('pid[1]', 'INT') AS INT) PId
1855 , CAST(CASE WHEN p.value('cid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('cid[1]', 'INT') END AS INT) CId
1856 , CAST(CASE WHEN p.value('val[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('val[1]', 'DECIMAL(18, 5)') END AS DECIMAL(18,5)) Val
1857 , CAST(CASE WHEN p.value('prodid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('prodid[1]', 'INT') END AS INT) ProdId
1858 , CAST(CASE WHEN p.value('proc[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('proc[1]', 'DECIMAL(18, 5)') END AS DECIMAL(18,5)) [Proc]
1859 , CAST(CASE WHEN p.value('cardid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('cardid[1]', 'INT') END AS INT) CardId
1860 , CAST(CASE WHEN p.value('clientid[1]', 'NVARCHAR(MAX)') = '' THEN NULL ELSE p.value('clientid[1]', 'INT') END AS INT) ClientId
1861 , CAST(NULL AS NVARCHAR(MAX)) Mesaj
1862 INTO #TempPromotii
1863 FROM #IesPozInserate temp
1864 OUTER APPLY temp.Promotii.nodes('/promotii/promo') t (p)
1865 WHERE p.value('pid[1]', 'INT') IS NOT NULL
1866 AND p.value('pozid[1]', 'INT') IS NOT NULL
1867
1868 IF EXISTS(SELECT TOP 1 * FROM #TempPromotii)
1869 BEGIN
1870
1871 INSERT dbo.tblPozDocPromo
1872 (
1873 CapDocId
1874 , DataDoc
1875 , DocId
1876 , PozDocId
1877 , PozDoc2Id
1878 , PromotieId
1879 , ContorId
1880 , Valoare
1881 , ProdusId
1882 , Procent
1883 , CardId
1884 , ClientId
1885 , Mesaj
1886 )
1887 SELECT
1888 temp.CapDocId
1889 , temp.DataDoc
1890 , temp.DocId
1891 , temp.IesPozId
1892 , temp.IesPoz2Id
1893 , temp.PId
1894 , temp.CId
1895 , temp.Val
1896 , temp.ProdId
1897 , temp.[Proc]
1898 , temp.CardId
1899 , ISNULL(temp.ClientId,@ConfigClientImplicitID) AS ClientId
1900 , temp.Mesaj
1901 FROM #TempPromotii temp
1902
1903 UPDATE capp
1904 set capp.Descrierepromotie = STUFF((SELECT ' ●' + isnull(temp.mesaj, pp.Promotie) + '<br>'
1905 from #TempPromotii temp
1906 inner join dbo.tblpromotii pp (NOLOCK)
1907 on pp.PromotieId = temp.PId
1908 WHERE temp.IesPozId = capp.IesPozId
1909 and (temp.val > 0 or temp.[Proc] > 0 or temp.mesaj is not null)
1910 and isnull(pp.NoDisplay,0) = 0
1911 order by pp.Promotie
1912 FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,0,'')
1913 from inv.IesPoz capp
1914 INNER JOIN #IesPozInserate ip
1915 ON ip.IesPozId = capp.IesPozId
1916
1917 UPDATE capp
1918 set capp.[Descriere Promotii] = STUFF((SELECT ' ●' + isnull(temp.mesaj, pp.Promotie) + '<br>'
1919 from #TempPromotii temp
1920 inner join dbo.tblpromotii pp (NOLOCK)
1921 on pp.PromotieId = temp.PId
1922 WHERE temp.IesPoz2Id = capp.IesPoz2Id
1923 and (temp.val > 0 or temp.[Proc] > 0 or temp.mesaj is not null)
1924 and isnull(pp.NoDisplay,0) = 0
1925 order by pp.Promotie
1926 FOR XML PATH(''),TYPE).value('.','nvarchar(max)'),1,0,'')
1927 from inv.IesPoz2 capp
1928 INNER JOIN #IesPozInserate ip
1929 ON ip.IesPoz2Id = capp.IesPoz2Id
1930 END
1931
1932 --SELECT *
1933 --INTO TempPozPromo
1934 --FROM #IesPozInserate
1935
1936 -- inserare detalii din comanda
1937 IF OBJECT_ID('tempdb..#ParentIesPozInserati') IS NOT NULL
1938 DROP TABLE #ParentIesPozInserati
1939
1940 CREATE TABLE #ParentIesPozInserati (IesPozId INT)
1941 INSERT INTO inv.IesPoz
1942 (
1943 IesCapId
1944 ,FirmaID
1945 ,DivizieId
1946 ,ProdusID
1947 ,IntrPozId
1948 ,IntrPozOrigId
1949 ,CantIesire
1950 ,CantFacturata
1951 ,PretVanzare
1952 ,PretVanzareRedus
1953 ,Tva
1954 ,GestiuneID
1955 ,PretAmanunt
1956 ,PretAmanuntRedus
1957 --,RetailPozIesireID
1958 ,RetailPozIesireReturID
1959 ,SerieIntrare
1960 ,TaxCode
1961 --,Amanunt
1962 ,SOrderPozId
1963 ,ValoareRedusaFaraTva
1964 ,ValoareRedusaTva
1965 ,ValoareFaraTva
1966 ,ValoareTva
1967 ,ParentIesPozId
1968 ,RetailPozIesireID
1969 )
1970 OUTPUT inserted.ParentIesPozId INTO #ParentIesPozInserati(IesPozId)
1971 select p.IesCapId
1972 ,p.FirmaId
1973 ,p.DivizieId
1974 ,det.ProdusId
1975 ,null
1976 ,null
1977 ,ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623)
1978 ,ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623)
1979 ,det.pretvaluta * isnull(det.cursvalutar,1)
1980 ,isnull(det.pretvalutaredus,det.pretvaluta) * isnull(det.cursvalutar,1)
1981 ,t.Tva
1982 ,null
1983 ,null
1984 ,null
1985 --,null
1986 ,null
1987 ,null
1988 ,p.TaxCode--CASE WHEN pdet.TipItem='P' then td.TaxCodeP ELSE td.TaxCodeS END
1989 ,det.SOrderPozId
1990 ,ROUND(ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623) * ISNULL(det.pretvalutaredus,det.pretvaluta) * isnull(det.cursvalutar,1),2)
1991 ,ROUND(ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623) * ISNULL(det.pretvalutaredus,det.pretvaluta) * isnull(det.cursvalutar,1) * t.tva / 100.00,2)
1992 ,ROUND(ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623) * det.pretvaluta * isnull(det.cursvalutar,1),2)
1993 ,ROUND(ROUND((det.Cant/sp.Cant) * p.cantiesire,@setare623) * det.pretvaluta * isnull(det.cursvalutar,1) * t.tva / 100.00,2)
1994 ,p.IesPozId
1995 ,p.RetailPozIesireID
1996 FROM #Iescap capRetail
1997
1998 --INNER JOIN inv.IesCap cap ( NOLOCK )
1999 -- ON capRetail.CodCalc = cap.CodCalc
2000 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
2001 -- AND cap.DocId IN (13,21)
2002 -- AND cap.DataValidare = capRetail.DataValidare
2003 --INNER JOIN inv.TipDoc (NOLOCK) td on td.TipDocId=cap.TipDocId
2004 INNER JOIN inv.iespoz p (NOLOCK) on p.iescapid=capRetail.IesCapInseratId --cap.iescapid
2005 INNER JOIN dbo.SorderPoz sp (NOLOCK) on sp.SorderPozId = p.SorderPozId
2006 INNER JOIN dbo.SorderPoz det (NOLOCK) ON det.SOrderPozParentId IS NULL AND det.ParentSorderPozId = sp.SorderPozId
2007 INNER JOIN dbo.tblProduse pdet (NOLOCK) ON pdet.ProdusId=det.ProdusID
2008 INNER JOIN dbo.tblTva t (NOLOCK) on t.TvaId=pdet.TvaId
2009
2010 UPDATE p
2011 SET p.Continedetalii = 1
2012 , p.gestiuneid = @GestiuneDestinatieId --ISNULL(@GestiuneDestinatieId,p.gestiuneid)
2013 , p.Amanunt = @AmanuntGestiuneDestinatie --g.Amanunt
2014 FROM #ParentIesPozInserati poz
2015 INNER JOIN inv.IesPoz p
2016 ON p.IesPozId = poz.IesPozId
2017 --FROM #Iescap capRetail
2018 --INNER JOIN inv.IesCap cap ( NOLOCK )
2019 -- ON capRetail.CodCalc = cap.CodCalc
2020 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
2021 -- AND cap.DocId IN (13,21)
2022 -- AND cap.DataValidare = capRetail.DataValidare
2023 --INNER JOIN inv.TipDoc (NOLOCK) td on td.TipDocId = cap.TipDocId
2024 --INNER JOIN inv.iespoz p (NOLOCK) on p.iescapid = cap.iescapid
2025 --INNER JOIN inv.Iespoz pa (NOLOCK) on pa.ParentIesPozID = p.IesPozId
2026 --LEFT JOIN dbo.tblGestiuni g (NOLOCK) ON g.GestiuneId = ISNULL(@GestiuneDestinatieId,p.gestiuneid)
2027 --WHERE ISNULL(p.ContineDetalii,0) = 0
2028
2029 DECLARE @CmdFin TABLE (SOrderCapId INT, FirmaId INT, DivizieId INT, UserId INT)
2030
2031 DECLARE @CmdIncasAvSauStorn TABLE (IesCapId INT, IdCmdStornata INT, IdCmdAvans INT, Valoare DECIMAL(18, 5), DataValidare DATE)
2032
2033 INSERT INTO @CmdIncasAvSauStorn(IesCapId, IdCmdStornata, IdCmdAvans, Valoare, DataValidare)
2034 SELECT cap.IesCapId,
2035 MAX(capRetail.IdCmdStornata) AS IdCmdStornata,
2036 MAX(capRetail.IdCmdAvans) AS IdCmdAvans,
2037 MAX(ISNULL(cap.ValoareFaraTva, 0) + ISNULL(cap.ValoareTva, 0)) AS Valoare,
2038 CAST(MAX(cap.DataValidare) AS DATE) AS DataValidare
2039 FROM #IesCap capRetail
2040 INNER JOIN inv.Iescap cap (NOLOCK)
2041 ON cap.IesCapId = capRetail.IesCapInseratId
2042 --FROM inv.IesCap cap (NOLOCK)
2043 --INNER JOIN #IesCap capRetail
2044 -- ON capRetail.CodCalc = cap.CodCalc
2045 -- AND capRetail.RetailCapIesireID = cap.RetailCapIesireID
2046 -- AND cap.DocId IN (13,21)
2047 -- AND capRetail.DataValidare = cap.DataValidare
2048 -- AND capRetail.IesCapFacturaId IS NULL
2049 WHERE cap.FirmaId = @FirmaID
2050 AND cap.DivizieId = @DivizieID
2051 AND (capRetail.IdCmdStornata IS NOT NULL OR capRetail.IdCmdAvans IS NOT NULL)
2052 --AND cap.IesCapFacturaId IS NULL
2053 --AND cap.DocGeneratorId IS NULL
2054 --AND cap.CapDocGeneratorId IS NULL
2055 GROUP BY cap.IesCapId
2056
2057 UPDATE cmd
2058 SET cmd.IesCapId = Ies4Cmd.IesCapId,
2059 cmd.StareFinalizata = 1,
2060 cmd.StareId = ISNULL(@StareCmdNoua,cmd.StareId) /* ISNULL((SELECT TOP 1 StareId
2061 FROM dbo.tblStariDoc (NOLOCK)
2062 WHERE DocId = 26--comanda client
2063 AND ISNULL(Final, 0) = 1
2064 AND ISNULL(FinalizatPartial, 0) = 1
2065 AND ISNULL(DocValidat, 0) = 1
2066 AND FirmaId = @FirmaId
2067 AND DivizieId = @DivizieId
2068 ), cmd.StareId)*/
2069 OUTPUT inserted.SOrderCapId, inserted.FirmaId, inserted.DivizieId, inserted.UserValidareId INTO @CmdFin(SOrderCapId, FirmaId, DivizieId, UserId)
2070 FROM dbo.SOrderCap cmd (NOLOCK)
2071 INNER JOIN @CmdIncasAvSauStorn Ies4Cmd
2072 ON Ies4Cmd.IdCmdStornata = cmd.SOrderCapId
2073 WHERE cmd.FirmaId = @FirmaID
2074 AND cmd.DivizieId = @DivizieID
2075 AND cmd.IesCapId IS NULL
2076
2077 --update valoare avans
2078 UPDATE cmd
2079 SET cmd.ValoareAvans = Ies4Cmd.Valoare
2080 FROM dbo.SOrderCap cmd (NOLOCK)
2081 INNER JOIN @CmdIncasAvSauStorn Ies4Cmd
2082 ON Ies4Cmd.IdCmdAvans = cmd.RetailCapIesireId
2083 AND Ies4Cmd.DataValidare = cmd.SOrderDate
2084 WHERE cmd.FirmaId = @FirmaID
2085 AND cmd.DivizieId = @DivizieID
2086
2087 WHILE (EXISTS(SELECT TOP 1 SOrderCapId FROM @CmdFin))
2088 BEGIN
2089
2090 DECLARE @SorderCapComId INT,
2091 @SYS_UNITID INT,
2092 @SYS_DIVID INT,
2093 @SYS_USERID INT
2094
2095 SELECT TOP 1
2096 @SorderCapComId = SOrderCapId ,
2097 @SYS_UNITID = FirmaId,
2098 @SYS_DIVID = DivizieId,
2099 @SYS_USERID = UserId
2100 FROM @CmdFin
2101
2102 EXEC dbo.ComandaClient_Finalizare
2103 @SorderCapID = @SorderCapComId,
2104 @SYS_UNITID = @SYS_UNITID,
2105 @SYS_DIVID = @SYS_DIVID,
2106 @SYS_USERID = @SYS_USERID,
2107 @SYS_LANGID = 'RO'
2108
2109 DELETE FROM @CmdFin WHERE SOrderCapId = @SorderCapComId
2110
2111 END
2112 --=================== comenzi pos ===========================
2113
2114 if @Debug=1 /*d*/
2115 BEGIN
2116 SELECT 'Set prelucrat in buffer'
2117 END
2118
2119 UPDATE Retail.BufferPozitiiBon
2120 SET Prelucrat = 1
2121 FROM Retail.BufferPozitiiBon buff ( NOLOCK )
2122 INNER JOIN #PozitiiBuffer pozTemp
2123 ON buff.BufferPozitieBonID = pozTemp.BufferPozitieBonID
2124 AND buff.Identificator = pozTemp.Identificator
2125 WHERE FirmaID = @FirmaId
2126 AND DivizieId = @DivizieID
2127
2128 IF XACT_STATE() = 1
2129 COMMIT TRANSACTION T1
2130
2131 IF @Descarcare = 1 AND @GestiuniRetail IS NOT NULL
2132 BEGIN
2133 --=================================================== INCEPUT SINCRONIZARE CU STOC ==================================================================================
2134
2135
2136 --la sincronizarea cu stocul se vor completa in IesPoz toate campurile din IntrPoz
2137 --------------------------------------------------------------------------------------------------------------
2138 --Legatura la stoc la pozitiile cu cant pozitiva
2139
2140 IF OBJECT_ID('tempdb..#TempSync') IS NOT NULL
2141 DROP TABLE #TempSync
2142
2143 CREATE TABLE #TempSync
2144 (
2145 TempSyncId INT IDENTITY(1,1)
2146 ,IesCapId INT
2147 ,IesPozId INT
2148 ,CantIesire DECIMAL(18,5)
2149 ,Cantitate2 DECIMAL(18,5)
2150 ,Prelucrat BIT
2151 ,IntrPozOrigId INT NULL
2152 ,SerieIntrare NVARCHAR(200) NULL
2153 ,PretAmanunt DECIMAL(18,5)
2154 ,SOrderPozId int
2155 ,ProdusId int
2156 ,RetetaPozId Int NULL
2157 ,ParentIesPozId int NULL
2158 ,DataIes DATE
2159 ,DocId INT
2160 )
2161
2162 INSERT INTO #TempSync
2163 (IesCapId
2164 ,IesPozId
2165 ,CantIesire
2166 ,Cantitate2
2167 ,Prelucrat
2168 ,IntrPozOrigId
2169 ,SerieIntrare
2170 ,PretAmanunt
2171 ,SOrderPozId
2172 ,ProdusID
2173 ,RetetaPozId
2174 ,ParentIesPozId
2175 ,DataIes
2176 ,DocId
2177 )
2178 SELECT
2179 cap.IesCapId
2180 , poz.IesPozId
2181 , poz.CantIesire
2182 , poz.Cantitate2
2183 , 0
2184 , poz.IntrPozOrigId
2185 , poz.SerieIntrare
2186 , poz.PretAmanunt
2187 , poz.SorderPozId
2188 , poz.ProdusID
2189 , poz.RetetaPozId
2190 , poz.ParentIesPozId
2191 , cap.DataIes
2192 , cap.DocId
2193 FROM inv.IesPoz poz ( NOLOCK )
2194 INNER JOIN inv.Iescap cap ( NOLOCK )
2195 ON cap.IesCapId = poz.IesCapId
2196 LEFT JOIN dbo.tblProduse p ( NOLOCK )
2197 ON p.ProdusId = poz.ProdusId
2198 WHERE cap.FirmaId = @FirmaID
2199 AND cap.DivizieId = @DivizieId
2200 AND cap.DataAnulare IS NULL
2201 AND poz.IntrPozId IS NULL-- nesincronizate cu stocul
2202 AND ((cap.DocId = 13 AND cap.TipDocId = @ConfigTipDocBonConsum AND @TipDocBCStoc = 1)
2203 OR (cap.Docid = 21 AND cap.TipDocId = @ConfigTipDocIdBonCuStoc AND @TipDocStoc = 1))
2204 --AND cap.TipDocId in (@ConfigTipDocIdBonCuStoc, @ConfigTipDocBonConsum)
2205 --AND cap.IesCapFacturaId IS NULL--fara bonurile din factura
2206 AND cap.RetailCapIesireID IS NOT NULL
2207 --AND poz.RetailPozIesireID IS NOT NULL
2208 AND cap.DocGeneratorId IS NULL
2209 AND cap.CapDocGeneratorId IS NULL
2210 AND ISNULL(cap.Retur,0) = 0
2211 AND poz.CantIesire > 0
2212 AND ISNULL(p.TipItem,'P') <> 'S'
2213 and ISNULL(poz.ContineDetalii,0)=0
2214 --AND @Descarcare = 1
2215 --AND @GestiuniRetail IS NOT NULL
2216 ORDER BY cap.DataIes
2217
2218 --bonuri generate din comanda
2219 INSERT INTO #TempSync
2220 (
2221 IesCapId
2222 , IesPozId
2223 , CantIesire
2224 , Cantitate2
2225 , Prelucrat
2226 , IntrPozOrigId
2227 , SerieIntrare
2228 , PretAmanunt
2229 , SOrderPozId
2230 , ProdusID
2231 , RetetaPozId
2232 , ParentIesPozId
2233 , DataIes
2234 , DocId
2235 )
2236 SELECT
2237 cap.IesCapId
2238 , poz.IesPozId
2239 , poz.CantIesire
2240 , poz.Cantitate2
2241 , 0
2242 , poz.IntrPozOrigId
2243 , poz.SerieIntrare
2244 , poz.PretAmanunt
2245 , poz.SorderPozId
2246 , poz.ProdusID
2247 , poz.RetetaPozId
2248 , poz.ParentIesPozId
2249 , cap.DataIes
2250 , cap.DocId
2251 FROM inv.IesPoz poz ( NOLOCK )
2252 INNER JOIN inv.Iescap cap ( NOLOCK )
2253 ON cap.IesCapId = poz.IesCapId
2254 LEFT JOIN dbo.tblProduse p ( NOLOCK )
2255 ON p.ProdusId = poz.ProdusId
2256 WHERE cap.FirmaId = @FirmaID
2257 AND cap.DivizieId = @DivizieId
2258 AND cap.DataAnulare IS NULL
2259 AND poz.IntrPozId IS NULL-- nesincronizate cu stocul
2260 AND cap.DocId = @DocIdBon
2261 AND cap.TipDocId = @ConfigTipDocIdBonCuStoc
2262 AND ISNULL(@TipDocStoc,0) = 1
2263 --AND cap.IesCapFacturaId IS NULL--fara bonurile din factura
2264 AND cap.RetailCapIesireID IS NULL
2265 --AND poz.RetailPozIesireID IS NULL
2266 AND cap.DocGeneratorId = 26
2267 AND cap.CapDocGeneratorId IS NOT NULL
2268 AND ISNULL(cap.Retur,0) = 0
2269 AND poz.CantIesire > 0
2270 AND ISNULL(p.TipItem,'P') <> 'S'
2271 and ISNULL(poz.ContineDetalii,0)=0
2272 --AND @Descarcare = 1
2273 --AND @GestiuniRetail IS NOT NULL
2274 ORDER BY cap.DataIes
2275
2276
2277 if @Debug=1 /*d*/
2278 BEGIN
2279 SELECT '#TempSync:'
2280 SELECT * FROM #TempSync
2281 SELECT 'Begin WHILE Bonuri'
2282 END
2283
2284 WHILE EXISTS
2285 ( SELECT TOP 1 *
2286 FROM #TempSync
2287 WHERE ISNULL(Prelucrat,0) = 0
2288 )
2289 BEGIN
2290
2291 DECLARE @SorderPozId INT =null
2292 , @RetetaPozId INT =null
2293 , @RetetaCapId INT = NULL
2294 , @DataIes DATE = NULL
2295 , @DocIdSync INT = NULL
2296
2297 SELECT @CantIesire = NULL
2298 , @Cant2 = NULL
2299
2300 --iau prima pozitie nesincronizata
2301 SELECT TOP 1
2302 @TempSyncId = TempSyncId
2303 , @IesCapId = IesCapId
2304 , @IesPozId = IesPozId
2305 , @CantIesire = CantIesire
2306 , @Cant2 = Cantitate2
2307 , @IntrPozOrigId = IntrPozOrigId
2308 , @SerieIntrare = SerieIntrare
2309 , @PretAmanuntBuffer = PretAmanunt
2310 , @SorderPozId=SorderPozId
2311 , @ProdusId=ProdusId
2312 , @RetetaPozId=RetetaPozId
2313 , @DataIes = DataIes
2314 , @DocIdSync = DocId
2315 FROM #TempSync
2316 WHERE ISNULL(Prelucrat,0) = 0
2317
2318 PRINT '@TempSyncId:' + CAST(@TempSyncId AS NVARCHAR)
2319 PRINT '@IesCapId:' + CAST(@IesCapId AS NVARCHAR)
2320 PRINT '@IesPozId:' + CAST(@IesPozId AS NVARCHAR)
2321 PRINT '@CantIesire:' + CAST(@CantIesire AS NVARCHAR)
2322 PRINT '@IntrPozOrigId:' + CAST(ISNULL(@IntrPozOrigId,0) AS NVARCHAR)
2323 PRINT '@SerieIntrare:' + CAST(ISNULL(@SerieIntrare,'') AS NVARCHAR)
2324 PRINT '@PretAmanuntBuffer:' + CAST(ISNULL(@PretAmanuntBuffer,0) AS NVARCHAR)
2325
2326 BEGIN
2327
2328 --SET @ProdusID = NULL
2329 SET @FurnizorID = NULL
2330 SET @FurnizorOriginalID = NULL
2331 SET @NumarIntr = NULL
2332 SET @DataIntr = NULL
2333 SET @DocIntrId = NULL
2334 SET @TipDocINtrID = NULL
2335 SET @DataScadenta = NULL
2336 SET @NumarFactIntr = NULL
2337 SET @DataFactIntr = NULL
2338 SET @PretIntrare = NULL
2339 SET @PretIntrareRedus = NULL
2340 SET @PretCost = NULL
2341 SET @PretCMP = NULL
2342 SET @GestiuneId = NULL
2343 SET @Amanunt = NULL
2344 SET @LotIntrare = NULL
2345 SET @DataExpirare = NULL
2346 SET @DataFabricare = NULL
2347 --SET @SerieIntrare = NULL
2348 --SET @IntrPozOrigId = NULL
2349 SET @POOrderPozId = NULL
2350 SET @Stoc = NULL
2351 SET @IntrPozId = NULL
2352 SET @PretAmanuntStoc = NULL
2353 SET @Reev = NULL
2354
2355 DECLARE @SorderPozParentId int =null
2356
2357 BEGIN TRAN
2358
2359 IF(@SorderPozId IS NOT NULL)
2360 BEGIN
2361
2362 SELECT TOP 1
2363 @IntrPozId = stoc.IntrPozId
2364 , @IntrPozOrigId = stoc.IntrPozOrigId
2365 , @GestiuneId = stoc.GestiuneId
2366 , @Amanunt = ISNULL(g.Amanunt,0)
2367 , @SerieIntrare = stoc.SerieIntrare
2368 , @LotIntrare = stoc.LotIntrare
2369 , @DataFabricare = stoc.DataFabricare
2370 , @DataExpirare = stoc.DataExpirare
2371
2372 , @Stoc = stoc.Cant
2373
2374 , @FurnizorID = stoc.FurnizorID
2375 , @FurnizorOriginalID = stoc.FurnizorOriginalID
2376 , @NumarIntr = stoc.NumarIntr
2377 , @DataIntr = stoc.DataIntr
2378 , @DocIntrId = stoc.DocIntrId
2379 , @TipDocINtrID = stoc.TipDocIntrId
2380 , @DataScadenta = stoc.DataScadentaIntr
2381 , @NumarFactIntr = stoc.NumarFactIntr
2382 , @DataFactIntr = stoc.DataFactIntr
2383 , @PretIntrare = stoc.PretIntrare
2384 , @PretIntrareRedus = stoc.PretIntrareRedus
2385 , @PretCost = stoc.PretCost
2386 , @PretCMP = stoc.PretCmp
2387 , @POOrderPozId = stoc.POrderPozId
2388
2389 , @PretAmanuntStoc = ISNULL(stoc.PretAmanunt,0)
2390 , @Reev = CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0) THEN 0 ELSE 1 END
2391 , @SorderPozParentId = stoc.SorderPozId
2392 FROM dbo.SorderPoz stoc WITH ( ROWLOCK,UPDLOCK )
2393 INNER JOIN dbo.tblGestiuni G WITH ( NOLOCK )
2394 ON G.GestiuneId = stoc.GestiuneID
2395 --AND G.FirmaID = @FirmaID
2396 --AND G.DivizieId = @DivizieID
2397 LEFT JOIN #GestiuniBonConsum g13
2398 ON g13.val = g.GestiuneId
2399 AND @DocIdSync = 13
2400 LEFT JOIN #GestiuniBonFiscal g21
2401 ON g21.val = g.GestiuneId
2402 AND @DocIdSync = 21
2403 --INNER JOIN
2404 -- (
2405 -- SELECT val
2406 -- FROM dbo.SplitString(@ConfigGestiuni,',')
2407 -- WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
2408 -- ) CodGestSetare1
2409 -- ON G.CodGestiune = CodGestSetare1.val
2410 WHERE stoc.SOrderPozParentId = @SorderPozId
2411 AND Stoc.Cant > 0
2412 AND (@IntrPozOrigId IS NULL OR stoc.IntrPozId = @IntrPozOrigId)
2413 AND (@SerieIntrare IS NULL OR stoc.SerieIntrare = @SerieIntrare)
2414 AND ((@DocIdSync = 13 AND g13.val IS NOT NULL) OR (@DocIdSync = 21 AND g21.val IS NOT NULL))
2415 ORDER BY
2416 CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0)
2417 THEN 1 ELSE 0
2418 END DESC
2419 , stoc.DataIntr
2420
2421 END
2422
2423 IF @IntrPozId IS NULL
2424 BEGIN
2425 IF(@RetetaPozId IS NOT NULL)
2426 BEGIN
2427 SELECT @RetetaCapId = RetetaCapId
2428 FROM dbo.tblRetetaPoz (NOLOCK)
2429 WHERE RetetaPozId = @RetetaPozId
2430
2431 --SELECT TOP 1 @GestiuneSursaRetetaIds =cap.GestiuneSursaIds
2432 --FROM dbo.tblRetetaPoz p (NOLOCK)
2433 -- INNER JOIN dbo.tblretetacap cap (NOLOCK)
2434 -- on cap.RetetaCapId = p.RetetaCapId
2435 --WHERE p.RetetaPozId=@RetetaPozId
2436
2437 --IF ISNULL(@GestiuneSursaRetetaIds,'') = ''
2438 -- SELECT @GestiuneSursaRetetaIds = @GestiuniMPIds
2439
2440 SELECT TOP 1
2441 @IntrPozId = stoc.IntrPozId
2442 , @IntrPozOrigId = stoc.IntrPozOrigId
2443 , @GestiuneId = stoc.GestiuneId
2444 , @Amanunt = ISNULL(g.Amanunt,0)
2445 , @SerieIntrare = stoc.SerieIntrare
2446 , @LotIntrare = stoc.LotIntrare
2447 , @DataFabricare = stoc.DataFabricare
2448 , @DataExpirare = stoc.DataExpirare
2449 , @Stoc = stoc.Stoc
2450
2451 , @FurnizorID = stoc.FurnizorID
2452 , @FurnizorOriginalID = stoc.FurnizorOriginalID
2453 , @NumarIntr = stoc.NumarIntr
2454 , @DataIntr = stoc.DataIntr
2455 , @DocIntrId = stoc.DocIntrId
2456 , @TipDocINtrID = stoc.TipDocINtrID
2457 , @DataScadenta = stoc.DataScadenta
2458 , @NumarFactIntr = stoc.NumarFactIntr
2459 , @DataFactIntr = stoc.DataFactIntr
2460 , @PretIntrare = stoc.PretIntrare
2461 , @PretIntrareRedus = stoc.PretIntrareRedus
2462 , @PretCost = stoc.PretCost
2463 , @PretCMP = stoc.PretCMP
2464 , @POOrderPozId = stoc.POrderPozId
2465 , @PretAmanuntStoc = ISNULL(stoc.PretAmanunt,0)
2466 , @Reev = CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0) THEN 0 ELSE 1 END
2467 FROM inv.Stoc stoc WITH ( ROWLOCK,UPDLOCK )
2468 INNER JOIN dbo.tblGestiuni G WITH ( NOLOCK )
2469 ON G.GestiuneId = stoc.GestiuneID
2470 INNER JOIN #Retete gr
2471 ON gr.RetetaCapId = @RetetaCapId
2472 AND gr.val = g.GestiuneId
2473 --INNER JOIN
2474 -- (
2475 -- SELECT val
2476 -- FROM dbo.SplitString(@GestiuneSursaRetetaIds,',')
2477 -- WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
2478 -- ) CodGestSetare1
2479 -- ON G.gestiuneid = CodGestSetare1.val
2480 WHERE stoc.FirmaId = @FirmaId
2481 AND stoc.DivizieId = @DivizieId
2482 AND Stoc > 0
2483 AND stoc.PRodusID = @ProdusId
2484 AND stoc.ClientCustodieId IS NULL
2485 AND (@IntrPozOrigId IS NULL OR stoc.IntrPozId = @IntrPozOrigId)
2486 AND (@SerieIntrare IS NULL OR stoc.SerieIntrare = @SerieIntrare)
2487 ORDER BY
2488 stoc.DataIntr
2489 , CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0) THEN 1 ELSE 0 END DESC
2490 END
2491
2492 --IF(@SToc is null)
2493 ELSE
2494 BEGIN
2495
2496 --iau prima pozitie din stoc din gestiunile de retail cu produsid!
2497 SELECT TOP 1
2498 @IntrPozId = stoc.IntrPozId
2499 , @IntrPozOrigId = stoc.IntrPozOrigId
2500 , @GestiuneId = stoc.GestiuneId
2501 , @Amanunt = ISNULL(g.Amanunt,0)
2502 , @SerieIntrare = stoc.SerieIntrare
2503 , @LotIntrare = stoc.LotIntrare
2504 , @DataFabricare = stoc.DataFabricare
2505 , @DataExpirare = stoc.DataExpirare
2506 , @Stoc = stoc.Stoc
2507
2508 , @FurnizorID = stoc.FurnizorID
2509 , @FurnizorOriginalID = stoc.FurnizorOriginalID
2510 , @NumarIntr = stoc.NumarIntr
2511 , @DataIntr = stoc.DataIntr
2512 , @DocIntrId = stoc.DocIntrId
2513 , @TipDocINtrID = stoc.TipDocINtrID
2514 , @DataScadenta = stoc.DataScadenta
2515 , @NumarFactIntr = stoc.NumarFactIntr
2516 , @DataFactIntr = stoc.DataFactIntr
2517 , @PretIntrare = stoc.PretIntrare
2518 , @PretIntrareRedus = stoc.PretIntrareRedus
2519 , @PretCost = stoc.PretCost
2520 , @PretCMP = stoc.PretCMP
2521
2522 , @POOrderPozId = stoc.POrderPozId
2523 , @PretAmanuntStoc = ISNULL(stoc.PretAmanunt,0)
2524 , @Reev = CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0) THEN 0 ELSE 1 END
2525 FROM inv.Stoc stoc WITH ( ROWLOCK,UPDLOCK )
2526 INNER JOIN dbo.tblGestiuni G WITH ( NOLOCK )
2527 ON G.GestiuneId = stoc.GestiuneID
2528 LEFT JOIN #GestiuniBonConsum g13
2529 ON g13.val = g.GestiuneId
2530 AND @DocIdSync = 13
2531 LEFT JOIN #GestiuniBonFiscal g21
2532 ON g21.val = g.GestiuneId
2533 AND @DocIdSync = 21
2534 --INNER JOIN
2535 -- (
2536 -- SELECT val
2537 -- FROM dbo.SplitString(@ConfigGestiuni,',')
2538 -- WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
2539 -- ) CodGestSetare1
2540 -- ON G.CodGestiune = CodGestSetare1.val
2541 WHERE stoc.FirmaId = @FirmaId
2542 AND stoc.DivizieId = @DivizieId
2543 AND Stoc > 0
2544 AND stoc.PRodusID = @ProdusId
2545 AND stoc.ClientCustodieId IS NULL
2546 AND (@IntrPozOrigId IS NULL OR stoc.IntrPozId = @IntrPozOrigId)
2547 AND (@SerieIntrare IS NULL OR stoc.SerieIntrare = @SerieIntrare)
2548 AND ((@DocIdSync = 13 AND g13.val IS NOT NULL) OR (@DocIdSync = 21 AND g21.val IS NOT NULL))
2549 ORDER BY stoc.DataIntr
2550 , CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0) THEN 1 ELSE 0 END DESC
2551
2552 END
2553
2554
2555 --IF (
2556 -- ( @IntrPozId IS NULL
2557 -- OR @Stoc IS NULL
2558 -- )
2559 -- AND @SerieIntrare IS NOT NULL
2560 -- )
2561 --SELECT TOP 1
2562 -- @FurnizorID = stoc.FurnizorID
2563 -- , @FurnizorOriginalID = stoc.FurnizorOriginalID
2564 -- , @NumarIntr = stoc.NumarIntr
2565 -- , @DataIntr = stoc.DataIntr
2566 -- , @DocIntrId = stoc.DocIntrId
2567 -- , @TipDocINtrID = stoc.TipDocINtrID
2568 -- , @DataScadenta = stoc.DataScadenta
2569 -- , @NumarFactIntr = stoc.NumarFactIntr
2570 -- , @DataFactIntr = stoc.DataFactIntr
2571 -- , @PretIntrare = stoc.PretIntrare
2572 -- , @PretIntrareRedus = stoc.PretIntrareRedus
2573 -- , @PretCost = stoc.PretCost
2574 -- , @GestiuneId = stoc.GestiuneId
2575 -- , @Amanunt = ISNULL(g.Amanunt,0)
2576 -- , @LotIntrare = stoc.LotIntrare
2577 -- , @DataExpirare = stoc.DataExpirare
2578 -- , @DataFabricare = stoc.DataFabricare
2579 -- , @SerieIntrare = stoc.SerieIntrare
2580 -- , @IntrPozOrigId = stoc.IntrPozOrigId
2581 -- , @POOrderPozId = stoc.POrderPozId
2582 -- , @Stoc = stoc.Stoc
2583 -- , @IntrPozId = stoc.IntrPozId
2584 -- --, @ProdusID = stoc.ProdusId
2585 -- , @PretAmanuntStoc = ISNULL(stoc.PretAmanunt,0)
2586 -- , @Reev = CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0)
2587 -- THEN 0
2588 -- ELSE 1
2589 -- END
2590 --FROM inv.Stoc stoc WITH ( ROWLOCK,UPDLOCK )
2591 --INNER JOIN dbo.tblGestiuni G WITH ( NOLOCK )
2592 -- ON G.GestiuneId = stoc.GestiuneID
2593 -- --AND G.FirmaID = @FirmaID
2594 -- --AND G.DivizieId = @DivizieID
2595 --INNER JOIN
2596 -- (
2597 -- SELECT val
2598 -- FROM dbo.SplitString(@ConfigGestiuni,',')
2599 -- WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
2600 -- ) CodGestSetare1
2601 -- ON G.CodGestiune = CodGestSetare1.val
2602 ----INNER JOIN tblProduse p WITH (NOLOCK)
2603 ---- ON P.ProdusId = stoc.ProdusId
2604
2605 --WHERE stoc.FirmaId = @FirmaId
2606 --AND stoc.DivizieId = @DivizieId
2607 --AND Stoc > 0
2608 --AND stoc.ProdusId=@ProdusId
2609 --AND stoc.SerieIntrare = @SerieIntrare
2610 --AND stoc.ClientCustodieId IS NULL
2611 --ORDER BY CASE WHEN ISNULL(@PretAmanuntBuffer,0) = ISNULL(stoc.PretAmanunt,0)
2612 -- THEN 1
2613 -- ELSE 0
2614 -- END DESC
2615 -- , stoc.DataIntr
2616 ----ORDER BY DataExpirare
2617
2618 END
2619
2620 IF @IntrPozId IS NULL
2621 BEGIN
2622 SELECT @RetetaCapId = NULL
2623 , @GestiuneDestinatieId = NULL
2624 , @Amanunt = null
2625
2626 SELECT TOP 1
2627 @RetetaCapId = RetetaCapId
2628 , @GestiuneDestinatieId = GestiuneDestinatieId
2629 , @Amanunt = Amanunt
2630 FROM #Retete
2631 WHERE ProdusId = @ProdusId
2632 AND @DataIes BETWEEN ISNULL(ValabilDeLa,@DataIes) AND ISNULL(ValabilPanaLa,@DataIes)
2633 AND ((@Cant2 IS NOT NULL AND Cant2 IS NOT NULL)
2634 OR Cant IS NOT NULL)
2635 ORDER BY ISNULL(ValabilDeLa,@DataIes)
2636
2637 IF @RetetaCapId IS NOT NULL
2638 AND EXISTS(SELECT TOP 1 * FROM dbo.tblRetetaPoz (NOLOCK) WHERE RetetaCapId = @RetetaCapId AND ISNULL(ExcludereDinMeniu,0) = 0 AND ISNULL(Cant,0) <> 0)
2639
2640 BEGIN
2641 INSERT INTO inv.IesPoz
2642 (
2643 IesCapId
2644 , FirmaID
2645 , DivizieId
2646 , ProdusID
2647 , IntrPozId
2648 , IntrPozOrigId
2649 , CantIesire
2650 , Cantitate2
2651 , CantFacturata
2652 , PretVanzare
2653 --, PretVanzareRedus
2654 , TaxCode
2655 , TaxInv
2656 , Tva
2657 , GestiuneID
2658 , PretAmanunt
2659 , PretAmanuntRedus
2660 , SerieIntrare
2661 , SOrderPozId
2662 , ValoareRedusaFaraTva
2663 , ValoareRedusaTva
2664 , ValoareFaraTva
2665 , ValoareTva
2666 , ParentIesPozId
2667 , RetetaPozId
2668 , DinJob
2669 )
2670 SELECT
2671 p.IesCapId
2672 , p.FirmaId
2673 , p.DivizieId
2674 , retpoz.ProdusId
2675 , null -- IntrPozId
2676 , null -- IntrPozOrigId
2677 , ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2678 THEN retpoz.Cant
2679 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2680 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2681 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2682 END
2683 END,@Setare623) -- CantIesire
2684 , ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2685 THEN retpoz.Cant
2686 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2687 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2688 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2689 END
2690 END * CASE WHEN pdet.GreutateNeta IS NOT NULL THEN pdet.GreutateNeta
2691 WHEN UPPER(um.UM) = 'KG' THEN 1
2692 END,3) -- Cantitate2
2693 , ROUND(CASE WHEN cap.DocId <> 8
2694 THEN CASE WHEN retpoz.DescarcaIntreg = 1
2695 THEN retpoz.Cant
2696 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2697 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2698 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2699 END
2700 END
2701 ELSE 0
2702 END,@setare623) -- CantFacturata
2703 , pcat.PretRidicata -- PretVanzare
2704 --, retpoz.Pret -- PretVanzareRedus
2705 , p.TaxCode
2706 , p.TaxInv
2707 , p.Tva --t.Tva
2708 , null -- GestiuneId
2709 , pcat.PretAmanunt -- PretAmanunt
2710 , null -- PretAmanuntRedus
2711 , null -- SerieIntrare
2712 , null
2713 , ROUND(ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2714 THEN retpoz.Cant
2715 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2716 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2717 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2718 END
2719 END,@Setare623) * retpoz.Pret,2)
2720 , ROUND(ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2721 THEN retpoz.Cant
2722 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2723 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) *ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2724 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2725 END
2726 END,@setare623) * retpoz.Pret * t.Tva/100.00,2)
2727 , ROUND(ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2728 THEN retpoz.Cant
2729 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2730 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2731 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2732 END
2733 END,@Setare623) * retpoz.Pret,@setare351)
2734 , ROUND(ROUND(CASE WHEN retpoz.DescarcaIntreg = 1
2735 THEN retpoz.Cant
2736 ELSE CASE WHEN @Cant2 IS NOT NULL AND retcap.Cant2 IS NOT NULL
2737 THEN (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant2) * ISNULL(NULLIF(p.Cantitate2,0),p.CantIesire*pp.GreutateNeta)
2738 ELSE (ISNULL(retpoz.Cant,0) / ISNULL(NULLIF(1-(ISNULL(retpoz.Pierdere,0)+ISNULL(retpoz.Pierdere2,0))/100.00,0),1) / retcap.Cant) * p.CantIesire
2739 END
2740 END,@setare623) * retpoz.Pret * t.Tva/100.00,@setare351)
2741 , ISNULL(p.ParentIesPozId,p.IesPozId)
2742 , retpoz.RetetaPozId
2743 , 2
2744 FROM inv.IesPoz p (NOLOCK)
2745 INNER JOIN dbo.tblProduse pp (NOLOCK)
2746 ON pp.ProdusId = p.ProdusId
2747 INNER JOIN inv.IesCap cap (NOLOCK)
2748 ON cap.IesCapId = p.IesCapId
2749 AND cap.DataAnulare IS NULL
2750 INNER JOIN dbo.tblRetetaCap retcap (NOLOCK)
2751 ON retcap.RetetaCapId = @RetetaCapId
2752 INNER JOIN dbo.tblRetetaPoz retpoz (NOLOCK)
2753 ON retpoz.RetetaCapId = @RetetaCapId
2754 INNER JOIN dbo.tblProduse pdet (NOLOCK)
2755 ON pdet.ProdusId = retpoz.ProdusID
2756 INNER JOIN dbo.tblTva t (NOLOCK)
2757 on t.TvaId = pdet.TvaId
2758 INNER JOIN dbo.tblUm um (NOLOCK)
2759 on um.UmId = pdet.UmId
2760 LEFT JOIN inv.TipDoc td (NOLOCK)
2761 ON td.TipDocId = cap.TipDocId
2762 LEFT JOIN inv.IesPoz principal (NOLOCK)
2763 ON principal.IesPozId = p.ParentIesPozId
2764 LEFT JOIN dbo.tblPreturiProduse pcat (NOLOCK)
2765 ON pcat.CapListaPreturiId = @ConfigCapListaPreturiID
2766 AND pcat.ProdusId = pdet.ProdusId
2767 AND cap.DataIes BETWEEN CAST(pcat.ValabilDela AS DATE) AND CAST(ISNULL(pcat.ValabilPanaLa,cap.DataIes) AS DATE)
2768 AND pcat.DataAnulare IS NULL
2769 WHERE p.IesPozId = @IesPozId
2770 AND (ISNULL(td.IgnoraAmbalaje,0) = 0 OR ISNULL(pdet.Ambalaj,0) = 0)
2771 AND (ISNULL(retpoz.ExcludereDinMeniu,0) = 0 OR COALESCE(principal.IesPoz2Id,p.IesPoz2Id,0) = 0)
2772 AND ISNULL(retpoz.Cant,0) <> 0
2773
2774 --Daca este reteta la reteta fac update pe cantitate
2775 UPDATE inv.IesPoz
2776 SET CantIesire = 0
2777 WHERE IesPozId = @IesPozId
2778 AND ParentIesPozId IS NOT NULL
2779
2780
2781 -- Setez gestiunea destinatie
2782 UPDATE inv.IesPoz
2783 SET GestiuneId = @GestiuneDestinatieId
2784 , RetetaCapId = @RetetaCapId
2785 , ContineDetalii = 1
2786 , DinJob = 2
2787 , Amanunt = @Amanunt
2788 WHERE IesPozId = @IesPozId
2789 AND ParentIesPozId IS NULL
2790
2791 INSERT #TempSync
2792 (
2793 IesCapId
2794 ,IesPozId
2795 ,CantIesire
2796 ,Cantitate2
2797 ,Prelucrat
2798 ,IntrPozOrigId
2799 ,SerieIntrare
2800 ,PretAmanunt
2801 ,SOrderPozId
2802 ,ProdusID
2803 ,RetetaPozId
2804 ,ParentIesPozId
2805 ,DataIes
2806 ,DocId
2807 )
2808 SELECT
2809 p.IesCapId
2810 , p.IesPozId
2811 , p.CantIesire
2812 , p.Cantitate2
2813 , 0
2814 , null
2815 , null
2816 , p.PretAmanunt
2817 , null
2818 , p.ProdusId
2819 , p.RetetaPozId
2820 , p.ParentIesPozId
2821 , cap.DataIes
2822 , cap.DocId
2823 FROM inv.IesPoz p (NOLOCK)
2824 INNER JOIN inv.IesCap cap (NOLOCK)
2825 ON cap.IesCapId = p.IesCapId
2826 INNER JOIN dbo.tblProduse pr (NOLOCK)
2827 ON pr.ProdusId = p.Produsid
2828 AND pr.tipitem = 'P'
2829 INNER JOIN dbo.tblProduseDivizii pd (NOLOCK)
2830 ON pd.ProdusId = p.ProdusId
2831 AND pd.DivizieId = @DivizieId
2832 LEFT JOIN dbo.tblContabProduseFirma cpf (NOLOCK)
2833 ON cpf.ContabProdusId = pd.ContabProdusId
2834 AND cpf.FirmaId = @FirmaId
2835 AND cpf.DivizieId = @DivizieId
2836 WHERE p.ParentIesPozId = @IesPozId
2837 AND p.IntrPozId IS NULL
2838 END
2839 END
2840
2841 IF ( @IntrPozId IS NULL
2842 OR @Stoc IS NULL
2843 )
2844 BEGIN
2845 --SELECT TOP 1
2846 -- @ProdusId = ProdusID
2847 --FROM
2848 -- inv.IesPoz poz ( NOLOCK )
2849 --WHERE
2850 -- IesPozId = @IesPozId
2851 PRINT 'Nu exista stoc pentru produsul cu ID:' + CAST(@ProdusID AS VARCHAR)
2852 END
2853
2854 ELSE
2855
2856 BEGIN
2857
2858 IF ( @Stoc >= @CantIesire )
2859 BEGIN
2860
2861 PRINT '@Stoc>=CantIesire:' + CAST(@Stoc AS NVARCHAR(20)) + '>=' + CAST(@CantIesire AS NVARCHAR)
2862
2863 UPDATE inv.IesPoz
2864 SET
2865 IntrPozId = @IntrPozId
2866 , FurnizorID = @FurnizorID
2867 , FurnizorOriginalID = @FurnizorOriginalID
2868 , NumarIntr = @NumarIntr
2869 , DataIntr = @DataIntr
2870 , DocIntrId = @DocIntrId
2871 , TipDocINtrID = @TipDocINtrID
2872 , NumarFactIntr = @NumarFactIntr
2873 , DataFactIntr = @DataFactIntr
2874 , PretIntrare = @PretIntrare
2875 , PretIntrareRedus = @PretIntrareRedus
2876 , PretCost = @PretCost
2877 , GestiuneId = @GestiuneId
2878 , Amanunt = @Amanunt
2879 , LotIntrare = @LotIntrare
2880 , DataExpirare = @DataExpirare
2881 , DataFabricare = @DataFabricare
2882 , SerieIntrare = @SerieIntrare
2883 , IntrPozOrigId = @IntrPozOrigId
2884 , POrderPozId = @POOrderPozId
2885 , SorderPozId=ISNULL(@SorderPozParentId,@SorderPozId)
2886 , DinJob=CASE WHEN ISNULL(DinJob,0) = 2 THEN 2 ELSE 1 END
2887 , PretVanzare = CASE WHEN @DocIdSync = 13 THEN @PretCost ELSE PretVanzare END
2888 , PretVanzareRedus = CASE WHEN @DocIdSync = 13 THEN @PretCost ELSE PretVanzareRedus END
2889 , ValoareRedusaFaraTva = CASE WHEN @DocIdSync = 13 THEN ROUND(CantIesire * @PretCost,2) ELSE ValoareRedusaFaraTva END
2890 , ValoareRedusaTva = CASE WHEN @DocIdSync = 13 THEN ROUND(CantIesire * @PretCost * Tva * (1-ISNULL(TaxInv,0)) / 100.00,2) ELSE ValoareRedusaTva END
2891 , ValoareFaraTva = CASE WHEN @DocIdSync = 13 THEN ROUND(CantIesire * @PretCost,@setare351) ELSE ValoareFaraTva END
2892 , ValoareTva = CASE WHEN @DocIdSync = 13 THEN ROUND(CantIesire * @PretCost * Tva * (1-ISNULL(TaxInv,0)) / 100.00,@setare351) ELSE ValoareTva END
2893 WHERE IesPozId = @IesPozId
2894 AND FirmaID = @FirmaID
2895 AND DivizieId = @DivizieID
2896
2897
2898 IF(@SOrderPozParentId is null)
2899 BEGIN
2900
2901 UPDATE inv.Stoc
2902 SET Stoc = Stoc - @CantIesire
2903 WHERE IntrPozId = @IntrPozId
2904 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'')
2905 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
2906 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
2907 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
2908 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
2909 AND ((ISNULL(@Reev,0) = 0 AND ISNULL(PretAmanunt,0) = ISNULL(@PretAmanuntBuffer,0)) OR ISNULL(PretAmanunt,0) = ISNULL(@PretAmanuntStoc,0))
2910 AND FirmaID = @FirmaID
2911 AND DivizieID = @DivizieID
2912 --AND Stoc>0
2913 AND ClientCustodieId IS NULL
2914
2915 END
2916
2917 ELSE
2918
2919 BEGIN
2920
2921 UPDATE SorderPoz
2922 set cant=cant-@CantIesire
2923 WHERE SorderPozId=@sorderPozParentId
2924
2925 END
2926 END
2927
2928 IF ( @Stoc < @CantIesire )
2929 BEGIN
2930
2931 PRINT '@Stoc<CantIesire:' + CAST(@Stoc AS NVARCHAR) + '<' + CAST(@CantIesire AS NVARCHAR)
2932
2933 UPDATE inv.IesPoz
2934 SET
2935 IntrPozId = @IntrPozId
2936 , CantIesire = @Stoc
2937 , CantFacturata = @Stoc
2938 , FurnizorID = @FurnizorID
2939 , FurnizorOriginalID = @FurnizorOriginalID
2940 , NumarIntr = @NumarIntr
2941 , DataIntr = @DataIntr
2942 , DocIntrId = @DocIntrId
2943 , TipDocINtrID = @TipDocINtrID
2944 , NumarFactIntr = @NumarFactIntr
2945 , DataFactIntr = @DataFactIntr
2946 , PretIntrare = @PretIntrare
2947 , PretIntrareRedus = @PretIntrareRedus
2948 , PretCost = @PretCost
2949 , GestiuneId = @GestiuneId
2950 , Amanunt = @Amanunt
2951 , LotIntrare = @LotIntrare
2952 , DataExpirare = @DataExpirare
2953 , DataFabricare = @DataFabricare
2954 , SerieIntrare = @SerieIntrare
2955 , IntrPozOrigId = @IntrPozOrigId
2956 , POrderPozId = @POOrderPozId
2957 , SorderPozId=isnull(@sorderPozParentId,@SorderPozId)
2958 , PretVanzare = CASE WHEN @DocIdSync = 13 THEN @PretCost ELSE PretVanzare END
2959 , PretVanzareRedus = CASE WHEN @DocIdSync = 13 THEN @PretCost ELSE PretVanzareRedus END
2960 , ValoareRedusaFaraTva = CASE WHEN @DocIdSync = 13 THEN ROUND(@Stoc * @PretCost,2) ELSE ROUND((ValoareRedusaFaraTva/CantIesire)*@Stoc,6) END
2961 , ValoareRedusaTva= CASE WHEN @DocIdSync = 13 THEN ROUND(@Stoc * @PretCost * Tva * (1-ISNULL(TaxInv,0)) / 100.00,2) ELSE ROUND((ValoareRedusaTva/CantIesire)*@Stoc,6) END
2962 , ValoareFaraTva=CASE WHEN @DocIdSync = 13 THEN ROUND(@Stoc * @PretCost,@setare351) ELSE ROUND((ValoareFaraTva/CantIesire)*@Stoc,6) END
2963 , ValoareTva=CASE WHEN @DocIdSync = 13 THEN ROUND(@Stoc * @PretCost * Tva * (1-ISNULL(TaxInv,0)) / 100.00,@Setare351) ELSE ROUND((ValoareTva/CantIesire)*@Stoc,6) END
2964 , DinJob=CASE WHEN ISNULL(DinJob,0) = 2 THEN 2 ELSE 1 END
2965 WHERE IesPozId = @IesPozId
2966 AND FirmaID = @FirmaID
2967 AND DivizieId = @DivizieID
2968
2969 IF(@sorderPozParentId is null)
2970 BEGIN
2971
2972 UPDATE inv.Stoc
2973 SET Stoc = 0
2974 WHERE IntrPozId = @IntrPozId
2975 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'')
2976 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
2977 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
2978 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
2979 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
2980 AND ((ISNULL(@Reev,0) = 0 AND ISNULL(PretAmanunt,0) = ISNULL(@PretAmanuntBuffer,0)) OR ISNULL(PretAmanunt,0) = ISNULL(@PretAmanuntStoc,0))
2981 AND FirmaID = @FirmaID
2982 AND DivizieID = @DivizieID
2983 AND ClientCustodieId IS NULL
2984 END
2985
2986 ELSE
2987
2988 BEGIN
2989
2990 UPDATE Sorderpoz
2991 set Cant=0
2992 WHERE SorderPozId=@SorderPozParentID
2993
2994 END
2995 --SELECT 'Pozitie reinserat in IesPoz:'
2996 --SELECT IesCapId
2997 -- , FirmaID
2998 -- , DivizieId
2999 -- , ProdusID
3000 -- , @IntrPozId
3001 -- , @IntrPozId
3002 -- , @CantIesire - @Stoc
3003 -- , @CantIesire - @Stoc
3004 -- , PretVanzare
3005 -- , PretVanzareRedus
3006 -- , Tva
3007 -- , GestiuneID
3008 -- , PretAmanunt
3009 -- , PretAmanuntRedus
3010 -- , RetailPozIesireID
3011 --FROM inv.IesPoz (NOLOCK)
3012 --WHERE IesPozId = @IesPozID
3013 -- AND FirmaID = @FirmaID
3014 -- AND DivizieID = @DivizieID
3015
3016 INSERT INTO inv.IesPoz
3017 (
3018 IesCapId
3019 ,ParentIesPozId
3020 ,FirmaID
3021 ,DivizieId
3022 ,ProdusID
3023 ,IntrPozId
3024 ,IntrPozOrigId
3025 ,CantIesire
3026 ,Cantitate2
3027 ,CantFacturata
3028 ,PretVanzare
3029 ,PretVanzareRedus
3030 ,Tva
3031 ,PretAmanunt
3032 ,PretAmanuntRedus
3033 ,RetailPozIesireID
3034 ,TaxCode
3035 ,SOrderPozId
3036 ,ValoareRedusaFaraTva
3037 ,ValoareRedusaTva
3038 ,ValoareFaraTva
3039 ,ValoareTva
3040 ,RetetaPozId
3041 ,DinJob
3042
3043 --,Amanunt
3044 )
3045 SELECT
3046 IP.IesCapId
3047 , IP.ParentIesPozId
3048 , IP.FirmaID
3049 , IP.DivizieId
3050 , IP.ProdusID
3051 , NULL
3052 , NULL
3053 , @CantIesire - @Stoc
3054 , ROUND(ISNULL((@CantIesire - @Stoc) * pr.GreutateNeta, CASE WHEN UPPER(um.Um) = 'KG' THEN @CantIesire - @Stoc END),3) AS Cantitate2
3055 , @CantIesire - @Stoc
3056 , CASE WHEN IC.DocId <> 13 THEN IP.PretVanzare END
3057 , CASE WHEN IC.DocId <> 13 THEN IP.PretVanzareRedus END
3058 , IP.Tva
3059 , IP.PretAmanunt
3060 , IP.PretAmanuntRedus
3061 , IP.RetailPozIesireID
3062 , IP.TaxCode
3063 , @SorderPozID
3064 , CASE WHEN IC.DocId <> 13 THEN ROUND((IP.ValoareRedusaFaraTva/IP.CantIesire)*( @CantIesire - @Stoc),6) END
3065 , CASE WHEN IC.DocId <> 13 THEN ROUND((IP.ValoareRedusaTva/IP.CantIesire)*( @CantIesire - @Stoc),6) END
3066 , CASE WHEN IC.DocId <> 13 THEN ROUND((IP.ValoareFaraTva/IP.CantIesire)*( @CantIesire - @Stoc),6) END
3067 , CASE WHEN IC.DocId <> 13 THEN ROUND((IP.ValoareTva/IP.CantIesire)*( @CantIesire - @Stoc),6) END
3068 , IP.RetetaPozId
3069 , IP.DinJob
3070 --, 1
3071 FROM inv.IesPoz IP (NOLOCK)
3072 inner join inv.IesCap IC (NOLOCK)
3073 ON IC.IesCapId = IP.IesCapId
3074 inner join dbo.tblproduse pr (NOLOCK)
3075 on pr.produsid = ip.ProdusId
3076 inner join dbo.tblum um (NOLOCK)
3077 on um.umid = pr.UmId
3078 WHERE IP.IesPozId = @IesPozID
3079 AND IP.FirmaID = @FirmaID
3080 AND IP.DivizieID = @DivizieID
3081
3082 DECLARE @IesPOzIdInserat INT
3083
3084 SET @IesPozIdInserat = SCOPE_IDENTITY()
3085
3086 PRINT '@IesPozIdInserat inserat pentru spargere:' + CAST(@IesPozIdInserat AS NVARCHAR)
3087
3088 INSERT INTO #TempSync
3089 (
3090 IesCapId
3091 , IesPozId
3092 , CantIesire
3093 , Cantitate2
3094 , Prelucrat
3095 , IntrPozOrigId
3096 , SerieIntrare
3097 , PretAmanunt
3098 , SOrderPozId
3099 , ProdusID
3100 , RetetaPozId
3101 , ParentIesPozId
3102 , DataIes
3103 , DocId
3104 )
3105 SELECT
3106 cap.IesCapId
3107 , poz.IesPozId
3108 , poz.CantIesire
3109 , poz.Cantitate2
3110 , 0
3111 , poz.IntrPozOrigId
3112 , poz.SerieIntrare
3113 , poz.PretAmanunt
3114 , poz.SorderPozId
3115 , poz.ProdusID
3116 , poz.RetetaPozId
3117 , poz.ParentIesPozId
3118 , cap.DataIes
3119 , cap.DocId
3120 FROM inv.IesPoz poz ( NOLOCK )
3121 INNER JOIN inv.Iescap cap ( NOLOCK )
3122 ON cap.IesCapId = poz.IesCapId
3123 WHERE cap.FirmaId = @FirmaID
3124 AND cap.DivizieId = @DivizieId
3125 AND poz.IntrPozId IS NULL
3126 --AND cap.DocId = @DocIdBon
3127 --AND ISNULL(cap.TipDocId,0) = @ConfigTipDocIdBonCuStoc
3128 --AND ISNULL(@TipDocStoc,0) = 1
3129 --AND cap.RetailCapIesireID IS NOT NULL
3130 --AND poz.RetailPozIesireID IS NOT NULL
3131 AND poz.IesPozId = @IesPozIdInserat
3132
3133 ORDER BY cap.DataIes
3134
3135 DECLARE @TempSyncIdInserat INT
3136
3137 SET @TempSyncIdInserat = SCOPE_IDENTITY()
3138
3139 PRINT '@TempSyncIdInserat inserat pentru spargere:' + CAST(@TempSyncIdInserat AS NVARCHAR)
3140
3141 END
3142
3143 --select @PretAmanuntBuffer,@PretAmanuntStoc
3144
3145 IF (ROUND(ISNULL(@PretAmanuntBuffer,0),@NrZecimaleAmanunt) <> ROUND(ISNULL(@PretAmanuntStoc,0),@NrZecimaleAmanunt)
3146 AND ISNULL(@GenerareReev,0) = 1
3147 )
3148 BEGIN
3149
3150 IF @ReevCapId IS NULL --inserare antet schimbare pret
3151 BEGIN
3152
3153 INSERT inv.ReevCap
3154 (
3155 FirmaId
3156 ,DivizieId
3157 ,DocId
3158 ,TipDocId
3159 ,PlajaId
3160 ,DataReev
3161 ,Observatii
3162 ,DataCreare
3163 ,UserCreare
3164 ,UserCreareId
3165 ,DataValidare
3166 ,UserValidare
3167 ,UserValidareId
3168 )
3169 SELECT TOP 1
3170 @FirmaId
3171 ,@DivizieID
3172 ,53
3173 ,@TipDocId
3174 ,@PlajaId
3175 ,CAST(@DataCrt AS DATE)
3176 ,NULL
3177 ,CAST(@DataCrt AS DATE)
3178 ,c.UserCreare
3179 ,c.UserCreareId
3180 ,CAST(@DataCrt AS DATE)
3181 ,ISNULL(c.UserValidare,c.UserCreare)
3182 ,ISNULL(c.UserValidareId,c.UserValidareId)
3183 FROM inv.IesPoz p (NOLOCK)
3184 INNER JOIN inv.IesCap c (NOLOCK)
3185 ON c.IesCapId = p.IesCapId
3186 WHERE p.IesPozId = @IesPozId
3187
3188 SET @ReevCapId = @@IDENTITY
3189
3190 UPDATE inv.reevcap
3191 SET NumarReev = CAST(@ReevCapId as nvarchar(100))
3192 WHERE ReevCapId = @ReevCapId
3193
3194 END
3195
3196 INSERT INTO inv.ReevPoz
3197 (
3198 ReevCapId
3199 ,ProdusId
3200 ,FirmaId
3201 ,DivizieId
3202 ,GestiuneId
3203 ,LotIntrare
3204 ,DataExpirare
3205 ,SerieIntrare
3206 ,DataFabricare
3207 ,IntrPozId
3208 ,FurnizorId
3209 ,FurnizorOriginalId
3210 ,NumarIntr
3211 ,DataIntr
3212 ,DocIntrId
3213 ,TipDocIntrId
3214 ,NumarFactIntr
3215 ,DataFactIntr
3216 ,PretIntrare
3217 ,PretIntrareRedus
3218 ,PretCostNew
3219 ,PretCostOld
3220 ,PretAmanuntNew
3221 ,PretAmanuntOld
3222 ,AssetId
3223 ,ClientCustodieId
3224 ,ExplicatiiIntr1
3225 ,ExplicatiiIntr2
3226 ,PretIntrareValuta
3227 ,ValutaIntrareId
3228 ,ValutaDefaultId
3229 ,CantReev
3230 ,ContractFurnizorPozId
3231 ,POrderPozId
3232 ,ValutaCmdFurnId
3233 ,PretCmdFurn
3234 ,PretCtrFurn
3235 ,ValutaCtrFurnId
3236 ,TVA
3237 ,TaxCode
3238 ,IdExternImport
3239 )
3240 SELECT @ReevCapId
3241 ,p.ProdusId
3242 ,p.FirmaId
3243 ,p.DivizieId
3244 ,p.GestiuneId
3245 ,p.LotIntrare
3246 ,p.DataExpirare
3247 ,p.SerieIntrare
3248 ,p.DataFabricare
3249 ,p.IntrPozId
3250 ,p.FurnizorId
3251 ,p.FurnizorOriginalId
3252 ,p.NumarIntr
3253 ,p.DataIntr
3254 ,p.DocIntrId
3255 ,p.TipDocIntrId
3256 ,p.NumarFactIntr
3257 ,p.DataFactIntr
3258 ,p.PretIntrare
3259 ,p.PretIntrareRedus
3260 ,p.PretCost
3261 ,p.PretCost
3262 ,ISNULL(p.PretAmanunt,0)
3263 ,ISNULL(@PretAmanuntStoc,0)
3264 ,p.AssetId
3265 ,p.ClientCustodieId
3266 ,p.ExplicatiiIntr1
3267 ,p.ExplicatiiIntr2
3268 ,p.PretIntrareValuta
3269 ,p.ValutaIntrareId
3270 ,p.ValutaIntrareDefaultId
3271 ,CASE WHEN @CantIesire <= @Stoc
3272 THEN @CantIesire
3273 ELSE @Stoc
3274 END
3275 ,p.ContractFurnizorPozId
3276 ,p.POrderPozId
3277 ,p.ValutaCmdFurnId
3278 ,p.PretCmdFurn
3279 ,p.PretCtrFurn
3280 ,p.ValutaCtrFurnId
3281 ,p.Tva
3282 ,@TaxCodeP
3283 ,p.RetailPozIesireId
3284 FROM inv.IesPoz p (NOLOCK)
3285 INNER JOIN inv.IesCap c (NOLOCK)
3286 ON p.IesCapId = c.IesCapId
3287 INNER JOIN dbo.tblGestiuni g (NOLOCK)
3288 on p.GestiuneId=g.GestiuneId
3289 WHERE p.IesPozId = @IesPozId
3290 and ISNULL(g.Amanunt,0)=1
3291 --AND c.IesCapFacturaId IS NULL--fara bonurile din factura
3292
3293 END
3294 END
3295
3296 UPDATE #TempSync
3297 SET Prelucrat = 1
3298 WHERE TempSyncId = @TempSyncId
3299
3300 PRINT '@TempSyncId prelucrat:' + CAST(@TempSyncId AS NVARCHAR)
3301
3302 IF XACT_STATE() = 1
3303 COMMIT TRANSACTION
3304
3305 END
3306
3307 END--end while
3308
3309 IF EXISTS (SELECT TOP 1 * FROM #TempSync WHERE ParentIesPozId IS NOT NULL)
3310 BEGIN -- propagare pret vanzare in detalii
3311
3312 UPDATE poz
3313 SET /*poz.PretVanzare = ROUND(ROUND(CASE WHEN pr.TipItem = 'S'
3314 THEN ISNULL(poz.PretAmanunt,poz.PretVanzare * (1 + poz.Tva / 100.00))
3315 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * det.ValAmanuntParinte / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3316 END,2) / (1 + poz.Tva / 100.00), @NrZecimalePretVanzare)
3317 ,*/poz.PretVanzareRedus = ROUND(ROUND(CASE WHEN pr.TipItem = 'S'
3318 THEN ISNULL(poz.PretAmanuntRedus,ISNULL(poz.PretVanzareRedus,poz.PretVanzare) * (1 + poz.Tva / 100.00))
3319 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * ISNULL(det.ValAmanuntRedusParinte,det.ValAmanuntParinte) / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3320 END,2) / (1 + poz.Tva / 100.00), @NrZecimalePretVanzare)
3321 /*,poz.PretAmanunt = ROUND(CASE WHEN pr.TipItem = 'S'
3322 THEN ISNULL(poz.PretAmanunt,poz.PretVanzare * (1 + poz.Tva / 100.00))
3323 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * det.ValAmanuntParinte / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3324 END,2)*/
3325 ,poz.PretAmanuntRedus = ROUND(CASE WHEN pr.TipItem = 'S'
3326 THEN ISNULL(poz.PretAmanuntRedus,ISNULL(poz.PretVanzareRedus,poz.PretVanzare) * (1 + poz.Tva / 100.00))
3327 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * ISNULL(det.ValAmanuntRedusParinte,det.ValAmanuntParinte) / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3328 END,2)
3329
3330 ,poz.ValoareRedusaFaraTva = ROUND(poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3331 THEN ISNULL(poz.PretAmanuntRedus,ISNULL(poz.PretVanzareRedus,poz.PretVanzare) * (1 + poz.Tva / 100.00))
3332 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * ISNULL(det.ValAmanuntRedusParinte,det.ValAmanuntParinte) / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3333 END - ROUND(((poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3334 THEN ISNULL(poz.PretAmanuntRedus,ISNULL(poz.PretVanzareRedus,poz.PretVanzare) * (1 + poz.Tva / 100.00))
3335 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * ISNULL(det.ValAmanuntRedusParinte,det.ValAmanuntParinte) / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3336 END * poz.Tva) / (100.00 + poz.Tva)), 6), 6)
3337 ,poz.ValoareRedusaTva = ROUND(((poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3338 THEN ISNULL(poz.PretAmanuntRedus,ISNULL(poz.PretVanzareRedus,poz.PretVanzare) * (1 + poz.Tva / 100.00))
3339 ELSE (ISNULL(poz.PretCost,0) * (1 + (poz.Tva / 100.00)) * ISNULL(det.ValAmanuntRedusParinte,det.ValAmanuntParinte) / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3340 END * poz.Tva) / (100.00 + poz.Tva)), 6)
3341 /*,poz.ValoareFaraTva = ROUND(poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3342 THEN ISNULL(poz.PretAmanunt,poz.PretVanzare * (1 + poz.Tva / 100.00))
3343 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * det.ValAmanuntParinte / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3344 END - ROUND((poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3345 THEN ISNULL(poz.PretAmanunt,poz.PretVanzare * (1 + poz.Tva / 100.00))
3346 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * det.ValAmanuntParinte / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3347 END * poz.Tva) / (100.00 + poz.Tva), 6), 6)
3348 ,poz.ValoareTva = ROUND((poz.CantIesire * CASE WHEN pr.TipItem = 'S'
3349 THEN ISNULL(poz.PretAmanunt,poz.PretVanzare * (1 + poz.Tva / 100.00))
3350 ELSE (ISNULL(poz.PretCost,0) * (1 + poz.Tva / 100.00) * det.ValAmanuntParinte / ISNULL(NULLIF(det.ValoareCostCuTva,0),1))
3351 END * poz.Tva) / (100.00 + poz.Tva), 6)*/
3352 FROM inv.IesPoz poz
3353 INNER JOIN dbo.tblProduse pr (NOLOCK)
3354 ON pr.ProdusId = poz.ProdusId
3355 INNER JOIN dbo.tblTva t (NOLOCK)
3356 ON t.TvaId = pr.TvaId
3357 INNER JOIN (SELECT
3358 p.ParentIesPozId
3359 , SUM(CASE WHEN prod.TipItem = 'P' THEN p.CantIesire * ISNULL(p.PretCost,0) * (1 + p.Tva / 100.00)
3360 ELSE 0 END) AS ValoareCostCuTva
3361
3362 , MAX(pp.CantIesire * pp.PretAmanunt) AS ValAmanuntParinte
3363 , MAX(pp.CantIesire * ISNULL(pp.PretAmanuntRedus,pp.PretAmanunt)) AS ValAmanuntRedusParinte
3364
3365 , SUM(CASE WHEN prod.TipItem = 'S' THEN p.CantIesire * ISNULL(p.PretVanzare,0)
3366 ELSE 0 END) AS ValoareServicii
3367 , SUM(CASE WHEN prod.TipItem = 'S' THEN p.CantIesire * COALESCE(p.PretVanzareRedus,p.PretVanzare,0)
3368 ELSE 0 END) AS ValoareRedusaServicii
3369 FROM inv.IesPoz p (nolock)
3370 INNER JOIN inv.IesPoz (nolock) pp
3371 on pp.IesPozId = p.ParentIesPozId
3372 INNER JOIN dbo.tblProduse prod (NOLOCK)
3373 ON prod.ProdusId = p.ProdusId
3374 INNER JOIN (SELECT temp.ParentIesPozId as IesPozId
3375 FROM #TempSync temp
3376 GROUP BY temp.ParentIesPozId) temp
3377 ON temp.IesPozId = p.ParentIesPozId
3378 GROUP BY p.ParentIesPozId) det
3379 ON poz.ParentIesPozId = det.ParentIesPozId
3380
3381 UPDATE poz
3382 SET poz.PretCost = ROUND(ISNULL(det.ValoareCost,0) / ISNULL(NULLIF(poz.CantIesire,0),1),@NrZecimalePretIntrare)
3383 FROM inv.IesPoz poz
3384 INNER JOIN (SELECT p.ParentIesPozId
3385 , SUM(CASE WHEN prod.TipItem = 'P' THEN p.CantIesire * ISNULL(p.PretCost,0) ELSE 0 END) AS ValoareCost
3386 FROM inv.IesPoz p (NOLOCK)
3387 INNER JOIN dbo.tblProduse prod (NOLOCK)
3388 ON prod.ProdusId = p.ProdusId
3389 INNER JOIN (SELECT temp.ParentIesPozId as IesPozId
3390 FROM #TempSync temp
3391 GROUP BY temp.ParentIesPozId) temp
3392 ON temp.IesPozId = p.ParentIesPozId
3393 GROUP BY p.ParentIesPozId) det
3394 on poz.IesPozId = det.ParentIesPozId
3395 END
3396
3397 IF EXISTS (SELECT TOP 1 * FROM #TempSync WHERE DocId = 13)
3398 BEGIN
3399 DECLARE @CapDocIds NVARCHAR(MAX)
3400 , @DataDeLa DATE
3401 , @DataPanaLa DATE
3402
3403 SELECT @CapDocIds = ISNULL(@CapDocIds + ',','') + CAST(IesCapId AS NVARCHAR(MAX))
3404 , @DataDeLa = MIN(DataIes)
3405 , @DataPanaLa = MAX(DataIes)
3406 FROM #TempSync
3407 WHERE DocId = 13
3408 GROUP BY IesCapId
3409
3410 Update cap
3411 SET ValoareFaraTva = a.ValoareFaraTva
3412 , ValoareTva = a.ValoareTva
3413 , ValoareReducereFaraTva = a.ValoareReducereFaraTva
3414 , ValoareReducereTva = a.ValoareReducereTva
3415 , ValoareValuta = a.Valoarevaluta
3416 , ValoareValutaTva = a.ValoareValutaTva
3417 , ValoareValutaRedus = a.ValoareValutaredus
3418 , ValoareValutaTvaRedus=a.ValoareValutaTvaRedus
3419 , FaraTva = FaraTva --CASE WHEN @FaraTva = 1 THEN 1 ELSE 0 END
3420 , NrPozitii = a.NrPozitii
3421 , GreutateBrutaTotal = a.GreutateBrutaTotal
3422 , GreutateNetaTotal = a.GreutateNetaTotal
3423 , GreutateBrutaBax = a.GreutateBrutaBax
3424 , VolumBax = a.VolumBax
3425 FROM inv.IesCap cap
3426 INNER JOIN #TempSync tc
3427 ON tc.IescapId = cap.Iescapid
3428 AND tc.Docid = 13
3429 INNER JOIN (
3430 SELECT p.IesCapId
3431
3432 , SUM(ROUND(ISNULL(p.ValoareFaraTva,p.CantIesire * /*p.PretVanzare*/ p.PretCost),@setare351)) as ValoareFaraTva
3433 , SUM(ROUND(ISNULL(p.ValoareTva,p.CantIesire * /*p.PretVanzare*/ p.PretCost * p.Tva * (1-ISNULL(p.TaxInv, 0)) / 100.00),@setare351)) as ValoareTva
3434 , SUM(ROUND(ISNULL(p.ValoareRedusaFaraTva,p.CantIesire * /*ISNULL(p.PretVanzareRedus,p.PretVanzare)*/ p.PretCost),2)) as ValoareReducereFaraTva
3435 , SUM(ROUND(ISNULL(p.ValoareRedusaTva,p.CantIesire * /*ISNULL(p.PretVanzareRedus,p.PretVanzare)*/ p.PretCost * p.Tva * (1-ISNULL(p.TaxInv,0)) / 100.00),2)) as ValoareReducereTva
3436
3437 , SUM(ROUND(p.CantIesire * p.PretVanzareValuta,@setare351)) as ValoareValuta
3438 , SUM(ROUND(p.CantIesire * p.PretVanzareValuta * p.Tva * (1-ISNULL(p.TaxInv,0)) / 100.00,@setare351)) as ValoareValutaTva
3439 , SUM(ROUND(p.CantIesire * ISNULL(p.PretVanzareValutaRedus,p.PretVanzareValuta),@setare351) )as ValoareValutaRedus
3440 , SUM(ROUND(p.CantIesire * p.PretVanzareValutaRedus * p.Tva * (1-ISNULL(p.TaxInv,0)) / 100.00,@setare351)) as ValoareValutaTvaRedus
3441
3442 , COUNT(p.IesPozId) as NrPozitii
3443 , SUM(p.CantIesire * p.GreutateBruta) as GreutateBrutaTotal
3444 , SUM(p.CantIesire * p.GreutateNeta) as GreutateNetaTotal
3445 , SUM(p.GreutateBrutaBax) as GreutateBrutaBax
3446 , SUM(p.VolumBax) as VolumBax
3447
3448 FROM inv.Iespoz p (NOLOCK)
3449 INNER JOIN dbo.tf_IDs_from_a_string(@CapDocIds) x
3450 ON x.Numbers = p.IesCapId
3451 WHERE ISNULL(p.ParentIesPozId, 0) = 0
3452 AND p.IesPoz2Id IS NULL
3453 --AND p.IntrPozId IS NOT NULL
3454 GROUP BY p.IesCapId) a
3455 ON a.IesCapId = cap.IesCapId
3456 WHERE cap.FirmaId = @FirmaId
3457 AND cap.DivizieId = @DivizieId
3458
3459 EXEC dbo.Doc2Conta
3460 @DocIds = '13'
3461 , @CapId = @CapDocIds
3462 , @DeLa = @DataDeLa
3463 , @PanaLa = @DataPanaLa
3464 , @SYS_USERID = 0
3465 , @SYS_LANGID = 'RO'
3466 , @SYS_UNITID = @FirmaId
3467 , @SYS_DIVID = @DivizieID
3468 , @SYS_PARTID = @SYS_PARTID
3469
3470 END
3471
3472 if @Debug=1 /*d*/
3473 BEGIN
3474 SELECT 'End WHILE Bonuri'
3475 END
3476
3477 ------------------------------------------------------------------------------
3478
3479
3480 --SELECT 'Pozitii nesincronizate:'
3481
3482 --SELECT *
3483 --FROM inv.IesPoz poz (NOLOCK)
3484 --JOIN inv.IesCap cap (NOLOCK)
3485 -- ON poz.IesCapId = cap.IesCapId
3486 --WHERE cap.FirmaId = @FirmaId
3487 -- AND cap.DivizieId = @DivizieId
3488 -- AND cap.DocId = @DocIdBon
3489 -- AND poz.IntrPozId IS NULL
3490 -- AND cap.CodCalc IS NOT NULL
3491 -- AND cap.RetailCapIesireId IS NOT NULL
3492 -- AND poz.RetailPozIesireId IS NOT NULL
3493 -- AND ISNULL(cap.Retur, 0) <> 1
3494
3495 --------------------------------------------------------------------------------------------------------------
3496
3497
3498 --Legatura la stoc la pozitiile de retur (cant negativa)
3499
3500 PRINT 'Bonuri retur'
3501
3502 IF OBJECT_ID('tempdb..#TempSyncRetur') IS NOT NULL
3503 DROP TABLE #TempSyncRetur
3504
3505 CREATE TABLE #TempSyncRetur
3506 (
3507 TempSyncId INT IDENTITY(1,1)
3508 ,IesCapId INT
3509 ,IesPozId INT
3510 ,RetailPozIesireReturId INT
3511 ,IesPozRefDetId INT
3512 ,CantRetur DECIMAL(18,5)
3513 ,ProdusId INT
3514 ,Prelucrat BIT
3515 ,ParentIesPozId INT
3516 )
3517
3518 INSERT INTO #TempSyncRetur
3519 (
3520 IesCapId
3521 ,IesPozId
3522 ,RetailPozIesireReturId
3523 ,IesPozRefDetId
3524 ,CantRetur
3525 ,ProdusId
3526 ,Prelucrat
3527 ,ParentIesPozId
3528 )
3529 SELECT
3530 cap.IesCapId
3531 , poz.IesPozId
3532 , poz.RetailPozIesireReturId
3533 , CASE WHEN poz.RetailPozIesireReturId IS NULL THEN poz.IesPozRefId END
3534 , poz.CantIesire
3535 , poz.ProdusId
3536 , 0
3537 , poz.ParentIesPozId
3538 FROM inv.IesPoz poz ( NOLOCK )
3539 INNER JOIN inv.Iescap cap ( NOLOCK )
3540 ON cap.IesCapId = poz.IesCapId
3541 LEFT JOIN dbo.tblProduse p ( NOLOCK )
3542 ON poz.ProdusId = p.ProdusId
3543 WHERE cap.FirmaId = @FirmaID
3544 AND cap.DivizieId = @DivizieId
3545 AND cap.DataAnulare IS NULL
3546 --AND poz.IesPozRefId IS NULL-- nesincronizate
3547 AND poz.IntrPozId IS NULL
3548 AND ISNULL(poz.ContineDetalii,0) = 0
3549 AND ((cap.DocId = 13 AND cap.TipDocId = @ConfigTipDocBonConsum AND @TipDocBCStoc = 1)
3550 OR (cap.Docid = 21 AND cap.TipDocId = @ConfigTipDocIdBonCuStoc AND @TipDocStoc = 1))
3551 AND cap.RetailCapIesireID IS NOT NULL
3552 AND ((poz.RetailPozIesireID IS NOT NULL AND poz.RetailPozIesireReturID IS NOT NULL)
3553 OR poz.ParentIesPozId IS NOT NULL)
3554 AND cap.DocGeneratorId IS NULL
3555 AND cap.CapDocGeneratorId IS NULL
3556 AND ISNULL(cap.Retur,0) = 1
3557 AND ISNULL(p.TipItem,'P') <> 'S'
3558 --AND cap.IesCapFacturaId IS NULL--fara bonurile din factura
3559 --AND @Descarcare = 1
3560 --AND @GestiuniRetail IS NOT NULL
3561 ORDER BY cap.DataIes
3562
3563 if @Debug=1 /*d*/
3564 BEGIN
3565 SELECT '#TempSyncRetur:'
3566 SELECT * FROM #TempSyncRetur
3567 SELECT 'Begin WHILE Bonuri retur'
3568 END
3569
3570 WHILE EXISTS
3571 (
3572 SELECT TOP 1
3573 *
3574 FROM #TempSyncRetur
3575 WHERE ISNULL(Prelucrat,0) = 0
3576 )
3577 BEGIN
3578
3579 SELECT @TempSyncID = NULL
3580 , @IesCapId = NULL
3581 , @IesPozId = NULL
3582 , @CantRetur = NULL
3583 , @RetailPozIesireReturID = NULL
3584 , @IesPozRefDetId = NULL
3585 , @ProdusID = NULL
3586
3587 SELECT TOP 1
3588 @TempSyncId = TempSyncId
3589 , @IesCapId = IesCapId
3590 , @IesPozId = IesPozId
3591 , @CantRetur = CantRetur
3592 , @RetailPozIesireReturID = RetailPozIesireReturId
3593 , @IesPozRefDetId = IesPozRefDetId
3594 , @ProdusID = ProdusId
3595 FROM #TempSyncRetur
3596 WHERE ISNULL(Prelucrat,0) = 0
3597
3598 PRINT '@TempSyncId:' + CAST(@TempSyncId AS NVARCHAR)
3599 PRINT '@IesCapId:' + CAST(@IesCapId AS NVARCHAR)
3600 PRINT '@IesPozId:' + CAST(@IesPozId AS NVARCHAR)
3601 PRINT '@CantRetur:' + CAST(@CantRetur AS NVARCHAR)
3602 PRINT '@RetailPozIesireReturId:' + CAST(@RetailPozIesireReturId AS NVARCHAR)
3603 PRINT '@ProdusID:' + CAST(@ProdusID AS NVARCHAR)
3604
3605 --DECLARE @RetailCapIesireId INT
3606 --, @RetailPozIesireId INT --pozitia originala a bonului la care fac retur =
3607 --, @Identificator NVARCHAR(20)
3608
3609 --SELECT @RetailCapIesireId = CapIesireId
3610 -- , @RetailPozIesireId = PozIesireId
3611 -- , @Identificator = Identificator
3612 --FROM Retail.BufferPozitiiBon (NOLOCK)
3613 --WHERE FirmaId = @FirmaId
3614 -- AND DivizieId = @DivizieId
3615 -- AND PozIesireId = @RetailPozIesireReturID
3616
3617 --PRINT '@RetailCapIesireId:' + CAST(@RetailCapIesireId AS NVARCHAR(10))
3618 --PRINT '@RetailPozIesireId:' + CAST(@RetailPozIesireId AS NVARCHAR(10))
3619 --PRINT '@Identificator:' + CAST(@Identificator AS NVARCHAR(20))
3620
3621 --IF (
3622 -- ISNULL(@RetailCapIesireId, 0) > 0
3623 -- AND ISNULL(@RetailPozIesireId, 0) > 0
3624 -- )
3625 -- BEGIN
3626
3627 DECLARE @IesPozIdRef INT, @ContineDetalii BIT, @CantitatePF DECIMAL(22,8)
3628 DECLARE
3629 @IesCapIdREf INT
3630 , @CantReturRamasa DECIMAL(18,5)
3631 SET @IntrPozId = NULL
3632 SET @DataExpirare = NULL
3633 SET @GestiuneId = NULL
3634 SET @Amanunt = NULL
3635 SET @DataFabricare = NULL
3636 SET @SerieIntrare = NULL
3637 SET @LotIntrare = NULL
3638 SET @IntrPozOrigId = NULL
3639 SET @FurnizorID = NULL
3640 SET @FurnizorOriginalID = NULL
3641 SET @NumarIntr = NULL
3642 SET @DataIntr = NULL
3643 SET @DocIntrId = NULL
3644 SET @TipDocINtrID = NULL
3645 SET @DataScadenta = NULL
3646 SET @NumarFactIntr = NULL
3647 SET @DataFactIntr = NULL
3648 SET @PretIntrare = NULL
3649 SET @PretIntrareRedus = NULL
3650 SET @PretCost = NULL
3651 SET @GestiuneId = NULL
3652 SET @LotIntrare = NULL
3653 SET @DataExpirare = NULL
3654 SET @POOrderPozId = NULL
3655 SET @CantReturRamasa = NULL
3656 SET @ContineDetalii = NULL
3657 SET @CantitatePF = NULL
3658
3659
3660
3661 --aleg pozitia originala din inv.IesPoz la care MAI POT FACE retur
3662 SELECT TOP 1
3663 @IesPozIdRef = p.IesPozId
3664 , @IesCapIDRef = c.IesCapId
3665 , @IntrPozId = IntrPozId
3666 , @IntrPozOrigId = IntrPozOrigId
3667 , @DataExpirare = DataExpirare
3668 , @GestiuneId = GestiuneId
3669 , @DataFabricare = DataFabricare
3670 , @SerieIntrare = SerieIntrare
3671 , @LotIntrare = LotIntrare
3672 , @FurnizorID = FurnizorID
3673 , @FurnizorOriginalID = FurnizorOriginalID
3674 , @NumarIntr = NumarIntr
3675 , @DataIntr = DataIntr
3676 , @DocIntrId = DocIntrId
3677 , @TipDocINtrID = TipDocINtrID
3678 , @DataScadenta = DataScadenta
3679 , @NumarFactIntr = NumarFactIntr
3680 , @DataFactIntr = DataFactIntr
3681 , @PretIntrare = PretIntrare
3682 , @PretIntrareRedus = PretIntrareRedus
3683 , @PretCost = PretCost
3684 , @GestiuneId = GestiuneId
3685 , @Amanunt = ISNULL(Amanunt,0)
3686 , @CantReturRamasa = p.CantIesire - ISNULL(p.CantRetur,0)
3687 , @ContineDetalii = p.ContineDetalii
3688 , @CantitatePF = p.CantIesire
3689 FROM inv.IesPoz p ( NOLOCK )
3690 INNER JOIN inv.IesCap c ( NOLOCK )
3691 ON c.IesCapId = p.IesCapId
3692 WHERE c.FirmaID = @FirmaID
3693 AND c.DivizieID = @DivizieId
3694 AND c.DataAnulare IS NULL
3695 AND ISNULL(c.Retur,0) = 0
3696 --AND c.RetailCapIesireId = @RetailCapIesireId
3697 --AND c.CodCalc = @Identificator
3698 AND (p.RetailPozIesireId = @RetailPozIesireReturId OR IesPozId = @IesPozRefDetId)
3699 AND p.ProdusId = @ProdusID
3700 AND (p.IntrPozId IS NOT NULL OR p.ContineDetalii = 1) --sincronizat cu stocul sau contine detalii
3701 AND c.DocId IN (13,21)
3702 AND p.CantIesire - ISNULL(p.CantRetur,0) > 0
3703 --AND c.IesCapFacturaId IS NULL--fara bonurile din factura
3704 AND c.DocGeneratorId IS NULL
3705 AND c.CapDocGeneratorId IS NULL
3706 ORDER BY p.IesPozId DESC
3707
3708 PRINT '@IntrPozId:' + CAST(@IntrPozId AS NVARCHAR)
3709 PRINT '@IesPozIdRef:' + CAST(@IesPozIdRef AS NVARCHAR)
3710 PRINT '@IesCapIDRef:' + CAST(@IesCapIDRef AS NVARCHAR)
3711
3712 DECLARE @CantReturDeFacut DECIMAL(18,5) = 0
3713 SET @CantReturDeFacut = CASE WHEN ISNULL(( -1 ) * @CantRetur,0) > ISNULL(@CantReturRamasa,0)
3714 THEN ISNULL(@CantReturRamasa,0)
3715 ELSE ISNULL(( -1 ) * @CantRetur,0)
3716 END
3717
3718
3719 -- eroare daca nu am unicitate pe stoc
3720 IF ( ( SELECT
3721 COUNT(IntrPozId)
3722 FROM
3723 inv.Stoc (NOLOCK)
3724 WHERE
3725 IntrPozId = @IntrPozId
3726 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'') -- ISNULL
3727 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
3728 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
3729 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
3730 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
3731 AND FirmaID = @FirmaID
3732 AND DivizieID = @DivizieID
3733 ) > 1
3734 )
3735 BEGIN
3736 RAISERROR ('Nu exista unicitate pe inv.Stoc!', 16, 1)
3737 RETURN -1
3738 END
3739
3740 IF ( ISNULL(@CantReturDeFacut,0) > 0 )
3741 BEGIN
3742
3743 BEGIN TRAN
3744 IF @ContineDetalii = 1
3745 BEGIN
3746 INSERT inv.IesPoz
3747 (
3748 ParentIesPozId
3749 , IesCapId
3750 , IesPozRefId
3751 , FirmaId
3752 , DivizieId
3753 , ProdusId
3754 , CantIesire
3755 , PretVanzare
3756 , PretVanzareRedus
3757 , Tva
3758 , PretAmanunt
3759 , PretAmanuntRedus
3760 , CantFacturata
3761 , IntrPozId
3762 , FurnizorID
3763 , FurnizorOriginalID
3764 , NumarIntr
3765 , DataIntr
3766 , DocIntrId
3767 , TipDocINtrID
3768 , NumarFactIntr
3769 , DataFactIntr
3770 , PretIntrare
3771 , PretIntrareRedus
3772 , PretCost
3773 , GestiuneId
3774 , Amanunt
3775 , LotIntrare
3776 , DataExpirare
3777 , DataFabricare
3778 , SerieIntrare
3779 , IntrPozOrigId
3780 , POrderPozId
3781 , ValoareRedusaFaraTva
3782 , ValoareRedusaTva
3783 , ValoareFaraTva
3784 , ValoareTva
3785 )
3786 SELECT
3787 @IesPozId
3788 , @IesCapId
3789 , IesPozId
3790 , FirmaId
3791 , DivizieId
3792 , ProdusId
3793 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -CantIesire ELSE ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) END
3794 , PretVanzare
3795 , PretVanzareRedus
3796 , Tva
3797 , PretAmanunt
3798 , PretAmanuntRedus
3799 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -CantIesire ELSE ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) END
3800 , IntrPozId
3801 , FurnizorID
3802 , FurnizorOriginalID
3803 , NumarIntr
3804 , DataIntr
3805 , DocIntrId
3806 , TipDocINtrID
3807 , NumarFactIntr
3808 , DataFactIntr
3809 , PretIntrare
3810 , PretIntrareRedus
3811 , PretCost
3812 , GestiuneId
3813 , Amanunt
3814 , LotIntrare
3815 , DataExpirare
3816 , DataFabricare
3817 , SerieIntrare
3818 , IntrPozOrigId
3819 , POrderPozId
3820 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -ValoareRedusaFaraTva ELSE ROUND(ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) * PretVanzareRedus,2) END
3821 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -ValoareRedusaTva ELSE ROUND(ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) * PretVanzareRedus * Tva/100.00,2) END
3822 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -ValoareFaraTva ELSE ROUND(ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) * PretVanzare,@setare351) END
3823 , CASE WHEN @CantReturDeFacut = @CantitatePF THEN -ValoareTva ELSE ROUND(ROUND(-@CantReturDeFacut * CantIesire / @CantitatePF,@setare623) * PretVanzare * Tva/100.00,@setare351) END
3824 FROM inv.IesPoz (NOLOCK)
3825 WHERE ParentIesPozId = @IesPozIdRef
3826
3827 UPDATE inv.IesPoz
3828 SET ContineDetalii = 1
3829 WHERE IesPozId = @IesPozId
3830
3831 UPDATE inv.IesPoz
3832 SET CantRetur = ISNULL(CantRetur,0) + ISNULL(@CantReturDeFacut,0)
3833 WHERE IesPozId = @IesPozIdRef
3834
3835 INSERT INTO #TempSyncRetur
3836 (
3837 IesCapId
3838 ,IesPozId
3839 ,IesPozRefDetId
3840 ,CantRetur
3841 ,ProdusId
3842 ,Prelucrat
3843 ,ParentIesPozId
3844 )
3845 SELECT
3846 IesCapId
3847 , IesPozId
3848 , IesPozRefId
3849 , CantRetur
3850 , ProdusId
3851 , 0
3852 , ParentIesPozId
3853 FROM inv.IesPoz
3854 WHERE ParentIesPozId = @IesPozIdRef
3855
3856 END
3857
3858 ELSE
3859 BEGIN
3860
3861 -- daca am pe stoc "linia" din care s-a scazut bonul original, ii fac update; altfel , fac insert in stoc
3862 IF EXISTS
3863 ( SELECT TOP 1
3864 IntrPozId
3865 FROM inv.Stoc (NOLOCK)
3866 WHERE IntrPozId = @IntrPozId
3867 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'') -- ISNULL
3868 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
3869 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
3870 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
3871 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
3872 AND FirmaID = @FirmaID
3873 AND DivizieID = @DivizieID
3874 )
3875 BEGIN
3876
3877 PRINT '@Update stoc:'
3878
3879 UPDATE inv.Stoc
3880 SET Stoc = Stoc + @CantReturDeFacut
3881 WHERE IntrPozId = @IntrPozId
3882 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'') -- ISNULL
3883 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
3884 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
3885 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
3886 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
3887 AND FirmaID = @FirmaID
3888 AND DivizieID = @DivizieID
3889 AND ClientCustodieId IS NULL
3890
3891 END
3892
3893 ELSE -- nu am in stoc pozitia la care am facut retur
3894
3895 BEGIN
3896
3897 INSERT INTO inv.Stoc
3898 (
3899 IntrPozId
3900 ,FurnizorId
3901 ,FurnizorOriginalId
3902 ,NumarIntr
3903 ,DataIntr
3904 ,DocIntrId
3905 ,TipDocIntrId
3906 ,DataScadenta
3907 ,NumarFactIntr
3908 ,DataFactIntr
3909 ,FirmaId
3910 ,DivizieId
3911 ,IntrPozOrigId
3912 ,IntrPozRefId
3913 ,ProdusId
3914 ,Stoc
3915 ,PretIntrare
3916 ,PretIntrareRedus
3917 ,PretCost
3918 ,Tva
3919 ,PretAmanunt
3920 ,PretVanzare
3921 ,GestiuneId
3922 ,LotIntrare
3923 ,DataExpirare
3924 ,datafabricare
3925 ,SerieIntrare
3926 ,AssetId
3927 ,ContractFurnizorPozId
3928 ,POrderPozId
3929 ,ValutaCmdFurnId
3930 ,PretCmdFurn
3931 ,PretCtrFurn
3932 ,ValutaCtrFurnId
3933 )
3934 SELECT
3935 p.IntrPozId
3936 , p.FurnizorId
3937 , p.FurnizorOriginalId
3938 , p.NumarIntr
3939 , p.DataIntr
3940 , p.DocIntrId
3941 , p.TipDocIntrId
3942 , p.DataScadentaIntr
3943 , p.NumarFactIntr
3944 , p.DataFactIntr
3945 , p.FirmaId
3946 , p.DivizieId
3947 , p.IntrPozOrigId
3948 , p.IntrPozId AS IntrPozRefId
3949 , p.ProdusId
3950 , ISNULL(@CantReturDeFacut,0)
3951 , p.PretIntrare
3952 , p.PretIntrareRedus
3953 , p.PretCost
3954 , p.Tva
3955 , p.PretAmanunt
3956 , p.PretVanzare
3957 , p.GestiuneId
3958 , p.LotIntrare
3959 , p.DataExpirare
3960 , p.dataFabricare
3961 , p.SerieIntrare
3962 , p.AssetId
3963 , p.ContractFurnizorPozId
3964 , p.POrderPozId
3965 , p.ValutaCmdFurnId
3966 , p.PretCmdFurn
3967 , p.PretCtrFurn
3968 , p.ValutaCtrFurnId
3969 FROM inv.IesPoz p ( NOLOCK )
3970 WHERE p.iesPozId = @IesPozIdRef
3971 --p.IntrPozId = @IntrPozId
3972 -- AND ISNULL(p.DataExpirare, '') = ISNULL(@DataExpirare, '') -- ISNULL
3973 -- AND ISNULL(p.GestiuneId, 0) = ISNULL(@GestiuneId, 0)
3974 -- AND ISNULL(p.DataFabricare, '') = ISNULL(@DataFabricare, '')
3975 -- AND ISNULL(p.SerieIntrare, '') = ISNULL(@SerieIntrare, '')
3976 -- AND ISNULL(p.LotIntrare, '') = ISNULL(@LotIntrare, '')
3977 -- AND p.FirmaID = @FirmaID
3978 -- AND p.DivizieID = @DivizieID
3979
3980 END --de la ELSE
3981
3982 UPDATE inv.IesPoz
3983 SET CantRetur = ISNULL(CantRetur,0) + ISNULL(@CantReturDeFacut,0)
3984 WHERE IesPozId = @IesPozIdRef
3985
3986 UPDATE inv.IesPoz
3987 SET
3988 IesPozRefId = @IesPozIdRef
3989 , IntrPozOrigId = @IntrPozOrigId
3990 , IntrPozId = @IntrPozId
3991 , DataExpirare = @DataExpirare
3992 , GestiuneId = @GestiuneId
3993 , Amanunt = @Amanunt
3994 , DataFabricare = @DataFabricare
3995 , SerieIntrare = @SerieIntrare
3996 , LotIntrare = @LotIntrare
3997 , FurnizorID = @FurnizorID
3998 , FurnizorOriginalID = @FurnizorOriginalID
3999 , NumarIntr = @NumarIntr
4000 , DataIntr = @DataIntr
4001 , DocIntrId = @DocIntrId
4002 , TipDocINtrID = @TipDocINtrID
4003 , NumarFactIntr = @NumarFactIntr
4004 , DataFactIntr = @DataFactIntr
4005 , PretIntrare = @PretIntrare
4006 , PretIntrareRedus = @PretIntrareRedus
4007 , PretCost = @PretCost
4008 , CantIesire = ( -1 ) * @CantReturDeFacut
4009 , ValoareRedusaFaraTva=ROUND((-1) * @CantReturDeFacut * isnull(PretAmanuntRedus,PretAmanunt) - ROUND((((-1) * @CantReturDeFacut * isnull(PretAmanuntRedus,PretAmanunt)) * Tva / (100.00 + Tva)), 6), 6)
4010 --round(( -1 ) * @CantReturDeFacut*isnull(PretVanzareRedus,PretVanzare),6)
4011 , ValoareRedusaTva=ROUND((((-1)* @CantReturDeFacut * isnull(PretAmanuntRedus,PretAmanunt) * Tva) / (100.00 + Tva)), 6)
4012 --round(( -1 ) * @CantReturDeFacut*isnull(PretVanzareRedus,PretVanzare)*tva/100.00,6)
4013 , ValoareFaraTva=ROUND((-1) * @CantReturDeFacut * PretAmanunt - ROUND(((-1) * @CantReturDeFacut * PretAmanunt * Tva) / (100.00 + Tva), 6), 6)
4014 --round(( -1 ) * @CantReturDeFacut*PretVanzare,6)
4015 , ValoareTva= ROUND(((-1) * @CantReturDeFacut * PretAmanunt * Tva) / (100.00 + Tva), 6)
4016 --round(( -1 ) * @CantReturDeFacut*PretVanzare*tva/100.00,6)
4017 WHERE IesPozId = @IesPozId
4018 AND FirmaID = @FirmaID
4019 AND DivizieID = @DivizieId
4020 AND IesCapId = @IesCapId
4021
4022
4023 IF ( ISNULL(( -1 ) * @CantRetur,0) <> @CantReturDeFacut )
4024 BEGIN
4025
4026 INSERT INTO inv.IesPoz
4027 (
4028 IesCapId
4029 ,FirmaID
4030 ,DivizieId
4031 ,ProdusID
4032 ,CantIesire
4033 ,CantFacturata
4034 ,PretVanzare
4035 ,PretVanzareRedus
4036 ,Tva
4037 ,PretAmanunt
4038 ,PretAmanuntRedus
4039 ,RetailPozIesireID
4040 ,RetailPozIesireReturId
4041 ,TaxCode
4042 ,ValoareRedusaFaraTva
4043 ,ValoareRedusaTva
4044 ,ValoareFaraTva
4045 ,ValoareTva
4046 --,Amanunt
4047 )
4048 SELECT
4049 IesCapId
4050 , FirmaID
4051 , DivizieId
4052 , ProdusID
4053 , @CantRetur + @CantReturDeFacut
4054 , @CantRetur + @CantReturDeFacut
4055 , PretVanzare
4056 , PretVanzareRedus
4057 , Tva
4058 , PretAmanunt
4059 , PretAmanuntRedus
4060 , RetailPozIesireID
4061 , RetailPozIesireReturId
4062 , TaxCode
4063 , ROUND((@CantRetur + @CantReturDeFacut) * isnull(PretAmanuntRedus,PretAmanunt) - ROUND((((@CantRetur + @CantReturDeFacut) * isnull(PretAmanuntRedus, PretAmanunt) * Tva) / (100.00 + Tva)), 6), 6)
4064 --round(( @CantRetur + @CantReturDeFacut)*isnull(PretVanzareRedus,PretVanzare),6)
4065 , ROUND((((@CantRetur + @CantReturDeFacut) * isnull(PretAmanuntRedus,PretAmanunt) * Tva) / (100.00 + Tva)), 6)
4066 --round(( @CantRetur + @CantReturDeFacut)*isnull(PretVanzareRedus,PretVanzare)*tva/100.00,6)
4067 , ROUND((@CantRetur + @CantReturDeFacut) * PretAmanunt - ROUND(((@CantRetur + @CantReturDeFacut) * PretAmanunt * Tva) / (100.00 + Tva), 6), 6)
4068 --round(( @CantRetur + @CantReturDeFacut)*PretVanzare,6)
4069 , ROUND(((@CantRetur + @CantReturDeFacut) * PretAmanunt * Tva) / (100.00 + Tva), 6)
4070 --round(( @CantRetur + @CantReturDeFacut)*PretVanzare*tva/100.00,6)
4071
4072 --, 1
4073 FROM inv.IesPoz (NOLOCK)
4074 WHERE IesPozId = @IesPozID
4075 AND FirmaID = @FirmaID
4076 AND DivizieID = @DivizieID
4077
4078 DECLARE @IesPozIdReturInserat INT
4079
4080 SET @IesPozIdReturInserat = SCOPE_IDENTITY()
4081
4082 PRINT '@IesPozIdInserat inserat pentru spargere:' + CAST(@IesPozIdReturInserat AS NVARCHAR)
4083
4084 INSERT INTO #TempSyncRetur
4085 (
4086 IesCapId
4087 ,IesPozId
4088 ,CantRetur
4089 ,RetailPozIesireReturId
4090 ,Prelucrat
4091 )
4092 SELECT
4093 cap.IesCapId
4094 , poz.IesPozId
4095 , poz.CantIesire
4096 , RetailPozIesireReturId
4097 , 0
4098 FROM inv.IesPoz poz ( NOLOCK )
4099 INNER JOIN inv.Iescap cap ( NOLOCK )
4100 ON cap.IesCapId = poz.IesCapId
4101 WHERE cap.FirmaId = @FirmaID
4102 AND cap.DivizieId = @DivizieId
4103 AND poz.IntrPozId IS NULL
4104 AND ((cap.DocId = 13 AND cap.TipDocId = @ConfigTipDocBonConsum AND @TipDocBCStoc = 1)
4105 OR (cap.Docid = 21 AND cap.TipDocId = @ConfigTipDocIdBonCuStoc AND @TipDocStoc = 1))
4106 AND cap.RetailCapIesireID IS NOT NULL
4107 AND poz.RetailPozIesireID IS NOT NULL
4108 AND poz.IesPozId = @IesPozIdReturInserat
4109 ORDER BY cap.DataIes
4110
4111 --DECLARE @TempSyncIdInserat INT
4112 --SET @TempSyncIdInserat = SCOPE_IDENTITY()
4113 --PRINT '@TempSyncIdInserat inserat pentru spargere:' + CAST(@TempSyncIdInserat AS NVARCHAR(20))
4114
4115
4116 END
4117 END
4118 IF XACT_STATE() = 1
4119 COMMIT TRANSACTION
4120
4121 END
4122
4123 UPDATE #TempSyncRetur
4124 SET Prelucrat = 1
4125 WHERE TempSyncId = @TempSyncId
4126
4127 PRINT '@TempSyncId prelucrat:' + CAST(@TempSyncId AS NVARCHAR)
4128
4129 END--while
4130
4131 IF EXISTS (SELECT TOP 1 * FROM #TempSyncRetur WHERE ParentIesPozId IS NOT NULL)
4132 BEGIN
4133
4134 UPDATE poz
4135 SET poz.PretCost = ROUND(ISNULL(det.ValoareCost,0) / ISNULL(NULLIF(poz.CantIesire,0),1),@NrZecimalePretIntrare)
4136 FROM inv.IesPoz poz
4137 INNER JOIN (SELECT p.ParentIesPozId
4138 , SUM(CASE WHEN prod.TipItem = 'P' THEN p.CantIesire * ISNULL(p.PretCost,0) ELSE 0 END) AS ValoareCost
4139 FROM inv.IesPoz p (NOLOCK)
4140 INNER JOIN dbo.tblProduse prod (NOLOCK)
4141 ON prod.ProdusId = p.ProdusId
4142 INNER JOIN (SELECT temp.ParentIesPozId as IesPozId
4143 FROM #TempSyncRetur temp
4144 GROUP BY temp.ParentIesPozId) temp
4145 ON temp.IesPozId = p.ParentIesPozId
4146 GROUP BY p.ParentIesPozId) det
4147 on poz.IesPozId = det.ParentIesPozId
4148 END
4149
4150 if @Debug=1 /*d*/
4151 BEGIN
4152 SELECT 'End WHILE Bonuri retur'
4153 END
4154
4155 --SELECT 'Pozitii retur nesincronizate:'
4156 --SELECT *
4157 --FROM inv.IesPoz poz (NOLOCK)
4158 --JOIN inv.IesCap cap (NOLOCK)
4159 -- ON poz.IesCapId = cap.IesCapId
4160 --WHERE cap.FirmaId = @FirmaId
4161 -- AND cap.DivizieId = @DivizieId
4162 -- AND cap.DocId = @DocIdBon
4163 -- AND poz.IesPozRefId IS NULL
4164 -- AND cap.CodCalc IS NOT NULL
4165 -- AND cap.Retur = 1
4166 -- AND cap.RetailCapIesireId IS NOT NULL
4167 -- AND poz.RetailPozIesireId IS NOT NULL
4168
4169
4170 --SELECT 'Pozitii sincronizate:'
4171
4172 --SELECT *
4173 --FROM inv.IesPoz poz (NOLOCK)
4174 --JOIN inv.IesCap cap (NOLOCK)
4175 -- ON poz.IesCapId = cap.IesCapId
4176 --JOIN inv.Stoc
4177 -- ON stoc.IntrPozId = poz.IntrPozId
4178 -- AND ISNULL(Stoc.DataExpirare, '') = ISNULL(poz.DataExpirare, '') -- ISNULL
4179 -- AND ISNULL(Stoc.GestiuneId, 0) = ISNULL(poz.GestiuneId, 0)
4180 -- AND ISNULL(Stoc.DataFabricare, '') = ISNULL(poz.DataFabricare, '')
4181 -- AND ISNULL(Stoc.SerieIntrare, '') = ISNULL(poz.SerieIntrare, '')
4182 -- AND ISNULL(Stoc.LotIntrare, '') = ISNULL(poz.LotIntrare, '')
4183 --WHERE cap.FirmaId = @FirmaId
4184 -- AND cap.DivizieId = @DivizieId
4185 -- AND cap.DocId = @DocIdBon
4186 -- AND poz.IntrPozId IS NOT NULL
4187 -- AND cap.CodCalc IS NOT NULL
4188 -- AND cap.RetailCapIesireId IS NOT NULL
4189 -- AND poz.RetailPozIesireId IS NOT NULL
4190 -- AND ISNULL(cap.Retur, 0) <> 1
4191 --ORDER BY cap.IesCapID
4192 -- , poz.IesPozId
4193
4194 --SELECT 'Pozitii retur sincronizate:'
4195 --SELECT *
4196 --FROM inv.IesPoz poz (NOLOCK)
4197 --JOIN inv.IesCap cap (NOLOCK)
4198 -- ON poz.IesCapId = cap.IesCapId
4199 --LEFT JOIN inv.Stoc
4200 -- ON stoc.IntrPozId = poz.IntrPozId
4201 -- AND ISNULL(Stoc.DataExpirare, '') = ISNULL(poz.DataExpirare, '') -- ISNULL
4202 -- AND ISNULL(Stoc.GestiuneId, 0) = ISNULL(poz.GestiuneId, 0)
4203 -- AND ISNULL(Stoc.DataFabricare, '') = ISNULL(poz.DataFabricare, '')
4204 -- AND ISNULL(Stoc.SerieIntrare, '') = ISNULL(poz.SerieIntrare, '')
4205 -- AND ISNULL(Stoc.LotIntrare, '') = ISNULL(poz.LotIntrare, '')
4206 --WHERE cap.FirmaId = @FirmaId
4207 -- AND cap.DivizieId = @DivizieId
4208 -- AND cap.DocId = @DocIdBon
4209 -- AND poz.IesPozRefId IS NOT NULL
4210 -- AND cap.CodCalc IS NOT NULL
4211 -- AND cap.Retur = 1
4212 -- AND cap.RetailCapIesireId IS NOT NULL
4213 -- AND poz.RetailPozIesireId IS NOT NULL
4214
4215
4216
4217 PRINT 'Bonuri retur special'
4218 --bonuri de retur fara bifa @retur si referinta la iesire
4219
4220 IF OBJECT_ID('tempdb..#TempSyncReturSpecial') IS NOT NULL
4221 DROP TABLE #TempSyncReturSpecial
4222
4223 CREATE TABLE #TempSyncReturSpecial
4224 (
4225 TempSyncId INT IDENTITY(1,1)
4226 ,IesCapId INT
4227 ,IesPozId INT
4228 ,CantRetur DECIMAL(18,5)
4229 ,Prelucrat BIT
4230 ,ProdusId INT
4231 )
4232
4233 INSERT INTO #TempSyncReturSpecial
4234 (
4235 IesCapId
4236 ,IesPozId
4237 ,CantRetur
4238 ,Prelucrat
4239 ,ProdusId
4240 )
4241 SELECT
4242 cap.IesCapId
4243 , poz.IesPozId
4244 , poz.CantIesire
4245 , 0
4246 , poz.ProdusId
4247 FROM inv.IesPoz poz ( NOLOCK )
4248 INNER JOIN inv.Iescap cap ( NOLOCK )
4249 ON cap.IesCapId = poz.IesCapId
4250 LEFT JOIN dbo.tblProduse p ( NOLOCK )
4251 ON p.ProdusId = poz.ProdusId
4252 WHERE cap.FirmaId = @FirmaID
4253 AND cap.DivizieId = @DivizieId
4254 AND cap.DataAnulare IS NULL
4255 AND poz.IntrPozId IS NULL
4256 AND ((cap.DocId = 13 AND cap.TipDocId = @ConfigTipDocBonConsum AND @TipDocBCStoc = 1)
4257 OR (cap.Docid = 21 AND cap.TipDocId = @ConfigTipDocIdBonCuStoc AND @TipDocStoc = 1))
4258 AND cap.RetailCapIesireID IS NOT NULL
4259 AND poz.RetailPozIesireID IS NOT NULL
4260 AND poz.RetailPozIesireReturID IS NULL --nu am legatura cu pozitia de iesire
4261 AND poz.CantIesire < 0
4262 AND ISNULL(p.TipItem,'P') <> 'S'
4263 --AND cap.IesCapFacturaId IS NULL--fara bonurile din factura
4264 AND cap.DocGeneratorId IS NULL
4265 AND cap.CapDocGeneratorId IS NULL
4266 --AND @Descarcare = 1
4267 --AND @GestiuniRetail IS NOT NULL
4268 ORDER BY cap.DataIes
4269
4270 if @Debug=1 /*d*/
4271 BEGIN
4272 SELECT '#TempSyncReturSpecial:'
4273 SELECT * FROM #TempSyncReturSpecial
4274 SELECT 'Begin WHILE Bonuri retur special'
4275 END
4276
4277 WHILE EXISTS
4278 ( SELECT TOP 1
4279 *
4280 FROM #TempSyncReturSpecial
4281 WHERE ISNULL(Prelucrat,0) = 0
4282 )
4283 BEGIN
4284
4285 SELECT TOP 1
4286 @TempSyncId = TempSyncId
4287 , @IesCapId = IesCapId
4288 , @IesPozId = IesPozId
4289 , @CantRetur = CantRetur
4290 , @ProdusID = ProdusId
4291 FROM #TempSyncReturSpecial
4292 WHERE ISNULL(Prelucrat,0) = 0
4293
4294 PRINT '@TempSyncIdSpecial:' + CAST(@TempSyncId AS NVARCHAR)
4295 PRINT '@IesCapIdSpecial:' + CAST(@IesCapId AS NVARCHAR)
4296 PRINT '@IesPozIdSpecial:' + CAST(@IesPozId AS NVARCHAR)
4297 PRINT '@CantReturSpecial:' + CAST(@CantRetur AS NVARCHAR)
4298
4299 SET @FurnizorID = NULL
4300 SET @FurnizorOriginalID = NULL
4301 SET @NumarIntr = NULL
4302 SET @DataIntr = NULL
4303 SET @DocIntrId = NULL
4304 SET @TipDocINtrID = NULL
4305 SET @DataScadenta = NULL
4306 SET @NumarFactIntr = NULL
4307 SET @DataFactIntr = NULL
4308 SET @PretIntrare = NULL
4309 SET @PretIntrareRedus = NULL
4310 SET @PretCost = NULL
4311 SET @GestiuneId = NULL
4312 SET @Amanunt = NULL
4313 SET @LotIntrare = NULL
4314 SET @DataExpirare = NULL
4315 SET @DataFabricare = NULL
4316 SET @SerieIntrare = NULL
4317 SET @IntrPozOrigId = NULL
4318 SET @POOrderPozId = NULL
4319 SET @Stoc = NULL
4320 SET @IntrPozId = NULL
4321
4322 BEGIN TRAN
4323
4324 --iau prima pozitie din stoc din gestiunile de retail cu @produsid
4325 SELECT TOP 1
4326 @FurnizorID = stoc.FurnizorID
4327 , @FurnizorOriginalID = stoc.FurnizorOriginalID
4328 , @NumarIntr = stoc.NumarIntr
4329 , @DataIntr = stoc.DataIntr
4330 , @DocIntrId = stoc.DocIntrId
4331 , @TipDocINtrID = stoc.TipDocINtrID
4332 , @DataScadenta = stoc.DataScadenta
4333 , @NumarFactIntr = stoc.NumarFactIntr
4334 , @DataFactIntr = stoc.DataFactIntr
4335 , @PretIntrare = stoc.PretIntrare
4336 , @PretIntrareRedus = stoc.PretIntrareRedus
4337 , @PretCost = stoc.PretCost
4338 , @GestiuneId = stoc.GestiuneId
4339 , @Amanunt = ISNULL(g.Amanunt,0)
4340 , @LotIntrare = stoc.LotIntrare
4341 , @DataExpirare = stoc.DataExpirare
4342 , @DataFabricare = stoc.DataFabricare
4343 , @SerieIntrare = stoc.SerieIntrare
4344 , @IntrPozOrigId = stoc.IntrPozOrigId
4345 , @POOrderPozId = stoc.POrderPozId
4346 , @Stoc = stoc.Stoc
4347 , @IntrPozId = stoc.IntrPozId
4348 , @ProdusID = stoc.ProdusId
4349 FROM inv.Stoc stoc WITH ( ROWLOCK,UPDLOCK )
4350 INNER JOIN dbo.tblGestiuni G WITH ( NOLOCK )
4351 ON G.GestiuneId = stoc.GestiuneID
4352 --AND G.FirmaID = @FirmaID
4353 --AND G.DivizieId = @DivizieID
4354 INNER JOIN
4355 (
4356 SELECT
4357 val
4358 FROM dbo.SplitString(@ConfigGestiuni,',')
4359 WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
4360 ) CodGestSetare1
4361 ON G.CodGestiune = CodGestSetare1.val
4362 INNER JOIN inv.IesPoz poz ( NOLOCK )
4363 ON poz.ProdusId = stoc.ProdusId
4364 WHERE stoc.FirmaId = @FirmaId
4365 AND stoc.DivizieId = @DivizieId
4366 AND poz.IesPozId = @IesPozId
4367 AND stoc.ProdusId = @ProdusID
4368 ORDER BY stoc.DataIntr
4369 --ORDER BY DataExpirare
4370
4371 IF ( @IntrPozId IS NULL )
4372 BEGIN
4373
4374 --nu am inregistrare in stoc, caut ultima intrare pe firma,divizie a produsului
4375
4376 SELECT TOP 1 @IntrPozId = IntrPozId
4377 FROM inv.IntrPoz poz ( NOLOCK )
4378 INNER JOIN dbo.tblGestiuni G ( NOLOCK )
4379 ON G.GestiuneId = poz.GestiuneID
4380 INNER JOIN inv.IntrCap cap ( NOLOCK )
4381 ON cap.IntrCapId = poz.IntrCapId
4382 AND cap.DataAnulare IS NULL
4383 AND Cap.DataValidare IS NOT NULL
4384 INNER JOIN
4385 (
4386 SELECT
4387 val
4388 FROM dbo.SplitString(@ConfigGestiuni,',')
4389 WHERE LTRIM(RTRIM(ISNULL(val,''))) <> ''
4390 ) CodGestSetare1
4391 ON G.CodGestiune = CodGestSetare1.val
4392 WHERE ProdusId = @ProdusID
4393 AND poz.FirmaID = @FirmaID
4394 AND poz.DivizieId = @DivizieID
4395 AND poz.IntrPozAvizId IS NULL
4396 AND poz.IntrPozRefId IS NULL
4397 ORDER BY ISNULL(poz.DataIntr,cap.DataIntr) DESC
4398
4399 IF ( @IntrPozId IS NOT NULL )
4400 BEGIN
4401 -- am intrare pt produs
4402 -- insert in stoc
4403 SELECT TOP 1
4404 @FurnizorOriginalID = intr.FurnizorOriginalID
4405 , @FurnizorID = ISNULL(intr.FurnizorPozId,cap.FurnizorId)
4406 , @NumarIntr = ISNULL(intr.NumarIntr,cap.NumarIntr)
4407 , @DataIntr = ISNULL(intr.DataIntr,cap.DataIntr)
4408 , @NumarFactIntr = ISNULL(intr.NumarFactIntr,cap.NumarFactIntr)
4409 , @DataFactIntr = ISNULL(intr.DataFactIntr,cap.DataFactIntr)
4410 , @PretIntrare = intr.PretIntrare
4411 , @PretIntrareRedus = intr.PretIntrareRedus
4412 , @PretCost = intr.PretCost
4413 , @GestiuneId = intr.GestiuneId
4414 , @LotIntrare = intr.LotIntrare
4415 , @DataExpirare = intr.DataExpirare
4416 , @DataFabricare = intr.DataFabricare
4417 , @SerieIntrare = intr.SerieIntrare
4418 , @IntrPozOrigId = intr.IntrPozOrigId
4419 , @POOrderPozId = intr.POrderPozId
4420 , @DocIntrId = cap.DocId
4421 FROM inv.IntrPoz intr ( NOLOCK )
4422 INNER JOIN inv.IntrCap cap ( NOLOCK )
4423 ON intr.IntrCapId = cap.IntrCapId
4424 WHERE IntrPozId = @IntrPozId
4425
4426 INSERT INTO inv.Stoc
4427 (
4428 FurnizorId
4429 ,FurnizorOriginalID
4430 ,NumarIntr
4431 ,DataIntr
4432 ,NumarFactIntr
4433 ,DataFactIntr
4434 ,PretIntrare
4435 ,PretIntrareRedus
4436 ,PretCost
4437 ,GestiuneId
4438 ,LotIntrare
4439 ,DataExpirare
4440 ,SerieIntrare
4441 ,IntrPozOrigId
4442 ,POrderPozId
4443 ,DocIntrId
4444 ,Stoc
4445 ,ProdusId
4446 ,IntrPozId
4447 ,FirmaId
4448 ,DivizieId
4449 )
4450 VALUES
4451 (
4452 @FurnizorId
4453 ,@FurnizorOriginalID
4454 ,@NumarIntr
4455 ,@DataIntr
4456 ,@NumarFactIntr
4457 ,@DataFactIntr
4458 ,@PretIntrare
4459 ,@PretIntrareRedus
4460 ,@PretCost
4461 ,@GestiuneId
4462 ,@LotIntrare
4463 ,@DataExpirare
4464 ,@SerieIntrare
4465 ,@IntrPozOrigId
4466 ,@POOrderPozId
4467 ,@DocIntrId
4468 ,( -1 ) * @CantRetur
4469 ,@ProdusID
4470 ,@IntrPozId
4471 ,@FirmaId
4472 ,@DivizieID
4473
4474 )
4475
4476 --update pe inv.IesPoz
4477 UPDATE inv.IesPoz
4478 SET
4479 IesPozRefId = @IesPozIdRef
4480 , IntrPozOrigId = @IntrPozOrigId
4481 , IntrPozId = @IntrPozId
4482 , DataExpirare = @DataExpirare
4483 , GestiuneId = @GestiuneId
4484 , Amanunt = @Amanunt
4485 , DataFabricare = @DataFabricare
4486 , SerieIntrare = @SerieIntrare
4487 , LotIntrare = @LotIntrare
4488 , FurnizorID = @FurnizorID
4489 , FurnizorOriginalID = @FurnizorOriginalID
4490 , NumarIntr = @NumarIntr
4491 , DataIntr = @DataIntr
4492 , DocIntrId = @DocIntrId
4493 , TipDocINtrID = @TipDocINtrID
4494 , NumarFactIntr = @NumarFactIntr
4495 , DataFactIntr = @DataFactIntr
4496 , PretIntrare = @PretIntrare
4497 , PretIntrareRedus = @PretIntrareRedus
4498 , PretCost = @PretCost
4499 WHERE IesPozId = @IesPozId
4500 AND FirmaID = @FirmaID
4501 AND DivizieID = @DivizieId
4502 AND IesCapId = @IesCapId
4503 END
4504
4505 ELSE
4506
4507 BEGIN
4508 PRINT 'Nu exista inregistrari in stoc sau intrari pentru produsul cu ID:' + CAST(@ProdusID AS VARCHAR)
4509 END
4510 END
4511
4512 ELSE
4513
4514 BEGIN
4515 --am inregistrare in stoc
4516 PRINT '@Stoc:' + CAST(@Stoc AS NVARCHAR) + '- @CantitateReturSpecial:' + CAST(@CantRetur AS NVARCHAR)
4517
4518 UPDATE inv.IesPoz
4519 SET
4520 IntrPozId = @IntrPozId
4521 , FurnizorID = @FurnizorID
4522 , FurnizorOriginalID = @FurnizorOriginalID
4523 , NumarIntr = @NumarIntr
4524 , DataIntr = @DataIntr
4525 , DocIntrId = @DocIntrId
4526 , TipDocINtrID = @TipDocINtrID
4527 , NumarFactIntr = @NumarFactIntr
4528 , DataFactIntr = @DataFactIntr
4529 , PretIntrare = @PretIntrare
4530 , PretIntrareRedus = @PretIntrareRedus
4531 , PretCost = @PretCost
4532 , GestiuneId = @GestiuneId
4533 , Amanunt = @Amanunt
4534 , LotIntrare = @LotIntrare
4535 , DataExpirare = @DataExpirare
4536 , DataFabricare = @DataFabricare
4537 , SerieIntrare = @SerieIntrare
4538 , IntrPozOrigId = @IntrPozOrigId
4539 , POrderPozId = @POOrderPozId
4540 , ValoareRedusaFaraTva=ROUND(cantiesire*isnull(PretAmanuntRedus,PretAmanunt) - ROUND(((CantIesire*isnull(PretAmanuntRedus,PretAmanunt) * Tva) / (100.00 + Tva)), 6), 6)
4541 --round(cantiesire*isnull(PretVanzareRedus,PretVanzare),6)
4542 , ValoareRedusaTva=ROUND(((CantIesire*isnull(PretAmanuntRedus,PretAmanunt) * Tva) / (100.00 + Tva)), 6)
4543 --round(cantiesire*isnull(PretVanzareRedus,PretVanzare)*tva/100.00,6)
4544 , ValoareFaraTva=ROUND(CantIesire*PretAmanunt - ROUND((Cantiesire*PretAmanunt * Tva) / (100.00 + Tva), 6), 6)
4545 --round(cantiesire*PretVanzare,6)
4546 , ValoareTva=ROUND((Cantiesire*PretAmanunt * Tva) / (100.00 + Tva), 6)
4547 --round(cantiesire*PretVanzare*tva/100.00,6)
4548 WHERE IesPozId = @IesPozId
4549 AND FirmaID = @FirmaID
4550 AND DivizieId = @DivizieID
4551
4552 UPDATE inv.Stoc
4553 SET Stoc = Stoc - @CantRetur-- ( cantitate negativa)
4554 WHERE IntrPozId = @IntrPozId
4555 AND ISNULL(DataExpirare,'') = ISNULL(@DataExpirare,'')
4556 AND ISNULL(GestiuneId,0) = ISNULL(@GestiuneId,0)
4557 AND ISNULL(DataFabricare,'') = ISNULL(@DataFabricare,'')
4558 AND ISNULL(SerieIntrare,'') = ISNULL(@SerieIntrare,'')
4559 AND ISNULL(LotIntrare,'') = ISNULL(@LotIntrare,'')
4560 AND FirmaID = @FirmaID
4561 AND DivizieID = @DivizieID
4562 AND ClientCustodieId IS NULL
4563 END
4564
4565 UPDATE #TempSyncReturSpecial
4566 SET Prelucrat = 1
4567 WHERE TempSyncId = @TempSyncId
4568
4569 PRINT '@TempSyncIdSpecial prelucrat:' + CAST(@TempSyncId AS NVARCHAR)
4570
4571 IF XACT_STATE() = 1
4572 COMMIT TRANSACTION
4573
4574 END --end While
4575
4576 if @Debug=1 /*d*/
4577 BEGIN
4578 SELECT 'End WHILE Bonuri retur special'
4579 PRINT 'Medici/Pacienti'
4580 END
4581
4582 --=================================================== SFARSIT SINCRONIZARE CU STOC ==================================================================================
4583 /*
4584 DECLARE
4585 @MIdentificator VARCHAR(100)
4586 , @MCapIesireId INT
4587 , @MBufferPozitieBonID INT
4588 , @MClientDenumire VARCHAR(4000)
4589 , @MClientTip INT
4590 , @MClientAttrFiscal VARCHAR(100)
4591 , @MClientCNPCUI VARCHAR(100)
4592 , @MClientNrRegCom VARCHAR(100)
4593 , @MClientAdresa VARCHAR(4000)
4594 , @MClientID INT
4595 , @MClientCont VARCHAR(100)
4596 , @MClientBanca VARCHAR(4000)
4597 , @MValoarePlataUlterioara DECIMAL(18,2)
4598 , @MDiscountSuplimentar DECIMAL(18,2)
4599 , @MMotivDiscount VARCHAR(4000)
4600 , @MPacient VARCHAR(4000)
4601 , @MCodMedic VARCHAR(4000)
4602 , @MDenMedic VARCHAR(4000)
4603 , @MDataNastere DATETIME
4604
4605
4606 DECLARE CursorBonuriSpeciale CURSOR FOR
4607 SELECT
4608 Identificator
4609 , CapIesireId
4610 , BufferPozitieBonID
4611 , ClientDenumire
4612 , CASE WHEN ClientTip = 1 THEN 4
4613 ELSE 1
4614 END AS ClientTip
4615 , ClientAttrFiscal
4616 , ClientCNPCUI
4617 , ClientNrRegCom
4618 , ClientAdresa
4619 , ClientID
4620 , ClientCont
4621 , ClientBanca
4622 , ValoarePlataUlterioara
4623 , DiscountSuplimentar
4624 , MotivDiscount
4625 , Pacient
4626 , CodMedic
4627 , DenMedic
4628 , b.DataNastere
4629 FROM Retail.BufferPozitiiBon b ( NOLOCK )
4630 WHERE FirmaId = @FirmaId
4631 AND DivizieId = @DivizieId
4632 AND ISNULL(DocId,@DocIdBon) IN (13,21)
4633 AND ISNULL(Prelucrat2,0) = 0
4634 AND (
4635 CodMedic IS NOT NULL
4636 AND (
4637 ClientId IS NOT NULL
4638 OR ClientDenumire IS NOT NULL
4639 )
4640 )
4641 AND b.IdIesPoz IS NULL--fara bonurile din factura
4642 GROUP BY Identificator
4643 , CapIesireId
4644 , BufferPozitieBonID
4645 , ClientDenumire
4646 , ClientTip
4647 , ClientAttrFiscal
4648 , ClientCNPCUI
4649 , ClientNrRegCom
4650 , ClientAdresa
4651 , ClientID
4652 , ClientCont
4653 , ClientBanca
4654 , ValoarePlataUlterioara
4655 , DiscountSuplimentar
4656 , MotivDiscount
4657 , Pacient
4658 , CodMedic
4659 , DenMedic
4660 , b.DataNastere
4661
4662 OPEN CursorBonuriSpeciale
4663 FETCH NEXT FROM CursorBonuriSpeciale INTO @MIdentificator,@MCapIesireId,@MBufferPozitieBonID,@MClientDenumire,
4664 @MClientTip,@MClientAttrFiscal,@MClientCNPCUI,@MClientNrRegCom,@MClientAdresa,@MClientID,@MClientCont,
4665 @MClientBanca,@MValoarePlataUlterioara,@MDiscountSuplimentar,@MMotivDiscount,@MPacient,@MCodMedic,@MDenMedic,
4666 @MDataNastere
4667
4668 WHILE @@FETCH_STATUS = 0
4669 BEGIN
4670 BEGIN TRY
4671 BEGIN TRAN
4672
4673 DECLARE @TempIesCapId INT
4674
4675 SELECT @TempIesCapId = IesCapId
4676 FROM inv.IesCap c ( NOLOCK )
4677 WHERE RetailCapIesireId = @MCapIesireId
4678 AND c.CodCalc = @MIdentificator
4679 AND FirmaId = @FirmaId
4680 AND DivizieId = @DivizieID
4681 AND DocId IN (13,21)
4682
4683 IF ( @TempIesCapId IS NOT NULL )
4684 BEGIN
4685
4686 IF ( ISNULL(@MClientId,0) = 0 )
4687 BEGIN
4688 PRINT 'CUI: ' + @MClientCNPCUI
4689
4690 DECLARE
4691 @ClCUI VARCHAR(50) = [dbo].[ExtractInteger](@MClientCNPCUI)
4692 , @PartId INT = 0
4693 , @UnitId INT = 0
4694
4695 --daca nu am cui, caut client dupa denumire
4696
4697 IF ( LTRIM(RTRIM(ISNULL(@ClCUI,''))) = '' )
4698 BEGIN
4699
4700 --caut client dupa denumire
4701 SELECT TOP 1 @MClientId = C.ClientId
4702 FROM dbo.tblClienti C
4703 INNER JOIN dbo.vwUnitati U
4704 ON C.ClientId = U.UnitateId
4705 WHERE C.FirmaId = @FirmaId
4706 AND C.DivizieId = @DivizieId
4707 AND U.DenumireUnitate = @MClientDenumire
4708
4709 END
4710
4711 ELSE
4712
4713 BEGIN--am cui si caut client dupa cui
4714
4715 SELECT TOP 1 @MClientId = C.ClientId
4716 FROM dbo.tblClienti C
4717 INNER JOIN dbo.tblUnitate U
4718 ON C.ClientId = U.UnitateID
4719 INNER JOIN dbo.tblPartener P
4720 ON U.PartenerID = P.PartenerID
4721 WHERE C.FirmaId = @FirmaId
4722 AND C.DivizieId = @DivizieId
4723 AND P.CodFiscal = @ClCUI
4724
4725 END
4726
4727 --nu am gasit client dupa cui sau dupa nume, caut partener
4728 IF ( ISNULL(@MClientId,0) = 0 )
4729 BEGIN
4730
4731 --nu am cui, caut partener dupa denumire
4732 IF ( LTRIM(RTRIM(ISNULL(@ClCUI,''))) = '' )
4733 BEGIN
4734
4735 SELECT TOP 1 @PartId = P.PartenerID
4736 FROM dbo.tblPartener P
4737 WHERE P.DenumirePartener = @MClientDenumire
4738
4739 END
4740
4741 ELSE
4742
4743 BEGIN
4744 --caut partener dupa cui
4745
4746 SELECT TOP 1 @PartId = P.PartenerID
4747 FROM dbo.tblPartener P
4748 WHERE P.CodFiscal = @ClCUI
4749
4750 END
4751
4752
4753 --nu am partener, il inserez
4754 IF ( ISNULL(@PartId,0) = 0 )
4755 BEGIN
4756
4757 INSERT dbo.tblPartener
4758 (
4759 DenumirePartener
4760 ,TipFirmaId
4761 ,DataIntroducere
4762 ,CodFiscal
4763 ,NrRegComertului
4764 ,AtributFiscal
4765 ,ContFurn
4766 ,BancaFurn
4767 ,Strada
4768 )
4769 VALUES
4770 (
4771 @MClientDenumire
4772 ,@MClientTip
4773 ,GETDATE()
4774 ,@ClCUI
4775 ,@MClientNrRegCom
4776 ,LTRIM(RTRIM(REPLACE(@MClientCNPCUI,@ClCUI,'')))
4777 ,@MClientCont
4778 ,@MClientBanca
4779 ,@MClientAdresa
4780 )
4781 SELECT @PartId = @@IDENTITY
4782
4783 END
4784
4785 --inserez unitatea
4786 INSERT dbo.tblUnitate
4787 (
4788 PartenerId
4789 ,UnitateDefault
4790 ,DataIntroducere
4791 )
4792 VALUES
4793 (
4794 @PartId
4795 ,0
4796 ,GETDATE()
4797 )
4798
4799 SELECT @UnitId = @@IDENTITY
4800
4801 --inserez in client
4802 INSERT INTO dbo.tblClienti
4803 (
4804 ClientId
4805 ,DivizieId
4806 ,FirmaId
4807 ,Inactiv
4808 ,DataModificare
4809 ,DataIntroducere
4810 )
4811 VALUES
4812 (
4813 @UnitId
4814 ,@DivizieId
4815 ,@FirmaId
4816 ,0
4817 ,GETDATE()
4818 ,GETDATE()
4819 )
4820
4821 SELECT @MClientId = @UnitId
4822
4823 END
4824
4825 END
4826
4827
4828 DECLARE @MedicId INT
4829
4830 SELECT TOP 1 @MedicId = MedicId
4831 FROM tblMedici m ( NOLOCK )
4832 WHERE DivizieId = @DivizieID
4833 AND (
4834 (
4835 LTRIM(RTRIM(ISNULL(@MCodMedic,''))) <> ''
4836 AND m.ParafaMedic = @MCodMedic
4837 )
4838 OR ( LTRIM(RTRIM(m.DenumireMedic)) = LTRIM(RTRIM(@MDenMedic)) )
4839 )
4840
4841 IF ( ISNULL(@MedicId,0) = 0 )
4842 BEGIN
4843 INSERT INTO tblMedici
4844 (
4845 ParafaMedic
4846 ,DenumireMedic
4847 ,DataModificare
4848 ,DivizieId
4849 )
4850 VALUES
4851 (
4852 @MCodMedic
4853 ,@MDenMedic
4854 ,GETDATE()
4855 ,@DivizieID
4856 )
4857 END
4858
4859 IF (
4860 @MClientID IS NOT NULL
4861 OR @MedicId IS NOT NULL
4862 )
4863 BEGIN
4864
4865 UPDATE inv.IesCap
4866 SET ClientId = @MClientID
4867 , MedicId = @MedicId
4868 --, AdresaClient = @MClientAdresa
4869 , ClientAttrFiscal = @MClientAttrFiscal
4870 , ClientBanca = @MClientBanca
4871 , ClientCNPCUI = @MClientCNPCUI
4872 , ClientCont = @MClientCont
4873 , ClientDenumire = @MClientDenumire
4874 , ClientTip = @MClientTip
4875 , ClientNrRegCom = @MClientNrRegCom
4876 , ClientAdresa = @MClientAdresa
4877 , Pacient = @MPacient
4878 , ValoarePlataUlterioara = @MValoarePlataUlterioara
4879 , MotivDiscount = @MMotivDiscount
4880 , DataNastere = @MDataNastere
4881 WHERE IesCapId = @TempIesCapId
4882 AND RetailCapIesireId = @MCapIesireID
4883 AND CodCalc = @MIdentificator
4884 AND FirmaId = @FirmaId
4885 AND DivizieId = @DivizieID
4886
4887 UPDATE Retail.BufferPozitiiBon
4888 SET Prelucrat2 = 1
4889 WHERE BufferPozitieBonID = @MBufferPozitieBonId
4890 AND CapIesireID = @MCapIesireID
4891 AND Identificator = @MIdentificator
4892 AND FirmaId = @FirmaId
4893 AND DivizieID = @DivizieID
4894
4895 END
4896 END
4897 COMMIT TRAN
4898
4899 END TRY
4900 BEGIN CATCH
4901
4902 IF ( XACT_STATE() <> 0 )
4903 ROLLBACK TRANSACTION
4904 END CATCH
4905
4906
4907 FETCH NEXT FROM CursorBonuriSpeciale INTO @MIdentificator,@MCapIesireId,@MBufferPozitieBonID,
4908 @MClientDenumire,@MClientTip,@MClientAttrFiscal,@MClientCNPCUI,@MClientNrRegCom,@MClientAdresa,
4909 @MClientID,@MClientCont,@MClientBanca,@MValoarePlataUlterioara,@MDiscountSuplimentar,@MMotivDiscount,
4910 @MPacient,@MCodMedic,@MDenMedic,@MDataNastere
4911 END--cursor
4912
4913 CLOSE CursorBonuriSpeciale
4914 DEALLOCATE CursorBonuriSpeciale
4915
4916
4917
4918 PRINT 'END Medici/Pacienti'
4919 */
4920
4921
4922 ------------------------------------------------------------------------------
4923 --Verificare existenta pozitii schimbare pret pentru validare doc sau stergere
4924 IF @ReevCapId IS NOT NULL
4925 BEGIN
4926
4927 IF NOT EXISTS
4928 (
4929 SELECT TOP 1 ReevPozId
4930 FROM inv.ReevPoz (NOLOCK)
4931 WHERE ReevCapId = @ReevCapId
4932 )
4933 BEGIN
4934
4935 DELETE FROM inv.ReevCap
4936 WHERE ReevCapId = @ReevCapId
4937
4938 END
4939
4940 ELSE
4941
4942 BEGIN
4943
4944 DECLARE @NrCifre int ,
4945 @Prefix nvarchar(50),
4946 @Curent nvarchar(20),
4947 @m nvarchar(100),
4948 @Setare247 int
4949
4950 SELECT @Setare247=dbo.Valoaresetare(247,@FirmaId,@DivizieID)
4951
4952 SELECT @NrCifre =isnull(NrCifre,0)
4953 FROM dbo.PlajaDoc (NOLOCK)
4954 WHERE PlajaId=@PlajaId
4955 and FirmaId=@FirmaId
4956 and DivizieId=@DivizieID
4957 and DocId=53
4958
4959 SELECT @Prefix=p.Prefix,
4960 @Curent= CAST(p.Curent as nvarchar(20))
4961 FROM dbo.Plaja p (NOLOCK)
4962 WHERE PlajaId=@PlajaId
4963
4964 WHILE (@NrCifre>0 and LEN(@Curent)<@NrCifre)
4965 BEGIN
4966 SET @Curent='0'+@Curent
4967 END
4968
4969 SELECT @m=@Prefix+@Curent
4970
4971 UPDATE cap
4972 SET cap.NrPozitii = poz.NrPoz
4973 , NumarReev = ISNULL(@m,CAST(cap.ReevCapId AS NVARCHAR(100)))
4974 FROM inv.ReevCap cap (NOLOCK)
4975 INNER JOIN
4976 (
4977 SELECT ReevCapId
4978 ,COUNT(*) as NrPoz
4979 FROM inv.ReevPoz (NOLOCK)
4980 WHERE ReevCapId = @ReevCapId
4981 GROUP BY ReevCapId
4982 ) poz
4983 ON cap.ReevCapId = poz.ReevCapId
4984
4985 UPDATE dbo.Plaja
4986 SET Curent = Curent + 1
4987 WHERE PlajaId = @PlajaId
4988
4989 IF EXISTS
4990 (
4991 SELECT TOP 1 cap.ReevCapId
4992 FROM dbo.ctbDoc cd ( NOLOCK )
4993 INNER JOIN inv.ReevCap cap ( NOLOCK )
4994 ON cap.ReevCapId = @ReevCapId
4995 AND cap.DocId = cd.DocId
4996 AND cap.FirmaId = cd.FirmaId
4997 AND cap.DivizieId = cd.DivizieId
4998 AND cd.Import = 1
4999 )
5000 BEGIN
5001
5002 SELECT @UserId = ISNULL(UserValidareId,UserCreareId)
5003 FROM inv.ReevCap
5004 WHERE ReevCapId = @ReevCapId
5005
5006 EXEC dbo.Doc2Conta_SchimbariPret
5007 @DocId = 53,
5008 @CapId = @ReevCapId,
5009 @DeLa = @DataCrt,
5010 @PanaLa = @DataCrt,
5011 @overwrite = 0,
5012 @sys_userId = @UserId,
5013 @sys_langID = 'RO',
5014 @sys_divId = @DivizieID,
5015 @sys_unitId = @FirmaId,
5016 @sys_partId = @sys_partId
5017
5018 --EXEC dbo.Doc2Conta
5019 -- @DocIds = '53',
5020 -- @CapId = @ReevCapId,
5021 -- @DeLa = @DataCrt,
5022 -- @PanaLa = @DataCrt,
5023 -- @overwrite = 0,
5024 -- @sys_userId = @UserId,
5025 -- @sys_langId = 'RO',
5026 -- @sys_unitId = @FirmaId,
5027 -- @sys_divId = @DivizieID,
5028 -- @sys_partID = @sys_partId
5029 END
5030
5031 END
5032
5033 END
5034 END
5035
5036 EXEC dbo.StopSemafor
5037 'POS_BONURI'
5038 , @FirmaId
5039 , @DivizieID
5040
5041 IF OBJECT_ID('tempdb..#TempSync') IS NOT NULL
5042 DROP TABLE #TempSync
5043 IF OBJECT_ID('tempdb..#TempSyncRetur') IS NOT NULL
5044 DROP TABLE #TempSyncRetur
5045 IF OBJECT_ID('tempdb..#TempSyncReturSpecial') IS NOT NULL
5046 DROP TABLE #TempSyncReturSpecial
5047 IF OBJECT_ID('tempdb..#PozitiiBuffer') IS NOT NULL
5048 DROP TABLE #PozitiiBuffer
5049 IF OBJECT_ID('tempdb..#IesCap') IS NOT NULL
5050 DROP TABLE #IesCap
5051
5052 END TRY
5053 BEGIN CATCH
5054
5055 -- 0 : no trans, -1: uncomittable, 1: active and valid
5056 -- PRINT XACT_STATE()
5057 -- IF (XACT_STATE() <> 0)
5058 -- ROLLBACK TRANSACTION T
5059
5060
5061 IF ( XACT_STATE() <> 0 )
5062 ROLLBACK TRANSACTION
5063
5064 IF OBJECT_ID('tempdb..#TempSync') IS NOT NULL
5065 DROP TABLE #TempSync
5066 IF OBJECT_ID('tempdb..#TempSyncRetur') IS NOT NULL
5067 DROP TABLE #TempSyncRetur
5068 IF OBJECT_ID('tempdb..#TempSyncReturSpecial') IS NOT NULL
5069 DROP TABLE #TempSyncReturSpecial
5070 IF OBJECT_ID('tempdb..#PozitiiBuffer') IS NOT NULL
5071 DROP TABLE #PozitiiBuffer
5072 IF OBJECT_ID('tempdb..#IesCap') IS NOT NULL
5073 DROP TABLE #IesCap
5074
5075 EXEC dbo.StopSemafor
5076 'POS_BONURI'
5077 , @FirmaId
5078 , @DivizieID
5079
5080
5081 SELECT
5082 @ErrorMessage = ERROR_MESSAGE()
5083 , @ErrorSeverity = ERROR_SEVERITY()
5084 , @ErrorState = ERROR_STATE();
5085
5086 RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)
5087
5088
5089 END CATCH
5090
5091 END
5092
5093 ELSE
5094
5095 BEGIN
5096
5097 RAISERROR(N'JOB-ul este deja in rulare!', 16, 1)
5098
5099 END
5100
5101END
5102;
5103;
5104;
5105;